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/.eslintrc b/.eslintrc index 7ed17151..413dd97a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,23 +1,20 @@ { + "root": true, "env": { "es6": true, "browser": true, "node": true }, "parserOptions": { - "ecmaVersion": 2017, + "ecmaVersion": 2018, "sourceType": "module", - "ecmaFeatures": { } + "ecmaFeatures": {} }, - "plugins": [ "jsdoc" ], - "extends": [ - "plugin:compat/recommended", - "plugin:jsdoc/recommended" - ], + "extends": ["plugin:compat/recommended", "plugin:regexp/recommended"], "rules": { - "semi": [ "warn", "never" ], - "indent": [ "error", 2 ], - "spaced-comment": [ "error", "never" ], + "semi": ["warn", "never"], + "indent": ["error", 2], + "spaced-comment": [0, "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, @@ -67,17 +58,7 @@ "ignoreRegExpLiterals": true } ], - "require-jsdoc": [ - 1, - { - "require": { - "ArrowFunctionExpression": false, - "ClassDeclaration": true, - "FunctionDeclaration": true, - "FunctionExpression": true, - "MethodDefinition": true - } - } - ] + "regexp/prefer-d": 0, + "regexp/prefer-w": 0 } } diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 1b08832a..3da03794 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 @@ -27,11 +27,12 @@ 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 testb + npm run lint + npm run test:build npm run test:fetch env: CI: true 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 diff --git a/.gitignore b/.gitignore index f31400ec..270673c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ node_modules .git -viz coverage coverage.lcov codecov.yml @@ -8,3 +7,4 @@ npm-debug.log .nyc_output *.DS_Store *.tsv +_missing_templates.json \ No newline at end of file diff --git a/README.md b/README.md index 54ebc378..41d4c94c 100644 --- a/README.md +++ b/README.md @@ -50,26 +50,26 @@ -
- -
```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: @@ -111,11 +111,11 @@ doc.links().map((link) => link.json()) //[{ page: 'Theatrical superstitions', text: 'supersitions' }] // just the images: -doc.images(0).json() +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.section('see also').link().json() // { page: 'Slide Whistle' } ``` @@ -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** | | @@ -220,7 +217,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 | @@ -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,10 @@ 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 +341,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 +352,14 @@ var text = wtf(wiki).text() a section is a heading _'==Like This=='_ ```js -wtf(page).sections(1).children() //traverse nested sections -wtf(page).sections('see also').remove() //delete one +wtf(page).sections()[1].children() //traverse nested sections +wtf(page).section('see also').remove() //delete one ``` #### **doc.sentences()** ```js -s = wtf(page).sentences(4) +let s = wtf(page).sentences()[4] s.links() s.bolds() s.italics() @@ -370,15 +368,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 +386,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 @@ -398,14 +395,14 @@ let doc = await wtf.fetch('https://muppet.fandom.com/wiki/Miss_Piggy') // wikipedia français doc = await wtf.fetch('Tony Hawk', 'fr') -doc.sentences(0).text() // 'Tony Hawk est un skateboarder professionnel et un acteur ...' +doc.sentence().text() // 'Tony Hplawk est un skateboarder professionnel et un acteur ...' // accept an array, or wikimedia pageIDs let docs = wtf.fetch(['Whistling', 2983], { follow_redirects: false }) // article from german wikivoyage wtf.fetch('Toronto', { lang: 'de', wiki: 'wikivoyage' }).then((doc) => { - console.log(doc.sentences(0).text()) // 'Toronto ist die Hauptstadt der Provinz Ontario' + console.log(doc.sentences()[0].text()) // 'Toronto ist die Hauptstadt der Provinz Ontario' }) ``` @@ -417,35 +414,37 @@ let doc = await wtf.fetch(64646, 'de') the fetch method follows redirects. -### fetch categories: +### API plugin **wtf.category(title, [lang], [options | callback])** 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') -//{ -// 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-category](./plugins/category) - -### fetch random article: - **wtf.random([lang], [options], [callback])** 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: The wikipedia api is [pretty welcoming](https://www.mediawiki.org/wiki/API:Etiquette#Request_limit) though recommends three things, if you're going to hit it heavily - @@ -482,62 +481,66 @@ 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()** - -- **.sections()** - return a list, or given-index of the Document's sections -- **.paragraphs()** - return a list, or given-index of Paragraphs, in all sections -- **.sentences()** - return a list, or given-index of all sentences in the document -- **.images()** - -- **.links()** - return a list, or given-index of all links, in all parts of the document +- **.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()** - 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, or given-index of all structured tables in the document +- **.tables()** - return a list of all structured tables in the document - **.templates()** - any type of structured-data elements, typically wrapped in like {{this}} - **.infoboxes()** - specific type of template, that appear on the top-right of the page -- **.references()** - return a list, or given-index of 'citations' in the document +- **.references()** - return a list of 'citations' in the document - **.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 - **.title()** - the name of the section, between ==these tags== - **.index()** - which number section is this, in the whole document. - **.indentation()** - how many steps deep into the table of contents it is -- **.sentences()** - return a list, or given-index, of sentences in this section -- **.paragraphs()** - return a list, or given-index, of paragraphs in this section -- **.links()** - -- **.tables()** - -- **.templates()** - -- **.infoboxes()** - -- **.coordinates()** - -- **.lists()** - +- **.sentences()** - return a list of sentences in this section +- **.paragraphs()** - return a list of paragraphs in this section +- **.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, or given index, of any images in this section -- **.references()** - return a list, or given index, of 'citations' in this section +- **.images()** - return a list of any images in this section +- **.references()** - return a list of 'citations' in this section - **.remove()** - remove the current section from the document - **.nextSibling()** - a section following this one, under the current parent: eg. 1920s → 1930s - **.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 @@ -547,16 +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 @@ -564,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 @@ -571,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 @@ -578,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
@@ -597,7 +611,7 @@ wtf.extend((models) => { } }) -await wtf.fetch('Stephen Harper').isPerson() //hmm? +await wtf.fetch('Stephen Harper').isPerson() ``` ### Adding new templates: @@ -607,8 +621,9 @@ does your wiki use a `{{foo}}` template? Add a custom parser for it: ```js wtf.extend((models, templates) => { // create a custom parser function - templates.foo = (text, data) => { - data.templates.push({ name: 'foo', cool: true }) + templates.foo = (tmpl, list, parse) => { + let obj = parse(tmpl) //or do a custom regex + list.push(obj) return 'new-text' } @@ -623,6 +638,14 @@ wtf.extend((models, templates) => { }) ``` +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 }) +}) +``` +
plugin docs
@@ -651,7 +674,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/builds/wtf_wikipedia-client.js b/builds/wtf_wikipedia-client.js index 1ce6deb2..e17a0113 100644 --- a/builds/wtf_wikipedia-client.js +++ b/builds/wtf_wikipedia-client.js @@ -1,14 +1,71 @@ -/* 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) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtf = factory()); }(this, (function () { 'use strict'; - var parseUrl = function parseUrl(url) { - var parsed = new URL(url); //eslint-disable-line + function require$$0 (e, n) { + return n = n || {}, new Promise(function (t, r) { + var s = new XMLHttpRequest(), + o = [], + u = [], + i = {}, + a = function () { + return { + ok: 2 == (s.status / 100 | 0), + statusText: s.statusText, + status: s.status, + url: s.responseURL, + text: function () { + return Promise.resolve(s.responseText); + }, + json: function () { + return Promise.resolve(s.responseText).then(JSON.parse); + }, + blob: function () { + return Promise.resolve(new Blob([s.response])); + }, + clone: a, + headers: { + keys: function () { + return o; + }, + entries: function () { + return u; + }, + get: function (e) { + return i[e.toLowerCase()]; + }, + has: function (e) { + return e.toLowerCase() in i; + } + } + }; + }; + + for (var l in s.open(n.method || "get", e, !0), s.onload = function () { + s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, function (e, n, t) { + o.push(n = n.toLowerCase()), u.push([n, t]), i[n] = i[n] ? i[n] + "," + t : t; + }), t(a()); + }, s.onerror = r, s.withCredentials = "include" == n.credentials, n.headers) s.setRequestHeader(l, n.headers[l]); + + s.send(n.body || null); + }); + } - var title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); + var browser = self.fetch || (self.fetch = require$$0.default || require$$0); + + /** + * 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); + let title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); title = decodeURIComponent(title); return { domain: parsed.host, @@ -16,85 +73,84 @@ }; }; - var _00ParseUrl = parseUrl; - - function _typeof(obj) { - "@babel/helpers - typeof"; + var parseUrl_1 = parseUrl; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; + /** + * capitalizes the input + * hello -> Hello + * hello there -> Hello there + * + * @private + * @param {string} [str] the string that will be capitalized + * @returns {string} the capitalized string + */ + function capitalise(str) { + if (str && typeof str === 'string') { + return str.charAt(0).toUpperCase() + str.slice(1); } - return _typeof(obj); - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; + return ''; } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } + /** + * 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$1(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 _arr; + 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 _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; + function isArray$3(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 + */ - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; + function isObject$1(x) { + return x && Object.prototype.toString.call(x) === '[object Object]'; } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } + var helpers = { + capitalise, + trim_whitespace: trim_whitespace$1, + isArray: isArray$3, + isObject: isObject$1 + }; - var isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; - var defaults = { + const { + isArray: isArray$2 + } = helpers; + const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; + const defaults$c = { action: 'query', prop: 'revisions|pageprops', - //we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. + // we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. rvprop: 'content', maxlag: 5, rvslots: 'main', @@ -102,97 +158,119 @@ format: 'json', redirects: 'true' }; + /** + * turns a object into a query string + * + * @private + * @param {Object} obj + * @returns {string} QueryString + */ - var toQueryString = function toQueryString(obj) { - return Object.entries(obj).map(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - - return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)); - }).join('&'); - }; - - var isArray = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; + const toQueryString = function (obj) { + return Object.entries(obj).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&'); }; + /** + * cleans and prepares the tile by replacing the spaces with underscores (_) and trimming the white spaces of the ends + * + * @private + * @param {string} page the title that needs cleaning + * @returns {string} the cleaned title + */ - var cleanTitle = function cleanTitle(page) { - page = page.replace(/ /g, '_'); - page = page.trim(); // page = encodeURIComponent(page) - return page; + const cleanTitle = page => { + return page.replace(/ /g, '_').trim(); }; + /** + * generates the url for fetching the pages + * + * @private + * @param {import('.').fetchDefaults} options + * @returns {string} the url that can be used to make the fetch + */ - var makeUrl = function makeUrl(options) { - var params = Object.assign({}, defaults); // default url - var url = "https://".concat(options.lang, ".").concat(options.wiki, ".org/w/api.php?"); // from a 3rd party wiki + const makeUrl = function (options) { + let params = Object.assign({}, defaults$c); //default url - options.domain = options.domain || options.wikiUrl; //support old syntax + let apiPath = ''; //add support for third party apis if (options.domain) { - var path = options.path; //wikimedia api uses ./w/api path. no others do - - if (isInterWiki.test(options.domain)) { - path = 'w/api.php'; - } - - url = "https://".concat(options.domain, "/").concat(path, "?"); + //wikimedia is the only api that uses `/w/api` as its path. other wikis use other paths + let path = isInterWiki.test(options.domain) ? 'w/api.php' : options.path; + apiPath = `https://${options.domain}/${path}?`; + } else if (options.lang && options.wiki) { + apiPath = `https://${options.lang}.${options.wiki}.org/w/api.php?`; + } else { + return ''; } if (!options.follow_redirects) { delete params.redirects; - } // support numerical ids - - - var page = options.title; - - if (typeof page === 'number') { - params.pageids = page; //single pageId - } else if (isArray(page) && typeof page[0] === 'number') { - params.pageids = page.join('|'); //pageid array - } else if (isArray(page) === true) { - //support array - params.titles = page.map(cleanTitle).join('|'); + } //support numerical ids + + + let title = options.title; + + if (typeof title === 'number') { + //single pageId + params.pageids = title; + } else if (typeof title === 'string') { + //single page title + params.titles = cleanTitle(title); + } else if (title !== undefined && isArray$2(title) && typeof title[0] === 'number') { + //pageid array + params.pageids = title.join('|'); + } else if (title !== undefined && isArray$2(title) === true && typeof title[0] === 'string') { + //title array + params.titles = title.map(cleanTitle).join('|'); } else { - // single page - params.titles = cleanTitle(page); - } // make it! + return ''; + } //make it! - url += toQueryString(params); - return url; + return `${apiPath}${toQueryString(params)}`; }; - var _01MakeUrl = makeUrl; + var makeUrl_1 = makeUrl; - //this data-format from mediawiki api is nutso - var getResult = function getResult(data, options) { - options = options || {}; - var pages = Object.keys(data.query.pages); - var docs = pages.map(function (id) { - var page = data.query.pages[id] || {}; + /** + * parses the media wiki api response to something we can use + * + * the data-format from mediawiki api is nutso + * + * @private + * @param {object} data + * @param {object} [options] + * @returns {*} result + */ + const getResult = function (data, options = {}) { + //get all the pagesIds from the result + let pages = Object.keys(data.query.pages); // map over the pageIds to parse out all the information + + return pages.map(id => { + // get the page by pageID + let page = data.query.pages[id] || {}; // if the page is missing or not found than return null if (page.hasOwnProperty('missing') || page.hasOwnProperty('invalid')) { return null; - } + } // get the text from the object - var text = page.revisions[0]['*']; // console.log(page.revisions[0]) - //us the 'generator' result format, for the random() method + + let text = page.revisions[0]['*']; // if the text is not found in the regular place than it is at the other place if (!text && page.revisions[0].slots) { text = page.revisions[0].slots.main['*']; } page.pageprops = page.pageprops || {}; - var domain = options.domain; + let domain = options.domain; if (!domain && options.wiki) { - domain = "".concat(options.wiki, ".org"); + domain = `${options.wiki}.org`; } - var meta = Object.assign({}, options, { + let meta = Object.assign({}, options, { title: page.title, pageID: page.pageid, namespace: page.ns, @@ -200,27 +278,28 @@ wikidata: page.pageprops.wikibase_item, description: page.pageprops['wikibase-shortdesc'] }); - - try { - return { - wiki: text, - meta: meta - }; - } catch (e) { - console.error(e); - throw e; - } + return { + wiki: text, + meta: meta + }; }); - return docs; }; - var _02GetResult = getResult; + var getResult_1 = getResult; - //helper for looping around all sections of a document - var sectionMap = function sectionMap(doc, fn, clue) { - var arr = []; - doc.sections().forEach(function (sec) { - var list = []; + /** + * helper for looping around all sections of a document + * + * @private + * @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 {Array|*} the array of item at the index of the clue + */ + const sectionMap = function (doc, fn, clue) { + let arr = []; + doc.sections().forEach(sec => { + let list = []; if (typeof clue === 'string') { list = sec[fn](clue); @@ -228,13 +307,17 @@ list = sec[fn](); } - list.forEach(function (t) { + list.forEach(t => { arr.push(t); }); }); if (typeof clue === 'number') { - return arr[clue]; + if (arr[clue] === undefined) { + return []; + } + + return [arr[clue]]; } return arr; @@ -242,23 +325,71 @@ var _sectionMap = sectionMap; - // - var setDefaults = function setDefaults(options, defaults) { + /** + * applies the the key values of defaults to options + * + * @private + * @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); }; var setDefaults_1 = setDefaults; - var defaults$1 = { + /** + * @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$b = { title: true, sections: true, pageID: true, categories: true - }; //an opinionated output of the most-wanted data - - var toJSON = function toJSON(doc, options) { - options = setDefaults_1(options, defaults$1); - var data = {}; + }; + /** + * @typedef documentToJsonReturn + * @property {string | undefined} title + * @property {number | null | undefined} pageID + * @property {string[] | undefined} categories + * @property {object[] | undefined} sections + * @property {boolean | undefined} isRedirect + * @property {object | undefined} redirectTo + * @property {object[] | undefined} coordinates + * @property {object[] | undefined} infoboxes + * @property {Image[] | undefined} images + * @property {string | undefined} plaintext + * @property {object[] | undefined} references + */ + + /** + * an opinionated output of the most-wanted data + * + * @private + * @param {Document} doc + * @param {DocumentToJsonOptions} options + * @returns {documentToJsonReturn} + */ + + const toJSON$3 = function (doc, options) { + options = setDefaults_1(options, defaults$b); + /** + * @type {documentToJsonReturn} + */ + + let data = {}; if (options.title) { data.title = doc.title(); @@ -273,14 +404,12 @@ } if (options.sections) { - data.sections = doc.sections().map(function (i) { - return i.json(options); - }); + data.sections = doc.sections().map(i => i.json(options)); } if (doc.isRedirect() === true) { data.isRedirect = true; - data.redirectTo = doc.data.redirectTo; + data.redirectTo = doc.redirectTo(); data.sections = []; } //these are default-off @@ -290,15 +419,11 @@ } if (options.infoboxes) { - data.infoboxes = doc.infoboxes().map(function (i) { - return i.json(options); - }); + data.infoboxes = doc.infoboxes().map(i => i.json(options)); } if (options.images) { - data.images = doc.images().map(function (i) { - return i.json(options); - }); + data.images = doc.images().map(i => i.json(options)); } if (options.plaintext) { @@ -312,9 +437,67 @@ return data; }; - var toJson = toJSON; + var toJson$6 = toJSON$3; + + var categories$1 = ['category', //en + 'abdeeling', // pdc + 'bólkur', // fo + 'catagóir', // ga + 'categori', // cy + 'categoria', 'categoria', // co + 'categoría', // es + 'categorîa', // lij + 'categorìa', // pms + 'catégorie', 'categorie', 'catègorie', // frp + 'category', 'categuria', // lmo + 'catigurìa', // scn + 'class', // kw + 'ẹ̀ka', // yo + 'flocc', 'flocc', // ang + 'flokkur', 'grup', // tpi + 'jamii', // sw + 'kaarangay', // war + 'kateggoría', // lad + 'kategooria', // et + 'kategori', // da + 'kategorî', // ku + 'kategoria', // eu + 'kategória', // hu + 'kategorie', //de + 'kategoriija', // se + 'kategorija', // sl + 'kategorio', // eo + 'kategoriya', 'kategoriýa', // tk + 'kategoriye', // diq + 'kategory', // fy + 'kategorya', // tl + 'kateqoriya', // az + 'katiguriya', // qu + 'klad', // vo + 'luokka', 'ñemohenda', // gn + 'roinn', //-seòrsa gd + 'ronney', // gv + 'rummad', // br + 'setensele', // nso + 'sokajy', // mg + 'sumut', // atassuseq kl + 'thể', // loại vi + 'turkum', // uz + 'категорија', 'категория', // ru + 'категорія', // uk + 'катэгорыя', 'төркем', // tt + 'קטגוריה', // he + 'تصنيف', 'تۈر', // ug + 'رده', 'श्रेणी', 'श्रेणी', // hi + 'বিষয়শ্রেণী', // bn + 'หมวดหมู่', // th + '분류', // ko + '분류', //ko + '分类' // za + //-- + ]; - var disambig = ['dab', //en + var disambig_templates = ['dab', //en 'disamb', //en 'disambig', //en 'disambiguation', //en @@ -486,44 +669,295 @@ // 'သဵင်မိူၼ် တူၼ်ႈထႅဝ်ပႅၵ်ႇ', //shn ]; - var i18n = disambig.reduce(function (h, str) { - h[str] = true; - return h; - }, {}); //special disambig-templates en-wikipedia uses + // used in titles to denote disambiguation pages + // see 'Football_(disambiguation)' + var disambig_titles = ['disambiguation', //en + 'homonymie', //fr + 'توضيح', //ar + 'desambiguação', //pt + 'Begriffsklärung', //de + 'disambigua', //it + '曖昧さ回避', //ja + '消歧義', //zh + '搞清楚', //zh-yue + 'значения', //ru + 'ابهام‌زدایی', //fa + 'د ابہام', //ur + '동음이의', //ko + 'dubbelsinnig', //af + 'այլ կիրառումներ', //hy + 'ujednoznacznienie' //pl + ]; - var d = ' disambiguation'; - var english = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce(function (h, str) { - h[str] = true; - return h; - }, {}); + var images = ['file', //en + 'image', //en + 'चित्र', //img + 'archivo', //es + 'attēls', //lv + 'berkas', //id + 'bestand', //nl + 'datei', //de + 'dosiero', //eo + 'dosya', //lad + 'fájl', //hu + 'fasciculus', //la + 'fichier', //fr + 'fil', //da + 'fitxategi', //eu + 'fitxer', //ca + 'gambar', //su + 'imagem', //pt + 'imej', //ms + 'immagine', //it + 'larawan', //tl + 'lêer', //af + 'plik', //pl + 'restr', //br + 'slika', //bs + 'wêne', //ku + 'wobraz', //dsb + 'выява', //be + 'податотека', //mk + 'слика', //sr + 'файл', //ru + 'სურათი', //ka + 'պատկեր', //hy + 'קובץ', //he + 'پرونده', //fa + 'دوتنه', //ps + 'ملف', //ar + 'وێنە', //ckb + 'चित्र', //hi + 'ไฟล์', //th + '파일', //ko + 'ファイル' //ja + ]; - var isDisambig = function isDisambig(doc) { - var templates = doc.templates(); - var found = templates.find(function (obj) { - return english.hasOwnProperty(obj.template) || i18n.hasOwnProperty(obj.template); - }); + var infoboxes = ['infobox', //en + 'anfo', //mwl + 'anuāmapa', //haw + 'bilgi kutusu', //tr + 'bilgi', //tr + 'bilgiquti', //uz + 'boaty', //mg + 'boestkelaouiñ', //br + 'bosca', //ga + 'capsa', //la + 'diehtokássa', //se + 'faktamall', //sv + 'ficha', //es + 'generalni', //hr + 'gwybodlen3', //cy + 'info', //pt + 'infobokis', //tpi + 'infoboks', //da + 'infochascha', //rm + 'infokašćik', //dsb + 'infokast', //et + 'infokutija', //bs + 'infolentelė', //lt + 'infopolje', //sl + 'informkesto', //eo + 'infoskreine', //ltg + 'infotaula', //eu + 'inligtingskas', 'inligtingskas3', //af + 'inligtingskas4', //af + 'kishtey', //gv + 'kotak', //su + 'tertcita', //jbo + 'tietolaatikko', //fi + 'yerleşim bilgi kutusu', 'ynfoboks', //fy + 'πλαίσιο', //el + 'акарточка', //ab + 'аҥа', //mhr + 'инфобокс', //kk + 'инфокутија', //sr + 'инфокутия', //bg + 'інфобокс', //rue + 'канадский', 'картка', //be + 'карточка', //ru + 'карточка2', //mdf + 'карточкарус', //ba + 'картуш', //koi + 'қуттӣ', //tg + 'ინფოდაფა', //ka + 'տեղեկաքարտ', //hy + 'אינפאקעסטל', //yi + 'תבנית', //he + 'بطاقة', //ar + 'ڄاڻخانو', //sd + 'خانہ', //ur + 'لغة', 'ज्ञानसन्दूक', //hi + 'তথ্যছক', //bn + 'ਜਾਣਕਾਰੀਡੱਬਾ', //pa + 'సమాచారపెట్టె', //te + 'තොරතුරුකොටුව', //si + 'กล่องข้อมูล', //th + 'ប្រអប់ព័ត៌មាន', //km + '정보상자', //ko + '明細' //zh_yue + ]; - if (found) { - return true; - } // try 'may refer to' on first line for en-wiki? + var redirects$1 = ['adkas', //br + 'aýdaw', 'doorverwijzing', //nl + 'ohjaus', 'patrz', //pl + 'přesměruj', 'redirección', 'redireccion', 'redirección', //es + 'redirecionamento', //pt + 'redirect', //en + 'redirection', 'redirection', //fr + 'rinvia', //it + 'tilvísun', 'uudelleenohjaus', 'weiterleitung', 'weiterleitung', //de + 'yönlendi̇r', 'yönlendirme', 'yönlendi̇rme', //tr + 'ανακατευθυνση', //el + 'айдау', 'перанакіраваньне', 'перенаправлення', //uk + 'пренасочување', //mk + 'преусмери', 'преусмјери', 'تغییر_مسیر', 'تغییرمسیر', 'تغییرمسیر', //fa + 'เปลี่ยนทาง', //th + 'ប្តូរទីតាំងទៅ', //km + '転送', //ja + '重定向']; + var references = ['references', 'reference', 'einzelnachweise', 'referencias', 'références', 'notes et références', '脚注', 'referenser', 'bronnen', 'примечания']; - if (doc.sentences(0)) { - var firstLine = doc.sentences(0).text(); + /** + * 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[] + * }} + */ + + var i18n = { + categories: categories$1, + disambig_templates: disambig_templates, + disambig_titles: disambig_titles, + images: images, + infoboxes: infoboxes, + redirects: redirects$1, + references: 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) + //] + + }; + + //alt disambig-templates en-wikipedia uses + let d = ' disambiguation'; + const templates$a = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce((h, str) => { + h[str] = true; + return h; + }, {}); + var _disambig = templates$a; - if (firstLine !== null && firstLine[0]) { - if (/. may refer to ./i.test(firstLine) === true) { - return true; - } + const inTitle = new RegExp('. \\((' + i18n.disambig_titles.join('|') + ')\\)$', 'i'); + 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 + * + * @private + * @param {Document} doc the document that is examined + * @returns {boolean} an indication if the document is a disambiguation page + */ + + + const isDisambig = function (doc) { + // check for a {{disambig}} template + let templates = doc.templates().map(tmpl => tmpl.json()); + let found = templates.find(obj => { + return _disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); + }); + + if (found) { + return true; + } // check for (disambiguation) in title + + + let title = doc.title(); + + if (title && inTitle.test(title) === true) { + return true; + } //try 'may refer to' on first line for en-wiki? + + + if (byText(doc.sentence(0)) === true || byText(doc.sentence(1)) === true) { + return true; + } + + return false; + }; - var disambig$1 = isDisambig; + var isDisambig_1 = isDisambig; - var defaults$2 = { + const defaults$a = { caption: true, alt: true, links: true, @@ -531,9 +965,9 @@ url: true }; // - var toJson$1 = function toJson(img, options) { - options = setDefaults_1(options, defaults$2); - var json = { + const toJson$5 = function (img, options) { + options = setDefaults_1(options, defaults$a); + let json = { file: img.file() }; @@ -561,12 +995,12 @@ return json; }; - var toJson_1 = toJson$1; + var toJson_1$3 = toJson$5; - var server = 'wikipedia.org'; + const server = 'wikipedia.org'; - var encodeTitle = function encodeTitle(file) { - var title = file.replace(/^(image|file?)\:/i, ''); //titlecase it + const encodeTitle = function (file) { + let title = file.replace(/^(image|file?)\:/i, ''); //titlecase it title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores @@ -575,57 +1009,63 @@ }; //the wikimedia image url is a little silly: - var makeSrc = function makeSrc(file) { - var title = encodeTitle(file); + const makeSrc = function (file) { + let title = encodeTitle(file); title = encodeURIComponent(title); return title; }; //the class for our image generation functions - var Image = function Image(data) { + const Image = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; - var methods = { - file: function file() { + const methods$8 = { + file() { return this.data.file || ''; }, - alt: function alt() { - var str = this.data.alt || this.data.file || ''; + + alt() { + let str = this.data.alt || this.data.file || ''; str = str.replace(/^(file|image):/i, ''); str = str.replace(/\.(jpg|jpeg|png|gif|svg)/i, ''); return str.replace(/_/g, ' '); }, - caption: function caption() { + + caption() { if (this.data.caption) { return this.data.caption.text(); } return ''; }, - links: function links() { + + links() { if (this.data.caption) { return this.data.caption.links(); } return []; }, - url: function url() { + + url() { // let lang = 'en' //this.language() || 'en' //hmm: get actual language? - var fileName = makeSrc(this.file()); - var domain = this.data.domain || server; - var path = "wiki/Special:Redirect/file"; - return "https://".concat(domain, "/").concat(path, "/").concat(fileName); + let fileName = makeSrc(this.file()); + let domain = this.data.domain || server; + let path = `wiki/Special:Redirect/file`; + return `https://${domain}/${path}/${fileName}`; }, - thumbnail: function thumbnail(size) { + + thumbnail(size) { size = size || 300; return this.url() + '?width=' + size; }, - format: function format() { - var arr = this.file().split('.'); + + format() { + let arr = this.file().split('.'); if (arr[arr.length - 1]) { return arr[arr.length - 1].toLowerCase(); @@ -633,566 +1073,25 @@ return null; }, - json: function json(options) { + + json: function (options) { options = options || {}; - return toJson_1(this, options); + return toJson_1$3(this, options); }, - text: function text() { + text: function () { return ''; + }, + wikitext: function () { + return this.data.wiki || ''; } }; - Object.keys(methods).forEach(function (k) { - Image.prototype[k] = methods[k]; + Object.keys(methods$8).forEach(k => { + Image.prototype[k] = methods$8[k]; }); Image.prototype.src = Image.prototype.url; Image.prototype.thumb = Image.prototype.thumbnail; var Image_1 = Image; - var defaults$3 = { - tables: true, - lists: true, - paragraphs: true - }; // - - var Document = function Document(data) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - }; - - var methods$1 = { - title: function title(str) { - //use like a setter - if (str !== undefined) { - this.data.title = str; - return str; - } //if we have it already - - - if (this.data.title) { - return this.data.title; - } //guess the title of this page from first sentence bolding - - - var guess = null; - var sen = this.sentences(0); - - if (sen) { - guess = sen.bolds(0); - } - - return guess; - }, - pageID: function pageID(id) { - if (id !== undefined) { - this.data.pageID = id; - } - - return this.data.pageID; - }, - wikidata: function wikidata(id) { - if (id !== undefined) { - this.data.wikidata = id; - } - - return this.data.wikidata; - }, - domain: function domain(str) { - if (str !== undefined) { - this.data.domain = str; - } - - return this.data.domain; - }, - language: function language(lang) { - if (lang !== undefined) { - this.data.lang = lang; - } - - return this.data.lang; - }, - url: function url() { - var title = this.title(); - - if (!title) { - return null; - } - - var lang = this.language() || 'en'; - var domain = this.domain() || 'wikipedia.org'; // replace blank to underscore - - title = title.replace(/ /g, '_'); - title = encodeURIComponent(title); - return "https://".concat(lang, ".").concat(domain, "/wiki/").concat(title); - }, - namespace: function namespace(ns) { - if (ns !== undefined) { - this.data.namespace = ns; - } - - return this.data.namespace; - }, - isRedirect: function isRedirect() { - return this.data.type === 'redirect'; - }, - redirectTo: function redirectTo() { - return this.data.redirectTo; - }, - isDisambiguation: function isDisambiguation() { - return disambig$1(this); - }, - categories: function categories(clue) { - if (typeof clue === 'number') { - return this.data.categories[clue]; - } - - return this.data.categories || []; - }, - sections: function sections(clue) { - var _this = this; - - var arr = this.data.sections || []; - arr.forEach(function (sec) { - return sec.doc = _this; - }); //grab a specific section, by its title - - if (typeof clue === 'string') { - var str = clue.toLowerCase().trim(); - return arr.find(function (s) { - return s.title().toLowerCase() === str; - }); - } - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - paragraphs: function paragraphs(n) { - var arr = []; - this.data.sections.forEach(function (s) { - arr = arr.concat(s.paragraphs()); - }); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; - }, - paragraph: function paragraph(n) { - var arr = this.paragraphs() || []; - - if (typeof n === 'number') { - return arr[n]; - } - - return arr[0]; - }, - sentences: function sentences(n) { - var arr = []; - this.sections().forEach(function (sec) { - arr = arr.concat(sec.sentences()); - }); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; - }, - sentence: function sentence() { - return this.sentences(0); - }, - images: function images(clue) { - var _this2 = this; - - var arr = _sectionMap(this, 'images', null); //grab image from infobox, first - - this.infoboxes().forEach(function (info) { - var img = info.image(); - - if (img) { - arr.unshift(img); //put it at the top - } - }); //look for 'gallery' templates, too - - this.templates().forEach(function (obj) { - if (obj.template === 'gallery') { - obj.images = obj.images || []; - obj.images.forEach(function (img) { - if (img instanceof Image_1 === false) { - img.language = _this2.language(); - img.domain = _this2.domain(); - img = new Image_1(img); - } - - arr.push(img); - }); - } - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - image: function image() { - return this.images(0); - }, - links: function links(clue) { - return _sectionMap(this, 'links', clue); - }, - interwiki: function interwiki(clue) { - return _sectionMap(this, 'interwiki', clue); - }, - lists: function lists(clue) { - return _sectionMap(this, 'lists', clue); - }, - tables: function tables(clue) { - return _sectionMap(this, 'tables', clue); - }, - templates: function templates(clue) { - return _sectionMap(this, 'templates', clue); - }, - references: function references(clue) { - return _sectionMap(this, 'references', clue); - }, - coordinates: function coordinates(clue) { - return _sectionMap(this, 'coordinates', clue); - }, - infoboxes: function infoboxes(clue) { - var arr = _sectionMap(this, 'infoboxes'); //sort them by biggest-first - - arr = arr.sort(function (a, b) { - if (Object.keys(a.data).length > Object.keys(b.data).length) { - return -1; - } - - return 1; - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - text: function text(options) { - options = setDefaults_1(options, defaults$3); //nah, skip these. - - if (this.isRedirect() === true) { - return ''; - } - - var arr = this.sections().map(function (sec) { - return sec.text(options); - }); - return arr.join('\n\n'); - }, - json: function json(options) { - options = setDefaults_1(options, defaults$3); - return toJson(this, options); - }, - debug: function debug() { - console.log('\n'); - this.sections().forEach(function (sec) { - var indent = ' - '; - - for (var i = 0; i < sec.depth; i += 1) { - indent = ' -' + indent; - } - - console.log(indent + (sec.title() || '(Intro)')); - }); - return this; - } - }; - - var isArray$1 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; //add singular-methods, too - - - var plurals = ['sections', 'infoboxes', 'sentences', 'citations', 'references', 'coordinates', 'tables', 'lists', 'links', 'images', 'templates', 'categories']; - plurals.forEach(function (fn) { - var sing = fn.replace(/ies$/, 'y'); - sing = sing.replace(/oxes$/, 'ox'); - sing = sing.replace(/s$/, ''); - - methods$1[sing] = function (n) { - n = n || 0; - var res = this[fn](n); - - if (isArray$1(res)) { - return res[0]; - } - - return res; - }; - }); - Object.keys(methods$1).forEach(function (k) { - Document.prototype[k] = methods$1[k]; - }); //alias these ones - - 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; - var Document_1 = Document; - - var categories = ['category', //en - 'abdeeling', // pdc - 'bólkur', // fo - 'catagóir', // ga - 'categori', // cy - 'categoria', 'categoria', // co - 'categoría', // es - 'categorîa', // lij - 'categorìa', // pms - 'catégorie', 'categorie', 'catègorie', // frp - 'category', 'categuria', // lmo - 'catigurìa', // scn - 'class', // kw - 'ẹ̀ka', // yo - 'flocc', 'flocc', // ang - 'flokkur', 'grup', // tpi - 'jamii', // sw - 'kaarangay', // war - 'kateggoría', // lad - 'kategooria', // et - 'kategori', // da - 'kategorî', // ku - 'kategoria', // eu - 'kategória', // hu - 'kategorie', //de - 'kategoriija', // se - 'kategorija', // sl - 'kategorio', // eo - 'kategoriya', 'kategoriýa', // tk - 'kategoriye', // diq - 'kategory', // fy - 'kategorya', // tl - 'kateqoriya', // az - 'katiguriya', // qu - 'klad', // vo - 'luokka', 'ñemohenda', // gn - 'roinn', //-seòrsa gd - 'ronney', // gv - 'rummad', // br - 'setensele', // nso - 'sokajy', // mg - 'sumut', // atassuseq kl - 'thể', // loại vi - 'turkum', // uz - 'категорија', 'категория', // ru - 'категорія', // uk - 'катэгорыя', 'төркем', // tt - 'קטגוריה', // he - 'تصنيف', 'تۈر', // ug - 'رده', 'श्रेणी', 'श्रेणी', // hi - 'বিষয়শ্রেণী', // bn - 'หมวดหมู่', // th - '분류', // ko - '분류', //ko - '分类' // za - //-- - ]; - - var images = ['file', //en - 'image', //en - 'चित्र', //img - 'archivo', //es - 'attēls', //lv - 'berkas', //id - 'bestand', //nl - 'datei', //de - 'dosiero', //eo - 'dosya', //lad - 'fájl', //hu - 'fasciculus', //la - 'fichier', //fr - 'fil', //da - 'fitxategi', //eu - 'fitxer', //ca - 'gambar', //su - 'imagem', //pt - 'imej', //ms - 'immagine', //it - 'larawan', //tl - 'lêer', //af - 'plik', //pl - 'restr', //br - 'slika', //bs - 'wêne', //ku - 'wobraz', //dsb - 'выява', //be - 'податотека', //mk - 'слика', //sr - 'файл', //ru - 'სურათი', //ka - 'պատկեր', //hy - 'קובץ', //he - 'پرونده', //fa - 'دوتنه', //ps - 'ملف', //ar - 'وێنە', //ckb - 'चित्र', //hi - 'ไฟล์', //th - '파일', //ko - 'ファイル' //ja - ]; - - var infoboxes = ['infobox', //en - 'anfo', //mwl - 'anuāmapa', //haw - 'bilgi kutusu', //tr - 'bilgi', //tr - 'bilgiquti', //uz - 'boaty', //mg - 'boestkelaouiñ', //br - 'bosca', //ga - 'capsa', //la - 'diehtokássa', //se - 'faktamall', //sv - 'ficha', //es - 'generalni', //hr - 'gwybodlen3', //cy - 'info', //pt - 'infobokis', //tpi - 'infoboks', //da - 'infochascha', //rm - 'infokašćik', //dsb - 'infokast', //et - 'infokutija', //bs - 'infolentelė', //lt - 'infopolje', //sl - 'informkesto', //eo - 'infoskreine', //ltg - 'infotaula', //eu - 'inligtingskas', 'inligtingskas3', //af - 'inligtingskas4', //af - 'kishtey', //gv - 'kotak', //su - 'tertcita', //jbo - 'tietolaatikko', //fi - 'yerleşim bilgi kutusu', 'ynfoboks', //fy - 'πλαίσιο', //el - 'акарточка', //ab - 'аҥа', //mhr - 'инфобокс', //kk - 'инфокутија', //sr - 'инфокутия', //bg - 'інфобокс', //rue - 'канадский', 'картка', //be - 'карточка', //ru - 'карточка2', //mdf - 'карточкарус', //ba - 'картуш', //koi - 'қуттӣ', //tg - 'ინფოდაფა', //ka - 'տեղեկաքարտ', //hy - 'אינפאקעסטל', //yi - 'תבנית', //he - 'بطاقة', //ar - 'ڄاڻخانو', //sd - 'خانہ', //ur - 'لغة', 'ज्ञानसन्दूक', //hi - 'তথ্যছক', //bn - 'ਜਾਣਕਾਰੀਡੱਬਾ', //pa - 'సమాచారపెట్టె', //te - 'තොරතුරුකොටුව', //si - 'กล่องข้อมูล', //th - 'ប្រអប់ព័ត៌មាន', //km - '정보상자', //ko - '明細' //zh_yue - ]; - - var redirects = ['adkas', //br - 'aýdaw', 'doorverwijzing', 'ohjaus', 'patrz', //pl - 'přesměruj', 'redirección', 'redireccion', 'redirección', //es - 'redirecionamento', //pt - 'redirect', //en - 'redirection', 'redirection', //fr - 'rinvia', //it - 'tilvísun', 'uudelleenohjaus', 'weiterleitung', 'weiterleitung', //de - 'yönlendi̇r', 'yönlendirme', 'yönlendi̇rme', //tr - 'ανακατευθυνση', //el - 'айдау', 'перанакіраваньне', 'перенаправлення', //uk - 'пренасочување', //mk - 'преусмери', 'преусмјери', 'تغییر_مسیر', 'تغییرمسیر', 'تغییرمسیر', //fa - 'เปลี่ยนทาง', //th - 'ប្តូរទីតាំងទៅ', //km - '転送', //ja - '重定向']; - - var references = ['references', 'reference', 'einzelnachweise', 'referencias', 'références', 'notes et références', '脚注', 'referenser', 'bronnen', 'примечания']; - - // and then manually on March 2020 - - var i18n$1 = { - categories: categories, - disambig: disambig, - images: images, - infoboxes: infoboxes, - redirects: redirects, - references: 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) - // ] - - }; - var languages = { aa: 'Afar', //Afar @@ -1506,7 +1405,7 @@ //Dutch ne: 'नेपाली', //Nepali - "new": 'नेपालभाषा', + new: 'नेपालभाषा', //Newar ng: 'Oshiwambo', //Ndonga @@ -1702,10 +1601,10 @@ }; - var wp = '.wikipedia.org/wiki/$1'; - var wm = '.wikimedia.org/wiki/$1'; - var w = 'www.'; - var interwiki = { + const wp = '.wikipedia.org/wiki/$1'; + const wm = '.wikimedia.org/wiki/$1'; + const w = 'www.'; + var interwiki$1 = { acronym: w + 'acronymfinder.com/$1.html', advisory: 'advisory' + wm, advogato: w + 'advogato.org/$1', @@ -2169,32 +2068,28 @@ //so we have to whitelist allowable interwiki links //add language prefixes too.. - Object.keys(languages).forEach(function (k) { - interwiki[k] = k + '.wikipedia.org/wiki/$1'; + Object.keys(languages).forEach(k => { + interwiki$1[k] = k + '.wikipedia.org/wiki/$1'; }); //this is predictably very complicated. // https://meta.wikimedia.org/wiki/Help:Interwiki_linking - var parseInterwiki = function parseInterwiki(obj) { - var str = obj.page || ''; + const parseInterwiki = function (obj) { + let str = obj.page || ''; if (str.indexOf(':') !== -1) { - var m = str.match(/^(.*):(.*)/); + let m = str.match(/^(.*):(.*)/); if (m === null) { return obj; } - var site = m[1] || ''; + let site = m[1] || ''; site = site.toLowerCase(); if (site.indexOf(':') !== -1) { - var _site$match = site.match(/^:?(.*):(.*)/), - _site$match2 = _slicedToArray(_site$match, 3), - wiki = _site$match2[1], - lang = _site$match2[2]; //only allow interwikis to these specific places + let [, wiki, lang] = site.match(/^:?(.*):(.*)/); //only allow interwikis to these specific places - - if (interwiki.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { + if (interwiki$1.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { return obj; } @@ -2203,7 +2098,7 @@ lang: lang }; } else { - if (interwiki.hasOwnProperty(site) === false) { + if (interwiki$1.hasOwnProperty(site) === false) { return obj; } @@ -2216,13 +2111,13 @@ return obj; }; - var interwiki$1 = parseInterwiki; + var interwiki = parseInterwiki; - var ignore_links = /^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i; - var external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g; - var link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" + const ignore_links = /^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i; + const external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g; + const link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" - var external_links = function external_links(links, str) { + const external_links = function (links, str) { str.replace(external_link, function (raw, protocol, link, text) { text = text || ''; links.push({ @@ -2236,12 +2131,12 @@ return links; }; - var internal_links = function internal_links(links, str) { + const internal_links = function (links, str) { //regular links str.replace(link_reg, function (raw, s, suffix) { - var txt = null; //make a copy of original + let txt = null; //make a copy of original - var link = s; + let link = s; if (s.match(/\|/)) { //replacement link [[link|text]] @@ -2268,16 +2163,16 @@ //remove anchors from end [[toronto#history]] - var obj = { + let obj = { page: link, raw: raw }; - obj.page = obj.page.replace(/#(.*)/, function (a, b) { + obj.page = obj.page.replace(/#(.*)/, (a, b) => { obj.anchor = b; return ''; }); //grab any fr:Paris parts - obj = interwiki$1(obj); + obj = interwiki(obj); if (obj.wiki) { obj.type = 'interwiki'; @@ -2309,8 +2204,8 @@ }; //grab an array of internal links in the text - var parse_links = function parse_links(str) { - var links = []; //first, parse external links + const parse_links = function (str) { + let links = []; //first, parse external links links = external_links(links, str); //internal links @@ -2323,11 +2218,11 @@ return links; }; - var parse = parse_links; + var parse$8 = parse_links; - var REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n$1.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); + const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); - var isRedirect = function isRedirect(wiki) { + const isRedirect = function (wiki) { //too long to be a redirect? if (!wiki || wiki.length > 500) { return false; @@ -2336,49 +2231,49 @@ return REDIRECT_REGEX.test(wiki); }; - var parse$1 = function parse$1(wiki) { - var m = wiki.match(REDIRECT_REGEX); + const parse$7 = function (wiki) { + let m = wiki.match(REDIRECT_REGEX); if (m && m[2]) { - var links = parse(m[2]) || []; + let links = parse$8(m[2]) || []; return links[0]; } return {}; }; - var redirects$1 = { + var redirects = { isRedirect: isRedirect, - parse: parse$1 + parse: parse$7 }; //okay, i know you're not supposed to regex html, but... //https://en.wikipedia.org/wiki/Help:HTML_in_wikitext //these are things we throw-away //these will mess-up if they're nested, but they're not usually. - var ignore = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; - var openTag = "< ?(".concat(ignore.join('|'), ") ?[^>]{0,200}?>"); - var closeTag = "< ?/ ?(".concat(ignore.join('|'), ") ?>"); - var anyChar = '\\s\\S'; //including newline + const ignore$1 = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; + const openTag = `< ?(${ignore$1.join('|')}) ?[^>]{0,200}?>`; + const closeTag = `< ?/ ?(${ignore$1.join('|')}) ?>`; + const anyChar = '\\s\\S'; //including newline - var noThanks = new RegExp("".concat(openTag, "[").concat(anyChar, "]+?").concat(closeTag), 'ig'); + const noThanks = new RegExp(`${openTag}[${anyChar}]+?${closeTag}`, 'ig'); - var kill_xml = function kill_xml(wiki) { + const kill_xml = function (wiki) { //( tags are parsed in Section class) - luckily, refs can't be recursive. //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, ' '); // // convert these html tags to known formatting - wiki = wiki.replace(/(.*?)<\/i>/g, "''$1''"); - wiki = wiki.replace(/(.*?)<\/b>/g, "'''$1'''"); // these are better-handled with templates + wiki = wiki.replace(/(.*?)<\/i>/g, `''$1''`); + wiki = wiki.replace(/(.*?)<\/b>/g, `'''$1'''`); // these are better-handled with templates - wiki = wiki.replace(/(.*?)<\/sub>/g, "{{sub|$1}}"); - wiki = wiki.replace(/(.*?)<\/sup>/g, "{{sup|$1}}"); //some formatting xml, we'll keep their insides though + wiki = wiki.replace(/(.*?)<\/sub>/g, `{{sub|$1}}`); + wiki = wiki.replace(/(.*?)<\/sup>/g, `{{sup|$1}}`); //some formatting xml, we'll keep their insides though wiki = wiki.replace(/ ?<[ \/]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ \/]?> ?/g, ' '); //, @@ -2393,9 +2288,17 @@ var kill_xml_1 = kill_xml; - function preProcess(doc) { - var wiki = doc.wiki; //remove comments - + /** + * removes unnecessary strings from the wikitext + * it is mostly-formatting stuff can be cleaned-up first, to make life easier + * + * @private + * @param {string} wiki the wikitext that needs processing + * @returns {string} the processed text + */ + + function preProcess(wiki) { + //remove comments wiki = wiki.replace(//g, ''); wiki = wiki.replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi, ''); //signitures @@ -2417,34 +2320,40 @@ wiki = wiki.replace(/\([,;: ]+?\)/g, ''); //these templates just screw things up, too wiki = wiki.replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i, ''); - doc.wiki = wiki; + return wiki; } var preProcess_1 = preProcess; - // 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 - var specialChar = /[\\\.$]/; - - var encodeStr = function encodeStr(str) { + const specialChar = /[\\\.$]/; + /** + * this function encodes a string to make it mongodb compatible. + * https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 + * + * @param {string} str + * @returns {string} the encoded string + */ + + const encodeStr = function (str) { if (typeof str !== 'string') { str = ''; } str = str.replace(/\\/g, '\\\\'); - str = str.replace(/^\$/, "\\u0024"); - str = str.replace(/\./g, "\\u002e"); + str = str.replace(/^\$/, '\\u0024'); + str = str.replace(/\./g, '\\u002e'); return str; }; - var encodeObj = function encodeObj() { - var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var keys = Object.keys(obj); + const encodeObj = function (obj = {}) { + let keys = Object.keys(obj); - for (var i = 0; i < keys.length; i += 1) { + for (let i = 0; i < keys.length; i += 1) { if (specialChar.test(keys[i]) === true) { - var str = encodeStr(keys[i]); + let str = encodeStr(keys[i]); if (str !== keys[i]) { obj[str] = obj[keys[i]]; @@ -2460,7 +2369,7 @@ encodeObj: encodeObj }; - var defaults$4 = { + const defaults$9 = { headers: true, depth: true, paragraphs: true, @@ -2470,25 +2379,33 @@ infoboxes: true, lists: true, references: true - }; // + }; + /** + * + * @param {Section} section + * @param {sectionToJsonOptions} options + * @returns {object} + */ + + const toJSON$2 = function (section, options) { + options = setDefaults_1(options, defaults$9); + /** + * @type {object} + */ - var toJSON$1 = function toJSON(section, options) { - options = setDefaults_1(options, defaults$4); - var data = {}; + let data = {}; if (options.headers === true) { data.title = section.title(); } if (options.depth === true) { - data.depth = section.depth; + data.depth = section.depth(); } //these return objects if (options.paragraphs === true) { - var paragraphs = section.paragraphs().map(function (p) { - return p.json(options); - }); + let paragraphs = section.paragraphs().map(p => p.json(options)); if (paragraphs.length > 0) { data.paragraphs = paragraphs; @@ -2497,9 +2414,7 @@ if (options.images === true) { - var images = section.images().map(function (img) { - return img.json(options); - }); + let images = section.images().map(img => img.json(options)); if (images.length > 0) { data.images = images; @@ -2508,9 +2423,7 @@ if (options.tables === true) { - var tables = section.tables().map(function (t) { - return t.json(options); - }); + let tables = section.tables().map(t => t.json(options)); if (tables.length > 0) { data.tables = tables; @@ -2519,24 +2432,20 @@ if (options.templates === true) { - var templates = section.templates(); + let templates = section.templates().map(tmpl => tmpl.json()); if (templates.length > 0) { data.templates = templates; //encode them, for mongodb if (options.encode === true) { - data.templates.forEach(function (t) { - return encode.encodeObj(t); - }); + data.templates.forEach(t => encode.encodeObj(t)); } } } //infobox json data if (options.infoboxes === true) { - var infoboxes = section.infoboxes().map(function (i) { - return i.json(options); - }); + let infoboxes = section.infoboxes().map(i => i.json(options)); if (infoboxes.length > 0) { data.infoboxes = infoboxes; @@ -2545,9 +2454,7 @@ if (options.lists === true) { - var lists = section.lists().map(function (list) { - return list.json(options); - }); + let lists = section.lists().map(list => list.json(options)); if (lists.length > 0) { data.lists = lists; @@ -2556,9 +2463,7 @@ if (options.references === true || options.citations === true) { - var references = section.references().map(function (ref) { - return ref.json(options); - }); + let references = section.references().map(ref => ref.json(options)); if (references.length > 0) { data.references = references; @@ -2567,468 +2472,125 @@ if (options.sentences === true) { - data.sentences = section.sentences().map(function (s) { - return s.json(options); - }); + data.sentences = section.sentences().map(s => s.json(options)); } return data; }; - var toJson$2 = toJSON$1; + var toJson$4 = toJSON$2; - var defaults$5 = { - tables: true, - references: true, - paragraphs: true, - templates: true, - infoboxes: true - }; //the stuff between headings - 'History' section for example + const defaults$8 = { + type: 'internal' + }; - var Section = function Section(data) { - this.depth = data.depth; - this.doc = null; - this._title = data.title || ''; - Object.defineProperty(this, 'doc', { - enumerable: false, - value: null - }); - data.templates = data.templates || []; + const Link = function (data) { + data = data || {}; + data = Object.assign({}, defaults$8, data); Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; - var methods$2 = { - title: function title() { - return this._title || ''; + const methods$7 = { + text: function (str) { + if (str !== undefined) { + this.data.text = str; + } + + let txt = this.data.text || this.data.page || ''; // remove bold/italics + + txt = txt.replace(/''+/g, ''); + return txt; }, - index: function index() { - if (!this.doc) { - return null; + json: function () { + let obj = { + text: this.data.text, + type: this.type() + }; + + if (obj.type === 'internal') { + obj.page = this.page(); + } else if (obj.type === 'interwiki') { + obj.wiki = this.wiki(); + } else { + obj.site = this.site(); } - var index = this.doc.sections().indexOf(this); + let anchor = this.anchor(); - if (index === -1) { - return null; + if (anchor) { + obj.anchor = anchor; } - return index; + return obj; }, - indentation: function indentation() { - return this.depth; + wikitext: function () { + let txt = this.data.raw || ''; + return txt; }, - sentences: function sentences(n) { - var arr = this.paragraphs().reduce(function (list, p) { - return list.concat(p.sentences()); - }, []); - - if (typeof n === 'number') { - return arr[n]; + page: function (str) { + if (str !== undefined) { + this.data.page = str; } - return arr || []; + return this.data.page; }, - paragraphs: function paragraphs(n) { - var arr = this.data.paragraphs || []; + anchor: function (str) { + if (str !== undefined) { + this.data.anchor = str; + } - if (typeof n === 'number') { - return arr[n]; + return this.data.anchor || ''; + }, + wiki: function (str) { + if (str !== undefined) { + this.data.wiki = str; } - return arr || []; + return this.data.wiki; }, - paragraph: function paragraph(n) { - var arr = this.data.paragraphs || []; + type: function (str) { + if (str !== undefined) { + this.data.type = str; + } - if (typeof n === 'number') { - return arr[n]; + return this.data.type; + }, + site: function (str) { + if (str !== undefined) { + this.data.site = str; } - return arr[0]; + return this.data.site; }, - links: function links(n) { - var arr = []; - this.infoboxes().forEach(function (templ) { - templ.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - this.sentences().forEach(function (s) { - s.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - this.tables().forEach(function (t) { - t.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - this.lists().forEach(function (list) { - list.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - - 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 - - var link = arr.find(function (o) { - return o.page() === n; - }); - return link === undefined ? [] : [link]; - } - - return arr; - }, - tables: function tables(clue) { - var arr = this.data.tables || []; - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - templates: function templates(clue) { - var arr = this.data.templates || []; - arr = arr.map(function (t) { - return t.json(); - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - if (typeof clue === 'string') { - clue = clue.toLowerCase(); - return arr.filter(function (o) { - return o.template === clue || o.name === clue; - }); - } - - return arr; - }, - infoboxes: function infoboxes(clue) { - var arr = this.data.infoboxes || []; - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - coordinates: function coordinates(clue) { - var arr = [].concat(this.templates('coord'), this.templates('coor')); - - if (typeof clue === 'number') { - if (!arr[clue]) { - return []; - } - - return arr[clue]; - } - - return arr; - }, - lists: function lists(clue) { - var arr = []; - this.paragraphs().forEach(function (p) { - arr = arr.concat(p.lists()); - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - interwiki: function interwiki(num) { - var arr = []; - this.paragraphs().forEach(function (p) { - arr = arr.concat(p.interwiki()); - }); - - if (typeof num === 'number') { - return arr[num]; - } - - return arr || []; - }, - images: function images(clue) { - var arr = []; - this.paragraphs().forEach(function (p) { - arr = arr.concat(p.images()); - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr || []; - }, - references: function references(clue) { - var arr = this.data.references || []; - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - //transformations - remove: function remove() { - if (!this.doc) { - return null; - } - - var bads = {}; - bads[this.title()] = true; //remove children too - - this.children().forEach(function (sec) { - return bads[sec.title()] = true; - }); - var arr = this.doc.data.sections; - arr = arr.filter(function (sec) { - return bads.hasOwnProperty(sec.title()) !== true; - }); - this.doc.data.sections = arr; - return this.doc; - }, - //move-around sections like in jquery - nextSibling: function nextSibling() { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - - for (var i = index + 1; i < sections.length; i += 1) { - if (sections[i].depth < this.depth) { - return null; - } - - if (sections[i].depth === this.depth) { - return sections[i]; - } - } - - return null; - }, - lastSibling: function lastSibling() { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - return sections[index - 1] || null; - }, - children: function children(n) { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - var children = []; //(immediately preceding sections with higher depth) - - if (sections[index + 1] && sections[index + 1].depth > this.depth) { - for (var i = index + 1; i < sections.length; i += 1) { - if (sections[i].depth > this.depth) { - children.push(sections[i]); - } else { - break; - } - } - } - - if (typeof n === 'string') { - n = n.toLowerCase(); - return children.find(function (s) { - return s.title().toLowerCase() === n; - }); - } - - if (typeof n === 'number') { - return children[n]; - } - - return children; - }, - parent: function parent() { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - - for (var i = index; i >= 0; i -= 1) { - if (sections[i] && sections[i].depth < this.depth) { - return sections[i]; - } - } - - return null; - }, - text: function text(options) { - options = setDefaults_1(options, defaults$5); - var pList = this.paragraphs(); - pList = pList.map(function (p) { - return p.text(options); - }); - return pList.join('\n\n'); - }, - json: function json(options) { - options = setDefaults_1(options, defaults$5); - return toJson$2(this, options); - } - }; //aliases - - methods$2.next = methods$2.nextSibling; - methods$2.last = methods$2.lastSibling; - methods$2.previousSibling = methods$2.lastSibling; - methods$2.previous = methods$2.lastSibling; - methods$2.citations = methods$2.references; - methods$2.sections = methods$2.children; - Object.keys(methods$2).forEach(function (k) { - Section.prototype[k] = methods$2[k]; - }); - var Section_1 = Section; - - var helpers = { - capitalise: function capitalise(str) { - if (str && typeof str === 'string') { - return str.charAt(0).toUpperCase() + str.slice(1); - } - - return ''; - }, - trim_whitespace: 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 ''; - } - }; - - var defaults$6 = { - type: 'internal' - }; - - var Link = function Link(data) { - data = data || {}; - data = Object.assign({}, defaults$6, data); // console.log(data) - - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - }; - - var methods$3 = { - text: function text(str) { - if (str !== undefined) { - this.data.text = str; - } - - return this.data.text; - }, - json: function json() { - var obj = { - text: this.text(), - type: this.type() - }; - - if (obj.type === 'internal') { - obj.page = this.page(); - } else if (obj.type === 'interwiki') { - obj.wiki = this.wiki(); - } else { - obj.site = this.site(); - } - - var anchor = this.anchor(); - - if (anchor) { - obj.anchor = anchor; - } - - return obj; - }, - page: function page(str) { - if (str !== undefined) { - this.data.page = str; - } - - return this.data.page; - }, - anchor: function anchor(str) { - if (str !== undefined) { - this.data.anchor = str; - } - - return this.data.anchor || ''; - }, - wiki: function wiki(str) { - if (str !== undefined) { - this.data.wiki = str; - } - - return this.data.wiki; - }, - type: function type(str) { - if (str !== undefined) { - this.data.type = str; - } - - return this.data.type; - }, - site: function site(str) { - if (str !== undefined) { - this.data.site = str; - } - - return this.data.site; - }, - // create a url for any type of link - href: function href() { - var type = this.type(); + //create a url for any type of link + href: function () { + let type = this.type(); if (type === 'external') { return this.site(); } - var page = this.page(); + let page = this.page(); page = page.replace(/ /g, '_'); page = encodeURIComponent(page); - var url = ''; + let url = ''; if (type === 'interwiki') { - var wiki = this.wiki(); + let wiki = this.wiki(); url = 'https://en.wikipedia.org/wiki/$1'; - if (interwiki.hasOwnProperty(wiki)) { - url = 'http://' + interwiki[this.wiki()]; + if (interwiki$1.hasOwnProperty(wiki)) { + url = 'http://' + interwiki$1[this.wiki()]; } url = url.replace(/\$1/g, page); } else { //internal link - url = "./".concat(this.page()); - } // add anchor on the end + url = `./${this.page()}`; + } //add anchor on the end if (this.anchor()) { @@ -3038,26 +2600,26 @@ return url; } }; - Object.keys(methods$3).forEach(function (k) { - Link.prototype[k] = methods$3[k]; + Object.keys(methods$7).forEach(k => { + Link.prototype[k] = methods$7[k]; }); var Link_1 = Link; // const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):[^\\]\\]]{2,80}\\]\\]', 'gi') //return only rendered text of wiki links - var removeLinks = function removeLinks(line) { + const removeLinks = function (line) { // [[File:with|Size]] line = line.replace(/\[\[File:(.{2,80}?)\|([^\]]+?)\]\](\w{0,5})/g, '$1'); return line; }; - var getLinks = function getLinks(data) { - var wiki = data.text; - var links = parse(wiki) || []; - data.links = links.map(function (link) { - wiki = wiki.replace(link.raw, link.text || link.page || ''); - delete link.raw; + 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 + return new Link_1(link); }); wiki = removeLinks(wiki); @@ -3067,28 +2629,28 @@ var link = getLinks; //handle the bold/italics - var formatting = function formatting(obj) { - var bolds = []; - var italics = []; - var wiki = obj.text || ''; //bold and italics combined 5 's + const formatting = function (obj) { + let bolds = []; + let italics = []; + let wiki = obj.text || ''; //bold and italics combined 5 's - wiki = wiki.replace(/'''''(.{0,200}?)'''''/g, function (a, b) { + wiki = wiki.replace(/'''''(.{0,200}?)'''''/g, (a, b) => { bolds.push(b); italics.push(b); return b; }); //''''four'''' → bold with quotes - wiki = wiki.replace(/''''(.{0,200}?)''''/g, function (a, b) { - bolds.push("'".concat(b, "'")); - return "'".concat(b, "'"); + wiki = wiki.replace(/''''(.{0,200}?)''''/g, (a, b) => { + bolds.push(`'${b}'`); + return `'${b}'`; }); //'''bold''' - wiki = wiki.replace(/'''(.{0,200}?)'''/g, function (a, b) { + wiki = wiki.replace(/'''(.{0,200}?)'''/g, (a, b) => { bolds.push(b); return b; }); //''italic'' - wiki = wiki.replace(/''(.{0,200}?)''/g, function (a, b) { + wiki = wiki.replace(/''(.{0,200}?)''/g, (a, b) => { italics.push(b); return b; }); //pack it all up.. @@ -3110,18 +2672,18 @@ var formatting_1 = formatting; - var isNumber = /^[0-9,.]+$/; - var defaults$7 = { + const isNumber = /^[0-9,.]+$/; + const defaults$7 = { text: true, links: true, formatting: true, numbers: true }; - var toJSON$2 = function toJSON(s, options) { + const toJSON$1 = function (s, options) { options = setDefaults_1(options, defaults$7); - var data = {}; - var text = s.text(); + let data = {}; + let text = s.text(); if (options.text === true) { data.text = text; @@ -3129,7 +2691,7 @@ if (options.numbers === true && isNumber.test(text)) { - var num = Number(text.replace(/,/g, '')); + let num = Number(text.replace(/,/g, '')); if (isNaN(num) === false) { data.number = num; @@ -3137,9 +2699,7 @@ } if (options.links && s.links().length > 0) { - data.links = s.links().map(function (l) { - return l.json(); - }); + data.links = s.links().map(l => l.json()); } if (options.formatting && s.data.fmt) { @@ -3149,80 +2709,47 @@ return data; }; - var toJson$3 = toJSON$2; + var toJson$3 = toJSON$1; - var Sentence = function Sentence(data) { + const Sentence = function (data = {}) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; - var methods$4 = { - links: function links(n) { - var arr = this.data.links || []; + const methods$6 = { + 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 - var link = arr.find(function (o) { - return o.page === n; - }); + let link = arr.find(o => o.page === n); return link === undefined ? [] : [link]; } return arr; }, - interwiki: function interwiki(n) { - var arr = this.links().filter(function (l) { - return l.wiki !== undefined; - }); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; + interwiki: function () { + return this.links().filter(l => l.wiki !== undefined); }, - bolds: function bolds(n) { - var arr = []; - + bolds: function () { if (this.data && this.data.fmt && this.data.fmt.bold) { - arr = this.data.fmt.bold || []; - } - - if (typeof n === 'number') { - return arr[n]; + return this.data.fmt.bold || []; } - return arr; + return []; }, - italics: function italics(n) { - var arr = []; - + italics: function () { 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 dates(n) { - var arr = []; - - if (typeof n === 'number') { - return arr[n]; + return this.data.fmt.italic || []; } - return arr; + return []; }, - text: function text(str) { + text: function (str) { if (str !== undefined && typeof str === 'string') { //set the text? this.data.text = str; @@ -3230,15 +2757,38 @@ return this.data.text || ''; }, - json: function json(options) { + json: function (options) { return toJson$3(this, options); + }, + wikitext: function () { + return this.data.wiki || ''; + }, + isEmpty: function () { + return this.data.text === ''; } }; - Object.keys(methods$4).forEach(function (k) { - Sentence.prototype[k] = methods$4[k]; + Object.keys(methods$6).forEach(k => { + Sentence.prototype[k] = methods$6[k]; + }); // aliases + + const singular$3 = { + links: 'link', + bolds: 'bold', + italics: 'italic' + }; + Object.keys(singular$3).forEach(k => { + let sing = singular$3[k]; + + Sentence.prototype[sing] = function (clue) { + let arr = this[k](clue); + + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0]; + }; }); - Sentence.prototype.italic = Sentence.prototype.italics; - Sentence.prototype.bold = Sentence.prototype.bolds; Sentence.prototype.plaintext = Sentence.prototype.text; var Sentence_1 = Sentence; @@ -3250,27 +2800,25 @@ // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. // @spencermountain 2015 MIT - var abbreviations = _abbreviations.concat('[^]][^]]'); - var abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + ")[.!?] ?$", 'i'); - var acronym_reg = new RegExp("[ |.|'|[][A-Z].? *?$", 'i'); - var elipses_reg = new RegExp('\\.\\.\\.* +?$'); - var circa_reg = / c\. $/; - var hasWord = new RegExp('[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]', 'iu'); //turn a nested array into one array + const abbreviations = _abbreviations.concat('[^]][^]]'); + const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i'); + 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 - var flatten = function flatten(arr) { - var all = []; + const flatten = function (arr) { + let all = []; arr.forEach(function (a) { all = all.concat(a); }); return all; }; - var naiive_split = function naiive_split(text) { + const naiive_split = function (text) { //first, split by newline - var splits = text.split(/(\n+)/); - splits = splits.filter(function (s) { - return s.match(/\S/); - }); //split by period, question-mark, and exclamation-mark + let splits = text.split(/(\n+)/); + splits = splits.filter(s => s.match(/\S/)); //split by period, question-mark, and exclamation-mark splits = splits.map(function (str) { return str.split(/(\S.+?[.!?]"?)(?=\s+|$)/g); //\u3002 @@ -3279,17 +2827,17 @@ }; // if this looks like a period within a wikipedia link, return false - var isBalanced = function isBalanced(str) { + const isBalanced = function (str) { str = str || ''; - var open = str.split(/\[\[/) || []; - var closed = str.split(/\]\]/) || []; + const open = str.split(/\[\[/) || []; + const closed = str.split(/\]\]/) || []; if (open.length > closed.length) { return false; } //make sure quotes are closed too - var quotes = str.match(/"/g); + const quotes = str.match(/"/g); if (quotes && quotes.length % 2 !== 0 && str.length < 900) { return false; @@ -3298,10 +2846,10 @@ return true; }; - var sentence_parser = function sentence_parser(text) { - var sentences = []; //first do a greedy-split.. + const sentence_parser = function (text) { + let sentences = []; //first do a greedy-split.. - var chunks = []; //ensure it 'smells like' a sentence + let chunks = []; //ensure it 'smells like' a sentence if (!text || typeof text !== 'string' || text.trim().length === 0) { return sentences; @@ -3310,10 +2858,10 @@ // todo: look for side effects in this regex replacement: - var splits = naiive_split(text); //filter-out the grap ones + let splits = naiive_split(text); //filter-out the grap ones - for (var i = 0; i < splits.length; i++) { - var s = splits[i]; + for (let i = 0; i < splits.length; i++) { + let s = splits[i]; if (!s || s === '') { continue; @@ -3336,7 +2884,7 @@ } //detection of non-sentence chunks - var isSentence = function isSentence(hmm) { + const isSentence = function (hmm) { if (hmm.match(abbrev_reg) || hmm.match(acronym_reg) || hmm.match(elipses_reg) || hmm.match(circa_reg)) { return false; } //too short? - no consecutive letters @@ -3354,14 +2902,14 @@ }; //loop through these chunks, and join the non-sentence chunks back together.. - for (var _i = 0; _i < chunks.length; _i++) { + for (let i = 0; i < chunks.length; i++) { //should this chunk be combined with the next one? - if (chunks[_i + 1] && !isSentence(chunks[_i])) { - chunks[_i + 1] = chunks[_i] + (chunks[_i + 1] || ''); //.replace(/ +/g, ' '); - } else if (chunks[_i] && chunks[_i].length > 0) { + if (chunks[i + 1] && !isSentence(chunks[i])) { + chunks[i + 1] = chunks[i] + (chunks[i + 1] || ''); //.replace(/ +/g, ' '); + } else if (chunks[i] && chunks[i].length > 0) { //this chunk is a proper sentence.. - sentences.push(chunks[_i]); - chunks[_i] = ''; + sentences.push(chunks[i]); + chunks[i] = ''; } } //if we never got a sentence, return the given text @@ -3373,7 +2921,15 @@ return sentences; }; - var parse$2 = sentence_parser; + var parse$6 = sentence_parser; + + /** + * This function removes some final characters from the sentence + * + * @private + * @param {string} line the wiki text for processing + * @returns {string} the processed string + */ function postprocess(line) { //remove empty parentheses (sometimes caused by removing templates) @@ -3384,11 +2940,18 @@ line = helpers.trim_whitespace(line); line = line.replace(/ +\.$/, '.'); return line; - } // returns one sentence object + } + /** + * returns one sentence object + * + * @param {string} str create a object from a sentence + * @returns {Sentence} the Sentence created from the text + */ function fromText(str) { - var obj = { + let obj = { + wiki: str, text: str }; //pull-out the [[links]] @@ -3401,9 +2964,9 @@ } //used for consistency with other class-definitions - var byParagraph = function byParagraph(paragraph) { - // array of texts - var sentences = parse$2(paragraph.wiki); // sentence objects + const byParagraph = function (paragraph) { + //array of texts + let sentences = parse$6(paragraph.wiki); //sentence objects sentences = sentences.map(fromText); //remove :indented first line, as it is often a disambiguation @@ -3419,17 +2982,24 @@ byParagraph: byParagraph }; - //remove the top/bottom off the template - var strip = function strip(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; }; var _strip = strip; //normalize template names - var fmtName = function fmtName(name) { + const fmtName = function (name) { name = (name || '').trim(); name = name.toLowerCase(); name = name.replace(/_/g, ' '); @@ -3438,33 +3008,36 @@ var _fmtName = fmtName; - //turn {{name|one|two|three}} into [name, one, two, three] - var pipeSplitter = function pipeSplitter(tmpl) { - //start with a naiive '|' split - var arr = tmpl.split(/\n?\|/); //we've split by '|', which is pretty lame + /** + * 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 :/ - arr.forEach(function (a, i) { + arr.forEach((a, i) => { if (a === null) { return; } //has '[[' but no ']]' - //has equal number of openning and closing tags. handle nested case '[[[[' ']]' + //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]; + 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(function (a) { - return a !== null; - }); - arr = arr.map(function (a) { - return (a || '').trim(); - }); //remove empty fields, only at the end: + arr = arr.filter(a => a !== null); + arr = arr.map(a => (a || '').trim()); //remove empty fields, only at the end: - for (var i = arr.length - 1; i >= 0; i -= 1) { + for (let i = arr.length - 1; i >= 0; i -= 1) { if (arr[i] === '') { arr.pop(); } @@ -3477,21 +3050,33 @@ var _01PipeSplitter = pipeSplitter; - // every value in {{tmpl|a|b|c}} needs a name - // here we come up with names for them - var hasKey = /^[ '-\)\x2D\.0-9_a-z\xC0-\xFF\u0153\u017F\u1E9E\u212A\u212B]+=/i; //templates with these properties are asking for trouble + //every value in {{tmpl|a|b|c}} needs a name + //here we come up with names for them + const hasKey = /^[\p{Letter}0-9\._\- '()œ]+=/iu; //templates with these properties are asking for trouble - var reserved = { + const reserved = { template: true, list: true, prototype: true - }; //turn 'key=val' into {key:key, val:val} - - var parseKey = function parseKey(str) { - var parts = str.split('='); - var key = parts[0] || ''; + }; + /** + * @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] || ''; key = key.toLowerCase().trim(); - var val = parts.slice(1).join('='); //don't let it be called 'template'.. + let val = parts.slice(1).join('='); //don't let it be called 'template'.. if (reserved.hasOwnProperty(key)) { key = '_' + key; @@ -3501,47 +3086,54 @@ key: key, val: val.trim() }; - }; //turn [a, b=v, c] into {'1':a, b:v, '2':c} + }; + /** + * 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 {object} and object with the names as the keys and the values as the values + */ - var keyMaker = function keyMaker(arr, order) { - var o = 0; - return arr.reduce(function (h, str) { - str = (str || '').trim(); //support named keys - 'foo=bar' + 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) { - var res = parseKey(str); + let res = parseKey(str); if (res.key) { h[res.key] = res.val; return h; } - } //try a key from given 'order' names - + } //if the current index is present in the order array then we have a name for the key - if (order && order[o]) { - var key = order[o]; //here goes! + 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; }, {}); }; var _02KeyMaker = keyMaker; - var whoCares = { + const whoCares = { classname: true, style: true, align: true, margin: true, left: true, - "break": true, + break: true, boxsize: true, framestyle: true, item_style: true, @@ -3551,8 +3143,8 @@ colwidth: true }; //remove wiki-cruft & some styling info from templates - var cleanup = function cleanup(obj) { - Object.keys(obj).forEach(function (k) { + const cleanup$1 = function (obj) { + Object.keys(obj).forEach(k => { if (whoCares[k.toLowerCase()] === true) { delete obj[k]; } //remove empty values, too @@ -3565,12 +3157,20 @@ return obj; }; - var _03Cleanup = cleanup; + var _03Cleanup = cleanup$1; - var parseSentence = _04Sentence.fromText; // most templates just want plaintext... + const parseSentence$7 = _04Sentence.fromText; + /** + * most templates just want plaintext... + * + * @private + * @param {str} str + * @param {'json' | 'raw'} [fmt] + * @returns {string} text + */ - var makeFormat = function makeFormat(str, fmt) { - var s = parseSentence(str); //support various output formats + const makeFormat = function (str, fmt) { + let s = parseSentence$7(str); //support various output formats if (fmt === 'json') { return s.json(); @@ -3580,21 +3180,29 @@ return s.text(); - }; // - + }; + /** + * 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 + */ - var parser = function parser(tmpl, order, fmt) { - order = order || []; //renomove {{}}'s + const parser = function (tmpl, order = [], fmt) { + //remove {{}}'s and split based on pipes tmpl = _strip(tmpl || ''); - var arr = _01PipeSplitter(tmpl); //get template name + let arr = _01PipeSplitter(tmpl); //get template name - var name = arr.shift(); //name each value + let name = arr.shift(); //name each value - var obj = _02KeyMaker(arr, order); //remove wiki-junk + let obj = _02KeyMaker(arr, order); //remove wiki-junk obj = _03Cleanup(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) { @@ -3603,11 +3211,9 @@ delete obj['1']; } - Object.keys(obj).forEach(function (k) { + Object.keys(obj).forEach(k => { if (k === 'list') { - obj[k] = obj[k].map(function (v) { - return makeFormat(v, fmt); - }); + obj[k] = obj[k].map(v => makeFormat(v, fmt)); return; } @@ -3621,22 +3227,26 @@ return obj; }; - var parse$3 = parser; + var toJSON = parser; - var Reference = function Reference(data) { + const Reference = function (data, wiki) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; - var methods$5 = { - title: function title() { - var data = this.data; + const methods$5 = { + title: function () { + let data = this.data; return data.title || data.encyclopedia || data.author || ''; }, - links: function links(n) { - var arr = []; + links: function (n) { + let arr = []; if (typeof n === 'number') { return arr[n]; @@ -3649,20 +3259,20 @@ //grab a link like .links('Fortnight') n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it - var link = arr.find(function (o) { - return o.page() === n; - }); + let link = arr.find(o => o.page() === n); return link === undefined ? [] : [link]; } return arr || []; }, - text: function text() { + text: function () { return ''; //nah, skip these. }, - json: function json() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var json = this.data || {}; //encode them, for mongodb + wikitext: function () { + return this.wiki || ''; + }, + json: function (options = {}) { + let json = this.data || {}; //encode them, for mongodb if (options.encode === true) { json = Object.assign({}, json); @@ -3672,68 +3282,80 @@ return json; } }; - Object.keys(methods$5).forEach(function (k) { + Object.keys(methods$5).forEach(k => { Reference.prototype[k] = methods$5[k]; }); var Reference_1 = Reference; - var parseSentence$1 = _04Sentence.fromText; //structured Cite templates - {{Cite.. + const parseSentence$6 = _04Sentence.fromText; //structured Cite templates - {{Cite.. - var hasCitation = function hasCitation(str) { + const hasCitation = function (str) { return /^ *?\{\{ *?(cite|citation)/i.test(str) && /\}\} *?$/.test(str) && /citation needed/i.test(str) === false; }; - var parseCitation = function parseCitation(tmpl) { - var obj = parse$3(tmpl); + const parseCitation = function (tmpl) { + let obj = toJSON(tmpl); obj.type = obj.template.replace(/cite /, ''); obj.template = 'citation'; return obj; }; //handle unstructured ones - some text - var parseInline = function parseInline(str) { - var obj = parseSentence$1(str) || {}; + const parseInline = function (str) { + let obj = parseSentence$6(str) || {}; return { template: 'citation', type: 'inline', data: {}, inline: obj }; - }; // parse xml tags + }; //parse xml tags - var parseRefs = function parseRefs(section) { - var references = []; - var wiki = section.wiki; - wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (a, tmpl) { + const parseRefs = function (section) { + let references = []; + let wiki = section._wiki; + wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { - var obj = parseCitation(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 ' '; - }); // + }); // - wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' '); // + 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)) { - var obj = parseCitation(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 ' '; @@ -3741,19 +3363,35 @@ wiki = wiki.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g, ' '); // - section.references = references.map(function (r) { - return new Reference_1(r); - }); - section.wiki = wiki; + section._references = references.map(obj => new Reference_1(obj.json, obj.wiki)); + section._wiki = wiki; }; var reference = parseRefs; - var parseSentence$2 = _04Sentence.fromText; - var heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; //interpret depth, title of headings like '==See also==' - - var parseHeading = function parseHeading(section, str) { - var m = str.match(heading_reg); + const { + trim_whitespace + } = helpers; + const parseSentence$5 = _04Sentence.fromText; + const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; + /** + * @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) { section.title = ''; @@ -3761,20 +3399,20 @@ return section; } - var title = m[2] || ''; - title = parseSentence$2(title).text(); //amazingly, you can see inline {{templates}} in this text, too + let title = m[2] || ''; + title = parseSentence$5(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..) - var obj = { - wiki: title + let obj = { + _wiki: title }; reference(obj); - title = obj.wiki; //trim leading/trailing whitespace + title = obj._wiki; //trim leading/trailing whitespace - title = helpers.trim_whitespace(title); - var depth = 0; + title = trim_whitespace(title); + let depth = 0; if (m[1]) { depth = m[1].length - 2; @@ -3788,8 +3426,8 @@ var heading = parseHeading; //remove top-bottoms - var cleanup$1 = function cleanup(lines) { - lines = lines.filter(function (line) { + const cleanup = function (lines) { + lines = lines.filter(line => { //a '|+' row is a 'table caption', remove it. return line && /^\|\+/.test(line) !== true; }); @@ -3810,13 +3448,13 @@ }; //turn newline seperated into '|-' seperated - var findRows = function findRows(lines) { - var rows = []; - var row = []; - lines = cleanup$1(lines); + const findRows = function (lines) { + let rows = []; + let row = []; + lines = cleanup(lines); - for (var i = 0; i < lines.length; i += 1) { - var line = lines[i]; //'|-' is a row-seperator + for (let i = 0; i < lines.length; i += 1) { + let line = lines[i]; //'|-' is a row-seperator if (/^\|-/.test(line) === true) { //okay, we're done the row @@ -3832,7 +3470,7 @@ line.shift(); } - line.forEach(function (l) { + line.forEach(l => { l = l.replace(/^\| */, ''); l = l.trim(); row.push(l); @@ -3850,16 +3488,16 @@ var _findRows = findRows; - var getRowSpan = /.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/; - var getColSpan = /.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/; //colspans stretch ←left/right→ + const getRowSpan = /.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/; + const getColSpan = /.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/; //colspans stretch ←left/right→ - var doColSpan = function doColSpan(rows) { - rows.forEach(function (row) { - row.forEach(function (str, c) { - var m = str.match(getColSpan); + const doColSpan = function (rows) { + rows.forEach(row => { + row.forEach((str, c) => { + let m = str.match(getColSpan); if (m !== null) { - var num = parseInt(m[1], 10); //...maybe if num is so big, and centered, remove it? + let num = parseInt(m[1], 10); //...maybe if num is so big, and centered, remove it? // if (num > 3) { // rows[r] = [] // return @@ -3868,31 +3506,29 @@ row[c] = str.replace(getColSpan, ''); - for (var i = 1; i < num; i += 1) { + for (let i = 1; i < num; i += 1) { row.splice(c + 1, 0, ''); } } }); }); - rows = rows.filter(function (r) { - return r.length > 0; - }); + rows = rows.filter(r => r.length > 0); return rows; }; //colspans stretch up/down - var doRowSpan = function doRowSpan(rows) { - rows.forEach(function (row, r) { - row.forEach(function (str, c) { - var m = str.match(getRowSpan); + const doRowSpan = function (rows) { + rows.forEach((row, r) => { + row.forEach((str, c) => { + let m = str.match(getRowSpan); if (m !== null) { - var num = parseInt(m[1], 10); //copy this cell down n rows + let num = parseInt(m[1], 10); //copy this cell down n rows str = str.replace(getRowSpan, ''); row[c] = str; - for (var i = r + 1; i < r + num; i += 1) { + for (let i = r + 1; i < r + num; i += 1) { if (!rows[i]) { break; } @@ -3906,7 +3542,7 @@ }; // - var handleSpans = function handleSpans(rows) { + const handleSpans = function (rows) { rows = doColSpan(rows); rows = doRowSpan(rows); return rows; @@ -3914,10 +3550,10 @@ var _spans = handleSpans; - var parseSentence$3 = _04Sentence.fromText; - var isHeading = /^!/; //common ones + const parseSentence$4 = _04Sentence.fromText; + const isHeading = /^!/; //common ones - var headings = { + const headings$1 = { name: true, age: true, born: true, @@ -3930,8 +3566,8 @@ number: true }; //additional table-cruft to remove before parseLine method - var cleanText = function cleanText(str) { - str = parseSentence$3(str).text(); //anything before a single-pipe is styling, so remove it + const cleanText = function (str) { + str = parseSentence$4(str).text(); //anything before a single-pipe is styling, so remove it if (str.match(/\|/)) { str = str.replace(/.+\| ?/, ''); //class="unsortable"|title @@ -3939,17 +3575,17 @@ str = str.replace(/style=['"].*?["']/, ''); //'!' is used as a highlighed-column - str = str.replace(/^!/, ''); - str = str.trim(); + str = str.replace(/^!/, ''); // str = str.replace(/\(.*?\)/, '') + + str = str.trim(); // str = str.toLowerCase() + return str; }; - var skipSpanRow = function skipSpanRow(row) { + const skipSpanRow = function (row) { row = row || []; - var len = row.length; - var hasTxt = row.filter(function (str) { - return str; - }).length; //does it have 3 empty spaces? + let len = row.length; + let hasTxt = row.filter(str => str).length; //does it have 3 empty spaces? if (len - hasTxt > 3) { return true; @@ -3959,8 +3595,8 @@ }; //remove non-header span rows - var removeMidSpans = function removeMidSpans(rows) { - rows = rows.filter(function (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; } @@ -3971,18 +3607,17 @@ }; //'!' starts a header-row - var findHeaders = function findHeaders() { - var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var headers = []; // is the first-row just a ton of colspan? + const findHeaders = function (rows = []) { + let headers = []; // is the first-row just a ton of colspan? if (skipSpanRow(rows[0])) { rows.shift(); } - var first = rows[0]; + let first = rows[0]; if (first && first[0] && first[1] && (/^!/.test(first[0]) || /^!/.test(first[1]))) { - headers = first.map(function (h) { + headers = first.map(h => { h = h.replace(/^\! */, ''); h = cleanText(h); return h; @@ -3994,7 +3629,7 @@ first = rows[0]; if (first && first[0] && first[1] && /^!/.test(first[0]) && /^!/.test(first[1])) { - first.forEach(function (h, i) { + first.forEach((h, i) => { h = h.replace(/^\! */, ''); h = cleanText(h); @@ -4009,11 +3644,11 @@ }; //turn headers, array into an object - var parseRow = function parseRow(arr, headers) { - var row = {}; - arr.forEach(function (str, i) { - var h = headers[i] || 'col' + (i + 1); - var s = parseSentence$3(str); + const parseRow = function (arr, headers) { + let row = {}; + arr.forEach((str, i) => { + let h = headers[i] || 'col' + (i + 1); + let s = parseSentence$4(str); s.text(cleanText(s.text())); row[h] = s; }); @@ -4021,22 +3656,22 @@ }; //should we use the first row as a the headers? - var firstRowHeader = function firstRowHeader(rows) { + const firstRowHeader = function (rows) { if (rows.length <= 3) { return []; } - var headers = rows[0].slice(0); - headers = headers.map(function (h) { + let headers = rows[0].slice(0); + headers = headers.map(h => { h = h.replace(/^\! */, ''); - h = parseSentence$3(h).text(); + h = parseSentence$4(h).text(); h = cleanText(h); h = h.toLowerCase(); return h; }); - for (var i = 0; i < headers.length; i += 1) { - if (headings.hasOwnProperty(headers[i])) { + for (let i = 0; i < headers.length; i += 1) { + if (headings$1.hasOwnProperty(headers[i])) { rows.shift(); return headers; } @@ -4046,15 +3681,11 @@ }; //turn a {|...table string into an array of arrays - var parseTable = function parseTable(wiki) { - var lines = wiki.replace(/\r/g, '').replace(/\n(\s*[^|!{\s])/g, ' $1') //remove unecessary newlines - .split(/\n/).map(function (l) { - return l.trim(); - }); - var rows = _findRows(lines); - rows = rows.filter(function (r) { - return r; - }); + 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()); + let rows = _findRows(lines); + rows = rows.filter(r => r); if (rows.length === 0) { return []; @@ -4065,11 +3696,11 @@ rows = _spans(rows); //grab the header rows - var headers = findHeaders(rows); + let headers = findHeaders(rows); if (!headers || headers.length <= 1) { headers = firstRowHeader(rows); - var want = rows[rows.length - 1] || []; //try the second row + let want = rows[rows.length - 1] || []; //try the second row if (headers.length <= 1 && want.length > 2) { headers = firstRowHeader(rows.slice(1)); @@ -4081,18 +3712,18 @@ } //index each column by it's header - var table = rows.map(function (arr) { + let table = rows.map(arr => { return parseRow(arr, headers); }); return table; }; - var parse$4 = parseTable; + var parse$5 = parseTable; - var toJson$4 = function toJson(tables, options) { - return tables.map(function (table) { - var row = {}; - Object.keys(table).forEach(function (k) { + const toJson$2 = function (tables, options) { + return tables.map(table => { + let row = {}; + Object.keys(table).forEach(k => { row[k] = table[k].json(); //(they're sentence objects) }); //encode them, for mongodb @@ -4104,74 +3735,121 @@ }); }; - var toJson_1$1 = toJson$4; + var toJson_1$2 = toJson$2; - var defaults$8 = {}; + const defaults$6 = {}; + + const normalize$1 = function (key = '') { + key = key.toLowerCase(); + key = key.replace(/[_-]/g, ' '); + key = key.replace(/\(.*?\)/, ''); + key = key.trim(); + return key; + }; - var Table = function Table(data) { + const Table = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, '_wiki', { + enumerable: false, + value: wiki + }); }; - var methods$6 = { - links: function links(n) { - var links = []; - this.data.forEach(function (r) { - Object.keys(r).forEach(function (k) { + const methods$4 = { + links(n) { + let links = []; + this.data.forEach(r => { + Object.keys(r).forEach(k => { links = links.concat(r[k].links()); }); - }); //grab a specific link.. + }); - if (typeof n === 'number') { - return links[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 - var link = links.find(function (o) { - return o.page() === n; - }); + let link = links.find(o => o.page() === n); return link === undefined ? [] : [link]; } return links; }, - keyValue: function keyValue(options) { - var rows = this.json(options); - rows.forEach(function (row) { - Object.keys(row).forEach(function (k) { + + get(keys) { + // 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).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; + }, {}); + }); + }, + + keyValue(options) { + let rows = this.json(options); + rows.forEach(row => { + Object.keys(row).forEach(k => { row[k] = row[k].text; }); }); return rows; }, - json: function json(options) { - options = setDefaults_1(options, defaults$8); - return toJson_1$1(this.data, options); + + json(options) { + options = setDefaults_1(options, defaults$6); + return toJson_1$2(this.data, options); }, - text: function text() { + + text() { return ''; + }, + + wikitext() { + return this._wiki || ''; } + }; - methods$6.keyvalue = methods$6.keyValue; - methods$6.keyval = methods$6.keyValue; - Object.keys(methods$6).forEach(function (k) { - Table.prototype[k] = methods$6[k]; + methods$4.keyvalue = methods$4.keyValue; + methods$4.keyval = methods$4.keyValue; + Object.keys(methods$4).forEach(k => { + Table.prototype[k] = methods$4[k]; }); var Table_1 = Table; - var openReg = /^\s*{\|/; - var closeReg = /^\s*\|}/; //tables can be recursive, so looky-here. + const openReg = /^\s*{\|/; + const closeReg = /^\s*\|}/; //tables can be recursive, so looky-here. - var findTables = function findTables(section) { - var list = []; - var wiki = section.wiki; - var lines = wiki.split('\n'); - var stack = []; + const findTables = function (section) { + let list = []; + let wiki = section._wiki; + let lines = wiki.split('\n'); + let stack = []; - for (var i = 0; i < lines.length; i += 1) { + for (let i = 0; i < lines.length; i += 1) { //start a table if (openReg.test(lines[i]) === true) { stack.push(lines[i]); @@ -4181,10 +3859,8 @@ if (closeReg.test(lines[i]) === true) { stack[stack.length - 1] += '\n' + lines[i]; - - var _table = stack.pop(); - - list.push(_table); + let table = stack.pop(); + list.push(table); continue; } //keep-going on one @@ -4195,157 +3871,164 @@ } //work-em together for a Table class - var tables = []; - list.forEach(function (str) { + 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, ''); - var data = parse$4(str); + let data = parse$5(str); if (data && data.length > 0) { - tables.push(new Table_1(data)); + tables.push(new Table_1(data, str)); } } }); if (tables.length > 0) { - section.tables = tables; + section._tables = tables; } - section.wiki = wiki; + section._wiki = wiki; }; var table = findTables; - var defaults$9 = { + const defaults$5 = { sentences: true }; - var toJson$5 = function toJson(p, options) { - options = setDefaults_1(options, defaults$9); - var data = {}; + const toJson$1 = function (p, options) { + options = setDefaults_1(options, defaults$5); + let data = {}; if (options.sentences === true) { - data.sentences = p.sentences().map(function (s) { - return s.json(options); - }); + data.sentences = p.sentences().map(s => s.json(options)); } return data; }; - var toJson_1$2 = toJson$5; + var toJson_1$1 = toJson$1; - var defaults$a = { + const defaults$4 = { sentences: true, lists: true, images: true }; - var Paragraph = function Paragraph(data) { + const Paragraph = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; - var methods$7 = { - sentences: function sentences(num) { - if (typeof num === 'number') { - return this.data.sentences[num]; - } - + const methods$3 = { + sentences: function () { return this.data.sentences || []; }, - references: function references(num) { - if (typeof num === 'number') { - return this.data.references[num]; - } - + references: function () { return this.data.references; }, - lists: function lists(num) { - if (typeof num === 'number') { - return this.data.lists[num]; - } - + lists: function () { return this.data.lists; }, - images: function images(num) { - if (typeof num === 'number') { - return this.data.images[num]; - } + images() { return this.data.images || []; }, - links: function links(n) { - var arr = []; - this.sentences().forEach(function (s) { - arr = arr.concat(s.links(n)); + + links: function (clue) { + let arr = []; + this.sentences().forEach(s => { + arr = arr.concat(s.links(clue)); }); - if (typeof n === 'number') { - return arr[n]; - } else if (typeof n === 'string') { + if (typeof clue === 'string') { //grab a specific link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it - var link = arr.find(function (o) { - return o.page() === n; - }); + let link = arr.find(o => o.page() === clue); return link === undefined ? [] : [link]; } return arr || []; }, - interwiki: function interwiki(num) { - var arr = []; - this.sentences().forEach(function (s) { + + interwiki() { + let arr = []; + this.sentences().forEach(s => { arr = arr.concat(s.interwiki()); }); - - if (typeof num === 'number') { - return arr[num]; - } - return arr || []; }, - text: function text(options) { - options = setDefaults_1(options, defaults$a); - var str = this.sentences().map(function (s) { - return s.text(options); - }).join(' '); - this.lists().forEach(function (list) { + + text: function (options) { + options = setDefaults_1(options, defaults$4); + let str = this.sentences().map(s => s.text(options)).join(' '); + this.lists().forEach(list => { str += '\n' + list.text(); }); return str; }, - json: function json(options) { - options = setDefaults_1(options, defaults$a); - return toJson_1$2(this, options); + json: function (options) { + options = setDefaults_1(options, defaults$4); + return toJson_1$1(this, options); + }, + wikitext: function () { + return this.data.wiki; } }; - methods$7.citations = methods$7.references; - Object.keys(methods$7).forEach(function (k) { - Paragraph.prototype[k] = methods$7[k]; + methods$3.citations = methods$3.references; + Object.keys(methods$3).forEach(k => { + Paragraph.prototype[k] = methods$3[k]; + }); // aliases + + const singular$2 = { + sentences: 'sentence', + references: 'reference', + citation: 'citations', + lists: 'list', + images: 'image', + links: 'link' + }; + Object.keys(singular$2).forEach(k => { + let sing = singular$2[k]; + + Paragraph.prototype[sing] = function (clue) { + let arr = this[k](clue); + + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0]; + }; }); var Paragraph_1 = Paragraph; - //find all the pairs of '[[...[[..]]...]]' in the text - //used to properly root out recursive template calls, [[.. [[...]] ]] - //basically just adds open tags, and subtracts closing tags - var opener = '['; - var closer = ']'; + const opener = '['; + const closer = ']'; + /** + * + * find all the pairs of '[[...[[..]]...]]' in the text + * used to properly root out recursive template calls, [[.. [[...]] ]] + * basically just adds open tags, and subtracts closing tags + * + * @private + * @param {string} text the text in which is searched in + * @returns {string[]} all the links in the text + */ function nested_find(text) { - var out = []; - var last = []; - var chars = text.split(''); - var open = 0; + let out = []; + let last = []; + const chars = text.split(''); + let open = 0; - for (var i = 0; i < chars.length; i++) { - var c = text[i]; //increment open tag + for (let i = 0; i < chars.length; i++) { + const c = text[i]; //increment open tag if (c === opener) { open += 1; @@ -4357,8 +4040,8 @@ open = 0; } } else if (last.length === 0) { - // If we're not inside of a pair of delimiters, we can discard the current letter. - // The return of this function is only used to extract images. + //If we're not inside of a pair of delimiters, we can discard the current letter. + //The return of this function is only used to extract images. continue; } @@ -4366,10 +4049,10 @@ if (open === 0 && last.length > 0) { //first, fix botched parse - var open_count = 0; - var close_count = 0; + let open_count = 0; + let close_count = 0; - for (var j = 0; j < last.length; j++) { + for (let j = 0; j < last.length; j++) { if (last[j] === opener) { open_count++; } else if (last[j] === closer) { @@ -4393,13 +4076,13 @@ var nested_find_1 = nested_find; - var parseSentence$4 = _04Sentence.fromText; //regexes: + const parseSentence$3 = _04Sentence.fromText; //regexes: - var isFile = new RegExp('(' + i18n$1.images.join('|') + '):', 'i'); - var fileNames = "(".concat(i18n$1.images.join('|'), ")"); - var file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax + const isFile = new RegExp('(' + i18n.images.join('|') + '):', 'i'); + let fileNames = `(${i18n.images.join('|')})`; + const file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax - var imgLayouts = { + const imgLayouts = { thumb: true, thumbnail: true, border: true, @@ -4413,48 +4096,47 @@ baseline: true, middle: true, sub: true, - "super": true + super: true }; //images are usually [[image:my_pic.jpg]] - var oneImage = function oneImage(img, doc) { - var m = img.match(file_reg); + const oneImage = function (img, doc) { + let m = img.match(file_reg); if (m === null || !m[2]) { return null; } - var file = "".concat(m[1], ":").concat(m[2] || ''); + let file = `${m[1]}:${m[2] || ''}`; file = file.trim(); //titlecase it - var title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores + let title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores title = title.replace(/ /g, '_'); if (title) { - var obj = { + let obj = { file: file, - lang: doc.lang, - domain: doc.domain + lang: doc._lang, + domain: doc._domain, + wiki: img }; //try to grab other metadata, too img = img.replace(/^\[\[/, ''); img = img.replace(/\]\]$/, ''); //https://en.wikipedia.org/wiki/Wikipedia:Extended_image_syntax - // - [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] + //- [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] - var imgData = parse$3(img); - var arr = imgData.list || []; //parse-out alt text, if explicitly given + let imgData = toJSON(img); + let arr = imgData.list || []; //parse-out alt text, if explicitly given if (imgData.alt) { obj.alt = imgData.alt; } //remove 'thumb' and things - arr = arr.filter(function (str) { - return imgLayouts.hasOwnProperty(str) === false; - }); + arr = arr.filter(str => imgLayouts.hasOwnProperty(str) === false); if (arr[arr.length - 1]) { - obj.caption = parseSentence$4(arr[arr.length - 1]); + obj.caption = parseSentence$3(arr[arr.length - 1]); } return new Image_1(obj); @@ -4463,14 +4145,14 @@ return null; }; - var parseImages = function parseImages(paragraph, doc) { - var wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff + const parseImages = function (paragraph, doc) { + let wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff - var matches = nested_find_1(wiki); + let matches = nested_find_1(wiki); matches.forEach(function (s) { if (isFile.test(s) === true) { paragraph.images = paragraph.images || []; - var img = oneImage(s, doc); + let img = oneImage(s, doc); if (img) { paragraph.images.push(img); @@ -4484,80 +4166,84 @@ var image = parseImages; - var defaults$b = {}; + const defaults$3 = {}; - var toText = function toText(list, options) { - return list.map(function (s) { - var str = s.text(options); + const toText$2 = (list, options) => { + return list.map(s => { + let str = s.text(options); return ' * ' + str; }).join('\n'); }; - var List = function List(data) { + const List = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; - var methods$8 = { - lines: function lines() { + const methods$2 = { + lines() { return this.data; }, - links: function links(n) { - var links = []; - this.lines().forEach(function (s) { + + links(clue) { + let links = []; + this.lines().forEach(s => { links = links.concat(s.links()); }); - if (typeof n === 'number') { - return links[n]; - } else if (typeof n === 'string') { + if (typeof clue === 'string') { //grab a link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it - var link = links.find(function (o) { - return o.page() === n; - }); + let link = links.find(o => o.page() === clue); return link === undefined ? [] : [link]; } return links; }, - json: function json(options) { - options = setDefaults_1(options, defaults$b); - return this.lines().map(function (s) { - return s.json(options); - }); + + json(options) { + options = setDefaults_1(options, defaults$3); + return this.lines().map(s => s.json(options)); }, - text: function text() { - return toText(this.data); + + text() { + return toText$2(this.data); + }, + + wikitext() { + return this.wiki || ''; } + }; - Object.keys(methods$8).forEach(function (k) { - List.prototype[k] = methods$8[k]; + Object.keys(methods$2).forEach(k => { + List.prototype[k] = methods$2[k]; }); var List_1 = List; - var parseSentence$5 = _04Sentence.fromText; - var list_reg = /^[#\*:;\|]+/; - var bullet_reg = /^\*+[^:,\|]{4}/; - var number_reg = /^ ?\#[^:,\|]{4}/; - var has_word = /[a-z_0-9\]\}]/i; // does it start with a bullet point or something? + const parseSentence$2 = _04Sentence.fromText; + const list_reg = /^[#\*:;\|]+/; + const bullet_reg = /^\*+[^:,\|]{4}/; + const number_reg = /^ ?\#[^:,\|]{4}/; + const has_word = /[a-z_0-9\]\}]/i; // does it start with a bullet point or something? - var isList = function isList(line) { + const isList = function (line) { return list_reg.test(line) || bullet_reg.test(line) || number_reg.test(line); }; //make bullets/numbers into human-readable *'s - var cleanList = function cleanList(list) { - var number = 1; - list = list.filter(function (l) { - return l; - }); + const cleanList = function (list) { + let number = 1; + list = list.filter(l => l); - for (var i = 0; i < list.length; i++) { - var line = list[i]; //add # numberings formatting + for (let i = 0; i < list.length; i++) { + let line = list[i]; //add # numberings formatting if (line.match(number_reg)) { line = line.replace(/^ ?#*/, number + ') '); @@ -4568,16 +4254,16 @@ line = line.replace(list_reg, ''); } - list[i] = parseSentence$5(line); + list[i] = parseSentence$2(line); } return list; }; - var grabList = function grabList(lines, i) { - var sub = []; + const grabList = function (lines, i) { + let sub = []; - for (var o = i; o < lines.length; o++) { + for (let o = i; o < lines.length; o++) { if (isList(lines[o])) { sub.push(lines[o]); } else { @@ -4585,23 +4271,20 @@ } } - sub = sub.filter(function (a) { - return a && has_word.test(a); - }); + sub = sub.filter(a => a && has_word.test(a)); sub = cleanList(sub); return sub; }; - var parseList = function parseList(paragraph) { - var wiki = paragraph.wiki; - var lines = wiki.split(/\n/g); // lines = lines.filter(l => has_word.test(l)); + const parseList = function (paragraph) { + let wiki = paragraph.wiki; + let lines = wiki.split(/\n/g); + let lists = []; + let theRest = []; - var lists = []; - var theRest = []; - - for (var i = 0; i < lines.length; i++) { + for (let i = 0; i < lines.length; i++) { if (isList(lines[i])) { - var sub = grabList(lines, i); + let sub = grabList(lines, i); if (sub.length > 0) { lists.push(sub); @@ -4612,178 +4295,55 @@ } } - paragraph.lists = lists.map(function (l) { - return new List_1(l); - }); + paragraph.lists = lists.map(l => new List_1(l, wiki)); paragraph.wiki = theRest.join('\n'); }; - var list = parseList; + var list$1 = parseList; - var parseSentences = _04Sentence.byParagraph; - var twoNewLines = /\r?\n\r?\n/; - var parse$5 = { + const parseSentences = _04Sentence.byParagraph; + const twoNewLines = /\r?\n\r?\n/; + const parse$4 = { image: image, - list: list + list: list$1 }; - var parseParagraphs = function parseParagraphs(section, doc) { - var wiki = section.wiki; - var paragraphs = wiki.split(twoNewLines); //don't create empty paragraphs + const parseParagraphs = function (section, doc) { + let wiki = section._wiki; + let paragraphs = wiki.split(twoNewLines); //don't create empty paragraphs - paragraphs = paragraphs.filter(function (p) { - return p && p.trim().length > 0; - }); - paragraphs = paragraphs.map(function (str) { - var paragraph = { + paragraphs = paragraphs.filter(p => p && p.trim().length > 0); + paragraphs = paragraphs.map(str => { + let paragraph = { wiki: str, lists: [], sentences: [], images: [] }; //parse the lists - parse$5.list(paragraph); // parse images + parse$4.list(paragraph); //parse images - parse$5.image(paragraph, doc); //parse the sentences + parse$4.image(paragraph, doc); //parse the sentences parseSentences(paragraph); return new Paragraph_1(paragraph); }); - section.wiki = wiki; - section.paragraphs = paragraphs; + section._wiki = wiki; + section._paragraphs = paragraphs; }; var _03Paragraph = parseParagraphs; - var toJson$6 = function toJson(infobox, options) { - var json = Object.keys(infobox.data).reduce(function (h, k) { - if (infobox.data[k]) { - h[k] = infobox.data[k].json(); - } - - return h; - }, {}); //support mongo-encoding keys - - if (options.encode === true) { - json = encode.encodeObj(json); - } - - return json; - }; - - var toJson_1$3 = toJson$6; - - var normalize = function normalize(str) { - str = str.toLowerCase(); - str = str.replace(/[-_]/g, ' '); - return str.trim(); - }; //a formal key-value data table about a topic - - - var Infobox = function Infobox(obj) { - this._type = obj.type; - this.domain = obj.domain; - Object.defineProperty(this, 'data', { - enumerable: false, - value: obj.data - }); - }; - - var methods$9 = { - type: function type() { - return this._type; - }, - links: function links(n) { - var _this = this; - - var arr = []; - Object.keys(this.data).forEach(function (k) { - _this.data[k].links().forEach(function (l) { - return arr.push(l); - }); - }); - - 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 - - var link = arr.find(function (o) { - return o.page() === n; - }); - return link === undefined ? [] : [link]; - } - - return arr; - }, - image: function image() { - var s = this.get('image') || this.get('image2') || this.get('logo'); - - if (!s) { - return null; - } - - var obj = s.json(); - obj.file = obj.text; - obj.text = ''; - obj.domain = this.domain; // add domain information for image - - return new Image_1(obj); - }, - get: function get() { - var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - key = normalize(key); - var keys = Object.keys(this.data); - - for (var i = 0; i < keys.length; i += 1) { - var tmp = normalize(keys[i]); - - if (key === tmp) { - return this.data[keys[i]]; - } - } - - return null; - }, - text: function text() { - return ''; - }, - json: function json(options) { - options = options || {}; - return toJson_1$3(this, options); - }, - keyValue: function keyValue() { - var _this2 = this; - - return Object.keys(this.data).reduce(function (h, k) { - if (_this2.data[k]) { - h[k] = _this2.data[k].text(); - } - - return h; - }, {}); - } - }; //aliases - - Object.keys(methods$9).forEach(function (k) { - Infobox.prototype[k] = methods$9[k]; - }); - Infobox.prototype.data = Infobox.prototype.keyValue; - Infobox.prototype.template = Infobox.prototype.type; - Infobox.prototype.images = Infobox.prototype.image; - var Infobox_1 = Infobox; + const open = '{'; + const close = '}'; //grab all first-level recursions of '{{...}}' - var open = '{'; - var close = '}'; //grab all first-level recursions of '{{...}}' + const findFlat = function (wiki) { + let depth = 0; + let list = []; + let carry = []; - var findFlat = function findFlat(wiki) { - var depth = 0; - var list = []; - var carry = []; - - for (var i = wiki.indexOf(open); i !== -1 && i < wiki.length; depth > 0 ? i++ : i = wiki.indexOf(open, i + 1)) { - var c = wiki[i]; //open it + for (let i = wiki.indexOf(open); i !== -1 && i < wiki.length; depth > 0 ? i++ : i = wiki.indexOf(open, i + 1)) { + let c = wiki[i]; //open it if (c === open) { depth += 1; @@ -4796,7 +4356,7 @@ if (depth === 0) { carry.push(c); - var tmpl = carry.join(''); + let tmpl = carry.join(''); carry = []; //last check if (/\{\{/.test(tmpl) && /\}\}/.test(tmpl)) { @@ -4821,12 +4381,12 @@ return list; }; - var flat = findFlat; + var _02Flat = findFlat; //templates are usually '{{name|stuff}}' - var getName = function getName(tmpl) { - var name = null; //{{name|foo}} + const getName = function (tmpl) { + let name = null; //{{name|foo}} if (/^\{\{[^\n]+\|/.test(tmpl)) { name = (tmpl.match(/^\{\{(.+?)\|/) || [])[1]; @@ -4848,9 +4408,9 @@ var _getName = getName; - var hasTemplate = /\{\{/; + const hasTemplate = /\{\{/; - var parseTemplate = function parseTemplate(tmpl) { + const parseTemplate$1 = function (tmpl) { // this is some unexplained Lua thing tmpl = tmpl.replace(/#invoke:/, ''); return { @@ -4860,21 +4420,21 @@ }; }; - var doEach = function doEach(obj) { + const doEach = function (obj) { // peel-off top-level - var wiki = obj.body.substr(2); + let wiki = obj.body.substr(2); wiki = wiki.replace(/\}\}$/, ''); // get our child templates - obj.children = flat(wiki); - obj.children = obj.children.map(parseTemplate); + obj.children = _02Flat(wiki); + obj.children = obj.children.map(parseTemplate$1); if (obj.children.length === 0) { return obj; } // recurse through children - obj.children.forEach(function (ch) { - var inside = ch.body.substr(2); + obj.children.forEach(ch => { + let inside = ch.body.substr(2); if (hasTemplate.test(inside)) { return doEach(ch); //keep going @@ -4886,17 +4446,17 @@ }; // return a nested structure of all templates - var findTemplates = function findTemplates(wiki) { - var list = flat(wiki); - list = list.map(parseTemplate); + const findTemplates = function (wiki) { + let list = _02Flat(wiki); + list = list.map(parseTemplate$1); list = list.map(doEach); return list; }; - var find = findTemplates; + var _01Nested = findTemplates; //we explicitly ignore these, because they sometimes have resolve some data - var list$1 = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output + const list = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output 'anchor', 'defaultsort', 'use list-defined references', 'void', //https://en.wikipedia.org/wiki/Category:Protection_templates 'pp', 'pp-move-indef', 'pp-semi-indef', 'pp-vandalism', //https://en.wikipedia.org/wiki/Template:R 'r', //out-of-scope still - https://en.wikipedia.org/wiki/Template:Tag @@ -4920,21 +4480,13 @@ // 'weasel inline', //https://en.wikipedia.org/wiki/Template:End 'pope list end', 'shipwreck list end', 'starbox end', 'end box', 'end', 's-end']; - var ignore$1 = list$1.reduce(function (h, str) { + const ignore = list.reduce((h, str) => { h[str] = true; return h; }, {}); - var _ignore = ignore$1; - - var i18nReg = new RegExp('^(subst.)?(' + i18n$1.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones + var _ignore = ignore; - var startReg = /^infobox /i; - var endReg = / infobox$/i; - var yearIn = /$Year in [A-Z]/i; //some known ones from - // https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes - // and https://en.wikipedia.org/wiki/Category:Infobox_templates - - var known = { + var _infoboxes = { 'gnf protein box': true, 'automatic taxobox': true, 'chembox ': true, @@ -4970,11 +4522,19 @@ 'hockey team player': true, 'hockey team start': true, mlbbioret: true - }; // + }; + + const i18nReg = new RegExp('^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones - var isInfobox = function isInfobox(name) { - // known - if (known.hasOwnProperty(name) === true) { + const startReg = /^infobox /i; + const endReg = / infobox$/i; + const yearIn = /$Year in [A-Z]/i; //some known ones from + //https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes + //and https://en.wikipedia.org/wiki/Category:Infobox_templates + + const isInfobox = function (name) { + //known + if (_infoboxes.hasOwnProperty(name) === true) { return true; } @@ -4992,25 +4552,24 @@ } return false; - }; //turns template data into good inforbox data + }; //turns template data into good infobox data - var fmtInfobox = function fmtInfobox() { - var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var m = obj.template.match(i18nReg); - var type = obj.template; + const fmtInfobox = function (obj = {}) { + let m = obj.template.match(i18nReg); + let type = obj.template; if (m && m[0]) { type = type.replace(m[0], ''); } type = type.trim(); - var infobox = { + let infobox = { template: 'infobox', type: type, data: obj }; - delete infobox.data.template; // already have this. + delete infobox.data.template; //already have this. delete infobox.data.list; //just in case! @@ -5022,1050 +4581,1456 @@ format: fmtInfobox }; - var _months = [undefined, //1-based months.. :/ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + let aliases = { + 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' + }; //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'], + 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' //https://en.wikipedia.org/wiki/Template:URL + ] + }; // - 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] - var monthName = _months.reduce(function (h, str, i) { - if (i === 0) { - return h; - } + Object.keys(languages).forEach(lang => { + aliases['ipa-' + lang] = 'ipa'; + aliases['ipac-' + lang] = 'ipac'; + }); // add each alias in - h[str.toLowerCase()] = i; - return h; - }, {}); //parse year|month|date numbers + Object.keys(multi).forEach(k => { + multi[k].forEach(str => { + aliases[str] = k; + }); + }); + var aliases_1 = aliases; + + var hardcoded = { + '·': '·', + 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: '▲' + }; + + let templates$9 = { + p1: 0, + p2: 1, + p3: 2, + resize: 1, + //https://en.wikipedia.org/wiki/Template:Resize + lang: 1, + 'rtl-lang': 1, + l: 2, + h: 1, + //https://en.wikipedia.org/wiki/Template:Hover_title + sort: 1 //https://en.wikipedia.org/wiki/Template:Sort - var ymd = function ymd(arr) { - var obj = {}; - var units = ['year', 'month', 'date', 'hour', 'minute', 'second']; //parse each unit in sequence.. + }; //templates that we simply grab their insides as plaintext - for (var i = 0; i < units.length; i += 1) { - //skip it - if (!arr[i] && arr[1] !== 0) { - continue; - } + let zeros = ['defn', 'lino', //https://en.wikipedia.org/wiki/Template:Linum + 'finedetail', //https://en.wikipedia.org/wiki/Template:Finedetail + 'nobold', 'noitalic', 'nocaps', 'vanchor', //https://en.wikipedia.org/wiki/Template:Visible_anchor + 'rnd', 'date', //Explictly-set dates - https://en.wikipedia.org/wiki/Template: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', //https://en.wikipedia.org/wiki/Template:Delink + 'pre', 'var', 'mvar', 'pre2', 'code']; + zeros.forEach(k => { + templates$9[k] = 0; + }); //https://en.wikipedia.org/wiki/Category:Lang-x_templates - var num = parseInt(arr[i], 10); + Object.keys(languages).forEach(k => { + templates$9['lang-' + k] = 0; + }); + var shorthand$1 = templates$9; - if (isNaN(num) === false) { - obj[units[i]] = num; //we good. - } else if (units[i] === 'month' && monthName.hasOwnProperty(arr[i])) { - //try for month-name, like 'january - var month = monthName[arr[i]]; - obj[units[i]] = month; - } else { - //we dead. so skip this unit - delete obj[units[i]]; - } - } //try for timezone,too ftw + const percentage = function (obj) { + if (!obj.numerator && !obj.denominator) { + return null; + } + let perc = Number(obj.numerator) / Number(obj.denominator); + perc *= 100; + let dec = Number(obj.decimals); - var last = arr[arr.length - 1] || ''; - last = String(last); + if (isNaN(dec)) { + dec = 1; + } - if (last.toLowerCase() === 'z') { - obj.tz = 'UTC'; - } else if (/[+-][0-9]+:[0-9]/.test(last)) { - obj.tz = arr[6]; - } + perc = perc.toFixed(dec); + return Number(perc); + }; - return obj; - }; //zero-pad a number + const toNumber = function (str = '') { + if (typeof str === 'number') { + return str; + } + str = str.replace(/,/g, ''); + str = str.replace(/−/g, '-'); + let num = Number(str); - var pad = function pad(num) { - if (num < 10) { - return '0' + num; + if (isNaN(num)) { + return str; } - return String(num); + return num; }; - var toText$1 = function toText(date) { - //eg '1995' - var str = String(date.year || ''); - - if (date.month !== undefined && _months.hasOwnProperty(date.month) === true) { - if (date.date === undefined) { - //January 1995 - str = "".concat(_months[date.month], " ").concat(date.year); - } else { - //January 5, 1995 - str = "".concat(_months[date.month], " ").concat(date.date, ", ").concat(date.year); //add times, if available - - if (date.hour !== undefined && date.minute !== undefined) { - var time = "".concat(pad(date.hour), ":").concat(pad(date.minute)); - - if (date.second !== undefined) { - time = time + ':' + pad(date.second); - } - - str = time + ', ' + str; //add timezone, if there, at the end in brackets - } + const getLang = function (name) { + //grab the language from the template name - 'ipa-de' + let lang = name.match(/ipac?-(.+)/); - if (date.tz) { - str += " (".concat(date.tz, ")"); - } + if (lang !== null) { + if (languages.hasOwnProperty(lang[1]) === true) { + return languages[lang[1]].english_title; } + + return lang[1]; } - return str; + return null; }; - var _format = { - toText: toText$1, - ymd: ymd - }; // console.log(toText(ymd([2018, 3, 28]))); + const titlecase$1 = str => { + return str.charAt(0).toUpperCase() + str.substring(1); + }; + + const 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' + }; + var _lib$3 = { + titlecase: titlecase$1, + sisterProjects: sisterProjects, + getLang: getLang, + percentage: percentage, + toNumber: toNumber + }; - var misc = { - reign: function reign(tmpl) { - var order = ['start', 'end']; - var obj = parse$3(tmpl, order); - return "(r. ".concat(obj.start, " \u2013 ").concat(obj.end, ")"); + var functions$2 = { + //https://en.wikipedia.org/wiki/Template:Ra + ra: tmpl => { + let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, - circa: function circa(tmpl) { - var obj = parse$3(tmpl, ['year']); - return "c.\u2009".concat(obj.year); + //https://en.wikipedia.org/wiki/Template:Deg2HMS + deg2hms: tmpl => { + //this template should do the conversion + let obj = toJSON(tmpl, ['degrees']); + return (obj.degrees || '') + '°'; }, - //we can't do timezones, so fake this one a little bit - //https://en.wikipedia.org/wiki/Template:Time - time: function time() { - var d = new Date(); - var obj = _format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); - return _format.toText(obj); + hms2deg: tmpl => { + //this template should do the conversion too + let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, - monthname: 0, - //https://en.wikipedia.org/wiki/Template:OldStyleDate - oldstyledate: function oldstyledate(tmpl) { - var order = ['date', 'year']; - var obj = parse$3(tmpl, order); - var str = obj.date; + decdeg: tmpl => { + //this template should do the conversion too + let obj = toJSON(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); + return (obj.deg || obj.degrees) + '°'; + }, + //https://en.wikipedia.org/wiki/Template:Sortname + sortname: tmpl => { + let order = ['first', 'last', 'target', 'sort']; + let obj = toJSON(tmpl, order); + let name = `${obj.first || ''} ${obj.last || ''}`; + name = name.trim(); - if (obj.year) { - str += ' ' + obj.year; + if (obj.nolink) { + return obj.target || name; } - return str; - } - }; - var misc_1 = misc; + if (obj.dab) { + name += ` (${obj.dab})`; - //this is allowed to be rough - var day = 1000 * 60 * 60 * 24; - var month = day * 30; - var year = day * 365; + if (obj.target) { + obj.target += ` (${obj.dab})`; + } + } - var getEpoch = function getEpoch(obj) { - return new Date("".concat(obj.year, "-").concat(obj.month || 0, "-").concat(obj.date || 1)).getTime(); - }; //very rough! + if (obj.target) { + return `[[${obj.target}|${name}]]`; + } + return `[[${name}]]`; + }, + // https://en.wikipedia.org/wiki/Template:First_word + 'first word': tmpl => { + let obj = toJSON(tmpl, ['text']); + let str = obj.text; - var delta = function delta(from, to) { - from = getEpoch(from); - to = getEpoch(to); - var diff = to - from; - var obj = {}; //get years + if (obj.sep) { + return str.split(obj.sep)[0]; + } - var years = Math.floor(diff / year, 10); + return str.split(' ')[0]; + }, + trunc: tmpl => { + let order = ['str', 'len']; + let obj = toJSON(tmpl, order); + return obj.str.substr(0, obj.len); + }, + 'str mid': tmpl => { + let order = ['str', 'start', 'end']; + let obj = toJSON(tmpl, order); + let start = parseInt(obj.start, 10) - 1; + let end = parseInt(obj.end, 10); + return obj.str.substr(start, end); + }, + reign: tmpl => { + let order = ['start', 'end']; + let obj = toJSON(tmpl, order); + return `(r. ${obj.start} – ${obj.end})`; + }, + circa: tmpl => { + let obj = toJSON(tmpl, ['year']); + return `c. ${obj.year}`; + }, + // https://en.wikipedia.org/wiki/Template:Decade_link + 'decade link': tmpl => { + let obj = toJSON(tmpl, ['year']); + return `${obj.year}|${obj.year}s`; + }, + // https://en.wikipedia.org/wiki/Template:Decade + decade: tmpl => { + let obj = toJSON(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 10, 10) * 10; // round to decade - if (years > 0) { - obj.years = years; - diff -= obj.years * year; - } //get months + return `${year}s`; + }, + // https://en.wikipedia.org/wiki/Template:Century + century: tmpl => { + let obj = toJSON(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 100, 10) + 1; + return `${year}`; + }, + //https://en.wikipedia.org/wiki/Template:Radic + radic: tmpl => { + let order = ['after', 'before']; + let obj = toJSON(tmpl, order); + return `${obj.before || ''}√${obj.after || ''}`; + }, + 'medical cases chart/row': tmpl => { + // Deprecated template; we keep it. + return tmpl; + }, + //https://en.wikipedia.org/wiki/Template:OldStyleDate + oldstyledate: tmpl => { + let order = ['date', 'year']; + let obj = toJSON(tmpl, order); + return obj.year ? obj.date + ' ' + obj.year : obj.date; + }, + //formatting things - https://en.wikipedia.org/wiki/Template:Nobold + braces: tmpl => { + let obj = toJSON(tmpl, ['text']); + let attrs = ''; + if (obj.list) { + attrs = '|' + obj.list.join('|'); + } - var months = Math.floor(diff / month, 10); + return '{{' + (obj.text || '') + attrs + '}}'; + }, + hlist: tmpl => { + let obj = toJSON(tmpl); + obj.list = obj.list || []; + return obj.list.join(' · '); + }, + pagelist: tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join(', '); + }, + //actually rendering these links removes the text. + //https://en.wikipedia.org/wiki/Template:Catlist + catlist: tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join(', '); + }, + //https://en.wikipedia.org/wiki/Template:Br_separated_entries + 'br separated entries': tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join('\n\n'); + }, + 'comma separated entries': tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join(', '); + }, + //https://en.wikipedia.org/wiki/Template:Bare_anchored_list + 'anchored list': tmpl => { + let arr = toJSON(tmpl).list || []; + arr = arr.map((str, i) => `${i + 1}. ${str}`); + return arr.join('\n\n'); + }, + 'bulleted list': tmpl => { + let arr = toJSON(tmpl).list || []; + arr = arr.filter(f => f); + arr = arr.map(str => '• ' + str); + return arr.join('\n\n'); + }, + //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist + plainlist: tmpl => { + tmpl = _strip(tmpl); + let arr = tmpl.split('|').slice(1); //remove the title - if (months > 0) { - obj.months = months; - diff -= obj.months * month; - } //get days + arr = arr.join('|').split(/\n ?\* ?/); //split on newline + arr = arr.filter(s => s); + return arr.join('\n\n'); + }, + //https://en.wikipedia.org/wiki/Template:Term + term: tmpl => { + let obj = toJSON(tmpl, ['term']); + return `${obj.term}:`; + }, + linum: tmpl => { + let obj = toJSON(tmpl, ['num', 'text']); + return `${obj.num}. ${obj.text}`; + }, + 'block indent': tmpl => { + let obj = toJSON(tmpl); - var days = Math.floor(diff / day, 10); + if (obj['1']) { + return '\n' + obj['1'] + '\n'; + } - if (days > 0) { - obj.days = days; // diff -= (obj.days * day); - } + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Lbs + lbs: tmpl => { + let obj = toJSON(tmpl, ['text']); + return `[[${obj.text} Lifeboat Station|${obj.text}]]`; + }, + //Foo-class + lbc: tmpl => { + let obj = toJSON(tmpl, ['text']); + return `[[${obj.text}-class lifeboat|${obj.text}-class]]`; + }, + lbb: tmpl => { + let obj = toJSON(tmpl, ['text']); + return `[[${obj.text}-class lifeboat|${obj.text}]]`; + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + '#dateformat': tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['date', 'format']); + return obj.date; + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + lc: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text']); + return (obj.text || '').toLowerCase(); + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + uc: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text']); + return (obj.text || '').toUpperCase(); + }, + lcfirst: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let text = toJSON(tmpl, ['text']).text; - return obj; - }; + if (!text) { + return ''; + } - var _delta = delta; + return text[0].toLowerCase() + text.substr(1); + }, + ucfirst: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let text = toJSON(tmpl, ['text']).text; - var ymd$1 = _format.ymd; - var toText$2 = _format.toText; //wrap it up as a template + if (!text) { + return ''; + } - var template = function template(date) { - return { - template: 'date', - data: date - }; - }; + return text[0].toUpperCase() + text.substr(1); + }, + padleft: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text', 'num']); + let text = obj.text || ''; + return text.padStart(obj.num, obj.str || '0'); + }, + padright: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text', 'num']); + let text = obj.text || ''; + return text.padEnd(obj.num, obj.str || '0'); + }, + //https://en.wikipedia.org/wiki/Template:Abbrlink + abbrlink: tmpl => { + let obj = toJSON(tmpl, ['abbr', 'page']); - var getBoth = function getBoth(tmpl) { - tmpl = _strip(tmpl); - var arr = tmpl.split('|'); - var from = ymd$1(arr.slice(1, 4)); - var to = arr.slice(4, 7); //assume now, if 'to' is empty + if (obj.page) { + return `[[${obj.page}|${obj.abbr}]]`; + } - if (to.length === 0) { - var d = new Date(); - to = [d.getFullYear(), d.getMonth(), d.getDate()]; - } + return `[[${obj.abbr}]]`; + }, + // https://en.wikipedia.org/wiki/Template:Own + own: tmpl => { + let obj = toJSON(tmpl, ['author']); + let str = 'Own work'; - to = ymd$1(to); - return { - from: from, - to: to - }; - }; + if (obj.author) { + str += ' by ' + obj.author; + } - var parsers = { - //generic {{date|year|month|date}} template - date: function date(tmpl, list) { - var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; - var obj = parse$3(tmpl, order); - var data = ymd$1([obj.year, obj.month, obj.date || obj.day]); - obj.text = toText$2(data); //make the replacement string + return str; + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + formatnum: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['number']); + let str = obj.number || ''; + str = str.replace(/,/g, ''); + let num = Number(str); + return num.toLocaleString() || ''; + }, + //https://en.wikipedia.org/wiki/Template:Frac + frac: tmpl => { + let order = ['a', 'b', 'c']; + let obj = toJSON(tmpl, order); - if (obj.timezone) { - if (obj.timezone === 'Z') { - obj.timezone = 'UTC'; - } + if (obj.c) { + return `${obj.a} ${obj.b}/${obj.c}`; + } - obj.text += " (".concat(obj.timezone, ")"); + if (obj.b) { + return `${obj.a}/${obj.b}`; } - if (obj.hour && obj.minute) { - if (obj.second) { - obj.text = "".concat(obj.hour, ":").concat(obj.minute, ":").concat(obj.second, ", ") + obj.text; - } else { - obj.text = "".concat(obj.hour, ":").concat(obj.minute, ", ") + obj.text; + return `1/${obj.b}`; + }, + //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values + convert: tmpl => { + let order = ['num', 'two', 'three', 'four']; + let obj = toJSON(tmpl, order); //todo: support plural units + + if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { + if (obj.four) { + return `${obj.num} ${obj.two} ${obj.three} ${obj.four}`; } - } - if (obj.text) { - list.push(template(obj)); + return `${obj.num} ${obj.two} ${obj.three}`; } - return obj.text; + return `${obj.num} ${obj.two}`; }, - //support parsing of 'February 10, 1992' - natural_date: function natural_date(tmpl, list) { - var order = ['text']; - var obj = parse$3(tmpl, order); - var str = obj.text || ''; // - just a year + // Large number of aliases - https://en.wikipedia.org/wiki/Template:Tl + tl: tmpl => { + let order = ['first', 'second']; + let obj = toJSON(tmpl, order); + return obj.second || obj.first; + }, + //this one's a little different + won: tmpl => { + let data = toJSON(tmpl, ['text']); + return data.place || data.text || _lib$3.titlecase(data.template); + }, + //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag + tag: tmpl => { + let obj = toJSON(tmpl, ['tag', 'open']); + const ignore = { + span: true, + div: true, + p: true + }; //pair, empty, close, single - var date = {}; + if (!obj.open || obj.open === 'pair') { + //just skip generating spans and things.. + if (ignore[obj.tag]) { + return obj.content || ''; + } - if (/^[0-9]{4}$/.test(str)) { - date.year = parseInt(str, 10); - } else { - //parse the date, using the js date object (for now?) - var txt = str.replace(/[a-z]+\/[a-z]+/i, ''); - txt = txt.replace(/[0-9]+:[0-9]+(am|pm)?/i, ''); - var d = new Date(txt); + return `<${obj.tag} ${obj.attribs || ''}>${obj.content || ''}`; + } - if (isNaN(d.getTime()) === false) { - date.year = d.getFullYear(); - date.month = d.getMonth() + 1; - date.date = d.getDate(); + return ''; + }, + //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural + plural: tmpl => { + tmpl = tmpl.replace(/plural:/, 'plural|'); + let order = ['num', 'word']; + let obj = toJSON(tmpl, order); + let num = Number(obj.num); + let word = obj.word; + + if (num !== 1) { + if (/.y$/.test(word)) { + word = word.replace(/y$/, 'ies'); + } else { + word += 's'; } } - list.push(template(date)); - return str.trim(); - }, - //just grab the first value, and assume it's a year - one_year: function one_year(tmpl, list) { - var order = ['year']; - var obj = parse$3(tmpl, order); - var year = Number(obj.year); - list.push(template({ - year: year - })); - return String(year); + return num + ' ' + word; }, - //assume 'y|m|d' | 'y|m|d' // {{BirthDeathAge|B|1976|6|6|1990|8|8}} - two_dates: function two_dates(tmpl, list) { - var order = ['b', 'birth_year', 'birth_month', 'birth_date', 'death_year', 'death_month', 'death_date']; - var obj = parse$3(tmpl, order); //'b' means show birth-date, otherwise show death-date + //https://en.wikipedia.org/wiki/Template:DEC + dec: tmpl => { + let obj = toJSON(tmpl, ['degrees', 'minutes', 'seconds']); + let str = (obj.degrees || 0) + '°'; - if (obj.b && obj.b.toLowerCase() === 'b') { - var _date = ymd$1([obj.birth_year, obj.birth_month, obj.birth_date]); + if (obj.minutes) { + str += obj.minutes + `′`; + } - list.push(template(_date)); - return toText$2(_date); + if (obj.seconds) { + str += obj.seconds + '″'; } - var date = ymd$1([obj.death_year, obj.death_month, obj.death_date]); - list.push(template(date)); - return toText$2(date); - }, - age: function age(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - return diff.years || 0; + return str; }, - 'diff-y': function diffY(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); + //https://en.wikipedia.org/wiki/Template:Val + val: tmpl => { + let obj = toJSON(tmpl, ['number', 'uncertainty']); + let num = obj.number; - if (diff.years === 1) { - return diff.years + ' year'; + if (num && Number(num)) { + num = Number(num).toLocaleString(); } - return (diff.years || 0) + ' years'; - }, - 'diff-ym': function diffYm(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; + let str = num || ''; //prefix/suffix - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); + if (obj.p) { + str = obj.p + str; } - if (diff.months === 1) { - arr.push('1 month'); - } else if (diff.months && diff.months !== 0) { - arr.push(diff.months + ' months'); - } + if (obj.s) { + str = obj.s + str; + } //add units, too - return arr.join(', '); - }, - 'diff-ymd': function diffYmd(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); + if (obj.u || obj.ul || obj.upl) { + str = str + ' ' + (obj.u || obj.ul || obj.upl); } - if (diff.months === 1) { - arr.push('1 month'); - } else if (diff.months && diff.months !== 0) { - arr.push(diff.months + ' months'); - } + return str; + }, + //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} + percentage: tmpl => { + let obj = toJSON(tmpl, ['numerator', 'denominator', 'decimals']); + let num = _lib$3.percentage(obj); - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); + if (num === null) { + return ''; } - return arr.join(', '); + return num + '%'; }, - 'diff-yd': function diffYd(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; + // {{Percent-done|done=N|total=N|digits=N}} + 'percent-done': tmpl => { + let obj = toJSON(tmpl, ['done', 'total', 'digits']); + let num = _lib$3.percentage({ + numerator: obj.done, + denominator: obj.total, + decimals: obj.digits + }); - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); - } //ergh... + if (num === null) { + return ''; + } + return `${obj.done} (${num}%) done`; + } + }; - diff.days += (diff.months || 0) * 30; + var flags = [['🇦🇩', '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'], //dupe + ['🇧🇭', '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'], //alias + ['🇩🇯', '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'], //['🇬🇪', 'geo', 'georgia'], + ['🇬🇫', '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'], //alias + ['🇺🇸', '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'], //others (later unicode versions) + ['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); + let templates$8 = { + //https://en.wikipedia.org/wiki/Template:Flag + // {{flag|USA}} → USA + flag: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(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 flag = found[0] || ''; + return `${flag} [[${found[2]}|${name}]]`; + }, + // {{flagcountry|USA}} → United States + flagcountry: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + 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 => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + 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 => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + + if (!found) { + return ''; } - return arr.join(', '); + return `[[${found[2]}|${found[0]}]]`; + }, + //unlinked flagicon + flagdeco: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + return found[0] || ''; }, - 'diff-d': function diffD(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; //ergh... + //same, but a soccer team + fb: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - diff.days += (diff.years || 0) * 365; - diff.days += (diff.months || 0) * 30; + if (!found) { + return ''; + } - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); + return `${found[0]} [[${found[2]} national football team|${found[2]}]]`; + }, + fbicon: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + + if (!found) { + return ''; } - return arr.join(', '); - } - }; - var parsers_1 = parsers; + return ` [[${found[2]} national football team|${found[0]}]]`; + }, + flagathlete: tmpl => { + let order = ['name', 'flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - //not all too fancy - used in {{timesince}} - var timeSince = function timeSince(str) { - var d = new Date(str); + if (!found) { + return `[[${obj.name || ''}]]`; + } - if (isNaN(d.getTime())) { - return ''; + return `${found[0]} [[${obj.name || ''}]] (${found[1].toUpperCase()})`; } + }; //support {{can}} - var now = new Date(); - var delta = now.getTime() - d.getTime(); - var predicate = 'ago'; - - if (delta < 0) { - predicate = 'from now'; - delta = Math.abs(delta); - } //figure out units + flags.forEach(a => { + templates$8[a[1]] = () => { + return a[0]; + }; + }); + var flags_1 = templates$8; + const titlecase = _lib$3.titlecase; //https://en.wikipedia.org/wiki/Template:Yes - var hours = delta / 1000 / 60 / 60; - var days = hours / 24; + let templates$7 = {}; + let cells = ['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']; + cells.forEach(str => { + templates$7[str] = tmpl => { + let data = toJSON(tmpl, ['text']); + return data.text || titlecase(data.template); + }; + }); //these ones have a text result - if (days < 365) { - return parseInt(days, 10) + ' days ' + predicate; - } + let moreCells = [['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', '']]; + moreCells.forEach(a => { + templates$7[a[0]] = tmpl => { + let data = toJSON(tmpl, ['text']); + return data.text || a[1]; + }; + }); + var tableCell = templates$7; - var years = days / 365; - return parseInt(years, 10) + ' years ' + predicate; - }; + var textOnly = Object.assign({}, hardcoded, shorthand$1, functions$2, flags_1, tableCell); - var _timeSince = timeSince; + let templates$6 = {}; // these all have ['id', 'name'] - var date = parsers_1.date; - var natural_date = parsers_1.natural_date; - var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; //date- templates we support + let idName = ['goodreads author', 'twitter', 'facebook', 'instagram', 'tumblr', 'pinterest', 'espn nfl', 'espn nhl', 'espn fc', 'hockeydb', 'fifa player', 'worldcat', 'worldcat id', 'nfl player', 'ted speaker', 'playmate']; + idName.forEach(name => { + templates$6[name] = ['id', 'name']; + }); + var idName_1 = templates$6; - var dateTmpl = Object.assign({}, misc_1, { - currentday: function currentday() { - var d = new Date(); - return String(d.getDate()); - }, - currentdayname: function currentdayname() { - var d = new Date(); - return days[d.getDay()]; - }, - currentmonth: function currentmonth() { - var d = new Date(); - return months[d.getMonth()]; - }, - currentyear: function currentyear() { - var d = new Date(); - return String(d.getFullYear()); - }, - monthyear: function monthyear() { - var d = new Date(); - return months[d.getMonth()] + ' ' + d.getFullYear(); - }, - 'monthyear-1': function monthyear1() { - var d = new Date(); - d.setMonth(d.getMonth() - 1); - return months[d.getMonth()] + ' ' + d.getFullYear(); - }, - 'monthyear+1': function monthyear1() { - var d = new Date(); - d.setMonth(d.getMonth() + 1); - return months[d.getMonth()] + ' ' + d.getFullYear(); - }, - //Explictly-set dates - https://en.wikipedia.org/wiki/Template:Date - date: 0, - 'time ago': function timeAgo(tmpl) { - var order = ['date', 'fmt']; - var time = parse$3(tmpl, order).date; - return _timeSince(time); - }, - //https://en.wikipedia.org/wiki/Template:Birth_date_and_age - 'birth date and age': function birthDateAndAge(tmpl, list) { - var order = ['year', 'month', 'day']; - var obj = parse$3(tmpl, order); //support 'one property' version + let templates$5 = {}; // these all have ['id', 'title', 'description', 'section'] - if (obj.year && /[a-z]/i.test(obj.year)) { - return natural_date(tmpl, list); - } + let idTitle = ['imdb title', //https://en.wikipedia.org/wiki/Template: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' //https://en.wikipedia.org/wiki/Template:DMOZ + ]; + idTitle.forEach(name => { + templates$5[name] = ['id', 'title', 'description', 'section']; + }); + var idTitle_1 = templates$5; + var functions$1 = { + // https://en.wikipedia.org/wiki/Template:IPA + ipa: (tmpl, list) => { + let obj = toJSON(tmpl, ['transcription', 'lang', 'audio']); + obj.lang = _lib$3.getLang(obj.template); + obj.template = 'ipa'; list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - return _format.toText(obj); + return ''; }, - 'birth year and age': function birthYearAndAge(tmpl, list) { - var order = ['birth_year', 'birth_month']; - var obj = parse$3(tmpl, order); //support 'one property' version - - if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return natural_date(tmpl, list); - } - + //https://en.wikipedia.org/wiki/Template:IPAc-en + ipac: (tmpl, list) => { + let obj = toJSON(tmpl); + obj.transcription = (obj.list || []).join(','); + delete obj.list; + obj.lang = _lib$3.getLang(obj.template); + obj.template = 'ipac'; list.push(obj); - var age = new Date().getFullYear() - parseInt(obj.birth_year, 10); - obj = _format.ymd([obj.birth_year, obj.birth_month]); - var str = _format.toText(obj); + return ''; + }, + quote: (tmpl, list) => { + let order = ['text', 'author']; + let obj = toJSON(tmpl, order); + list.push(obj); //create plaintext version - if (age) { - str += " (age ".concat(age, ")"); - } + if (obj.text) { + let str = `"${obj.text}"`; - return str; - }, - 'death year and age': function deathYearAndAge(tmpl, list) { - var order = ['death_year', 'birth_year', 'death_month']; - var obj = parse$3(tmpl, order); //support 'one property' version + if (obj.author) { + str += '\n\n'; + str += ` - ${obj.author}`; + } - if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return natural_date(tmpl, list); + return str + '\n'; } + return ''; + }, + //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS + 'cite gnis': (tmpl, list) => { + let order = ['id', 'name', 'type']; + let obj = toJSON(tmpl, order); + obj.type = 'gnis'; + obj.template = 'citation'; list.push(obj); - obj = _format.ymd([obj.death_year, obj.death_month]); - return _format.toText(obj); + return ''; }, - //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 - 'birth date and age2': function birthDateAndAge2(tmpl, list) { - var order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; - var obj = parse$3(tmpl, order); + 'spoken wikipedia': (tmpl, list) => { + let order = ['file', 'date']; + let obj = toJSON(tmpl, order); + obj.template = 'audio'; list.push(obj); - obj = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); - return _format.toText(obj); + return ''; }, - //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date - 'birth based on age as of date': function birthBasedOnAgeAsOfDate(tmpl, list) { - var order = ['age', 'year', 'month', 'day']; - var obj = parse$3(tmpl, order); + //yellow card + yel: (tmpl, list) => { + let obj = toJSON(tmpl, ['min']); list.push(obj); - var age = parseInt(obj.age, 10); - var year = parseInt(obj.year, 10); - var born = year - age; - if (born && age) { - return "".concat(born, " (age ").concat(obj.age, ")"); + if (obj.min) { + return `yellow: ${obj.min || ''}'`; //no yellow-card emoji } - return "(age ".concat(obj.age, ")"); + return ''; }, - //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age - 'death date and given age': function deathDateAndGivenAge(tmpl, list) { - var order = ['year', 'month', 'day', 'age']; - var obj = parse$3(tmpl, order); + subon: (tmpl, list) => { + let obj = toJSON(tmpl, ['min']); list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - var str = _format.toText(obj); - if (obj.age) { - str += " (age ".concat(obj.age, ")"); + if (obj.min) { + return `sub on: ${obj.min || ''}'`; //no yellow-card emoji } - return str; + return ''; }, - //sortable dates - - dts: function dts(tmpl) { - //remove formatting stuff, ewww - tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); - tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); - var order = ['year', 'month', 'date', 'bc']; - var obj = parse$3(tmpl, order); - - if (obj.date && obj.month && obj.year) { - //render 'june 5 2018' - if (/[a-z]/.test(obj.month) === true) { - return [obj.month, obj.date, obj.year].join(' '); - } - - return [obj.year, obj.month, obj.date].join('-'); - } - - if (obj.month && obj.year) { - return [obj.year, obj.month].join('-'); - } - - if (obj.year) { - if (obj.year < 0) { - obj.year = Math.abs(obj.year) + ' BC'; - } + suboff: (tmpl, list) => { + let obj = toJSON(tmpl, ['min']); + list.push(obj); - return obj.year; + if (obj.min) { + return `sub off: ${obj.min || ''}'`; //no yellow-card emoji } return ''; }, - //date/age/time templates - start: date, - end: date, - birth: date, - death: date, - 'start date': date, - 'end date': date, - 'birth date': date, - 'death date': date, - 'start date and age': date, - 'end date and age': date, - //this is insane (hyphen ones are different) - 'start-date': natural_date, - 'end-date': natural_date, - 'birth-date': natural_date, - 'death-date': natural_date, - 'birth-date and age': natural_date, - 'birth-date and given age': natural_date, - 'death-date and age': natural_date, - 'death-date and given age': natural_date, - birthdeathage: parsers_1.two_dates, - dob: date, - // 'birth date and age2': date, - age: parsers_1.age, - 'age nts': parsers_1.age, - 'age in years': parsers_1['diff-y'], - 'age in years and months': parsers_1['diff-ym'], - 'age in years, months and days': parsers_1['diff-ymd'], - 'age in years and days': parsers_1['diff-yd'], - 'age in days': parsers_1['diff-d'] // 'age in years, months, weeks and days': true, - // 'age as of date': true, - - }); //aliases - - dateTmpl.localday = dateTmpl.currentday; - dateTmpl.localdayname = dateTmpl.currentdayname; - dateTmpl.localmonth = dateTmpl.currentmonth; - dateTmpl.localyear = dateTmpl.currentyear; - dateTmpl.currentmonthname = dateTmpl.currentmonth; - dateTmpl.currentmonthabbrev = dateTmpl.currentmonth; - dateTmpl['death date and age'] = dateTmpl['birth date and age']; - dateTmpl.bda = dateTmpl['birth date and age']; - dateTmpl['birth date based on age at death'] = dateTmpl['birth based on age as of date']; - var dates = dateTmpl; - - var templates = { - //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag - tag: function tag(tmpl) { - var obj = parse$3(tmpl, ['tag', 'open']); - var ignore = { - span: true, - div: true, - p: true - }; //pair, empty, close, single - - if (!obj.open || obj.open === 'pair') { - //just skip generating spans and things.. - if (ignore[obj.tag]) { - return obj.content || ''; - } + //https://en.wikipedia.org/wiki/Template:Sfn + sfn: (tmpl, list, parser, alias) => { + let order = ['author', 'year', 'location']; + let obj = toJSON(tmpl, order); - return "<".concat(obj.tag, " ").concat(obj.attribs || '', ">").concat(obj.content || '', ""); + if (alias) { + obj.name = obj.template; + obj.teplate = alias; } + list.push(obj); return ''; }, - //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural - plural: function plural(tmpl) { - tmpl = tmpl.replace(/plural:/, 'plural|'); - var order = ['num', 'word']; - var obj = parse$3(tmpl, order); - var num = Number(obj.num); - var word = obj.word; - - if (num !== 1) { - if (/.y$/.test(word)) { - word = word.replace(/y$/, 'ies'); - } else { - word += 's'; - } - } - - return num + ' ' + word; - }, - // https://en.wikipedia.org/wiki/Template:First_word - 'first word': function firstWord(tmpl) { - var obj = parse$3(tmpl, ['text']); - var str = obj.text; + //https://en.wikipedia.org/wiki/Template:Redirect + redirect: (tmpl, list) => { + let data = toJSON(tmpl, ['redirect']); + let lines = data.list || []; + let links = []; - if (obj.sep) { - return str.split(obj.sep)[0]; + for (let i = 0; i < lines.length; i += 2) { + links.push({ + page: lines[i + 1], + desc: lines[i] + }); } - return str.split(' ')[0]; - }, - trunc: function trunc(tmpl) { - var order = ['str', 'len']; - var obj = parse$3(tmpl, order); - return obj.str.substr(0, obj.len); - }, - 'str mid': function strMid(tmpl) { - var order = ['str', 'start', 'end']; - var obj = parse$3(tmpl, order); - var start = parseInt(obj.start, 10) - 1; - var end = parseInt(obj.end, 10); - return obj.str.substr(start, end); + let obj = { + template: 'redirect', + redirect: data.redirect, + links: links + }; + list.push(obj); + return ''; }, - //grab the first, second or third pipe - p1: 0, - p2: 1, - p3: 2, - //formatting things - https://en.wikipedia.org/wiki/Template:Nobold - braces: function braces(tmpl) { - var obj = parse$3(tmpl, ['text']); - var attrs = ''; - - if (obj.list) { - attrs = '|' + obj.list.join('|'); - } + //https://en.wikipedia.org/wiki/Template:Sister_project_links + 'sister project links': (tmpl, list) => { + let data = toJSON(tmpl); //rename 'wd' to 'wikidata' - return '{{' + (obj.text || '') + attrs + '}}'; - }, - nobold: 0, - noitalic: 0, - nocaps: 0, - syntaxhighlight: function syntaxhighlight(tmpl, list) { - var obj = parse$3(tmpl); + let links = {}; + Object.keys(_lib$3.sisterProjects).forEach(k => { + if (data.hasOwnProperty(k) === true) { + links[_lib$3.sisterProjects[k]] = data[k]; //.text(); + } + }); + let obj = { + template: 'sister project links', + links: links + }; list.push(obj); - return obj.code || ''; + return ''; }, - samp: function samp(tmpl, list) { - var obj = parse$3(tmpl, ['1']); + //https://en.wikipedia.org/wiki/Template:Subject_bar + 'subject bar': (tmpl, list) => { + let data = toJSON(tmpl); + Object.keys(data).forEach(k => { + //rename 'voy' to 'wikivoyage' + if (_lib$3.sisterProjects.hasOwnProperty(k)) { + data[_lib$3.sisterProjects[k]] = data[k]; + delete data[k]; + } + }); + let obj = { + template: 'subject bar', + links: data + }; list.push(obj); - return obj['1'] || ''; - }, - //https://en.wikipedia.org/wiki/Template:Visible_anchor - vanchor: 0, - //https://en.wikipedia.org/wiki/Template:Resize - resize: 1, - //https://en.wikipedia.org/wiki/Template:Ra - ra: function ra(tmpl) { - var obj = parse$3(tmpl, ['hours', 'minutes', 'seconds']); - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); - }, - //https://en.wikipedia.org/wiki/Template:Deg2HMS - deg2hms: function deg2hms(tmpl) { - //this template should do the conversion - var obj = parse$3(tmpl, ['degrees']); - return (obj.degrees || '') + '°'; + return ''; }, - hms2deg: function hms2deg(tmpl) { - //this template should do the conversion too - var obj = parse$3(tmpl, ['hours', 'minutes', 'seconds']); - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); + //amazingly, this one does not obey any known patterns + //https://en.wikipedia.org/wiki/Template:Gallery + gallery: (tmpl, list) => { + let obj = toJSON(tmpl); + let images = (obj.list || []).filter(line => /^ *File ?:/.test(line)); + images = images.map(file => { + let img = { + file: file + }; // todo: add lang and domain information + + return new Image_1(img).json(); + }); + obj = { + template: 'gallery', + images: images + }; + list.push(obj); + return ''; }, - decdeg: function decdeg(tmpl) { - //this template should do the conversion too - var obj = parse$3(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); - return (obj.deg || obj.degrees) + '°'; + //https://en.wikipedia.org/wiki/Template:Sky + sky: (tmpl, list) => { + let obj = toJSON(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); + let template = { + template: 'sky', + ascension: { + hours: obj.asc_hours, + minutes: obj.asc_minutes, + seconds: obj.asc_seconds + }, + declination: { + sign: obj.dec_sign, + degrees: obj.dec_degrees, + minutes: obj.dec_minutes, + seconds: obj.dec_seconds + }, + distance: obj.distance + }; + list.push(template); + return ''; }, - rnd: 0, - //https://en.wikipedia.org/wiki/Template:DEC - dec: function dec(tmpl) { - var obj = parse$3(tmpl, ['degrees', 'minutes', 'seconds']); - var str = (obj.degrees || 0) + '°'; - - if (obj.minutes) { - str += obj.minutes + "\u2032"; - } - - if (obj.seconds) { - str += obj.seconds + '″'; - } + // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see + // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original + // parsing code. + 'medical cases chart': (tmpl, list) => { + let order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; + let obj = toJSON(tmpl); + obj.data = obj.data || ''; + let rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following + // line on: + // + // for parameter in mw.text.gsplit(line, ';') do - return str; - }, - //https://en.wikipedia.org/wiki/Template:Val - val: function val(tmpl) { - var obj = parse$3(tmpl, ['number', 'uncertainty']); - var num = obj.number; + let dataArray = rows.map(row => { + let parameters = row.split(';'); + let rowObject = { + options: new Map() + }; + let positionalIndex = 0; - if (num && Number(num)) { - num = Number(num).toLocaleString(); - } + for (let i = 0; i < parameters.length; i++) { + let parameter = parameters[i].trim(); - var str = num || ''; //prefix/suffix + if (parameter.match(/^[a-zA-Z_]/)) { + // Named argument + let [key, value] = parameter.split('='); // At this point, the Lua code evaluates alttot1 and alttot2 values as + // #expr expressions, but we just pass them through. See also: + // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr - if (obj.p) { - str = obj.p + str; - } + if (value === undefined) { + value = null; + } - if (obj.s) { - str = obj.s + str; - } //add units, too + rowObject.options.set(key, value); + } else { + // Positional argument + // Here again, the Lua code evaluates arguments at index 1 through 5 + // as #expr expressions, but we just pass them through. + if (positionalIndex < order.length) { + rowObject[order[positionalIndex]] = parameter; + } + positionalIndex++; + } + } - if (obj.u || obj.ul || obj.upl) { - str = str + ' ' + (obj.u || obj.ul || obj.upl); - } + for (; positionalIndex < order.length; positionalIndex++) { + rowObject[order[positionalIndex]] = null; + } - return str; - }, - //https://en.wikipedia.org/wiki/Template:Sub - sub: function sub(tmpl, list) { - var obj = parse$3(tmpl, ['text']); + return rowObject; + }); + obj.data = dataArray; list.push(obj); - return obj.text || ''; + return ''; }, - //https://en.wikipedia.org/wiki/Template:Sup - sup: function sup(tmpl, list) { - var obj = parse$3(tmpl, ['text']); - list.push(obj); - return obj.text || ''; - } - }; //aliases + graph: (tmpl, list) => { + let data = toJSON(tmpl); - templates['rndfrac'] = templates.rnd; - templates['rndnear'] = templates.rnd; - templates['unité'] = templates.val; //templates that we simply grab their insides as plaintext + if (data.x) { + data.x = data.x.split(',').map(str => str.trim()); + } - var inline = ['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', //https://en.wikipedia.org/wiki/Template:Delink - //half-supported - 'pre', 'var', 'mvar', 'pre2', 'code']; - inline.forEach(function (k) { - templates[k] = function (tmpl) { - return parse$3(tmpl, ['text']).text || ''; - }; - }); - var format = templates; + if (data.y) { + data.y = data.y.split(',').map(str => str.trim()); + } - var tmpls = { - //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist - plainlist: function plainlist(tmpl) { - tmpl = _strip(tmpl); //remove the title + let y = 1; - var arr = tmpl.split('|'); - arr = arr.slice(1); - tmpl = arr.join('|'); //split on newline + while (data['y' + y]) { + data['y' + y] = data['y' + y].split(',').map(str => str.trim()); + y += 1; + } - arr = tmpl.split(/\n ?\* ?/); - arr = arr.filter(function (s) { - return s; - }); - return arr.join('\n\n'); + list.push(data); + return ''; }, - //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list - 'collapsible list': function collapsibleList(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - var str = ''; + //https://en.wikipedia.org/wiki/Template:Historical_populations + 'historical populations': (tmpl, list) => { + let data = toJSON(tmpl); + data.list = data.list || []; + let years = []; - if (obj.title) { - str += "'''".concat(obj.title, "'''") + '\n\n'; + for (let i = 0; i < data.list.length; i += 2) { + let num = data.list[i + 1]; + years.push({ + year: data.list[i], + val: Number(num) || num + }); } - if (!obj.list) { - obj.list = []; + data.data = years; + delete data.list; + list.push(data); + return ''; + }, + // this one is a handful! + //https://en.wikipedia.org/wiki/Template:Weather_box + 'weather box': (tmpl, list) => { + const hasMonth = /^jan /i; + const isYear = /^year /i; + let obj = toJSON(tmpl); + const monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; + let byMonth = {}; + 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 => { + let key = `${m} ${prop}`; - for (var i = 1; i < 10; i += 1) { - if (obj[i]) { - obj.list.push(obj[i]); - delete obj[i]; + if (obj.hasOwnProperty(key)) { + let num = _lib$3.toNumber(obj[key]); + delete obj[key]; + byMonth[prop].push(num); } - } - } + }); + }); //add these to original - obj.list = obj.list.filter(function (s) { - return s; - }); - str += obj.list.join('\n\n'); - return str; - }, - // https://en.wikipedia.org/wiki/Template:Ordered_list - 'ordered list': function orderedList(tmpl, list) { - var obj = parse$3(tmpl); + obj.byMonth = byMonth; //collect year-based data + + let byYear = {}; + Object.keys(obj).forEach(k => { + if (isYear.test(k)) { + let prop = k.replace(isYear, ''); + byYear[prop] = obj[k]; + delete obj[k]; + } + }); + obj.byYear = byYear; list.push(obj); - obj.list = obj.list || []; - var lines = obj.list.map(function (str, i) { - return "".concat(i + 1, ". ").concat(str); + return ''; + }, + //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation + //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C + 'weather box/concise c': (tmpl, list) => { + let obj = toJSON(tmpl); + obj.list = obj.list.map(s => _lib$3.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) + }; + delete obj.list; + obj.template = 'weather box'; + list.push(obj); + return ''; + }, + 'weather box/concise f': (tmpl, list) => { + let obj = toJSON(tmpl); + obj.list = obj.list.map(s => _lib$3.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) + }; + delete obj.list; + obj.template = 'weather box'; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Climate_chart + 'climate chart': (tmpl, list) => { + let lines = toJSON(tmpl).list || []; + let title = lines[0]; + let source = lines[38]; + lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... + + lines = lines.map(str => { + if (str && str[0] === '−') { + str = str.replace(/−/, '-'); + } + + return str; }); - return lines.join('\n\n'); + let months = []; //groups of three, for 12 months + + for (let i = 0; i < 36; i += 3) { + months.push({ + low: _lib$3.toNumber(lines[i]), + high: _lib$3.toNumber(lines[i + 1]), + precip: _lib$3.toNumber(lines[i + 2]) + }); + } + + let obj = { + template: 'climate chart', + data: { + title: title, + source: source, + months: months + } + }; + list.push(obj); + return ''; + } + }; + + let templates$4 = { + //https://en.wikipedia.org/wiki/Category:External_link_templates + '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'], + //https://en.wikipedia.org/wiki/Template:Taxon_info + 'portuguese name': ['first', 'second', 'suffix'], + // https://en.wikipedia.org/wiki/Template:Portuguese_name + geo: ['lat', 'lon', 'zoom'] //https://en.wikivoyage.org/wiki/Template:Geo + + }; + templates$4 = Object.assign(templates$4, idName_1, idTitle_1, functions$1); + var dataOnly = templates$4; + + var shorthand = { + mlbplayer: { + props: ['number', 'name', 'il'], + out: 'name' }, - hlist: function hlist(tmpl) { - var obj = parse$3(tmpl); - obj.list = obj.list || []; - return obj.list.join(' · '); + syntaxhighlight: { + props: [], + out: 'code' }, - pagelist: function pagelist(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join(', '); + samp: { + props: ['1'], + out: '1' }, - //actually rendering these links removes the text. - //https://en.wikipedia.org/wiki/Template:Catlist - catlist: function catlist(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join(', '); + //https://en.wikipedia.org/wiki/Template:Sub + sub: { + props: ['text'], + out: 'text' }, - //https://en.wikipedia.org/wiki/Template:Br_separated_entries - 'br separated entries': function brSeparatedEntries(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join('\n\n'); + //https://en.wikipedia.org/wiki/Template:Sup + sup: { + props: ['text'], + out: 'text' }, - 'comma separated entries': function commaSeparatedEntries(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join(', '); + //https://en.wikipedia.org/wiki/Template:Chem2 + chem2: { + props: ['equation'], + out: 'equation' }, - //https://en.wikipedia.org/wiki/Template:Bare_anchored_list - 'anchored list': function anchoredList(tmpl) { - var arr = parse$3(tmpl).list || []; - arr = arr.map(function (str, i) { - return "".concat(i + 1, ". ").concat(str); - }); - return arr.join('\n\n'); + //https://en.wikipedia.org/wiki/Template:Interlanguage_link + ill: { + props: ['text', 'lan1', 'text1', 'lan2', 'text2'], + out: 'text' }, - 'bulleted list': function bulletedList(tmpl) { - var arr = parse$3(tmpl).list || []; - arr = arr.filter(function (f) { - return f; - }); - arr = arr.map(function (str) { - return '• ' + str; - }); - return arr.join('\n\n'); + //https://en.wikipedia.org/wiki/Template:Abbr + abbr: { + props: ['abbr', 'meaning', 'ipa'], + out: 'abbr' + } // name: { + // props: [], + // out: '', + // }, + + }; + + let templates$3 = { + // https://en.wikipedia.org/wiki/Template:Math + math: (tmpl, list) => { + let obj = toJSON(tmpl, ['formula']); + list.push(obj); + return '\n\n' + (obj.formula || '') + '\n\n'; }, - //https://en.wikipedia.org/wiki/Template:Columns-list - 'columns-list': function columnsList(tmpl, list) { - var arr = parse$3(tmpl).list || []; - var str = arr[0] || ''; - var lines = str.split(/\n/); - lines = lines.filter(function (f) { - return f; - }); - lines = lines.map(function (s) { - return s.replace(/\*/, ''); - }); + isbn: (tmpl, list) => { + let order = ['id', 'id2', 'id3']; + let obj = toJSON(tmpl, order); + list.push(obj); + return 'ISBN: ' + (obj.id || ''); + }, + //https://en.wikipedia.org/wiki/Template:Based_on + 'based on': (tmpl, list) => { + let obj = toJSON(tmpl, ['title', 'author']); + list.push(obj); + return `${obj.title} by ${obj.author || ''}`; + }, + //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t + 'bbl to t': (tmpl, list) => { + let obj = toJSON(tmpl, ['barrels']); + list.push(obj); + + if (obj.barrels === '0') { + return obj.barrels + ' barrel'; + } + + return obj.barrels + ' barrels'; + }, + //minor planet - https://en.wikipedia.org/wiki/Template:MPC + mpc: (tmpl, list) => { + let obj = toJSON(tmpl, ['number', 'text']); + list.push(obj); + return `[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${obj.text || obj.number}]`; + }, + pengoal: (tmpl, list) => { list.push({ - template: 'columns-list', - list: lines + template: 'pengoal' }); - lines = lines.map(function (s) { - return '• ' + s; + return '✅'; + }, + penmiss: (tmpl, list) => { + list.push({ + template: 'penmiss' }); + return '❌'; + }, + // https://en.wikipedia.org/wiki/Template:Ordered_list + 'ordered list': (tmpl, list) => { + let obj = toJSON(tmpl); + list.push(obj); + obj.list = obj.list || []; + let lines = obj.list.map((str, i) => `${i + 1}. ${str}`); return lines.join('\n\n'); - } // 'pagelist':(tmpl)=>{}, - - }; //aliases + }, + // https://en.wikipedia.org/wiki/Template:Title_year + 'title year': (tmpl, _list, _alias, _parse, doc) => { + let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); - tmpls.flatlist = tmpls.plainlist; - tmpls.ublist = tmpls.plainlist; - tmpls['unbulleted list'] = tmpls['collapsible list']; - tmpls['ubl'] = tmpls['collapsible list']; - tmpls['bare anchored list'] = tmpls['anchored list']; - tmpls['plain list'] = tmpls['plainlist']; - tmpls.cmn = tmpls['columns-list']; - tmpls.collist = tmpls['columns-list']; - tmpls['col-list'] = tmpls['columns-list']; - tmpls.columnslist = tmpls['columns-list']; - var lists = tmpls; - - var inline$1 = { - //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values - convert: function convert(tmpl) { - var order = ['num', 'two', 'three', 'four']; - var obj = parse$3(tmpl, order); //todo: support plural units + if (title) { + let m = title.match(/\b[0-9]{4}\b/); //parse the year out of the title's name - if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { - if (obj.four) { - return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three, " ").concat(obj.four); + if (m) { + return m[0]; } - - return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three); } - return "".concat(obj.num, " ").concat(obj.two); - }, - //https://en.wikipedia.org/wiki/Template:Term - term: function term(tmpl) { - var obj = parse$3(tmpl, ['term']); - return "".concat(obj.term, ":"); - }, - defn: 0, - //https://en.wikipedia.org/wiki/Template:Linum - lino: 0, - linum: function linum(tmpl) { - var obj = parse$3(tmpl, ['num', 'text']); - return "".concat(obj.num, ". ").concat(obj.text); - }, - //https://en.wikipedia.org/wiki/Template:Interlanguage_link - ill: function ill(tmpl) { - var order = ['text', 'lan1', 'text1', 'lan2', 'text2']; - var obj = parse$3(tmpl, order); - return obj.text; + return obj.nomatch || ''; //use default response }, - //https://en.wikipedia.org/wiki/Template:Frac - frac: function frac(tmpl) { - var order = ['a', 'b', 'c']; - var obj = parse$3(tmpl, order); + // https://en.wikipedia.org/wiki/Template:Title_century + 'title century': (tmpl, _list, _alias, _parse, doc) => { + let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); - if (obj.c) { - return "".concat(obj.a, " ").concat(obj.b, "/").concat(obj.c); - } + if (title) { + let m = title.match(/\b([0-9]+)(st|nd|rd|th)\b/); //parse the century out of the title's name - if (obj.b) { - return "".concat(obj.a, "/").concat(obj.b); + if (m) { + return m[1] || ''; + } } - return "1/".concat(obj.b); + return obj.nomatch || ''; //use default response }, - //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} - height: function height(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - var result = []; - var units = ['m', 'cm', 'ft', 'in']; //order matters + // https://en.wikipedia.org/wiki/Template:Title_decade + 'title decade': (tmpl, _list, _alias, _parse, doc) => { + let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); - units.forEach(function (unit) { - if (obj.hasOwnProperty(unit) === true) { - result.push(obj[unit] + unit); + 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 result.join(' '); + } + + return obj.nomatch || ''; //use default response }, - 'block indent': function blockIndent(tmpl) { - var obj = parse$3(tmpl); + //https://en.wikipedia.org/wiki/Template:Nihongo + nihongo: (tmpl, list) => { + let obj = toJSON(tmpl, ['english', 'kanji', 'romaji', 'extra']); + list.push(obj); + let str = obj.english || obj.romaji || ''; - if (obj['1']) { - return '\n' + obj['1'] + '\n'; + if (obj.kanji) { + str += ` (${obj.kanji})`; } - return ''; + return str; }, - quote: function quote(tmpl, list) { - var order = ['text', 'author']; - var obj = parse$3(tmpl, order); - list.push(obj); //create plaintext version - - if (obj.text) { - var str = "\"".concat(obj.text, "\""); + //https://en.wikipedia.org/wiki/Template:Marriage + //this one creates a template, and an inline response + marriage: (tmpl, list) => { + let data = toJSON(tmpl, ['spouse', 'from', 'to', 'end']); + list.push(data); + let str = data.spouse || ''; - if (obj.author) { - str += '\n\n'; - str += " - ".concat(obj.author); + if (data.from) { + if (data.to) { + str += ` (m. ${data.from}-${data.to})`; + } else { + str += ` (m. ${data.from})`; } - - return str + '\n'; } - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Lbs - lbs: function lbs(tmpl) { - var obj = parse$3(tmpl, ['text']); - return "[[".concat(obj.text, " Lifeboat Station|").concat(obj.text, "]]"); + return str; }, - //Foo-class - lbc: function lbc(tmpl) { - var obj = parse$3(tmpl, ['text']); - return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "-class]]"); + //'red' card - {{sent off|cards|min1|min2}} + 'sent off': (tmpl, list) => { + let obj = toJSON(tmpl, ['cards']); + let result = { + template: 'sent off', + cards: obj.cards, + minutes: obj.list || [] + }; + list.push(result); + let mins = result.minutes.map(m => m + "'").join(', '); + return 'sent off: ' + mins; }, - lbb: function lbb(tmpl) { - var obj = parse$3(tmpl, ['text']); - return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "]]"); + transl: (tmpl, list) => { + let obj = toJSON(tmpl, ['lang', 'text', 'text2']); // support 3-param + + if (obj.text2) { + obj.iso = obj.text; + obj.text = obj.text2; + delete obj.text2; + } + + list.push(obj); + return obj.text || ''; }, - // https://en.wikipedia.org/wiki/Template:Own - own: function own(tmpl) { - var obj = parse$3(tmpl, ['author']); - var str = 'Own work'; + //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list + 'collapsible list': (tmpl, list) => { + let obj = toJSON(tmpl); + list.push(obj); + let str = ''; - if (obj.author) { - str += ' by ' + obj.author; + if (obj.title) { + str += `'''${obj.title}'''` + '\n\n'; + } + + if (!obj.list) { + obj.list = []; + + for (let i = 1; i < 10; i += 1) { + if (obj[i]) { + obj.list.push(obj[i]); + delete obj[i]; + } + } } + obj.list = obj.list.filter(s => s); + str += obj.list.join('\n\n'); return str; }, + //https://en.wikipedia.org/wiki/Template:Columns-list + 'columns-list': (tmpl, list) => { + let arr = toJSON(tmpl).list || []; + let str = arr[0] || ''; + let lines = str.split(/\n/).filter(f => f); + lines = lines.map(s => s.replace(/\*/, '')); + list.push({ + template: 'columns-list', + list: lines + }); + lines = lines.map(s => '• ' + s); + return lines.join('\n\n'); + }, + //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} + height: (tmpl, list) => { + let obj = toJSON(tmpl); + list.push(obj); + let result = []; + let units = ['m', 'cm', 'ft', 'in']; //order matters + + units.forEach(unit => { + if (obj.hasOwnProperty(unit) === true) { + result.push(obj[unit] + unit); + } + }); + return result.join(' '); + }, //https://en.wikipedia.org/wiki/Template:Sic - sic: function sic(tmpl, list) { - var obj = parse$3(tmpl, ['one', 'two', 'three']); - var word = (obj.one || '') + (obj.two || ''); //support '[sic?]' + sic: (tmpl, list) => { + let obj = toJSON(tmpl, ['one', 'two', 'three']); + let word = (obj.one || '') + (obj.two || ''); //support '[sic?]' if (obj.one === '?') { word = (obj.two || '') + (obj.three || ''); @@ -6080,1240 +6045,1038 @@ return word; } - return "".concat(word, " [sic]"); - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - formatnum: function formatnum(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['number']); - var str = obj.number || ''; - str = str.replace(/,/g, ''); - var num = Number(str); - return num.toLocaleString() || ''; - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - '#dateformat': function dateformat(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['date', 'format']); - return obj.date; - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - lc: function lc(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - return (obj.text || '').toLowerCase(); - }, - lcfirst: function lcfirst(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - var text = obj.text; + return `${word} [sic]`; + }, + // + inrconvert: (tmpl, list) => { + let o = toJSON(tmpl, ['rupee_value', 'currency_formatting']); + list.push(o); + const mults = { + k: 1000, + m: 1000000, + b: 1000000000, + t: 1000000000000, + l: 100000, + c: 10000000, + lc: 1000000000000 + }; - if (!text) { - return ''; + if (o.currency_formatting) { + let multiplier = mults[o.currency_formatting] || 1; + o.rupee_value = o.rupee_value * multiplier; } - return text[0].toLowerCase() + text.substr(1); + return `inr ${o.rupee_value || ''}`; }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - uc: function uc(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - return (obj.text || '').toUpperCase(); + //fraction - https://en.wikipedia.org/wiki/Template:Sfrac + frac: (tmpl, list) => { + let order = ['a', 'b', 'c']; + let obj = toJSON(tmpl, order); + let data = { + template: 'sfrac' + }; + + if (obj.c) { + data.integer = obj.a; + data.numerator = obj.b; + data.denominator = obj.c; + } else if (obj.b) { + data.numerator = obj.a; + data.denominator = obj.b; + } else { + data.numerator = 1; + data.denominator = obj.a; + } + + list.push(data); + + if (data.integer) { + return `${data.integer} ${data.numerator}⁄${data.denominator}`; + } + + return `${data.numerator}⁄${data.denominator}`; }, - ucfirst: function ucfirst(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - var text = obj.text; + 'winning percentage': (tmpl, list) => { + let obj = toJSON(tmpl, ['wins', 'losses', 'ties']); + list.push(obj); + let wins = Number(obj.wins); + let losses = Number(obj.losses); + let ties = Number(obj.ties) || 0; + let games = wins + losses + ties; - if (!text) { + if (obj.ignore_ties === 'y') { + ties = 0; + } + + if (ties) { + wins += ties / 2; + } + + let num = _lib$3.percentage({ + numerator: wins, + denominator: games, + decimals: 1 + }); + + if (num === null) { return ''; } - return text[0].toUpperCase() + text.substr(1); - }, - padleft: function padleft(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text', 'num']); - var text = obj.text || ''; - return text.padStart(obj.num, obj.str || '0'); - }, - padright: function padright(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text', 'num']); - var text = obj.text || ''; - return text.padEnd(obj.num, obj.str || '0'); + return `.${num * 10}`; }, - //abbreviation/meaning - //https://en.wikipedia.org/wiki/Template:Abbr - abbr: function abbr(tmpl) { - var obj = parse$3(tmpl, ['abbr', 'meaning', 'ipa']); - return obj.abbr; + winlosspct: (tmpl, list) => { + let obj = toJSON(tmpl, ['wins', 'losses']); + list.push(obj); + let wins = Number(obj.wins); + let losses = Number(obj.losses); + let num = _lib$3.percentage({ + numerator: wins, + denominator: wins + losses, + decimals: 1 + }); + + if (num === null) { + return ''; + } + + num = `.${num * 10}`; + return `${wins || 0} || ${losses || 0} || ${num || '-'}`; }, - //https://en.wikipedia.org/wiki/Template:Abbrlink - abbrlink: function abbrlink(tmpl) { - var obj = parse$3(tmpl, ['abbr', 'page']); + //https://en.wikipedia.org/wiki/Template:Video_game_release + 'video game release': (tmpl, list) => { + let order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; + let obj = toJSON(tmpl, order); + let template = { + template: 'video game release', + releases: [] + }; - if (obj.page) { - return "[[".concat(obj.page, "|").concat(obj.abbr, "]]"); + 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]] + }); + } } - return "[[".concat(obj.abbr, "]]"); + list.push(template); + let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n'); + return '\n' + str + '\n'; }, - //https://en.wikipedia.org/wiki/Template:Hover_title - //technically 'h:title' - h: 1, - //https://en.wikipedia.org/wiki/Template:Finedetail - finedetail: 0, - //https://en.wikipedia.org/wiki/Template:Sort - sort: 1 - }; //aliases + // https://en.m.wikipedia.org/wiki/Template:USS + uss: (tmpl, list) => { + let obj = toJSON(tmpl, ['name', 'id']); + list.push(obj); - inline$1['str left'] = inline$1.trunc; - inline$1['str crop'] = inline$1.trunc; - inline$1['tooltip'] = inline$1.abbr; - inline$1['abbrv'] = inline$1.abbr; - inline$1['define'] = inline$1.abbr; - inline$1['cvt'] = inline$1.convert; - var misc$1 = inline$1; - - var formatting$1 = Object.assign({}, format, lists, misc$1); - - //converts DMS (decimal-minute-second) geo format to lat/lng format. - //major thank you to https://github.com/gmaclennan/parse-dms - //and https://github.com/WSDOT-GIS/dms-js 👏 - //accepts an array of descending Degree, Minute, Second values, with a hemisphere at the end - //must have N/S/E/W as last thing - function parseDms(arr) { - var hemisphere = arr.pop(); - var degrees = Number(arr[0] || 0); - var minutes = Number(arr[1] || 0); - var seconds = Number(arr[2] || 0); + if (obj.id) { + return `[[USS ${obj.name} (${obj.id})|USS ''${obj.name}'' (${obj.id})]]`; + } - if (typeof hemisphere !== 'string' || isNaN(degrees)) { - return null; + return `[[USS ${obj.name}|USS ''${obj.name}'']]`; } + }; + var functions = templates$3; + + const codes$1 = { + '£': 'GB£', + // https://en.wikipedia.org/wiki/Template:GBP + '¥': '¥', + // https://en.wikipedia.org/wiki/Template:JPY + '৳': '৳', + // https://en.wikipedia.org/wiki/Template:BDT + '₩': '₩', + // https://en.wikipedia.org/wiki/Template:SK_won + '€': '€', + // https://en.wikipedia.org/wiki/Template:€ + '₱': '₱', + // https://en.wikipedia.org/wiki/Template:Philippine_peso + '₹': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + '₽': '₽', + // https://en.wikipedia.org/wiki/Template:RUB + 'cn¥': 'CN¥', + // https://en.wikipedia.org/wiki/Template:CNY + 'gb£': 'GB£', + // https://en.wikipedia.org/wiki/Template:GBP + 'india rs': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + 'indian rupee symbol': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + 'indian rupee': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + 'indian rupees': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + 'philippine peso': '₱', + // https://en.wikipedia.org/wiki/Template:Philippine_peso + 'russian ruble': '₽', + // https://en.wikipedia.org/wiki/Template:Russian_ruble + 'SK won': '₩', + // https://en.wikipedia.org/wiki/Template:SK_won + 'turkish lira': 'TRY', + //https://en.wikipedia.org/wiki/Template:Turkish_lira + a$: 'A$', + // https://en.wikipedia.org/wiki/Template:AUD + au$: 'A$', + //https://en.wikipedia.org/wiki/Template:AUD + aud: 'A$', + //https://en.wikipedia.org/wiki/Template:AUD + bdt: 'BDT', + //https://en.wikipedia.org/wiki/Template:BDT + brl: 'BRL', + //https://en.wikipedia.org/wiki/Template:BRL + ca$: 'CA$', + // https://en.wikipedia.org/wiki/Template:CAD + cad: 'CA$', + // https://en.wikipedia.org/wiki/Template:CAD + chf: 'CHF', + // https://en.wikipedia.org/wiki/Template:CHF + cny: 'CN¥', + // https://en.wikipedia.org/wiki/Template:CNY + czk: 'czk', + // https://en.wikipedia.org/wiki/Template:CZK + dkk: 'dkk', + // https://en.wikipedia.org/wiki/Template:DKK + dkk2: 'dkk', + // https://en.wikipedia.org/wiki/Template:DKK + euro: '€', + // https://en.wikipedia.org/wiki/Template:€ + gbp: 'GB£', + // https://en.wikipedia.org/wiki/Template:GBP + hk$: 'HK$', + // https://en.wikipedia.org/wiki/Template:HKD + hkd: 'HK$', + // https://en.wikipedia.org/wiki/Template:HKD + ils: 'ILS', + // https://en.wikipedia.org/wiki/Template:ILS + inr: '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + jpy: '¥', + // https://en.wikipedia.org/wiki/Template:JPY + myr: 'MYR', + // https://en.wikipedia.org/wiki/Template:MYR + nis: 'ILS', + // https://en.wikipedia.org/wiki/Template:ILS + nok: 'NOK', + //https://en.wikipedia.org/wiki/Template:NOK + nok2: 'NOK', + //https://en.wikipedia.org/wiki/Template:NOK + nz$: 'NZ$', + //https://en.wikipedia.org/wiki/Template:NZD + nzd: 'NZ$', + //https://en.wikipedia.org/wiki/Template:NZD + peso: 'peso', + //https://en.wikipedia.org/wiki/Template:Peso + pkr: '₨', + // https://en.wikipedia.org/wiki/Template:Pakistani_Rupee + r$: 'BRL', + //https://en.wikipedia.org/wiki/Template:BRL + rmb: 'CN¥', + // https://en.wikipedia.org/wiki/Template:CNY + rub: '₽', + // https://en.wikipedia.org/wiki/Template:RUB + ruble: '₽', + // https://en.wikipedia.org/wiki/Template:Ruble + rupee: '₹', + // https://en.wikipedia.org/wiki/Template:Rupee + s$: 'sgd', + // https://en.wikipedia.org/wiki/Template:SGD + sek: 'SEK', + // https://en.wikipedia.org/wiki/Template:SEK + sek2: 'SEK', + // https://en.wikipedia.org/wiki/Template:SEK + sfr: 'CHF', + // https://en.wikipedia.org/wiki/Template:CHF + sgd: 'sgd', + // https://en.wikipedia.org/wiki/Template:SGD + shekel: 'ILS', + // https://en.wikipedia.org/wiki/Template:ILS + sheqel: 'ILS', + // https://en.wikipedia.org/wiki/Template:ILS + ttd: 'TTD', + //https://en.wikipedia.org/wiki/Template:TTD + 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 - var sign = 1; + }; - if (/[SW]/i.test(hemisphere)) { - sign = -1; - } + const parseCurrency = (tmpl, list) => { + let o = toJSON(tmpl, ['amount', 'code']); + list.push(o); + let code = o.template || ''; - var decDeg = sign * (degrees + minutes / 60 + seconds / 3600); - return decDeg; - } + if (code === 'currency') { + code = o.code; + + 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') { + code = o.code; + } - var dmsFormat = parseDms; // console.log(parseDms([57, 18, 22, 'N'])); + code = (code || '').toLowerCase(); - var round = function round(num) { - if (typeof num !== 'number') { - return num; + if (code === 'us') { + o.code = code = 'usd'; + } else if (code === 'uk') { + o.code = code = 'gbp'; } - var places = 100000; - return Math.round(num * places) / places; - }; //these hemispheres mean negative decimals + let str = `${codes$1[code] || ''}${o.amount || ''}`; //support unknown currencies after the number - like '5 BTC' + if (o.code && !codes$1[o.code.toLowerCase()]) { + str += ' ' + o.code; + } - var negative = { - s: true, - w: true + return str; }; - var findLatLng = function findLatLng(arr) { - var types = arr.map(function (s) { - return _typeof(s); - }).join('|'); //support {{lat|lng}} + let templates$2 = { + currency: parseCurrency + }; //and the others fit the same pattern - if (arr.length === 2 && types === 'number|number') { - return { - lat: arr[0], - lon: arr[1] - }; - } //support {{dd|N/S|dd|E/W}} + Object.keys(codes$1).forEach(k => { + templates$2[k] = parseCurrency; + }); + var currency = templates$2; + const toOrdinal = function (i) { + let j = i % 10; + let k = i % 100; - if (arr.length === 4 && types === 'number|string|number|string') { - if (negative[arr[1].toLowerCase()]) { - arr[0] *= -1; - } + if (j === 1 && k !== 11) { + return i + 'st'; + } - if (arr[3].toLowerCase() === 'w') { - arr[2] *= -1; - } + if (j === 2 && k !== 12) { + return i + 'nd'; + } - return { - lat: arr[0], - lon: arr[2] - }; - } //support {{dd|mm|N/S|dd|mm|E/W}} + if (j === 3 && k !== 13) { + return i + 'rd'; + } + return i + 'th'; + }; //this is allowed to be rough - if (arr.length === 6) { - return { - lat: dmsFormat(arr.slice(0, 3)), - lon: dmsFormat(arr.slice(3)) - }; - } //support {{dd|mm|ss|N/S|dd|mm|ss|E/W}} + const day = 1000 * 60 * 60 * 24; + const month = day * 30; + const year = day * 365; - if (arr.length === 8) { - return { - lat: dmsFormat(arr.slice(0, 4)), - lon: dmsFormat(arr.slice(4)) - }; - } - - return {}; - }; + const getEpoch = function (obj) { + return new Date(`${obj.year}-${obj.month || 0}-${obj.date || 1}`).getTime(); + }; //very rough! - var parseParams = function parseParams(obj) { - obj.list = obj.list || []; - obj.list = obj.list.map(function (str) { - var num = Number(str); - if (!isNaN(num)) { - return num; - } //these are weird + const delta$1 = function (from, to) { + from = getEpoch(from); + to = getEpoch(to); + let diff = to - from; + let obj = {}; //get years + let years = Math.floor(diff / year, 10); - var split = str.split(/:/); + if (years > 0) { + obj.years = years; + diff -= obj.years * year; + } //get months - if (split.length > 1) { - obj.props = obj.props || {}; - obj.props[split[0]] = split.slice(1).join(':'); - return null; - } - return str; - }); - obj.list = obj.list.filter(function (s) { - return s !== null; - }); - return obj; - }; + let monthCount = Math.floor(diff / month, 10); - var parseCoor = function parseCoor(tmpl) { - var obj = parse$3(tmpl); - obj = parseParams(obj); - var tmp = findLatLng(obj.list); - obj.lat = round(tmp.lat); - obj.lon = round(tmp.lon); - obj.template = 'coord'; - delete obj.list; - return obj; - }; + if (monthCount > 0) { + obj.months = monthCount; + diff -= obj.months * month; + } //get days - var coor = parseCoor; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} - var templates$1 = { - coord: function coord(tmpl, list) { - var obj = coor(tmpl); - list.push(obj); //display inline, by default + let days = Math.floor(diff / day, 10); - if (!obj.display || obj.display.indexOf('inline') !== -1) { - return "".concat(obj.lat || '', "\xB0N, ").concat(obj.lon || '', "\xB0W"); - } + if (days > 0) { + obj.days = days; // diff -= (obj.days * day); + } - return ''; - }, - //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}} + return obj; + }; //not all too fancy - used in {{timesince}} - templates$1['coor'] = templates$1.coord; // these are from the nl wiki - templates$1['coor title dms'] = templates$1.coord; - templates$1['coor title dec'] = templates$1.coord; - templates$1['coor dms'] = templates$1.coord; - templates$1['coor dm'] = templates$1.coord; - templates$1['coor dec'] = templates$1.coord; - var geo = templates$1; + const timeSince = function (str) { + let d = new Date(str); - var templates$2 = { - /* mostly wiktionary*/ - etyl: 1, - mention: 1, - link: 1, - 'la-verb-form': 0, - 'la-ipa': 0, - //https://en.wikipedia.org/wiki/Template:Sortname - sortname: function sortname(tmpl) { - var order = ['first', 'last', 'target', 'sort']; - var obj = parse$3(tmpl, order); - var name = "".concat(obj.first || '', " ").concat(obj.last || ''); - name = name.trim(); + if (isNaN(d.getTime())) { + return ''; + } - if (obj.nolink) { - return obj.target || name; - } + let now = new Date(); + let delt = now.getTime() - d.getTime(); + let predicate = 'ago'; - if (obj.dab) { - name += " (".concat(obj.dab, ")"); + if (delt < 0) { + predicate = 'from now'; + delt = Math.abs(delt); + } //figure out units - if (obj.target) { - obj.target += " (".concat(obj.dab, ")"); - } - } - if (obj.target) { - return "[[".concat(obj.target, "|").concat(name, "]]"); - } + let hours = delt / 1000 / 60 / 60; + let days = hours / 24; - return "[[".concat(name, "]]"); + if (days < 365) { + return parseInt(days, 10) + ' days ' + predicate; } - }; //these are insane - // https://en.wikipedia.org/wiki/Template:Tl - var links = ['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' //https://en.wikipedia.org/wiki/Template:URL - ]; //keyValues + let years = days / 365; + return parseInt(years, 10) + ' years ' + predicate; + }; + + const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + var _lib$2 = { + days: days, + timeSince: timeSince, + delta: delta$1, + toOrdinal: toOrdinal + }; - links.forEach(function (k) { - templates$2[k] = function (tmpl) { - var order = ['first', 'second']; - var obj = parse$3(tmpl, order); - return obj.second || obj.first; - }; - }); //aliases + //assorted parsing methods for date/time templates + const months$1 = [undefined, //1-based months.. :/ + 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + const monthName = months$1.reduce((h, str, i) => { + if (i === 0) { + return h; + } - templates$2.m = templates$2.mention; - templates$2['m-self'] = templates$2.mention; - templates$2.l = templates$2.link; - templates$2.ll = templates$2.link; - templates$2['l-self'] = templates$2.link; - var links_1 = templates$2; + h[str.toLowerCase()] = i; + return h; + }, {}); //parse year|month|date numbers - var 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' - }; - var parsers$1 = { - // https://en.wikipedia.org/wiki/Template:About - about: function about(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Main - main: function main(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Main_list - 'main list': function mainList(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:See - see: function see(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:For - "for": function _for(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Further - further: function further(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // same as "further" (but this name is still in use) - 'further information': function furtherInformation(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Listen - listen: function listen(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - 'wide image': ['file', 'width', 'caption'], - //https://en.wikipedia.org/wiki/Template:Redirect - redirect: function redirect(tmpl, list) { - var data = parse$3(tmpl, ['redirect']); - var lines = data.list || []; - var links = []; + const ymd = function (arr) { + let obj = {}; + let units = ['year', 'month', 'date', 'hour', 'minute', 'second']; //parse each unit in sequence.. - for (var i = 0; i < lines.length; i += 2) { - links.push({ - page: lines[i + 1], - desc: lines[i] - }); + for (let i = 0; i < units.length; i += 1) { + //skip it + if (!arr[i] && arr[1] !== 0) { + continue; } - var obj = { - template: 'redirect', - redirect: data.redirect, - links: links - }; - list.push(obj); - return ''; - }, - //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS - 'cite gnis': function citeGnis(tmpl, list) { - var order = ['id', 'name', 'type']; - var obj = parse$3(tmpl, order); - obj.type = 'gnis'; - obj.template = 'citation'; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Sfn - sfn: function sfn(tmpl, list, alias) { - var order = ['author', 'year', 'location']; - var obj = parse$3(tmpl, order); + let num = parseInt(arr[i], 10); - if (alias) { - obj.name = obj.template; - obj.teplate = alias; + if (isNaN(num) === false) { + obj[units[i]] = num; //we good. + } else if (units[i] === 'month' && monthName.hasOwnProperty(arr[i])) { + //try for month-name, like 'january + let month = monthName[arr[i]]; + obj[units[i]] = month; + } else { + //we dead. so skip this unit + delete obj[units[i]]; } + } //try for timezone,too ftw - list.push(obj); - return ''; - }, - audio: ['file', 'text', 'type'], - rp: ['page'], - 'spoken wikipedia': function spokenWikipedia(tmpl, list) { - var order = ['file', 'date']; - var obj = parse$3(tmpl, order); - obj.template = 'audio'; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Sister_project_links - 'sister project links': function sisterProjectLinks(tmpl, list) { - var data = parse$3(tmpl); //rename 'wd' to 'wikidata' - - var links = {}; - Object.keys(sisterProjects).forEach(function (k) { - if (data.hasOwnProperty(k) === true) { - links[sisterProjects[k]] = data[k]; //.text(); - } - }); - var obj = { - template: 'sister project links', - links: links - }; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Subject_bar - 'subject bar': function subjectBar(tmpl, list) { - var data = parse$3(tmpl); - Object.keys(data).forEach(function (k) { - //rename 'voy' to 'wikivoyage' - if (sisterProjects.hasOwnProperty(k)) { - data[sisterProjects[k]] = data[k]; - delete data[k]; - } - }); - var obj = { - template: 'subject bar', - links: data - }; - list.push(obj); - return ''; - }, - 'short description': ['description'], - 'coord missing': ['region'], - //amazingly, this one does not obey any known patterns - //https://en.wikipedia.org/wiki/Template:Gallery - gallery: function gallery(tmpl, list) { - var obj = parse$3(tmpl); - var images = (obj.list || []).filter(function (line) { - return /^ *File ?:/.test(line); - }); - images = images.map(function (file) { - var img = { - file: file - }; // TODO: add lang and domain information - return new Image_1(img).json(); - }); - obj = { - template: 'gallery', - images: images - }; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:See_also - 'see also': function seeAlso(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - unreferenced: ['date'] - }; //aliases + let last = arr[arr.length - 1] || ''; + last = String(last); - parsers$1['cite'] = parsers$1.citation; - parsers$1['sfnref'] = parsers$1.sfn; - parsers$1['harvid'] = parsers$1.sfn; - parsers$1['harvnb'] = parsers$1.sfn; - parsers$1['unreferenced section'] = parsers$1.unreferenced; - parsers$1['redir'] = parsers$1.redirect; - parsers$1['sisterlinks'] = parsers$1['sister project links']; - parsers$1['main article'] = parsers$1['main']; - var page = parsers$1; - - var titlecase = function titlecase(str) { - return str.charAt(0).toUpperCase() + str.substring(1); - }; //https://en.wikipedia.org/wiki/Template:Yes + if (last.toLowerCase() === 'z') { + obj.tz = 'UTC'; + } else if (/[+-][0-9]+:[0-9]/.test(last)) { + obj.tz = arr[6]; + } + return obj; + }; //zero-pad a number - var templates$3 = {}; - var cells = ['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']; - cells.forEach(function (str) { - templates$3[str] = function (tmpl) { - var data = parse$3(tmpl, ['text']); - return data.text || titlecase(data.template); - }; - }); //these ones have a text result - var moreCells = [['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', '']]; - moreCells.forEach(function (a) { - templates$3[a[0]] = function (tmpl) { - var data = parse$3(tmpl, ['text']); - return data.text || a[1]; - }; - }); //this one's a little different + const pad = function (num) { + if (num < 10) { + return '0' + num; + } - templates$3.won = function (tmpl) { - var data = parse$3(tmpl, ['text']); - return data.place || data.text || titlecase(data.template); + return String(num); }; - var tableCell = templates$3; + const toText$1 = function (date) { + //eg '1995' + let str = String(date.year || ''); + + if (date.month !== undefined && months$1.hasOwnProperty(date.month) === true) { + if (date.date === undefined) { + //January 1995 + str = `${months$1[date.month]} ${date.year}`; + } else { + //January 5, 1995 + str = `${months$1[date.month]} ${date.date}, ${date.year}`; //add times, if available + + if (date.hour !== undefined && date.minute !== undefined) { + let time = `${pad(date.hour)}:${pad(date.minute)}`; - var wikipedia = Object.assign({}, links_1, page, tableCell); + if (date.second !== undefined) { + time = time + ':' + pad(date.second); + } - var zeroPad = function zeroPad(num) { - num = String(num); + str = time + ', ' + str; //add timezone, if there, at the end in brackets + } - if (num.length === 1) { - num = '0' + num; + if (date.tz) { + str += ` (${date.tz})`; + } + } } - return num; + return str; }; - var parseTeam = function parseTeam(obj, round, team) { - if (obj["rd".concat(round, "-team").concat(zeroPad(team))]) { - team = zeroPad(team); - } - - var score = obj["rd".concat(round, "-score").concat(team)]; - var num = Number(score); + var _format = { + toText: toText$1, + ymd: ymd + }; // console.log(toText(ymd([2018, 3, 28]))); - if (isNaN(num) === false) { - score = num; - } + const delta = _lib$2.delta; //wrap it up as a template + const template$1 = function (date) { return { - team: obj["rd".concat(round, "-team").concat(team)], - score: score, - seed: obj["rd".concat(round, "-seed").concat(team)] + template: 'date', + data: date }; - }; //these are weird. - + }; - var playoffBracket = function playoffBracket(tmpl) { - var rounds = []; - var obj = parse$3(tmpl); //try some rounds + const getBoth = function (tmpl) { + tmpl = _strip(tmpl); + let arr = tmpl.split('|'); + let from = _format.ymd(arr.slice(1, 4)); + let to = arr.slice(4, 7); //assume now, if 'to' is empty - for (var i = 1; i < 7; i += 1) { - var round = []; - - for (var t = 1; t < 16; t += 2) { - var key = "rd".concat(i, "-team"); - - if (obj[key + t] || obj[key + zeroPad(t)]) { - var one = parseTeam(obj, i, t); - var two = parseTeam(obj, i, t + 1); - round.push([one, two]); - } else { - break; - } - } - - if (round.length > 0) { - rounds.push(round); - } + if (to.length === 0) { + let d = new Date(); + to = [d.getFullYear(), d.getMonth(), d.getDate()]; } + to = _format.ymd(to); return { - template: 'playoffbracket', - rounds: rounds + from: from, + to: to }; }; - var all = { - //playoff brackets - '4teambracket': function teambracket(tmpl, list) { - var obj = playoffBracket(tmpl); - list.push(obj); - return ''; - } - }; //a bunch of aliases for these ones: - // https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates - - var brackets = ['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']; - brackets.forEach(function (key) { - all[key] = all['4teambracket']; - }); - var brackets_1 = all; - - var codes = { - '£': 'GB£', - // https://en.wikipedia.org/wiki/Template:GBP - '¥': '¥', - // https://en.wikipedia.org/wiki/Template:JPY - '৳': '৳', - // https://en.wikipedia.org/wiki/Template:BDT - '₩': '₩', - // https://en.wikipedia.org/wiki/Template:SK_won - '€': '€', - // https://en.wikipedia.org/wiki/Template:€ - '₱': '₱', - // https://en.wikipedia.org/wiki/Template:Philippine_peso - '₹': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - '₽': '₽', - // https://en.wikipedia.org/wiki/Template:RUB - 'cn¥': 'CN¥', - // https://en.wikipedia.org/wiki/Template:CNY - 'gb£': 'GB£', - // https://en.wikipedia.org/wiki/Template:GBP - 'india rs': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - 'indian rupee symbol': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - 'indian rupee': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - 'indian rupees': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - 'philippine peso': '₱', - // https://en.wikipedia.org/wiki/Template:Philippine_peso - 'russian ruble': '₽', - // https://en.wikipedia.org/wiki/Template:Russian_ruble - 'SK won': '₩', - // https://en.wikipedia.org/wiki/Template:SK_won - 'turkish lira': 'TRY', - //https://en.wikipedia.org/wiki/Template:Turkish_lira - a$: 'A$', - // https://en.wikipedia.org/wiki/Template:AUD - au$: 'A$', - //https://en.wikipedia.org/wiki/Template:AUD - aud: 'A$', - //https://en.wikipedia.org/wiki/Template:AUD - bdt: 'BDT', - //https://en.wikipedia.org/wiki/Template:BDT - brl: 'BRL', - //https://en.wikipedia.org/wiki/Template:BRL - ca$: 'CA$', - // https://en.wikipedia.org/wiki/Template:CAD - cad: 'CA$', - // https://en.wikipedia.org/wiki/Template:CAD - chf: 'CHF', - // https://en.wikipedia.org/wiki/Template:CHF - cny: 'CN¥', - // https://en.wikipedia.org/wiki/Template:CNY - czk: 'czk', - // https://en.wikipedia.org/wiki/Template:CZK - dkk: 'dkk', - // https://en.wikipedia.org/wiki/Template:DKK - dkk2: 'dkk', - // https://en.wikipedia.org/wiki/Template:DKK - euro: '€', - // https://en.wikipedia.org/wiki/Template:€ - gbp: 'GB£', - // https://en.wikipedia.org/wiki/Template:GBP - hk$: 'HK$', - // https://en.wikipedia.org/wiki/Template:HKD - hkd: 'HK$', - // https://en.wikipedia.org/wiki/Template:HKD - ils: 'ILS', - // https://en.wikipedia.org/wiki/Template:ILS - inr: '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - jpy: '¥', - // https://en.wikipedia.org/wiki/Template:JPY - myr: 'MYR', - // https://en.wikipedia.org/wiki/Template:MYR - nis: 'ILS', - // https://en.wikipedia.org/wiki/Template:ILS - nok: 'NOK', - //https://en.wikipedia.org/wiki/Template:NOK - nok2: 'NOK', - //https://en.wikipedia.org/wiki/Template:NOK - nz$: 'NZ$', - //https://en.wikipedia.org/wiki/Template:NZD - nzd: 'NZ$', - //https://en.wikipedia.org/wiki/Template:NZD - peso: 'peso', - //https://en.wikipedia.org/wiki/Template:Peso - pkr: '₨', - // https://en.wikipedia.org/wiki/Template:Pakistani_Rupee - r$: 'BRL', - //https://en.wikipedia.org/wiki/Template:BRL - rmb: 'CN¥', - // https://en.wikipedia.org/wiki/Template:CNY - rub: '₽', - // https://en.wikipedia.org/wiki/Template:RUB - ruble: '₽', - // https://en.wikipedia.org/wiki/Template:Ruble - rupee: '₹', - // https://en.wikipedia.org/wiki/Template:Rupee - s$: 'sgd', - // https://en.wikipedia.org/wiki/Template:SGD - sek: 'SEK', - // https://en.wikipedia.org/wiki/Template:SEK - sek2: 'SEK', - // https://en.wikipedia.org/wiki/Template:SEK - sfr: 'CHF', - // https://en.wikipedia.org/wiki/Template:CHF - sgd: 'sgd', - // https://en.wikipedia.org/wiki/Template:SGD - shekel: 'ILS', - // https://en.wikipedia.org/wiki/Template:ILS - sheqel: 'ILS', - // https://en.wikipedia.org/wiki/Template:ILS - ttd: 'TTD', - //https://en.wikipedia.org/wiki/Template:TTD - 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 + const parsers = { + //generic {{date|year|month|date}} template + date: (tmpl, list) => { + let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; + let obj = toJSON(tmpl, order); + let data = _format.ymd([obj.year, obj.month, obj.date || obj.day]); + obj.text = _format.toText(data); //make the replacement string - }; + if (obj.timezone) { + if (obj.timezone === 'Z') { + obj.timezone = 'UTC'; + } - var parseCurrency = function parseCurrency(tmpl, list) { - var o = parse$3(tmpl, ['amount', 'code']); - list.push(o); - var code = o.template || ''; + obj.text += ` (${obj.timezone})`; + } - if (code === 'currency') { - code = o.code; + if (obj.hour && obj.minute) { + if (obj.second) { + obj.text = `${obj.hour}:${obj.minute}:${obj.second}, ` + obj.text; + } else { + obj.text = `${obj.hour}:${obj.minute}, ` + obj.text; + } + } - if (!code) { - o.code = code = 'usd'; //Special case when currency template has no code argument + if (obj.text) { + list.push(template$1(obj)); } - } else if (code === '' || code === 'monnaie' || code === 'unité' || code === 'nombre' || code === 'nb') { - code = o.code; - } - code = (code || '').toLowerCase(); + return obj.text; + }, + //support parsing of 'February 10, 1992' + natural_date: (tmpl, list) => { + let order = ['text']; + let obj = toJSON(tmpl, order); + let str = obj.text || ''; // - just a year - switch (code) { - case 'us': - o.code = code = 'usd'; - break; + let date = {}; - case 'uk': - o.code = code = 'gbp'; - break; - } + if (/^[0-9]{4}$/.test(str)) { + date.year = parseInt(str, 10); + } else { + //parse the date, using the js date object (for now?) + let txt = str.replace(/[a-z]+\/[a-z]+/i, ''); + txt = txt.replace(/[0-9]+:[0-9]+(am|pm)?/i, ''); + let d = new Date(txt); - var out = codes[code] || ''; - var str = "".concat(out).concat(o.amount || ''); //support unknown currencies after the number - like '5 BTC' + if (isNaN(d.getTime()) === false) { + date.year = d.getFullYear(); + date.month = d.getMonth() + 1; + date.date = d.getDate(); + } + } - if (o.code && !codes[o.code.toLowerCase()]) { - str += ' ' + o.code; - } + list.push(template$1(date)); + return str.trim(); + }, + //just grab the first value, and assume it's a year + one_year: (tmpl, list) => { + let order = ['year']; + let obj = toJSON(tmpl, order); + let year = Number(obj.year); + list.push(template$1({ + year: year + })); + return String(year); + }, + //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 obj = toJSON(tmpl, order); //'b' means show birth-date, otherwise show death-date - return str; - }; + if (obj.b && obj.b.toLowerCase() === 'b') { + let date = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_date]); + list.push(template$1(date)); + return _format.toText(date); + } - var inrConvert = function inrConvert(tmpl, list) { - var o = parse$3(tmpl, ['rupee_value', 'currency_formatting']); - list.push(o); - var formatting = o.currency_formatting; + let date = _format.ymd([obj.death_year, obj.death_month, obj.death_date]); + list.push(template$1(date)); + return _format.toText(date); + }, + age: tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + return diff.years || 0; + }, + 'diff-y': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); - if (formatting) { - var multiplier = 1; + if (diff.years === 1) { + return diff.years + ' year'; + } - switch (formatting) { - case 'k': - multiplier = 1000; - break; + return (diff.years || 0) + ' years'; + }, + 'diff-ym': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; - case 'm': - multiplier = 1000000; - break; + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } - case 'b': - multiplier = 1000000000; - break; + if (diff.months === 1) { + arr.push('1 month'); + } else if (diff.months && diff.months !== 0) { + arr.push(diff.months + ' months'); + } - case 't': - multiplier = 1000000000000; - break; + return arr.join(', '); + }, + 'diff-ymd': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; - case 'l': - multiplier = 100000; - break; + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } - case 'c': - multiplier = 10000000; - break; + if (diff.months === 1) { + arr.push('1 month'); + } else if (diff.months && diff.months !== 0) { + arr.push(diff.months + ' months'); + } - case 'lc': - multiplier = 1000000000000; - break; + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); } - o.rupee_value = o.rupee_value * multiplier; - } + return arr.join(', '); + }, + 'diff-yd': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; - var str = "inr ".concat(o.rupee_value || ''); - return str; - }; + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } //ergh... - var currencies = { - //this one is generic https://en.wikipedia.org/wiki/Template:Currency - currency: parseCurrency, - monnaie: parseCurrency, - unité: parseCurrency, - nombre: parseCurrency, - nb: parseCurrency, - iso4217: parseCurrency, - inrconvert: inrConvert - }; //the others fit the same pattern.. - Object.keys(codes).forEach(function (k) { - currencies[k] = parseCurrency; - }); - var currency = currencies; + diff.days += (diff.months || 0) * 30; - var templates$4 = { - //https://en.wikipedia.org/wiki/Template:Election_box - 'election box begin': function electionBoxBegin(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - 'election box candidate': function electionBoxCandidate(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - 'election box hold with party link': function electionBoxHoldWithPartyLink(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); + } + + return arr.join(', '); }, - 'election box gain with party link': function electionBoxGainWithPartyLink(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; + 'diff-d': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; //ergh... + + diff.days += (diff.years || 0) * 365; + diff.days += (diff.months || 0) * 30; + + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); + } + + return arr.join(', '); } - }; //aliases + }; + var _parsers = parsers; - templates$4['election box begin no change'] = templates$4['election box begin']; - templates$4['election box begin no party'] = templates$4['election box begin']; - templates$4['election box begin no party no change'] = templates$4['election box begin']; - templates$4['election box inline begin'] = templates$4['election box begin']; - templates$4['election box inline begin no change'] = templates$4['election box begin']; - templates$4['election box candidate for alliance'] = templates$4['election box candidate']; - templates$4['election box candidate minor party'] = templates$4['election box candidate']; - templates$4['election box candidate no party link no change'] = templates$4['election box candidate']; - templates$4['election box candidate with party link'] = templates$4['election box candidate']; - templates$4['election box candidate with party link coalition 1918'] = templates$4['election box candidate']; - templates$4['election box candidate with party link no change'] = templates$4['election box candidate']; - templates$4['election box inline candidate'] = templates$4['election box candidate']; - templates$4['election box inline candidate no change'] = templates$4['election box candidate']; - templates$4['election box inline candidate with party link'] = templates$4['election box candidate']; - templates$4['election box inline candidate with party link no change'] = templates$4['election box candidate']; - templates$4['election box inline incumbent'] = templates$4['election box candidate']; - var elections = templates$4; - - var flags = [['🇦🇩', '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', //dupe - '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', //alias - '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'], // ['🇬🇪', 'geo', 'georgia'], - ['🇬🇫', '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'], ['🇺🇸', 'usa', 'united states'], ['🇺🇸', 'us', //alias - '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'], ['', 'win', 'west indies'], ['🇼🇫', 'wlf', 'wallis and futuna'], ['🇼🇸', 'wsm', 'samoa'], ['🇾🇪', 'yem', 'yemen'], ['🇾🇹', 'myt', 'mayotte'], ['🇿🇦', 'zaf', 'south africa'], ['🇿🇲', 'zmb', 'zambia'], ['🇿🇼 ', 'zwe', 'zimbabwe'], //others (later unicode versions) - ['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; + const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; //date- templates we support - var templates$5 = { - //https://en.wikipedia.org/wiki/Template:Flag - // {{flag|USA}} → USA - flag: function flag(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - var name = obj.flag || ''; - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - var flag = found[0] || ''; - return "".concat(flag, " [[").concat(found[2], "|").concat(name, "]]"); + var dates = { + currentday: () => { + let d = new Date(); + return String(d.getDate()); }, - // {{flagcountry|USA}} → United States - flagcountry: function flagcountry(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - var flag = found[0] || ''; - return "".concat(flag, " [[").concat(found[2], "]]"); + currentdayname: () => { + let d = new Date(); + return _lib$2.days[d.getDay()]; }, - // (unlinked flag-country) - flagcu: function flagcu(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - var flag = found[0] || ''; - return "".concat(flag, " ").concat(found[2]); + currentmonth: () => { + let d = new Date(); + return months[d.getMonth()]; }, - //https://en.wikipedia.org/wiki/Template:Flagicon - // {{flagicon|USA}} → United States - flagicon: function flagicon(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); + currentyear: () => { + let d = new Date(); + return String(d.getFullYear()); + }, + monthyear: () => { + let d = new Date(); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'monthyear-1': () => { + let d = new Date(); + d.setMonth(d.getMonth() - 1); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'monthyear+1': () => { + let d = new Date(); + d.setMonth(d.getMonth() + 1); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'time ago': tmpl => { + let order = ['date', 'fmt']; + let time = toJSON(tmpl, order).date; + return _lib$2.timeSince(time); + }, + //https://en.wikipedia.org/wiki/Template:Birth_date_and_age + 'birth date and age': (tmpl, list) => { + let order = ['year', 'month', 'day']; + let obj = toJSON(tmpl, order); //support 'one property' version - if (!found) { - return ''; + if (obj.year && /[a-z]/i.test(obj.year)) { + return _parsers.natural_date(tmpl, list); } - return "[[".concat(found[2], "|").concat(found[0], "]]"); - }, - //unlinked flagicon - flagdeco: function flagdeco(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - return found[0] || ''; + list.push(obj); + obj = _format.ymd([obj.year, obj.month, obj.day]); + return _format.toText(obj); }, - //same, but a soccer team - fb: function fb(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); + 'birth year and age': (tmpl, list) => { + let order = ['birth_year', 'birth_month']; + let obj = toJSON(tmpl, order); //support 'one property' version - if (!found) { - return ''; + if (obj.death_year && /[a-z]/i.test(obj.death_year)) { + return _parsers.natural_date(tmpl, list); } - return "".concat(found[0], " [[").concat(found[2], " national football team|").concat(found[2], "]]"); + list.push(obj); + let age = new Date().getFullYear() - parseInt(obj.birth_year, 10); + obj = _format.ymd([obj.birth_year, obj.birth_month]); + let str = _format.toText(obj); + + if (age) { + str += ` (age ${age})`; + } + + return str; }, - fbicon: function fbicon(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); + 'death year and age': (tmpl, list) => { + let order = ['death_year', 'birth_year', 'death_month']; + let obj = toJSON(tmpl, order); //support 'one property' version - if (!found) { - return ''; + if (obj.death_year && /[a-z]/i.test(obj.death_year)) { + return _parsers.natural_date(tmpl, list); } - return " [[".concat(found[2], " national football team|").concat(found[0], "]]"); + list.push(obj); + obj = _format.ymd([obj.death_year, obj.death_month]); + return _format.toText(obj); }, - flagathlete: function flagathlete(tmpl) { - var order = ['name', 'flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); + //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 + 'birth date and age2': (tmpl, list) => { + let order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; + let obj = toJSON(tmpl, order); + list.push(obj); + obj = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); + return _format.toText(obj); + }, + //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date + 'birth based on age as of date': (tmpl, list) => { + let order = ['age', 'year', 'month', 'day']; + let obj = toJSON(tmpl, order); + list.push(obj); + let age = parseInt(obj.age, 10); + let year = parseInt(obj.year, 10); + let born = year - age; - if (!found) { - return "[[".concat(obj.name || '', "]]"); + if (born && age) { + return `${born} (age ${obj.age})`; } - return "".concat(found[0], " [[").concat(obj.name || '', "]] (").concat(found[1].toUpperCase(), ")"); - } - }; //support {{can}} + return `(age ${obj.age})`; + }, + //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age + 'death date and given age': (tmpl, list) => { + let order = ['year', 'month', 'day', 'age']; + let obj = toJSON(tmpl, order); + list.push(obj); + obj = _format.ymd([obj.year, obj.month, obj.day]); + let str = _format.toText(obj); - flags.forEach(function (a) { - templates$5[a[1]] = function () { - return a[0]; - }; - }); //cricket + if (obj.age) { + str += ` (age ${obj.age})`; + } - templates$5['cr'] = templates$5.flagcountry; - templates$5['cr-rt'] = templates$5.flagcountry; - templates$5['cricon'] = templates$5.flagicon; - var flags_1 = templates$5; + return str; + }, + //sortable dates - + dts: tmpl => { + //remove formatting stuff, ewww + tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); + tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); + let order = ['year', 'month', 'date', 'bc']; + let obj = toJSON(tmpl, order); - var getLang = function getLang(name) { - //grab the language from the template name - 'ipa-de' - var lang = name.match(/ipac?-(.+)/); + if (obj.date && obj.month && obj.year) { + //render 'june 5 2018' + if (/[a-z]/.test(obj.month) === true) { + return [obj.month, obj.date, obj.year].join(' '); + } - if (lang !== null) { - if (languages.hasOwnProperty(lang[1]) === true) { - return languages[lang[1]].english_title; + return [obj.year, obj.month, obj.date].join('-'); } - return lang[1]; - } + if (obj.month && obj.year) { + return [obj.year, obj.month].join('-'); + } - return null; - }; // pronounciation info + if (obj.year) { + if (obj.year < 0) { + obj.year = Math.abs(obj.year) + ' BC'; + } + return obj.year; + } - var templates$6 = { - // https://en.wikipedia.org/wiki/Template:IPA - ipa: function ipa(tmpl, list) { - var obj = parse$3(tmpl, ['transcription', 'lang', 'audio']); - obj.lang = getLang(obj.template); - obj.template = 'ipa'; - list.push(obj); return ''; }, - //https://en.wikipedia.org/wiki/Template:IPAc-en - ipac: function ipac(tmpl, list) { - var obj = parse$3(tmpl); - obj.transcription = (obj.list || []).join(','); - delete obj.list; - obj.lang = getLang(obj.template); - obj.template = 'ipac'; - list.push(obj); - return ''; + //we can't do timezones, so fake this one a little bit + //https://en.wikipedia.org/wiki/Template:Time + time: () => { + let d = new Date(); + let obj = _format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); + return _format.toText(obj); }, - transl: function transl(tmpl, list) { - var obj = parse$3(tmpl, ['lang', 'text', 'text2']); // support 3-param + // https://en.wikipedia.org/wiki/Template:MILLENNIUM + millennium: tmpl => { + let obj = toJSON(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 1000, 10) + 1; - if (obj.text2) { - obj.iso = obj.text; - obj.text = obj.text2; - delete obj.text2; + if (obj.abbr && obj.abbr === 'y') { + if (year < 0) { + return `${_lib$2.toOrdinal(Math.abs(year))} BC`; + } + + return `${_lib$2.toOrdinal(year)}`; } - 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] + return `${_lib$2.toOrdinal(year)} millennium`; + }, + //date/age/time templates + start: _parsers.date, + 'start-date': _parsers.natural_date, + birthdeathage: _parsers.two_dates, + age: _parsers.age, + 'age nts': _parsers.age, + 'age in years': _parsers['diff-y'], + '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'] // 'birth date and age2': date, + // 'age in years, months, weeks and days': true, + // 'age as of date': true, - Object.keys(languages).forEach(function (lang) { - templates$6['ipa-' + lang] = templates$6.ipa; - templates$6['ipac-' + lang] = templates$6.ipac; - }); - var ipa = templates$6; + }; - var templates$7 = { - lang: 1, - //this one has a million variants - 'lang-de': 0, - 'rtl-lang': 1, - //german keyboard letterscn - taste: 0, - //https://en.wikipedia.org/wiki/Template:Nihongo - nihongo: function nihongo(tmpl, list) { - var obj = parse$3(tmpl, ['english', 'kanji', 'romaji', 'extra']); - list.push(obj); - var str = obj.english || obj.romaji || ''; + /** + * converts DMS (decimal-minute-second) geo format to lat/lng format. + * major thank you to https://github.com/gmaclennan/parse-dms and https://github.com/WSDOT-GIS/dms-js 👏 + **/ - if (obj.kanji) { - str += " (".concat(obj.kanji, ")"); - } + function parseDMS(arr) { + let hemisphere = arr.pop(); + let degrees = Number(arr[0] || 0); + let minutes = Number(arr[1] || 0); + let seconds = Number(arr[2] || 0); - return str; + if (typeof hemisphere !== 'string' || isNaN(degrees)) { + return null; } - }; //https://en.wikipedia.org/wiki/Category:Lang-x_templates - - Object.keys(languages).forEach(function (k) { - templates$7['lang-' + k] = templates$7['lang-de']; - }); - templates$7['nihongo2'] = templates$7.nihongo; - templates$7['nihongo3'] = templates$7.nihongo; - templates$7['nihongo-s'] = templates$7.nihongo; - templates$7['nihongo foot'] = templates$7.nihongo; - var languages_1 = templates$7; - //simply num/denom * 100 + let sign = 1; - var _percentage = function percentage(obj) { - if (!obj.numerator && !obj.denominator) { - return null; + if (/[SW]/i.test(hemisphere)) { + sign = -1; } - var perc = Number(obj.numerator) / Number(obj.denominator); - perc *= 100; - var dec = Number(obj.decimals); + return sign * (degrees + minutes / 60 + seconds / 3600); + } - if (isNaN(dec)) { - dec = 1; + const round = function (num) { + if (typeof num !== 'number') { + return num; } - perc = perc.toFixed(dec); - return Number(perc); - }; + let places = 100000; + return Math.round(num * places) / places; + }; //these hemispheres mean negative decimals - var templates$8 = { - // https://en.wikipedia.org/wiki/Template:Math - math: function math(tmpl, list) { - var obj = parse$3(tmpl, ['formula']); - list.push(obj); - return '\n\n' + (obj.formula || '') + '\n\n'; - }, - //fraction - https://en.wikipedia.org/wiki/Template:Sfrac - frac: function frac(tmpl, list) { - var order = ['a', 'b', 'c']; - var obj = parse$3(tmpl, order); - var data = { - template: 'sfrac' - }; - if (obj.c) { - data.integer = obj.a; - data.numerator = obj.b; - data.denominator = obj.c; - } else if (obj.b) { - data.numerator = obj.a; - data.denominator = obj.b; - } else { - data.numerator = 1; - data.denominator = obj.a; - } + const negative = { + s: true, + w: true + }; - list.push(data); + const findLatLng = function (arr) { + const types = arr.map(s => typeof s).join('|'); //support {{lat|lng}} - if (data.integer) { - return "".concat(data.integer, " ").concat(data.numerator, "\u2044").concat(data.denominator); - } + if (arr.length === 2 && types === 'number|number') { + return { + lat: arr[0], + lon: arr[1] + }; + } //support {{dd|N/S|dd|E/W}} - return "".concat(data.numerator, "\u2044").concat(data.denominator); - }, - //https://en.wikipedia.org/wiki/Template:Radic - radic: function radic(tmpl) { - var order = ['after', 'before']; - var obj = parse$3(tmpl, order); - return "".concat(obj.before || '', "\u221A").concat(obj.after || ''); - }, - //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} - percentage: function percentage(tmpl) { - var obj = parse$3(tmpl, ['numerator', 'denominator', 'decimals']); - var num = _percentage(obj); + if (arr.length === 4 && types === 'number|string|number|string') { + if (negative[arr[1].toLowerCase()]) { + arr[0] *= -1; + } - if (num === null) { - return ''; + if (arr[3].toLowerCase() === 'w') { + arr[2] *= -1; } - return num + '%'; - }, - // {{Percent-done|done=N|total=N|digits=N}} - 'percent-done': function percentDone(tmpl) { - var obj = parse$3(tmpl, ['done', 'total', 'digits']); + return { + lat: arr[0], + lon: arr[2] + }; + } //support {{dd|mm|N/S|dd|mm|E/W}} - var num = _percentage({ - numerator: obj.done, - denominator: obj.total, - decimals: obj.digits - }); - if (num === null) { - return ''; - } + if (arr.length === 6) { + return { + lat: parseDMS(arr.slice(0, 3)), + lon: parseDMS(arr.slice(3)) + }; + } //support {{dd|mm|ss|N/S|dd|mm|ss|E/W}} - return "".concat(obj.done, " (").concat(num, "%) done"); - }, - 'winning percentage': function winningPercentage(tmpl, list) { - var obj = parse$3(tmpl, ['wins', 'losses', 'ties']); - list.push(obj); - var wins = Number(obj.wins); - var losses = Number(obj.losses); - var ties = Number(obj.ties) || 0; - var games = wins + losses + ties; - if (obj.ignore_ties === 'y') { - ties = 0; - } + if (arr.length === 8) { + return { + lat: parseDMS(arr.slice(0, 4)), + lon: parseDMS(arr.slice(4)) + }; + } - if (ties) { - wins += ties / 2; - } + return {}; + }; - var num = _percentage({ - numerator: wins, - denominator: games, - decimals: 1 - }); + const parseParams = function (obj) { + obj.list = obj.list || []; + obj.list = obj.list.map(str => { + let num = Number(str); - if (num === null) { - return ''; + if (!isNaN(num)) { + return num; + } //these are weird + + + let split = str.split(/:/); + + if (split.length > 1) { + obj.props = obj.props || {}; + obj.props[split[0]] = split.slice(1).join(':'); + return null; } - return ".".concat(num * 10); - }, - winlosspct: function winlosspct(tmpl, list) { - var obj = parse$3(tmpl, ['wins', 'losses']); - list.push(obj); - var wins = Number(obj.wins); - var losses = Number(obj.losses); + return str; + }); + obj.list = obj.list.filter(s => s !== null); + return obj; + }; - var num = _percentage({ - numerator: wins, - denominator: wins + losses, - decimals: 1 - }); + const parseCoor = function (tmpl) { + let obj = toJSON(tmpl); + obj = parseParams(obj); + let tmp = findLatLng(obj.list); + obj.lat = round(tmp.lat); + obj.lon = round(tmp.lon); + obj.template = 'coord'; + delete obj.list; + return obj; + }; //console.log(parseDms([57, 18, 22, 'N'])); + //console.log(parseDms([4, 27, 32, 'W'])); - if (num === null) { - return ''; + + var _lib$1 = parseCoor; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} + + const templates$1 = { + coord: (tmpl, list) => { + let obj = _lib$1(tmpl); + list.push(obj); //display inline, by default + + if (!obj.display || obj.display.indexOf('inline') !== -1) { + return `${obj.lat || ''}°N, ${obj.lon || ''}°W`; } - num = ".".concat(num * 10); - return "".concat(wins || 0, " || ").concat(losses || 0, " || ").concat(num || '-'); + return ''; } - }; //aliases + }; //{{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$8['sfrac'] = templates$8.frac; - templates$8['sqrt'] = templates$8.radic; - templates$8['pct'] = templates$8.percentage; - templates$8['percent'] = templates$8.percentage; - templates$8['winpct'] = templates$8['winning percentage']; - templates$8['winperc'] = templates$8['winning percentage']; - var math = templates$8; + var geo = templates$1; - var generic = function generic(tmpl, list, alias) { - var obj = parse$3(tmpl); + const generic = function (tmpl, list, _parser, alias) { + let obj = toJSON(tmpl); if (alias) { obj.name = obj.template; @@ -7322,10 +7085,11 @@ list.push(obj); return ''; - }; + }; // it may seem redundant, + // but we need these templates for our i18n mappings - var misc$2 = { - //i18n templates + + const misc = { persondata: generic, taxobox: generic, citation: generic, @@ -7335,220 +7099,323 @@ 'cite journal': generic, 'cite web': generic, 'commons cat': generic, - // https://en.wikipedia.org/wiki/Template:Portuguese_name - 'portuguese name': ['first', 'second', 'suffix'], - uss: ['ship', 'id'], - isbn: function isbn(tmpl, list) { - var order = ['id', 'id2', 'id3']; - var obj = parse$3(tmpl, order); - list.push(obj); - return 'ISBN: ' + (obj.id || ''); - }, - //https://en.wikipedia.org/wiki/Template:Marriage - //this one creates a template, and an inline response - marriage: function marriage(tmpl, list) { - var data = parse$3(tmpl, ['spouse', 'from', 'to', 'end']); - list.push(data); - var str = "".concat(data.spouse || ''); + 'election box candidate': generic, + 'election box begin': generic, + main: generic + }; + var misc_1 = misc; - if (data.from) { - if (data.to) { - str += " (m. ".concat(data.from, "-").concat(data.to, ")"); - } else { - str += " (m. ".concat(data.from, ")"); - } - } + const codes = { + adx: 'adx', + //https://en.wikipedia.org/wiki/Template:Abu_Dhabi_Securities_Exchange + aim: 'aim', + //https://en.wikipedia.org/wiki/Template:Alternative_Investment_Market + amex: 'amex', + //https://en.wikipedia.org/wiki/Template:NYSE_American + asx: 'asx', + //https://en.wikipedia.org/wiki/Template:Australian_Securities_Exchange + athex: 'athex', + //https://en.wikipedia.org/wiki/Template:Athens_Exchange + b3: 'b3', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa (redirects to B3 (stock exchange)) + 'B3 (stock exchange)': 'B3 (stock exchange)', + //https://en.wikipedia.org/wiki/Template:B3_(stock_exchange) + barbadosse: 'barbadosse', + //https://en.wikipedia.org/wiki/Template:Barbados_Stock_Exchange + bbv: 'bbv', + //https://en.wikipedia.org/wiki/Template:La_Paz_Stock_Exchange + bcba: 'bcba', + //https://en.wikipedia.org/wiki/Template:Buenos_Aires_Stock_Exchange + bcs: 'bcs', + //https://en.wikipedia.org/wiki/Template:Santiago_Stock_Exchange + bhse: 'bhse', + //https://en.wikipedia.org/wiki/Template:Bahrain_Bourse + bist: 'bist', + //https://en.wikipedia.org/wiki/Template:Borsa_Istanbul + bit: 'bit', + //https://en.wikipedia.org/wiki/Template:Borsa_Italiana + 'bm&f bovespa': 'b3', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa + 'bm&f': 'b3', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa + bmad: 'bmad', + //https://en.wikipedia.org/wiki/Template:Bolsa_de_Madrid + bmv: 'bmv', + //https://en.wikipedia.org/wiki/Template:Mexican_Stock_Exchange + 'bombay stock exchange': 'bombay stock exchange', + //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + 'botswana stock exchange': 'botswana stock exchange', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa + bpse: 'bpse', + //https://en.wikipedia.org/wiki/Template:Budapest_Stock_Exchange + bse: 'bse', + //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + bsx: 'bsx', + //https://en.wikipedia.org/wiki/Template:Bermuda_Stock_Exchange + bvb: 'bvb', + //https://en.wikipedia.org/wiki/Template:Bucharest_Stock_Exchange + bvc: 'bvc', + //https://en.wikipedia.org/wiki/Template:Colombian_Securities_Exchange + bvl: 'bvl', + //https://en.wikipedia.org/wiki/Template:Lima_Stock_Exchange + bvpasa: 'bvpasa', + //https://en.wikipedia.org/wiki/Template:BVPASA + bwse: 'bwse', + //https://en.wikipedia.org/wiki/Template:Botswana_Stock_Exchange + 'canadian securities exchange': 'canadian securities exchange', + //https://en.wikipedia.org/wiki/Template:Canadian_Securities_Exchange + cse: 'cse', + //https://en.wikipedia.org/wiki/Template:Chittagong_Stock_Exchange + darse: 'darse', + //https://en.wikipedia.org/wiki/Template:Dar_es_Salaam_Stock_Exchange + dfm: 'dfm', + //https://en.wikipedia.org/wiki/Template:Dubai_Financial_Market + dse: 'dse', + //https://en.wikipedia.org/wiki/Template:Dhaka_Stock_Exchange + euronext: 'euronext', + //https://en.wikipedia.org/wiki/Template:Euronext + euronextparis: 'euronextparis', + //https://en.wikipedia.org/wiki/Template:EuronextParis + fse: 'fse', + //https://en.wikipedia.org/wiki/Template:Fukuoka_Stock_Exchange + fwb: 'fwb', + //https://en.wikipedia.org/wiki/Template:Frankfurt_Stock_Exchange + gse: 'gse', + //https://en.wikipedia.org/wiki/Template:Ghana_Stock_Exchange + gtsm: 'gtsm', + //https://en.wikipedia.org/wiki/Template:Gre_Tai_Securities_Market + idx: 'idx', + //https://en.wikipedia.org/wiki/Template:Indonesia_Stock_Exchange + ise: 'ise', + //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange + iseq: 'iseq', + //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange + isin: 'isin', + //https://en.wikipedia.org/wiki/Template:ISIN + jasdaq: 'jasdaq', + //https://en.wikipedia.org/wiki/Template:JASDAQ + jse: 'jse', + //https://en.wikipedia.org/wiki/Template:Johannesburg_Stock_Exchange + kase: 'kase', + //https://en.wikipedia.org/wiki/Template:Kazakhstan_Stock_Exchange + kn: 'kn', + //https://en.wikipedia.org/wiki/Template:Nairobi_Securities_Exchange + krx: 'krx', + //https://en.wikipedia.org/wiki/Template:Korea_Exchange + lse: 'lse', + //https://en.wikipedia.org/wiki/Template:London_Stock_Exchange + luxse: 'luxse', + //https://en.wikipedia.org/wiki/Template:Luxembourg_Stock_Exchange + 'malta stock exchange': 'malta stock exchange', + //https://en.wikipedia.org/wiki/Template:Malta_Stock_Exchange + mai: 'mai', + //https://en.wikipedia.org/wiki/Template:Market_for_Alternative_Investment + mcx: 'mcx', + //https://en.wikipedia.org/wiki/Template:Moscow_Exchange + mutf: 'mutf', + //https://en.wikipedia.org/wiki/Template:Mutual_fund + myx: 'myx', + //https://en.wikipedia.org/wiki/Template:Bursa_Malaysia + nag: 'nag', + //https://en.wikipedia.org/wiki/Template:Nagoya_Stock_Exchange + 'nasdaq dubai': 'nasdaq dubai', + //https://en.wikipedia.org/wiki/Template:NASDAQ_Dubai + nasdaq: 'nasdaq', + //https://en.wikipedia.org/wiki/Template:NASDAQ + neeq: 'neeq', + //https://en.wikipedia.org/wiki/Template:NEEQ + nepse: 'nepse', + //https://en.wikipedia.org/wiki/Template:Nepal_Stock_Exchange + nex: 'nex', + //https://en.wikipedia.org/wiki/Template:TSXV_NEX + nse: 'nse', + //https://en.wikipedia.org/wiki/Template:National_Stock_Exchange_of_India + newconnect: 'newconnect', + //https://en.wikipedia.org/wiki/Template:NewConnect + 'nyse arca': 'nyse arca', + //https://en.wikipedia.org/wiki/Template:NYSE_Arca + nyse: 'nyse', + //https://en.wikipedia.org/wiki/Template:New_York_Stock_Exchange + nzx: 'nzx', + //https://en.wikipedia.org/wiki/Template:New_Zealand_Exchange + 'omx baltic': 'omx baltic', + //https://en.wikipedia.org/wiki/Template:OMX_Baltic + omx: 'omx', + //https://en.wikipedia.org/wiki/Template:OMX + ose: 'ose', + //https://en.wikipedia.org/wiki/Template:Oslo_Stock_Exchange + 'otc expert': 'otc expert', + //https://en.wikipedia.org/wiki/Template:OTC_Expert + 'otc grey': 'otc grey', + //https://en.wikipedia.org/wiki/template:grey_market + 'otc pink': 'otc pink', + //https://en.wikipedia.org/wiki/Template:OTC_Pink + otcqb: 'otcqb', + //https://en.wikipedia.org/wiki/Template:OTCQB + otcqx: 'otcqx', + //https://en.wikipedia.org/wiki/Template:OTCQX + 'pfts ukraine stock exchange': 'pfts ukraine stock exchange', + //https://en.wikipedia.org/wiki/Template:PFTS_Ukraine_Stock_Exchange + 'philippine stock exchange': 'philippine stock exchange', + //https://en.wikipedia.org/wiki/Template:Philippine_Stock_Exchange + prse: 'prse', + //https://en.wikipedia.org/wiki/Template:Prague_Stock_Exchange + psx: 'psx', + //https://en.wikipedia.org/wiki/Template:Pakistan_Stock_Exchange + karse: 'karse', + //https://en.wikipedia.org/w/index.php?title=Template:Karse&redirect=no (redirects to psx) + qe: 'qe', + //https://en.wikipedia.org/wiki/Template:Qatar_Stock_Exchange + 'saudi stock exchange': 'saudi stock exchange', + //https://en.wikipedia.org/wiki/Template:Saudi_Stock_Exchange + sehk: 'sehk', + //https://en.wikipedia.org/wiki/Template:Hong_Kong_Stock_Exchange + 'Stock Exchange of Thailand': 'Stock Exchange of Thailand', + //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand (alternative for SET) + set: 'set', + //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand + sgx: 'sgx', + //https://en.wikipedia.org/wiki/Template:Singapore_Exchange + sse: 'sse', + //https://en.wikipedia.org/wiki/Template:Shanghai_Stock_Exchange + swx: 'swx', + //https://en.wikipedia.org/wiki/Template:SIX_Swiss_Exchange + szse: 'szse', + //https://en.wikipedia.org/wiki/Template:Shenzhen_Stock_Exchange + tase: 'tase', + //https://en.wikipedia.org/wiki/Template:Tel_Aviv_Stock_Exchange + 'tsx-v': 'tsx-v', + //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange + tsx: 'tsx', + //https://en.wikipedia.org/wiki/Template:Toronto_Stock_Exchange + tsxv: 'tsxv', + //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange + ttse: 'ttse', + //https://en.wikipedia.org/wiki/Template:Trinidad_and_Tobago_Stock_Exchange + twse: 'twse', + //https://en.wikipedia.org/wiki/Template:Taiwan_Stock_Exchange + tyo: 'tyo', + //https://en.wikipedia.org/wiki/Template:Tokyo_Stock_Exchange + wbag: 'wbag', + //https://en.wikipedia.org/wiki/Template:Wiener_B%C3%B6rse + 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 - return str; - }, - //https://en.wikipedia.org/wiki/Template:Based_on - 'based on': function basedOn(tmpl, list) { - var obj = parse$3(tmpl, ['title', 'author']); - list.push(obj); - return "".concat(obj.title, " by ").concat(obj.author || ''); - }, - //https://en.wikipedia.org/wiki/Template:Video_game_release - 'video game release': function videoGameRelease(tmpl, list) { - var order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; - var obj = parse$3(tmpl, order); - var template = { - template: 'video game release', - releases: [] - }; + }; - for (var i = 0; i < order.length; i += 2) { - if (obj[order[i]]) { - template.releases.push({ - region: obj[order[i]], - date: obj[order[i + 1]] - }); - } - } - - list.push(template); - var str = template.releases.map(function (o) { - return "".concat(o.region, ": ").concat(o.date || ''); - }).join('\n\n'); - return '\n' + str + '\n'; - }, - //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t - 'bbl to t': function bblToT(tmpl, list) { - var obj = parse$3(tmpl, ['barrels']); - list.push(obj); + const parseStockExchange = (tmpl, list) => { + let o = toJSON(tmpl, ['ticketnumber', 'code']); + list.push(o); + let code = o.template || ''; - if (obj.barrels === '0') { - return obj.barrels + ' barrel'; - } + if (code === '') { + code = o.code; + } - return obj.barrels + ' barrels'; - }, - //https://en.wikipedia.org/wiki/Template:Historical_populations - 'historical populations': function historicalPopulations(tmpl, list) { - var data = parse$3(tmpl); - data.list = data.list || []; - var years = []; + code = (code || '').toLowerCase(); + let str = codes[code] || ''; - for (var i = 0; i < data.list.length; i += 2) { - var num = data.list[i + 1]; - years.push({ - year: data.list[i], - val: Number(num) || num - }); - } + if (o.ticketnumber) { + str = `${str}: ${o.ticketnumber}`; + } - data.data = years; - delete data.list; - list.push(data); - return ''; + if (o.code && !codes[o.code.toLowerCase()]) { + str += ' ' + o.code; } + + return str; }; - var misc_1$1 = misc$2; - // okay, these just hurts my feelings - // https://www.mediawiki.org/wiki/Help:Magic_words#Other - var punctuation = [// https://en.wikipedia.org/wiki/Template:%C2%B7 - ['·', '·'], ['·', '·'], ['dot', '·'], ['middot', '·'], ['•', ' • '], //yup, oxford comma template - [',', ','], ['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', ' – '], // these '{{^}}' things are nuts, and used as some ilicit spacing thing. - ['^', ' '], ['!', '|'], ['\\', ' /'], ['`', '`'], ['=', '='], ['bracket', '['], ['[', '['], ['*', '*'], ['asterisk', '*'], ['long dash', '———'], ['clear', '\n\n'], ['h.', 'ḥ']]; - var templates$9 = {}; - punctuation.forEach(function (a) { - templates$9[a[0]] = a[1]; + const exchanges = {}; //the others fit the same pattern.. + + Object.keys(codes).forEach(k => { + exchanges[k] = parseStockExchange; }); - var punctuation_1 = templates$9; + var stockExchanges = exchanges; - var templates$a = { - //https://en.wikipedia.org/wiki/Template:Taxon_info - 'taxon info': ['taxon', 'item'], - //minor planet - https://en.wikipedia.org/wiki/Template:MPC - mpc: function mpc(tmpl, list) { - var obj = parse$3(tmpl, ['number', 'text']); - list.push(obj); - return "[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ".concat(obj.text || obj.number, "]"); - }, - //https://en.wikipedia.org/wiki/Template:Chem2 - chem2: function chem2(tmpl, list) { - var obj = parse$3(tmpl, ['equation']); - list.push(obj); - return obj.equation; - }, - //https://en.wikipedia.org/wiki/Template:Sky - sky: function sky(tmpl, list) { - var obj = parse$3(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); - var template = { - template: 'sky', - ascension: { - hours: obj.asc_hours, - minutes: obj.asc_minutes, - seconds: obj.asc_seconds - }, - declination: { - sign: obj.dec_sign, - degrees: obj.dec_degrees, - minutes: obj.dec_minutes, - seconds: obj.dec_seconds - }, - distance: obj.distance - }; - list.push(template); - return ''; - }, - // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see - // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original - // parsing code. - 'medical cases chart': function medicalCasesChart(tmpl, list) { - var order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; - var obj = parse$3(tmpl); - obj.data = obj.data || ''; - var rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following - // line on: - // - // for parameter in mw.text.gsplit(line, ';') do + const zeroPad = function (num) { + num = String(num); - var dataArray = rows.map(function (row) { - var parameters = row.split(';'); - var rowObject = { - options: new Map() - }; - var positionalIndex = 0; + if (num.length === 1) { + num = '0' + num; + } - for (var i = 0; i < parameters.length; i++) { - var parameter = parameters[i].trim(); + return num; + }; - if (parameter.match(/^[a-zA-Z_]/)) { - // Named argument - var _parameter$split = parameter.split('='), - _parameter$split2 = _slicedToArray(_parameter$split, 2), - key = _parameter$split2[0], - value = _parameter$split2[1]; // At this point, the Lua code evaluates alttot1 and alttot2 values as - // #expr expressions, but we just pass them through. See also: - // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr + const parseTeam = function (obj, round, team) { + if (obj[`rd${round}-team${zeroPad(team)}`]) { + team = zeroPad(team); + } + let score = obj[`rd${round}-score${team}`]; + let num = Number(score); - if (value === undefined) { - value = null; - } + if (isNaN(num) === false) { + score = num; + } - rowObject.options.set(key, value); - } else { - // Positional argument - // Here again, the Lua code evaluates arguments at index 1 through 5 - // as #expr expressions, but we just pass them through. - if (positionalIndex < order.length) { - rowObject[order[positionalIndex]] = parameter; - } + return { + team: obj[`rd${round}-team${team}`], + score: score, + seed: obj[`rd${round}-seed${team}`] + }; + }; // https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates + //these are weird. - positionalIndex++; - } - } - for (; positionalIndex < order.length; positionalIndex++) { - rowObject[order[positionalIndex]] = null; + const playoffBracket = function (tmpl) { + let rounds = []; + let obj = toJSON(tmpl); //try some rounds + + for (let i = 1; i < 7; i += 1) { + let round = []; + + for (let t = 1; t < 16; t += 2) { + let key = `rd${i}-team`; + + if (obj[key + t] || obj[key + zeroPad(t)]) { + let one = parseTeam(obj, i, t); + let two = parseTeam(obj, i, t + 1); + round.push([one, two]); + } else { + break; } + } - return rowObject; - }); - obj.data = dataArray; - list.push(obj); - return ''; - }, - 'medical cases chart/row': function medicalCasesChartRow(tmpl) { - // Deprecated template; we keep it. - return tmpl; + if (round.length > 0) { + rounds.push(round); + } } + + return { + template: 'playoffbracket', + rounds: rounds + }; }; - var science = templates$a; - var sports = { - player: function player(tmpl, list) { - var res = parse$3(tmpl, ['number', 'country', 'name', 'dl']); + var _lib = playoffBracket; + + let sports = { + //playoff brackets + '4teambracket': function (tmpl, list) { + let obj = _lib(tmpl); + list.push(obj); + return ''; + }, + player: (tmpl, list) => { + let res = toJSON(tmpl, ['number', 'country', 'name', 'dl']); list.push(res); - var str = "[[".concat(res.name, "]]"); + let str = `[[${res.name}]]`; if (res.country) { - var country = (res.country || '').toLowerCase(); - var flag = flags.find(function (a) { - return country === a[1] || country === a[2]; - }) || []; + let country = (res.country || '').toLowerCase(); + let flag = flags.find(a => country === a[1] || country === a[2]) || []; if (flag && flag[0]) { str = flag[0] + ' ' + str; @@ -7562,15 +7429,15 @@ return str; }, //https://en.wikipedia.org/wiki/Template:Goal - goal: function goal(tmpl, list) { - var res = parse$3(tmpl); - var obj = { + goal: (tmpl, list) => { + let res = toJSON(tmpl); + let obj = { template: 'goal', data: [] }; - var arr = res.list || []; + let arr = res.list || []; - for (var i = 0; i < arr.length; i += 2) { + for (let i = 0; i < arr.length; i += 2) { obj.data.push({ min: arr[i], note: arr[i + 1] || '' @@ -7579,1143 +7446,1970 @@ list.push(obj); //generate a little text summary - var summary = '⚽ '; - summary += obj.data.map(function (o) { - var note = o.note; + let summary = '⚽ '; + summary += obj.data.map(o => { + let note = o.note; if (note) { - note = " (".concat(note, ")"); + note = ` (${note})`; } return o.min + "'" + note; }).join(', '); return summary; }, - //yellow card - yel: function yel(tmpl, list) { - var obj = parse$3(tmpl, ['min']); - list.push(obj); + //a transcluded sports module - https://en.m.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Module:Sports_table + // https://en.wikipedia.org/wiki/Template:2020–21_NHL_North_Division_standings + 'sports table': (tmpl, list) => { + let obj = toJSON(tmpl); + let byTeam = {}; + let teams = Object.keys(obj).filter(k => /^team[0-9]/.test(k)).map(k => obj[k].toLowerCase()); + teams.forEach(team => { + byTeam[team] = { + name: obj[`name_${team}`], + win: Number(obj[`win_${team}`]) || 0, + loss: Number(obj[`loss_${team}`]) || 0, + tie: Number(obj[`tie_${team}`]) || 0, + otloss: Number(obj[`otloss_${team}`]) || 0, + goals_for: Number(obj[`gf_${team}`]) || 0, + goals_against: Number(obj[`ga_${team}`]) || 0 + }; + }); + let res = { + date: obj.update, + header: obj.table_header, + teams: byTeam + }; + list.push(res); + } + }; + var sports_1 = sports; - if (obj.min) { - return "yellow: ".concat(obj.min || '', "'"); //no yellow-card emoji + var textAndData = Object.assign({}, shorthand, functions, currency, dates, geo, misc_1, stockExchanges, _lib, sports_1, _lib, sports_1); + + let templates = Object.assign({}, textOnly, dataOnly, textAndData); + Object.keys(aliases_1).forEach(k => { + // if (templates[aliases[k]] === undefined) { + // console.error(`Missing template: '${aliases[k]}'`) + // } + templates[k] = templates[aliases_1[k]]; + }); + var custom = templates; // console.log(Object.keys(templates).length) + + const { + isArray: isArray$1, + isObject + } = 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, doc) { + let name = tmpl.name; // dont bother with some junk templates + + if (_ignore.hasOwnProperty(name) === true) { + return ['']; + } //{{infobox settlement...}} + + + if (_infobox.isInfobox(name) === true) { + 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]; + } // ok, here we go! + //parse some known templates + + + if (custom.hasOwnProperty(name) === true) { + //handle number-syntax + if (typeof custom[name] === 'number') { + let obj = toJSON(tmpl.body, nums); + let key = String(custom[name]); + return [obj[key] || '']; + } //handle string-syntax + + + if (typeof custom[name] === 'string') { + return [custom[name]]; + } //handle array sytax + + + if (isArray$1(custom[name]) === true) { + 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], obj]; + } //handle function syntax + + + if (typeof custom[name] === 'function') { + // let json = toJSON(tmpl.body) + //(tmpl, list, alias, doc) + let arr = []; + let txt = custom[name](tmpl.body, arr, toJSON, null, doc); + return [txt, arr[0]]; } + } //an unknown template with data, so just keep it. - return ''; + + let json = toJSON(tmpl.body); + + if (Object.keys(json).length === 0) { + // list.push(json) + json = null; + } //..then remove it + + + return ['', json]; + }; + + var parse$3 = parseTemplate; + + const toJson = function (infobox, options) { + let json = Object.keys(infobox.data).reduce((h, k) => { + if (infobox.data[k]) { + h[k] = infobox.data[k].json(); + } + + return h; + }, {}); //support mongo-encoding keys + + if (options.encode === true) { + json = encode.encodeObj(json); + } + + return json; + }; + + var toJson_1 = toJson; + + const { + isArray + } = helpers; + + const normalize = (str = '') => { + str = str.toLowerCase(); + str = str.replace(/[-_]/g, ' '); + return str.trim(); + }; //a formal key-value data table about a topic + + + 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 = { + type: function () { + return this._type; }, - subon: function subon(tmpl, list) { - var obj = parse$3(tmpl, ['min']); - list.push(obj); + links: function (n) { + let arr = []; + Object.keys(this.data).forEach(k => { + this.data[k].links().forEach(l => arr.push(l)); + }); - if (obj.min) { - return "sub on: ".concat(obj.min || '', "'"); //no yellow-card emoji + 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); + return link === undefined ? [] : [link]; } - return ''; + return arr; }, - suboff: function suboff(tmpl, list) { - var obj = parse$3(tmpl, ['min']); - list.push(obj); + image: function () { + let s = this.data.image || this.data.image2 || this.data.logo || this.data.image_skyline || this.data.image_flag; - if (obj.min) { - return "sub off: ".concat(obj.min || '', "'"); //no yellow-card emoji + if (!s) { + return null; } + let obj = s.json(); + obj.file = obj.text; + obj.text = ''; + obj.domain = this.domain; // add domain information for image + + return new Image_1(obj); + }, + get: function (keys) { + let allKeys = Object.keys(this.data); + + if (typeof keys === 'string') { + let key = normalize(keys); + + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]); + + if (key === tmp) { + return this.data[allKeys[i]]; + } + } + + return new Sentence_1(); + } + + if (isArray(keys)) { + // support array-input + keys = keys.map(normalize); + return keys.map(k => { + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]); + + if (k === tmp) { + return this.data[allKeys[i]]; + } + } + + return new Sentence_1(); + }); + } + + return new Sentence_1(); + }, + text: function () { return ''; }, - pengoal: function pengoal(tmpl, list) { - list.push({ - template: 'pengoal' - }); - return '✅'; + json: function (options) { + options = options || {}; + return toJson_1(this, options); }, - penmiss: function penmiss(tmpl, list) { - list.push({ - template: 'penmiss' - }); - return '❌'; + wikitext: function () { + return this.wiki || ''; }, - //'red' card - {{sent off|cards|min1|min2}} - 'sent off': function sentOff(tmpl, list) { - var obj = parse$3(tmpl, ['cards']); - var result = { - template: 'sent off', - cards: obj.cards, - minutes: obj.list || [] - }; - list.push(result); - var mins = result.minutes.map(function (m) { - return m + "'"; - }).join(', '); - return 'sent off: ' + mins; + keyValue: function () { + return Object.keys(this.data).reduce((h, k) => { + if (this.data[k]) { + h[k] = this.data[k].text(); + } + + return h; + }, {}); } - }; - var soccer = sports; + }; //aliases - var misc$3 = { - 'baseball secondary style': 0, - mlbplayer: function mlbplayer(tmpl, list) { - var obj = parse$3(tmpl, ['number', 'name', 'dl']); - list.push(obj); - return obj.name; + Object.keys(methods$1).forEach(k => { + Infobox.prototype[k] = methods$1[k]; + }); + Infobox.prototype.data = Infobox.prototype.keyValue; + Infobox.prototype.template = Infobox.prototype.type; + Infobox.prototype.images = Infobox.prototype.image; + var Infobox_1 = Infobox; + + const toText = _04Sentence.fromText; + const methods = { + text: function () { + let str = this._text || ''; + return toText(str).text(); + }, + json: function () { + return this.data || {}; + }, + wikitext: function () { + return this.wiki || ''; } }; - var sports$1 = Object.assign({}, misc$3, brackets_1, soccer); - var codes$1 = { - adx: 'adx', - //https://en.wikipedia.org/wiki/Template:Abu_Dhabi_Securities_Exchange - aim: 'aim', - //https://en.wikipedia.org/wiki/Template:Alternative_Investment_Market - bvpasa: 'bvpasa', - //https://en.wikipedia.org/wiki/Template:BVPASA - asx: 'asx', - //https://en.wikipedia.org/wiki/Template:Australian_Securities_Exchange - athex: 'athex', - //https://en.wikipedia.org/wiki/Template:Athens_Exchange - bhse: 'bhse', - //https://en.wikipedia.org/wiki/Template:Bahrain_Bourse - bvb: 'bvb', - //https://en.wikipedia.org/wiki/Template:Bucharest_Stock_Exchange - bbv: 'bbv', - //https://en.wikipedia.org/wiki/Template:BBV - bsx: 'bsx', - //https://en.wikipedia.org/wiki/Template:Bermuda_Stock_Exchange - b3: 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - 'bm&f': 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - 'bm&f bovespa': 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - bwse: 'bwse', - //https://en.wikipedia.org/wiki/Template:Botswana_Stock_Exchange - 'botswana stock exchange': 'botswana stock exchange', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - bse: 'bse', - //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange - 'bombay stock exchange': 'bombay stock exchange', - //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange - bpse: 'bpse', - //https://en.wikipedia.org/wiki/Template:Budapest_Stock_Exchange - bcba: 'bcba', - //https://en.wikipedia.org/wiki/Template:Buenos_Aires_Stock_Exchange - 'canadian securities exchange': 'canadian securities exchange', - //https://en.wikipedia.org/wiki/Template:Canadian_Securities_Exchange - bvc: 'bvc', - //https://en.wikipedia.org/wiki/Template:Colombian_Securities_Exchange - cse: 'cse', - //https://en.wikipedia.org/wiki/Template:Chittagong_Stock_Exchange - darse: 'darse', - //https://en.wikipedia.org/wiki/Template:Dar_es_Salaam_Stock_Exchange - dse: 'dse', - //https://en.wikipedia.org/wiki/Template:Dhaka_Stock_Exchange - dfm: 'dfm', - //https://en.wikipedia.org/wiki/Template:Dubai_Financial_Market - euronext: 'euronext', - //https://en.wikipedia.org/wiki/Template:Euronext - fwb: 'fwb', - //https://en.wikipedia.org/wiki/Template:Frankfurt_Stock_Exchange - fse: 'fse', - //https://en.wikipedia.org/wiki/Template:Fukuoka_Stock_Exchange - gse: 'gse', - //https://en.wikipedia.org/wiki/Template:Ghana_Stock_Exchange - gtsm: 'gtsm', - //https://en.wikipedia.org/wiki/Template:Gre_Tai_Securities_Market - sehk: 'sehk', - //https://en.wikipedia.org/wiki/Template:Hong_Kong_Stock_Exchange - idx: 'idx', - //https://en.wikipedia.org/wiki/Template:Indonesia_Stock_Exchange - nse: 'nse', - //https://en.wikipedia.org/wiki/Template:National_Stock_Exchange_of_India - ise: 'ise', - //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange - isin: 'isin', - //https://en.wikipedia.org/wiki/Template:ISIN - bist: 'bist', - //https://en.wikipedia.org/wiki/Template:Borsa_Istanbul - bit: 'bit', - //https://en.wikipedia.org/wiki/Template:Borsa_Italiana - jasdaq: 'jasdaq', - //https://en.wikipedia.org/wiki/Template:JASDAQ - jse: 'jse', - //https://en.wikipedia.org/wiki/Template:Johannesburg_Stock_Exchange - kase: 'kase', - //https://en.wikipedia.org/wiki/Template:Kazakhstan_Stock_Exchange - krx: 'krx', - //https://en.wikipedia.org/wiki/Template:Korea_Exchange - bvl: 'bvl', - //https://en.wikipedia.org/wiki/Template:Lima_Stock_Exchange - lse: 'lse', - //https://en.wikipedia.org/wiki/Template:London_Stock_Exchange - luxse: 'luxse', - //https://en.wikipedia.org/wiki/Template:Luxembourg_Stock_Exchange - bmad: 'bmad', - //https://en.wikipedia.org/wiki/Template:Bolsa_de_Madrid - myx: 'myx', - //https://en.wikipedia.org/wiki/Template:Bursa_Malaysia - bmv: 'bmv', - //https://en.wikipedia.org/wiki/Template:Mexican_Stock_Exchange - mcx: 'mcx', - //https://en.wikipedia.org/wiki/Template:Moscow_Exchange - mutf: 'mutf', - //https://en.wikipedia.org/wiki/Template:Mutual_fund - nag: 'nag', - //https://en.wikipedia.org/wiki/Template:Nagoya_Stock_Exchange - kn: 'kn', - //https://en.wikipedia.org/wiki/Template:Nairobi_Securities_Exchange - 'nasdaq dubai': 'nasdaq dubai', - //https://en.wikipedia.org/wiki/Template:NASDAQ_Dubai - nasdaq: 'nasdaq', - //https://en.wikipedia.org/wiki/Template:NASDAQ - neeq: 'neeq', - //https://en.wikipedia.org/wiki/Template:NEEQ - nepse: 'nepse', - //https://en.wikipedia.org/wiki/Template:Nepal_Stock_Exchange - nyse: 'nyse', - //https://en.wikipedia.org/wiki/Template:New_York_Stock_Exchange - nzx: 'nzx', - //https://en.wikipedia.org/wiki/Template:New_Zealand_Exchange - amex: 'amex', - //https://en.wikipedia.org/wiki/Template:NYSE_American - 'nyse arca': 'nyse arca', - //https://en.wikipedia.org/wiki/Template:NYSE_Arca - omx: 'omx', - //https://en.wikipedia.org/wiki/Template:OMX - 'omx baltic': 'omx baltic', - //https://en.wikipedia.org/wiki/Template:OMX_Baltic - ose: 'ose', - //https://en.wikipedia.org/wiki/Template:Oslo_Stock_Exchange - 'otc pink': 'otc pink', - //https://en.wikipedia.org/wiki/Template:OTC_Pink - otcqb: 'otcqb', - //https://en.wikipedia.org/wiki/Template:OTCQB - otcqx: 'otcqx', - //https://en.wikipedia.org/wiki/Template:OTCQX - 'philippine stock exchange': 'philippine stock exchange', - //https://en.wikipedia.org/wiki/Template:Philippine_Stock_Exchange - prse: 'prse', - //https://en.wikipedia.org/wiki/Template:Prague_Stock_Exchange - qe: 'qe', - //https://en.wikipedia.org/wiki/Template:Qatar_Stock_Exchange - bcs: 'bcs', - //https://en.wikipedia.org/wiki/Template:Santiago_Stock_Exchange - 'saudi stock exchange': 'saudi stock exchange', - //https://en.wikipedia.org/wiki/Template:Saudi_Stock_Exchange - sgx: 'sgx', - //https://en.wikipedia.org/wiki/Template:Singapore_Exchange - sse: 'sse', - //https://en.wikipedia.org/wiki/Template:Shanghai_Stock_Exchange - szse: 'szse', - //https://en.wikipedia.org/wiki/Template:Shenzhen_Stock_Exchange - swx: 'swx', - //https://en.wikipedia.org/wiki/Template:SIX_Swiss_Exchange - set: 'set', - //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand - tase: 'tase', - //https://en.wikipedia.org/wiki/Template:Tel_Aviv_Stock_Exchange - tyo: 'tyo', - //https://en.wikipedia.org/wiki/Template:Tokyo_Stock_Exchange - tsx: 'tsx', - //https://en.wikipedia.org/wiki/Template:Toronto_Stock_Exchange - twse: 'twse', - //https://en.wikipedia.org/wiki/Template:Taiwan_Stock_Exchange - 'tsx-v': 'tsx-v', - //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange - tsxv: 'tsxv', - //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange - nex: 'nex', - //https://en.wikipedia.org/wiki/Template:TSXV_NEX - ttse: 'ttse', - //https://en.wikipedia.org/wiki/Template:Trinidad_and_Tobago_Stock_Exchange - 'pfts ukraine stock exchange': 'pfts ukraine stock exchange', - //https://en.wikipedia.org/wiki/Template:PFTS_Ukraine_Stock_Exchange - wse: 'wse', - //https://en.wikipedia.org/wiki/Template:Warsaw_Stock_Exchange - wbag: 'wbag', - //https://en.wikipedia.org/wiki/Template:Wiener_B%C3%B6rse - zse: 'zse', - //https://en.wikipedia.org/wiki/Template:Zagreb_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 + 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 => { + Template.prototype[k] = methods[k]; + }); + var Template_1 = Template; + + const isCitation = /^(cite |citation)/i; + const referenceTypes = { + citation: true, + refn: true, + harvnb: true, + source: true //wikinews + + }; // split Infoboxes from templates and references + + const sortOut = function (list, domain) { + let res = { + infoboxes: [], + templates: [], + references: [] + }; //remove references and infoboxes from our list + + 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(json, obj.wiki)); + return; + } // is it an Infobox? + + + 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_1(json, obj.wiki)); + return; + } // otherwise, it's just a template + + + res.templates.push(new Template_1(json, obj.text, obj.wiki)); + }); + return res; + }; + + var sortOut_1 = sortOut; + + const allTemplates = function (wiki, doc) { + let list = []; //nested data-structure of templates + + let nested = _01Nested(wiki); //recursive template-parser + + const parseNested = function (obj, parent) { + obj.parent = parent; //do tail-first recursion + + if (obj.children && obj.children.length > 0) { + obj.children.forEach(ch => parseNested(ch, obj)); + } //parse template into json, return replacement wikitext + + + 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) { + node.parent.body = node.parent.body.replace(body, out); + removeIt(node.parent, body, out); + } + }; + + removeIt(obj, obj.body, obj.wiki); + wiki = wiki.replace(obj.body, obj.wiki); + }; //kick it off + + + nested.forEach(node => parseNested(node, null)); //remove the templates from our wiki text + + nested.forEach(node => { + wiki = wiki.replace(node.body, node.wiki); + }); + return { + list: list, + wiki: wiki + }; + }; //find + parse all templates in the section + + + const process = function (section, doc) { + // find+parse them all + let { + list, + wiki + } = allTemplates(section._wiki, doc); // split-out references and infoboxes + + let domain = doc ? doc._domain : null; + let { + infoboxes, + references, + templates + } = sortOut_1(list, domain); //sort-out the templates we decide to keep + + section._infoboxes = section._infoboxes || []; + section._references = section._references || []; + section._templates = section._templates || []; + section._infoboxes = section._infoboxes.concat(infoboxes); + section._references = section._references.concat(references); + section._templates = section._templates.concat(templates); + section._wiki = wiki; + }; + + var template = process; + + const parseSentence$1 = _04Sentence.fromText; //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... + + /** + * + * @private + * @param {object} 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() + }; + let img = new Image_1(obj).json(); + let caption = arr.slice(1).join('|'); + + if (caption !== '') { + img.caption = parseSentence$1(caption); + } + + return img; + }); //add it to our templates list + + if (images.length > 0) { + catcher.templates.push({ + template: 'gallery', + images: images, + pos: section.title + }); + } //return empty string to remove the template from the wiki text + + + return ''; + }); + }; + + var gallery = parseGallery; + + /** + * 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 {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 => { + let data = { + _wiki: tmpl, + _templates: [] + }; //put it through our full template parser.. + + template(data); //okay, pull it apart into something sensible.. + + 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) { + catcher.templates.push({ + template: 'election box', + title: start.title, + candidates: candidates, + summary: summary.data + }); + } //return empty string to remove the template from the wiki text + + + return ''; + }); }; - var parseStockExchange = function parseStockExchange(tmpl, list) { - var o = parse$3(tmpl, ['ticketnumber', 'code']); - list.push(o); - var code = o.template || ''; + var election = parseElection; - if (code === '') { - code = o.code; - } + 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'] + }; + /** + * https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start + * + * @private + * @param {object} catcher + */ - code = (code || '').toLowerCase(); - var out = codes$1[code] || ''; - var str = out; + 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 = parse$5(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'NBA ' + name + ' statistics', + data: rows + }); //return empty string to remove the template from the wiki text - if (o.ticketnumber) { - str = "".concat(str, ": ").concat(o.ticketnumber); + return ''; + }); + }; + + var nba = parseNBA; + + //this is pretty nuts + + 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 } - if (o.code && !codes$1[o.code.toLowerCase()]) { - str += ' ' + o.code; + if (/\|time=y/i.test(tmpl) === true) { + headings.splice(7, 0, 'time'); //save, time, stadium, attendance } - return str; + if (/\|box=y/i.test(tmpl) === true) { + headings.push('box'); //record, box + } + + return headings; }; + /** + * + * @private + * @param {object} catcher + */ - var currencies$1 = {}; //the others fit the same pattern.. - Object.keys(codes$1).forEach(function (k) { - currencies$1[k] = parseStockExchange; - }); - var stockExchanges = currencies$1; + 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 = parse$5(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'mlb game log section', + data: rows + }); //return empty string to remove the template from the wiki text - var hasMonth = /^jan /i; - var isYear = /^year /i; - var monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; + return ''; + }); + }; - var toNumber = function toNumber(str) { - str = str.replace(/,/g, ''); - str = str.replace(/−/g, '-'); - var num = Number(str); + var mlb = parseMlb; - if (isNaN(num)) { - return str; - } + let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; + /** + * + * https://en.wikipedia.org/wiki/Template:MMA_record_start + * + * @private + * @param {object} 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 = parse$5(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'mma record start', + data: rows + }); //return empty string to remove the template from the wiki text - return num; + return ''; + }); }; - var templates$b = { - // this one is a handful! - //https://en.wikipedia.org/wiki/Template:Weather_box - 'weather box': function weatherBox(tmpl, list) { - var obj = parse$3(tmpl); //collect all month-based data + var mma = parseMMA; + + const parseSentence = _04Sentence.fromText; + /** + * 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 {object} 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(); + catcher.templates.push({ + template: 'math', + formula: formula, + raw: inside + }); //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 + + catcher.text = catcher.text.replace(/]*?)>([\s\S]+?)<\/chem>/g, (_, attrs, inside) => { + catcher.templates.push({ + template: 'chem', + data: inside + }); //return empty string to remove the template from the wiki text + + return ''; + }); + }; + + var math = parseMath; + + /** + * 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 + * @returns {Object} wikitext + */ + + const xmlTemplates = function (section, doc) { + const res = { + templates: [], + text: section._wiki + }; + election(res); + gallery(res, doc, section); + math(res); + mlb(res); + mma(res); + nba(res); // turn them into Template objects + + res.templates = res.templates.map(obj => new Template_1(obj)); + return res; + }; + + var startToEnd = xmlTemplates; + + const parse$2 = { + heading: heading, + table: table, + paragraphs: _03Paragraph, + templates: template, + references: reference, + startEndTemplates: startToEnd + }; + const defaults$2 = { + tables: true, + references: true, + paragraphs: true, + templates: true, + infoboxes: true + }; + /** + * 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 { + /** + * 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) { + 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$2.startEndTemplates(this, doc); + this._wiki = startEndTemplates.text; + this._templates = this._templates.concat(startEndTemplates.templates); //parse-out the tags + + parse$2.references(this); //parse-out all {{templates}} - var byMonth = {}; - var properties = Object.keys(obj).filter(function (k) { - return hasMonth.test(k); + parse$2.templates(this, doc); //parse the tables + + parse$2.table(this); //now parse all double-newlines + + parse$2.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; + } + + let index = this._doc.sections().indexOf(this); + + if (index === -1) { + return null; + } + + 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(); + } + /** + * returns all sentences in the section + * if an clue is provided then it returns the sentence at clue-th index + * + * @returns {object | object[]} all sentences in an array or the clue-th sentence + */ + + + sentences() { + return this.paragraphs().reduce((list, p) => { + return list.concat(p.sentences()); + }, []); + } + /** + * returns all paragraphs in the section + * if an clue is provided then it returns the paragraph at clue-th index + * + * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph + */ + + + paragraphs() { + return this._paragraphs || []; + } + /** + * 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 {object | object[]} 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 => { + arr.push(templ.links()); }); - properties = properties.map(function (k) { - return k.replace(hasMonth, ''); + this.sentences().forEach(s => { + arr.push(s.links()); }); - properties.forEach(function (prop) { - byMonth[prop] = []; - monthList.forEach(function (m) { - var key = "".concat(m, " ").concat(prop); + this.tables().forEach(t => { + arr.push(t.links()); + }); + this.lists().forEach(list => { + 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 (obj.hasOwnProperty(key)) { - var num = toNumber(obj[key]); - delete obj[key]; - byMonth[prop].push(num); - } - }); - }); //add these to original + if (typeof clue === 'string') { + let link = arr.find(o => o.page().toLowerCase() === clue.toLowerCase()); + return link === undefined ? [] : [link]; + } - obj.byMonth = byMonth; //collect year-based data + return arr; + } + /** + * returns all tables in the section + * if an clue is provided then it returns the table at clue-th index + * + * @returns {object | object[]} all tables in an array or the clue-th infobox + */ - var byYear = {}; - Object.keys(obj).forEach(function (k) { - if (isYear.test(k)) { - var prop = k.replace(isYear, ''); - byYear[prop] = obj[k]; - delete obj[k]; - } + + tables() { + return this._tables || []; + } + /** + * 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 {object | object[]} 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()) + + if (typeof clue === 'string') { + clue = clue.toLowerCase(); + return arr.filter(o => o.data.template === clue || o.data.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|string} [clue] the clue for selecting the infobox + * @returns {object | object[]} all infoboxes in an array or the clue-th infobox + */ + + + infoboxes(clue) { + let arr = this._infoboxes || []; + + if (typeof clue === 'string') { + clue = clue.replace(/^infobox /i, ''); + clue = clue.trim().toLowerCase(); + return arr.filter(info => info._type === clue); + } + + return arr; + } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + + + coordinates() { + let arr = [...this.templates('coord'), ...this.templates('coor')]; + return arr.map(tmpl => tmpl.json()); + } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + + + lists() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.lists()); }); - obj.byYear = byYear; - list.push(obj); - return ''; - }, - //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation - //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C - 'weather box/concise c': function weatherBoxConciseC(tmpl, list) { - var obj = parse$3(tmpl); - obj.list = obj.list.map(function (s) { - return toNumber(s); + return arr; + } + /** + * returns all interwiki links in the section + * if an clue is provided then it returns the interwiki link at clue-th index + * + * @returns {object | object[]} all interwiki links in an array or the clue-th interwiki link + */ + + + interwiki() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.interwiki()); }); - obj.byMonth = { - 'high c': obj.list.slice(0, 12), - 'low c': obj.list.slice(12, 24), - 'rain mm': obj.list.slice(24, 36) - }; - delete obj.list; - obj.template = 'weather box'; - list.push(obj); - return ''; - }, - 'weather box/concise f': function weatherBoxConciseF(tmpl, list) { - var obj = parse$3(tmpl); - obj.list = obj.list.map(function (s) { - return toNumber(s); + return arr; + } + /** + * returns all images in the section + * if an clue is provided then it returns the image at clue-th index + * + * @returns {Image | Image[]} all images in an array or the clue-th image + */ + + + images() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.images()); }); - obj.byMonth = { - 'high f': obj.list.slice(0, 12), - 'low f': obj.list.slice(12, 24), - 'rain inch': obj.list.slice(24, 36) - }; - delete obj.list; - obj.template = 'weather box'; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Climate_chart - 'climate chart': function climateChart(tmpl, list) { - var lines = parse$3(tmpl).list || []; - var title = lines[0]; - var source = lines[38]; - lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... + return arr; + } + /** + * returns all references in the section + * if an clue is provided then it returns the reference at clue-th index + * + * @returns {object | object[]} all references in an array or the clue-th reference + */ + + + references() { + return this._references || []; + } //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 - lines = lines.map(function (str) { - if (str && str[0] === '−') { - str = str.replace(/−/, '-'); + 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) { + return null; + } //first we get the a list of sections and our own position in this list + + + let sections = this._doc.sections(); + + 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 + //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 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 str; - }); - var months = []; //groups of three, for 12 months - for (var i = 0; i < 36; i += 3) { - months.push({ - low: toNumber(lines[i]), - high: toNumber(lines[i + 1]), - precip: toNumber(lines[i + 2]) - }); + 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; } - var obj = { - template: 'climate chart', - data: { - title: title, - source: source, - months: months - } - }; - list.push(obj); - return ''; + let sections = this._doc.sections(); + + let index = this.index() || 0; + return sections[index - 1] || null; } - }; - var weather = templates$b; - - //this format seems to be a pattern for these - var generic$1 = ['id', 'title', 'description', 'section']; - var idName = ['id', 'name']; //https://en.wikipedia.org/wiki/Category:External_link_templates - - var externals = { - //https://en.wikipedia.org/wiki/Template:IMDb_title - 'imdb title': generic$1, - 'imdb name': generic$1, - 'imdb episode': generic$1, - 'imdb event': generic$1, - 'afi film': generic$1, - 'allmovie title': generic$1, - allgame: generic$1, - 'tcmdb title': generic$1, - 'discogs artist': generic$1, - 'discogs label': generic$1, - 'discogs release': generic$1, - 'discogs master': generic$1, - 'librivox author': generic$1, - 'musicbrainz artist': generic$1, - 'musicbrainz label': generic$1, - 'musicbrainz recording': generic$1, - 'musicbrainz release': generic$1, - 'musicbrainz work': generic$1, - youtube: generic$1, - 'goodreads author': idName, - 'goodreads book': generic$1, - twitter: idName, - facebook: idName, - instagram: idName, - tumblr: idName, - pinterest: idName, - 'espn nfl': idName, - 'espn nhl': idName, - 'espn fc': idName, - hockeydb: idName, - 'fifa player': idName, - worldcat: idName, - 'worldcat id': idName, - 'nfl player': idName, - 'ted speaker': idName, - playmate: idName, - //https://en.wikipedia.org/wiki/Template:DMOZ - dmoz: generic$1, - 'find a grave': ['id', 'name', 'work', 'last', 'first', 'date', 'accessdate'], - congbio: ['id', 'name', 'date'], - 'hollywood walk of fame': ['name'] - }; //alias + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ - externals.imdb = externals['imdb name']; - externals['imdb episodess'] = externals['imdb episode']; - var websites = externals; - //wiktionary... who knows. we should atleast try. + last() { + return this.lastSibling(); + } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ - var templates$c = { - //{{inflection of|avoir||3|p|pres|ind|lang=fr}} - //https://en.wiktionary.org/wiki/Template:inflection_of - inflection: function inflection(tmpl, list) { - var obj = parse$3(tmpl, ['lemma']); - obj.tags = obj.list; - delete obj.list; - obj.type = 'form-of'; - list.push(obj); - return obj.lemma || ''; - }, - //latin verbs - 'la-verb-form': function laVerbForm(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return obj.word || ''; - }, - 'feminine plural': function femininePlural(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return obj.word || ''; - }, - 'male plural': function malePlural(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return obj.word || ''; - }, - rhymes: function rhymes(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return 'Rhymes: -' + (obj.word || ''); + + previousSibling() { + return this.lastSibling(); } - }; //https://en.wiktionary.org/wiki/Category:Form-of_templates + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ - var conjugations = ['abbreviation', 'abessive plural', 'abessive singular', 'accusative plural', 'accusative singular', 'accusative', 'acronym', 'active participle', 'agent noun', 'alternative case form', 'alternative form', 'alternative plural', 'alternative reconstruction', 'alternative spelling', 'alternative typography', 'aphetic form', 'apocopic form', 'archaic form', 'archaic spelling', 'aspirate mutation', 'associative plural', 'associative singular', 'attributive form', 'attributive form', 'augmentative', 'benefactive plural', 'benefactive singular', 'causative plural', 'causative singular', 'causative', 'clipping', 'combining form', 'comitative plural', 'comitative singular', 'comparative plural', 'comparative singular', 'comparative', 'contraction', 'dated form', 'dated spelling', 'dative plural definite', 'dative plural indefinite', 'dative plural', 'dative singular', 'dative', 'definite', 'deliberate misspelling', 'diminutive', 'distributive plural', 'distributive singular', 'dual', 'early form', 'eclipsis', 'elative', 'ellipsis', 'equative', 'euphemistic form', 'euphemistic spelling', 'exclusive plural', 'exclusive singular', 'eye dialect', 'feminine noun', 'feminine plural past participle', 'feminine plural', 'feminine singular past participle', 'feminine singular', 'feminine', 'form', 'former name', 'frequentative', 'future participle', 'genitive plural definite', 'genitive plural indefinite', 'genitive plural', 'genitive singular definite', 'genitive singular indefinite', 'genitive singular', 'genitive', 'gerund', 'h-prothesis', 'hard mutation', 'harmonic variant', 'imperative', 'imperfective form', 'inflected form', 'inflection', 'informal form', 'informal spelling', 'initialism', 'ja-form', 'jyutping reading', 'late form', 'lenition', 'masculine plural past participle', 'masculine plural', 'medieval spelling', 'misconstruction', 'misromanization', 'misspelling', 'mixed mutation', 'monotonic form', 'mutation', 'nasal mutation', 'negative', 'neuter plural past participle', 'neuter plural', 'neuter singular past participle', 'neuter singular', 'nominalization', 'nominative plural', 'nominative singular', 'nonstandard form', 'nonstandard spelling', 'oblique plural', 'oblique singular', 'obsolete form', 'obsolete spelling', 'obsolete typography', 'official form', 'participle', 'passive participle', 'passive', 'past active participle', 'past participle', 'past passive participle', 'past tense', 'perfective form', 'plural definite', 'plural indefinite', 'plural', 'polytonic form', 'present active participle', 'present participle', 'present tense', 'pronunciation spelling', 'rare form', 'rare spelling', 'reflexive', 'second-person singular past', 'short for', 'singular definite', 'singular', 'singulative', 'soft mutation', 'spelling', 'standard form', 'standard spelling', 'substantivisation', 'superlative', 'superseded spelling', 'supine', 'syncopic form', 'synonym', 'terminative plural', 'terminative singular', 'uncommon form', 'uncommon spelling', 'verbal noun', 'vocative plural', 'vocative singular']; - conjugations.forEach(function (name) { - templates$c[name + ' of'] = function (tmpl, list) { - var obj = parse$3(tmpl, ['lemma']); - obj.tags = obj.list; - delete obj.list; - obj.type = 'form-of'; - list.push(obj); - return obj.lemma || ''; - }; - }); - var wiktionary = templates$c; - var templates$d = { - // https://en.wikivoyage.org/wiki/Template:Do - listing: function listing(tmpl, list) { - var obj = parse$3(tmpl, []); - list.push(obj); // flatten it all into one line of text + previous() { + return this.lastSibling(); + } + /** + * 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 + */ - var name = obj.name; - if (obj.url) { - name = "[".concat(obj.url, " ").concat(obj.name, "]"); + children(clue) { + if (!this._doc) { + return null; } - var phone = ''; + let sections = this._doc.sections(); - if (obj.phone) { - phone = "[tel:".concat(obj.phone, "]"); - } + let index = this.index() || 0; + let children = []; //(immediately preceding sections with higher depth) - var updated = ''; + 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()) { + children.push(sections[i]); + } else { + break; + } + } + } - if (obj.lastedit) { - updated = "(updated ".concat(obj.lastedit, ")"); + if (typeof clue === 'string') { + return children.find(s => s.title().toLowerCase() === clue.toLowerCase()); } - var out = "".concat(name, " ").concat(obj.address || '', " ").concat(obj.directions || '', " ").concat(phone, " ").concat(obj.hours || '', " ").concat(obj.content, " ").concat(obj.price, " ").concat(updated); - return out; + return children; } - }; // are these sorta the same? + /** + * 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 + */ - templates$d.see = templates$d.listing; - templates$d["do"] = templates$d.listing; - templates$d.buy = templates$d.listing; - templates$d.eat = templates$d.listing; - templates$d.drink = templates$d.listing; - templates$d.sleep = templates$d.listing; - templates$d.go = templates$d.listing; - var wikivoyage = templates$d; - var templates$e = Object.assign({}, dates, formatting$1, geo, wikipedia, brackets_1, currency, elections, flags_1, ipa, languages_1, math, misc_1$1, punctuation_1, science, soccer, sports$1, stockExchanges, weather, websites, wiktionary, wikivoyage); + 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 + */ - var generic$2 = parse$3; - var nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8']; - var isArray$2 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; //this gets all the {{template}} strings and decides how to parse them + parent() { + if (!this._doc) { + return null; + } + let sections = this._doc.sections(); - var parseTemplate$1 = function parseTemplate(tmpl, list) { - var name = tmpl.name; + let index = this.index() || 0; - if (_ignore.hasOwnProperty(name) === true) { - return ''; - } // {{infobox settlement...}} + for (let i = index; i >= 0; i -= 1) { + if (sections[i] && sections[i].depth() < this.depth()) { + return sections[i]; + } + } + return null; + } //outputs - if (_infobox.isInfobox(name) === true) { - var obj = parse$3(tmpl.body, list, 'raw'); - var infobox = _infobox.format(obj); - list.push(infobox); - return ''; - } // //cite book, cite arxiv... + /** + * returns a plaintext version of the section + * + * @param {object} options options for the text transformation + * @returns {string} the section in text + */ - if (/^cite [a-z]/.test(name) === true) { - var _obj = parse$3(tmpl.body, list); + text(options) { + 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 + */ - _obj.type = _obj.template; - _obj.template = 'citation'; - list.push(_obj); - return ''; - } // known template + wikitext() { + return this._wiki; + } + /** + * returns a json version of the section + * + * @param {object} options keys to include in the resulting json + * @returns {object} the section in json + */ - if (templates$e.hasOwnProperty(name) === true) { - // handle number-syntax - if (typeof templates$e[name] === 'number') { - var _obj2 = generic$2(tmpl.body, nums); - var key = String(templates$e[name]); - return _obj2[key] || ''; - } // handle string-syntax + json(options) { + options = setDefaults_1(options, defaults$2); + return toJson$4(this, options); + } + } - if (typeof templates$e[name] === 'string') { - return templates$e[name]; - } // handle array sytax + Section.prototype.citations = Section.prototype.references; // aliases + const singular$1 = { + sentences: 'sentence', + paragraphs: 'paragraph', + links: 'link', + tables: 'table', + templates: 'template', + infoboxes: 'infobox', + coordinates: 'coordinate', + lists: 'list', + images: 'image', + references: 'reference', + citations: 'citation' + }; + Object.keys(singular$1).forEach(k => { + let sing = singular$1[k]; - if (isArray$2(templates$e[name]) === true) { - var _obj3 = generic$2(tmpl.body, templates$e[name]); + Section.prototype[sing] = function (clue) { + let arr = this[k](clue); - list.push(_obj3); - return ''; - } // handle function syntax + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0] || null; + }; + }); + var Section_1 = Section; + const isReference = new RegExp('^(' + i18n.references.join('|') + '):?', 'i'); + const section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines - if (typeof templates$e[name] === 'function') { - return templates$e[name](tmpl.body, list); - } - } // unknown template, try to parse it + const parse$1 = { + heading: 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) { + if (s.paragraphs().length > 0) { + return true; + } //does it have some wacky templates? - var parsed = parse$3(tmpl.body); - if (list && Object.keys(parsed).length > 0) { - list.push(parsed); - } // ..then remove it + if (s.templates().length > 0) { + return true; + } //what it has children? awkward - return ''; - }; + if (sections[i + 1] && sections[i + 1].depth() > s.depth()) { + sections[i + 1]._depth -= 1; //move it up a level?... + } - var parse_1 = parseTemplate$1; + return false; + } - var Template = function Template(data) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data + return true; }); }; + /** + * 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 + */ - var methods$a = { - text: function text() { - return ''; - }, - json: function json() { - return this.data; - } - }; - Object.keys(methods$a).forEach(function (k) { - Template.prototype[k] = methods$a[k]; - }); - var Template_1 = Template; - var isCitation = new RegExp('^(cite |citation)', 'i'); - var references$1 = { - citation: true, - refn: true, - harvnb: true - }; + const parseSections = function (doc) { + let sections = []; - var isReference = function isReference(obj) { - return references$1[obj.template] === true || isCitation.test(obj.template) === true; - }; + 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 data = { + title: '', + depth: null, + wiki: wiki + }; //figure-out title and depth - var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; + parse$1.heading(data, heading); + sections.push(new Section_1(data, doc)); + } //remove empty references section + + + return removeReferenceSection(sections); }; - var isInfobox$1 = function isInfobox(obj) { - return obj.template === 'infobox' && obj.data && isObject(obj.data); - }; //reduce the scary recursive situations + var _02Section = parseSections; + const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'ig'); + const cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n.categories.join('|') + '):', 'ig'); - var allTemplates = function allTemplates(section, doc) { - var wiki = section.wiki; // nested data-structure of templates + const parse_categories = function (wiki) { + const categories = []; + let tmp = wiki.match(cat_reg); //regular links - var list = find(wiki); - var keep = []; // recursive template-parser + if (tmp) { + tmp.forEach(function (c) { + c = c.replace(cat_remove_reg, ''); + c = c.replace(/\|?[ \*]?\]\]$/i, ''); //parse fancy ones.. - var parseThem = function parseThem(obj, parent) { - obj.parent = parent; // do tail-first recurion + c = c.replace(/\|.*/, ''); //everything after the '|' is metadata - if (obj.children && obj.children.length > 0) { - obj.children.forEach(function (ch) { - return parseThem(ch, obj); + if (c && !c.match(/[\[\]]/)) { + categories.push(c.trim()); + } + }); + } + + const newWiki = wiki.replace(cat_reg, ''); + return [categories, newWiki]; + }; + + var categories = parse_categories; + + const parse = { + section: _02Section, + categories: categories + }; + const defaults$1 = { + tables: true, + lists: true, + paragraphs: true + }; + /** + * The document class is the main entry point of wtf_wikipedia. + * this class represents an article of wikipedia. + * from here you can go to the infoboxes or paragraphs + * + * @class + */ + + class Document { + /** + * The constructor for the document class + * This function starts parsing the wiki text and sets the options in the class + * + * @param {string} [wiki] The wiki text + * @param {object} [options] The options for the parser + */ + 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, + wiki: wiki || '', + categories: [], + sections: [], + coordinates: [] + }; // this._missing_templates = {} //for stats+debugging purposes + + 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; + return; + } //give ourselves a little head-start - obj.out = parse_1(obj, keep); // remove the text from every parent - var removeIt = function removeIt(node, body, out) { - if (node.parent) { - node.parent.body = node.parent.body.replace(body, out); - removeIt(node.parent, body, out); - } - }; + this._wiki = preProcess_1(this._wiki); //pull-out [[category:whatevers]] - removeIt(obj, obj.body, obj.out); - wiki = wiki.replace(obj.body, obj.out); - }; //kick it off + const [categories, newWiki] = parse.categories(this._wiki); + this._categories = categories; + this._wiki = newWiki; //parse all the headings, and their texts/sentences + this._sections = parse.section(this); + } + /** + * 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 {string} [str] The title that will be set + * @returns {null|string} The title found or given + */ - list.forEach(function (node) { - return 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); // remove references and infoboxes from our list + title(str) { + //use like a setter + if (str !== undefined) { + this._title = str; + return str; + } //if we have it already - section.templates = section.templates.filter(function (obj) { - if (isReference(obj) === true) { - section.references.push(new Reference_1(obj)); - return false; - } - if (isInfobox$1(obj) === true) { - obj.domain = doc.domain; // + if (this._title) { + return this._title; + } //guess the title of this page from first sentence bolding - section.infoboxes.push(new Infobox_1(obj)); - return false; - } - return true; - }); - section.templates = section.templates.map(function (obj) { - return new Template_1(obj); - }); // remove the templates from our wiki text + let guess = null; + let sen = this.sentence(); - list.forEach(function (node) { - wiki = wiki.replace(node.body, node.out); - }); - section.wiki = wiki; - }; + if (sen) { + guess = sen.bold(); + } - var template$1 = allTemplates; + return guess; + } + /** + * 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 {number} [id] The pageID that will be set + * @returns {number|null} The given or found pageID + */ - var parseSentence$6 = _04Sentence.fromText; //okay, is a xml-tag, with newline-seperated 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... - - var parseGallery = function parseGallery(section, doc) { - var wiki = section.wiki; - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/gallery>/g, function (_, attrs, inside) { - var images = inside.split(/\n/g); - images = images.filter(function (str) { - return str && str.trim() !== ''; - }); //parse the line, which has an image and sometimes a caption - - images = images.map(function (str) { - var arr = str.split(/\|/); - var obj = { - file: arr[0].trim(), - lang: doc.language, - domain: doc.domain - }; - var img = new Image_1(obj).json(); - var caption = arr.slice(1).join('|'); - if (caption !== '') { - img.caption = parseSentence$6(caption); - } + pageID(id) { + if (id !== undefined) { + this._pageID = id; + } - return img; - }); //add it to our templates list + return this._pageID || 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 {string} [id] The WikidataID that will be set + * @returns {string|null} The given or found WikidataID + */ - if (images.length > 0) { - section.templates.push({ - template: 'gallery', - images: images, - pos: section.title - }); + + wikidata(id) { + if (id !== undefined) { + this._wikidata = id; } - return ''; - }); - section.wiki = wiki; - }; + return this._wikidata || 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 {string} [str] The domain that will be set + * @returns {string|null} The given or found domain + */ - var gallery = parseGallery; - //https://en.wikipedia.org/wiki/Template:Election_box + domain(str) { + if (str !== undefined) { + this._domain = str; + } - var parseElection = function parseElection(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, function (tmpl) { - var data = { - wiki: tmpl, - templates: [] - }; //put it through our full template parser.. + return this._domain || 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 {string} [lang] The language that will be set + * @returns {string|null} The given or found language + */ - template$1(data); //okay, pull it apart into something sensible.. - var templates = data.templates.map(function (t) { - return t.json(); - }); - var start = templates.find(function (t) { - return t.template === 'election box'; - }) || {}; - var candidates = templates.filter(function (t) { - return t.template === 'election box candidate'; - }); - var summary = templates.find(function (t) { - return t.template === 'election box gain' || t.template === 'election box hold'; - }) || {}; + language(lang) { + if (lang !== undefined) { + this._lang = lang; + } - if (candidates.length > 0 || summary) { - section.templates.push({ - template: 'election box', - title: start.title, - candidates: candidates, - summary: summary.data - }); - } //remove it all + return this._lang || 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 {string|null} The url of the page + */ - return ''; - }); - section.wiki = wiki; - }; + url() { + let title = this.title(); - var election = parseElection; + if (!title) { + return null; + } - var 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'] - }; //https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start + let lang = this.language() || 'en'; + let domain = this.domain() || 'wikipedia.org'; //replace blank to underscore - var parseNBA = function parseNBA(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, function (tmpl, name) { - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{s-end\}\}/, ''); - name = name.toLowerCase().trim(); - var headers = '! ' + keys[name].join(' !! '); - var table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - var rows = parse$4(table); - rows = rows.map(function (row) { - Object.keys(row).forEach(function (k) { - row[k] = row[k].text(); - }); - return row; - }); - section.templates.push({ - template: 'NBA ' + name + ' statistics', - data: rows - }); - return ''; - }); - section.wiki = wiki; - }; + title = title.replace(/ /g, '_'); + title = encodeURIComponent(title); + return `https://${lang}.${domain}/wiki/${title}`; + } + /** + * 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 + */ - var nba = parseNBA; - //this is pretty nuts + namespace(ns) { + if (ns !== undefined) { + this._namespace = ns; + } - var whichHeadings = function whichHeadings(tmpl) { - var headings = ['#', 'date', 'opponent', 'score', 'win', 'loss', 'save', 'attendance', 'record']; + return this._namespace || null; + } + /** + * Returns if the page is a redirect + * + * @returns {boolean} Is the page a redirect + */ - if (/\|stadium=y/i.test(tmpl) === true) { - headings.splice(7, 0, 'stadium'); //save, stadium, attendance + + isRedirect() { + return this._type === 'redirect'; } + /** + * Returns information about the page this page redirects to + * + * @returns {null|object} The redirected page + */ - if (/\|time=y/i.test(tmpl) === true) { - headings.splice(7, 0, 'time'); //save, time, stadium, attendance + + redirectTo() { + return this._redirectTo; } + /** + * This function finds out if a page is a disambiguation page + * + * @returns {boolean} Whether the page is a disambiguation page + */ - if (/\|box=y/i.test(tmpl) === true) { - headings.push('box'); //record, box + + isDisambiguation() { + return isDisambig_1(this); } + /** + * If a clue is available return the category at that index + * Else return all categories + * + * @returns {string | string[]} The category at the provided index or all categories + */ - return headings; - }; - var parseMlb = function parseMlb(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, function (tmpl) { - var headings = whichHeadings(tmpl); - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, ''); - var headers = '! ' + headings.join(' !! '); - var table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - var rows = parse$4(table); - rows = rows.map(function (row) { - Object.keys(row).forEach(function (k) { - row[k] = row[k].text(); - }); - return row; - }); - section.templates.push({ - template: 'mlb game log section', - data: rows - }); - return ''; - }); - section.wiki = wiki; - }; + categories(clue) { + let arr = this._categories || []; - var mlb = parseMlb; + if (typeof clue === 'number') { + return [arr[clue]]; + } - var headings$1 = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; //https://en.wikipedia.org/wiki/Template:MMA_record_start + return arr; + } + /** + * 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 {number | string} [clue] A title of a section or a index of a wanted section + * @returns {object | object[]} A section or a array of sections + */ + + + sections(clue) { + let arr = this._sections || []; + arr.forEach(sec => { + // link-up parent and child + sec._doc = this; + }); //grab a specific section, by its title - var parseMMA = function parseMMA(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, function (tmpl) { - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{end\}\}/i, ''); - var headers = '! ' + headings$1.join(' !! '); - var table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - var rows = parse$4(table); - rows = rows.map(function (row) { - Object.keys(row).forEach(function (k) { - row[k] = row[k].text(); + if (typeof clue === 'string') { + let str = clue.toLowerCase().trim(); + return arr.filter(s => { + return s.title().toLowerCase() === str; }); - return row; - }); - section.templates.push({ - template: 'mma record start', - data: rows - }); - return ''; - }); - section.wiki = wiki; - }; + } else if (typeof clue === 'number') { + return [arr[clue]]; + } - var mma = parseMMA; + return arr; + } + /** + * 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 {number | string} [clue] given index of a paragraph + * @returns {object | object[]} the selected paragraph or an array of all paragraphs + */ - var parseSentence$7 = _04Sentence.fromText; //xml y=mx+b support - //https://en.wikipedia.org/wiki/Help:Displaying_a_formula - var parseMath = function parseMath(section) { - var wiki = section.wiki; - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/math>/g, function (_, attrs, inside) { - //clean it up a little? - var formula = parseSentence$7(inside).text(); - section.templates.push({ - template: 'math', - formula: formula, - raw: inside - }); //should we atleast try to render it in plaintext? :/ + paragraphs(clue) { + let arr = []; + this.sections().forEach(s => { + arr = arr.concat(s.paragraphs()); + }); - if (formula && formula.length < 12) { - return formula; + if (typeof clue === 'number') { + return [arr[clue]]; } - return ''; - }); //try chemistry version too + 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 + */ - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/chem>/g, function (_, attrs, inside) { - section.templates.push({ - template: 'chem', - data: inside + + sentences(clue) { + let arr = []; + this.sections().forEach(sec => { + arr = arr.concat(sec.sentences()); }); - return ''; - }); - section.wiki = wiki; - }; - var math$1 = parseMath; + if (typeof clue === 'number') { + return [arr[clue]]; + } + + return arr; + } + /** + * 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 + * + * @returns {Image[]|Image} a single image or an array of images + */ - // ... others are {{start}}...{{end}} - // -> these are those ones. - var xmlTemplates = function xmlTemplates(section, doc) { - election(section); - gallery(section, doc); - math$1(section); - mlb(section); - mma(section); - nba(section); - }; + images(clue) { + let arr = _sectionMap(this, 'images', null); //grab image from infobox, first - var startToEnd = xmlTemplates; + this.infoboxes().forEach(info => { + let img = info.image(); - var isReference$1 = new RegExp('^(' + i18n$1.references.join('|') + '):?', 'i'); - var section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines + if (img) { + arr.unshift(img); //put it at the top + } + }); //look for 'gallery' templates, too - var parse$6 = { - heading: heading, - table: table, - paragraphs: _03Paragraph, - templates: template$1, - references: reference, - startEndTemplates: startToEnd - }; + this.templates().forEach(obj => { + 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(); + img = new Image_1(img); + } - var oneSection = function oneSection(section, doc) { - parse$6.startEndTemplates(section, doc); //parse-out the tags + arr.push(img); + }); + } + }); - parse$6.references(section); //parse-out all {{templates}} + if (typeof clue === 'number') { + return [arr[clue]]; + } - parse$6.templates(section, doc); // //parse the tables + return arr; + } + /** + * Return all links or if a clue is provided only the link at that index + * + * @param {number} [clue] the index of the wanted link + * @returns {string[]|string} all the links or the selected link + */ - parse$6.table(section); //now parse all double-newlines - parse$6.paragraphs(section, doc); - section = new Section_1(section); - return section; - }; + links(clue) { + return _sectionMap(this, 'links', clue); + } + /** + * Return all inter wiki links or if a clue is provided only the inter wiki link at that index + * + * @param {number} [clue] the index of the wanted inter wiki link + * @returns {string[]|string} all the inter wiki links or the selected inter wiki link + */ - var removeReferenceSection = function removeReferenceSection(sections) { - return sections.filter(function (s, i) { - if (isReference$1.test(s.title()) === true) { - if (s.paragraphs().length > 0) { - return true; - } //does it have some wacky templates? + interwiki(clue) { + return _sectionMap(this, 'interwiki', clue); + } + /** + * If a clue is available return the list at that index + * Else return all lists + * + * @param {number} [clue] The index of the wanted list + * @returns {object | object[]} The list at the provided index or all lists + */ - if (s.templates().length > 0) { - return true; - } //what it has children? awkward + lists(clue) { + return _sectionMap(this, 'lists', 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 {object | object[]} The table at the provided index or all tables + */ - if (sections[i + 1] && sections[i + 1].depth > s.depth) { - sections[i + 1].depth -= 1; //move it up a level?... - } - return false; - } + tables(clue) { + return _sectionMap(this, 'tables', 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 {object | object[]} The category at the provided index or all categories + */ - return true; - }); - }; - var parseSections = function parseSections(doc) { - var sections = []; - var split = doc.wiki.split(section_reg); + templates(clue) { + return _sectionMap(this, 'templates', 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 {object | object[]} The category at the provided index or all references + */ - for (var i = 0; i < split.length; i += 2) { - var heading = split[i - 1] || ''; - var wiki = split[i] || ''; - if (wiki === '' && heading === '') { - //usually an empty 'intro' section - continue; - } + 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 + */ - var section = { - title: '', - depth: null, - wiki: wiki, - templates: [], - tables: [], - infoboxes: [], - references: [] - }; //figure-out title/depth - parse$6.heading(section, heading); //parse it up + citations(clue) { + return this.references(clue); + } + /** + * finds and returns all coordinates + * 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 + */ - var s = oneSection(section, doc); - sections.push(s); - } //remove empty references section + coordinates(clue) { + return _sectionMap(this, 'coordinates', 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 {object | object[]} the selected infobox or an array of infoboxes + */ - doc.sections = removeReferenceSection(sections); - }; - var _02Section = parseSections; + infoboxes(clue) { + let arr = _sectionMap(this, 'infoboxes', clue); //sort them by biggest-first - var cat_reg = new RegExp('\\[\\[:?(' + i18n$1.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'ig'); - var cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n$1.categories.join('|') + '):', 'ig'); + arr = arr.sort((a, b) => { + if (Object.keys(a.data).length > Object.keys(b.data).length) { + return -1; + } - var parse_categories = function parse_categories(doc) { - var wiki = doc.wiki; - var tmp = wiki.match(cat_reg); //regular links + return 1; + }); + return arr; + } + /** + * 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 + */ - if (tmp) { - tmp.forEach(function (c) { - c = c.replace(cat_remove_reg, ''); - c = c.replace(/\|?[ \*]?\]\]$/i, ''); //parse fancy onces.. - c = c.replace(/\|.*/, ''); //everything after the '|' is metadata + text(options) { + options = setDefaults_1(options, defaults$1); //nah, skip these. - if (c && !c.match(/[\[\]]/)) { - doc.categories.push(c.trim()); - } - }); + if (this.isRedirect() === true) { + return ''; + } + + let arr = this.sections().map(sec => sec.text(options)); + return arr.join('\n\n'); } + /** + * return a json version of the Document class + * + * @param {object} [options] options for the rendering + * @returns {object} this document as json + */ - wiki = wiki.replace(cat_reg, ''); - doc.wiki = wiki; - }; - var categories$1 = parse_categories; + json(options) { + options = setDefaults_1(options, defaults$1); + return toJson$6(this, options); + } + /** + * return original wiki markup + * + * @returns {string} markup text + */ - var parse$7 = { - section: _02Section, - categories: categories$1 - }; //convert wikiscript markup lang to json - var main = function main(wiki, options) { - options = options || {}; - var data = Object.assign(options, { - title: options.title || null, - pageID: options.pageID || options.id || null, - namespace: options.namespace || options.ns || null, - type: 'page', - wiki: wiki || '', - categories: [], - sections: [], - coordinates: [] - }); //detect if page is just redirect, and return it + wikitext() { + return this._wiki || ''; + } + /** + * prints the title of every section + * + * @returns {Document} the document itself + */ + - if (redirects$1.isRedirect(wiki) === true) { - data.type = 'redirect'; - data.redirectTo = redirects$1.parse(wiki); - parse$7.categories(data); - return new Document_1(data); - } //give ourselves a little head-start + debug() { + console.log('\n'); + this.sections().forEach(sec => { + let indent = ' - '; + for (let i = 0; i < sec.depth(); i += 1) { + indent = ' -' + indent; + } - preProcess_1(data); //pull-out [[category:whatevers]] + console.log(indent + (sec.title() || '(Intro)')); + }); + return this; + } - parse$7.categories(data); //parse all the headings, and their texts/sentences + } // aliases - parse$7.section(data); //all together now - return new Document_1(data); + 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); + return arr[0] || null; + }; + }); + 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; + var Document_1 = Document; - var _01Document = main; + /** + * 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 + */ - var parseDoc = function parseDoc(res) { - res = res.filter(function (o) { - return o; - }); - var docs = res.map(function (o) { - return _01Document(o.wiki, o.meta); - }); + const parseDoc = function (res) { + // filter out undefined + res = res.filter(o => o); // put all the responses into Document formats + + let docs = res.map(o => { + return new Document_1(o.wiki, o.meta); + }); // if the list is empty than there are no results if (docs.length === 0) { return null; - } + } // if there is only one response then we can get it out of the array + if (docs.length === 1) { return docs[0]; @@ -8724,21 +9418,18 @@ return docs; }; - var _03ParseDoc = parseDoc; + var parseDoc_1 = parseDoc; - // use the native client-side fetch function - var request = function request(url, opts) { - //eslint-disable-next-line - return fetch(url, opts).then(function (res) { - return res.json(); - }); - }; - - var client = request; - - var makeHeaders = function makeHeaders(options) { - var agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library'; - var origin; + /** + * factory for header options + * + * @private + * @param {object} options + * @returns {object} 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 origin; if (options.noOrigin) { origin = ''; @@ -8746,76 +9437,91 @@ origin = options.origin || options.Origin || '*'; } - var opts = { + return { method: 'GET', headers: { 'Content-Type': 'application/json', 'Api-User-Agent': agent, 'User-Agent': agent, - Origin: origin + Origin: origin, + 'Accept-Encoding': 'gzip' }, redirect: 'follow' }; - return opts; }; var _headers = makeHeaders; - var isUrl = /^https?:\/\//; - var defaults$c = { + 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 | number | Array | 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 }; + /** + * @callback fetchCallback + * @param {Object} error + * @param {(null | Document | Document[])} response + */ - var fetch$1 = function fetch(title, options, c) { - var callback = null; - - if (typeof options === 'function') { - callback = options; - options = {}; - } - - if (typeof c === 'function') { - callback = c; - c = {}; - } //support lang 2nd param - + /** + * fetches the page from the wiki and returns a Promise with the parsed wiki text + * + * @param {string | number | Array | Array} title the title, PageID, URL or an array of all three of the page(s) you want to fetch + * @param {fetchDefaults} [options] the options for the fetch or the language of the wiki for the article + * @param {fetchCallback} [callback] the callback function for the call + * @returns {Promise} either null if the pages is not found, Document if you asked for one result, and a array of Documents if you asked for multiple pages + */ + const fetch$1 = function (title, options, callback) { + // support lang as 2nd param if (typeof options === 'string') { - c = c || {}; - options = Object.assign({}, { + options = { lang: options - }, c); + }; } - options = options || {}; - options = Object.assign({}, defaults$c, options); - options.title = title; // parse url input + options = { ...defaults, + ...options + }; + options.title = title; //parse url input - if (isUrl.test(title)) { - options = Object.assign(options, _00ParseUrl(title)); + if (typeof title === 'string' && isUrl.test(title)) { + options = { ...options, + ...parseUrl_1(title) + }; } - var url = _01MakeUrl(options); - var headers = _headers(options); - return client(url, headers).then(function (res) { - try { - var data = _02GetResult(res, options); - data = _03ParseDoc(data); - - if (callback) { - callback(null, data); - } + const url = makeUrl_1(options); + const headers = _headers(options); + return browser(url, headers).then(res => res.json()).then(res => { + let data = getResult_1(res, options); + data = parseDoc_1(data); - return data; - } catch (e) { - throw e; + if (callback) { + callback(null, data); } - })["catch"](function (e) { + + return data; + }).catch(e => { console.error(e); if (callback) { @@ -8828,157 +9534,31 @@ var _fetch = fetch$1; - var defaults$d = { - lang: 'en', - wiki: 'wikipedia', - domain: null, - path: 'w/api.php' //some 3rd party sites use a weird path - - }; - - var isObject$1 = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - - var fetchRandom = function fetchRandom(lang, options) { - options = options || {}; - options = Object.assign({}, defaults$d, options); //support lang 2nd param - - if (typeof lang === 'string') { - options.lang = lang; - } else if (isObject$1(lang)) { - options = Object.assign(options, lang); - } - - var url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); - - if (options.domain) { - url = "https://".concat(options.domain, "/").concat(options.path, "?"); - } - - url += "format=json&action=query&generator=random&grnnamespace=0&prop=revisions|pageprops&rvprop=content&grnlimit=1&rvslots=main&origin=*"; - var headers = _headers(options); - return client(url, headers).then(function (res) { - try { - var data = _02GetResult(res); - return _03ParseDoc(data); - } catch (e) { - throw e; - } - })["catch"](function (e) { - console.error(e); - return null; - }); - }; - - var random = fetchRandom; - - var defaults$e = { - lang: 'en', - wiki: 'wikipedia', - domain: null, - path: 'w/api.php' //some 3rd party sites use a weird path - - }; - - var normalizeCategory = function normalizeCategory() { - var cat = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - if (/^Category/i.test(cat) === false) { - cat = 'Category:' + cat; - } - - cat = cat.replace(/ /g, '_'); - return cat; - }; - - var isObject$2 = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - - var getResult$1 = function getResult(body) { - var list = body.query.categorymembers || []; - var res = { - pages: [], - categories: [] - }; - list.forEach(function (p) { - if (p.ns === 14) { - delete p.ns; - res.categories.push(p); - } else { - delete p.ns; - res.pages.push(p); - } - }); - return res; - }; - - var makeUrl$1 = function makeUrl(category, options, cm) { - category = normalizeCategory(category); - category = encodeURIComponent(category); - var url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); - - if (options.domain) { - url = "https://".concat(options.domain, "/").concat(options.path, "?"); - } - - url += "action=query&list=categorymembers&cmtitle=".concat(category, "&cmlimit=500&format=json&origin=*&redirects=true&cmtype=page|subcat"); - - if (cm) { - url += '&cmcontinue=' + cm; - } - - return url; - }; - - var fetchCategory = function fetchCategory(category, lang, options) { - options = options || {}; - options = Object.assign({}, defaults$e, options); //support lang 2nd param - - if (typeof lang === 'string') { - options.lang = lang; - } else if (isObject$2(lang)) { - options = Object.assign(options, lang); - } + var _version = '9.0.0'; - var res = { - pages: [], - categories: [] - }; // wrap a promise around potentially-many requests - - return new Promise(function (resolve, reject) { - var doit = function doit(cm) { - var url = makeUrl$1(category, options, cm); - var headers = _headers(options); - return client(url, headers).then(function (body) { - res = getResult$1(body); - - if (body["continue"] && body["continue"].cmcontinue) { - doit(body["continue"].cmcontinue); - } else { - resolve(res); - } - })["catch"](function (e) { - console.error(e); - reject(e); - }); - }; + /** + * 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 + */ - doit(null); + const request = function (url, opts) { + return browser(url, opts).then(function (res) { + return res.json(); }); }; - var category = fetchCategory; - - var _version = '8.5.1'; + var fetch = request; - var wtf = function wtf(wiki, options) { - return _01Document(wiki, options); - }; // export classes for plugin development + const wtf = function (wiki, options) { + return new Document_1(wiki, options); + }; //export classes for plugin development - var models = { + const models = { Doc: Document_1, Section: Section_1, Paragraph: Paragraph_1, @@ -8990,7 +9570,7 @@ Reference: Reference_1, Table: Table_1, Template: Template_1, - http: client, + http: fetch, wtf: wtf }; @@ -8998,19 +9578,12 @@ return _fetch(title, lang, options); }; - wtf.random = function (lang, options, cb) { - return random(lang, options); - }; - - wtf.category = function (cat, lang, options, cb) { - return category(cat, lang, options); - }; - wtf.extend = function (fn) { - fn(models, templates$e, this); + fn(models, custom, _infoboxes); return this; }; + wtf.plugin = wtf.extend; wtf.version = _version; var src = wtf; diff --git a/builds/wtf_wikipedia-client.min.js b/builds/wtf_wikipedia-client.min.js index 8136acf7..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=function(e){var t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};function t(e){return(t="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})(e)}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var i=[],n=!0,a=!1,r=void 0;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done)&&(i.push(o.value),!t||i.length!==t);n=!0);}catch(e){a=!0,r=e}finally{try{n||null==s.return||s.return()}finally{if(a)throw r}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);"Object"===i&&e.constructor&&(i=e.constructor.name);if("Map"===i||"Set"===i)return Array.from(e);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return n(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);iObject.keys(t.data).length?-1:1})),"number"==typeof e?t[e]:t},text:function(e){return e=p(e,j),!0===this.isRedirect()?"":this.sections().map((function(t){return t.text(e)})).join("\n\n")},json:function(e){return e=p(e,j),d(this,e)},debug:function(){return console.log("\n"),this.sections().forEach((function(e){for(var t=" - ",i=0;i500)&&M.test(e)},U=function(e){var t=e.match(M);return t&&t[2]?(P(t[2])||[])[0]:{}},F=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],K="< ?(".concat(F.join("|"),") ?[^>]{0,200}?>"),B="< ?/ ?(".concat(F.join("|"),") ?>"),W=new RegExp("".concat(K,"[").concat("\\s\\S","]+?").concat(B),"ig"),Y=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(W," ")).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 Z=function(e){var t=e.wiki;t=(t=(t=(t=(t=(t=(t=(t=(t=t.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," "),t=(t=(t=Y(t)).replace(/\([,;: ]+?\)/g,"")).replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,""),e.wiki=t},G=/[\\\.$]/,H=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")},V=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e),i=0;i0&&(i.paragraphs=n)}if(!0===t.images){var a=e.images().map((function(e){return e.json(t)}));a.length>0&&(i.images=a)}if(!0===t.tables){var r=e.tables().map((function(e){return e.json(t)}));r.length>0&&(i.tables=r)}if(!0===t.templates){var o=e.templates();o.length>0&&(i.templates=o,!0===t.encode&&i.templates.forEach((function(e){return V(e)})))}if(!0===t.infoboxes){var s=e.infoboxes().map((function(e){return e.json(t)}));s.length>0&&(i.infoboxes=s)}if(!0===t.lists){var c=e.lists().map((function(e){return e.json(t)}));c.length>0&&(i.lists=c)}if(!0===t.references||!0===t.citations){var u=e.references().map((function(e){return e.json(t)}));u.length>0&&(i.references=u)}return!0===t.sentences&&(i.sentences=e.sentences().map((function(e){return e.json(t)}))),i},X={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0},ee=function(e){this.depth=e.depth,this.doc=null,this._title=e.title||"",Object.defineProperty(this,"doc",{enumerable:!1,value:null}),e.templates=e.templates||[],Object.defineProperty(this,"data",{enumerable:!1,value:e})},te={title:function(){return this._title||""},index:function(){if(!this.doc)return null;var e=this.doc.sections().indexOf(this);return-1===e?null:e},indentation:function(){return this.depth},sentences:function(e){var t=this.paragraphs().reduce((function(e,t){return e.concat(t.sentences())}),[]);return"number"==typeof e?t[e]:t||[]},paragraphs:function(e){var t=this.data.paragraphs||[];return"number"==typeof e?t[e]:t||[]},paragraph:function(e){var t=this.data.paragraphs||[];return"number"==typeof e?t[e]:t[0]},links:function(e){var t=[];if(this.infoboxes().forEach((function(i){i.links(e).forEach((function(e){return t.push(e)}))})),this.sentences().forEach((function(i){i.links(e).forEach((function(e){return t.push(e)}))})),this.tables().forEach((function(i){i.links(e).forEach((function(e){return t.push(e)}))})),this.lists().forEach((function(i){i.links(e).forEach((function(e){return t.push(e)}))})),"number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t},tables:function(e){var t=this.data.tables||[];return"number"==typeof e?t[e]:t},templates:function(e){var t=this.data.templates||[];return t=t.map((function(e){return e.json()})),"number"==typeof e?t[e]:"string"==typeof e?(e=e.toLowerCase(),t.filter((function(t){return t.template===e||t.name===e}))):t},infoboxes:function(e){var t=this.data.infoboxes||[];return"number"==typeof e?t[e]:t},coordinates:function(e){var t=[].concat(this.templates("coord"),this.templates("coor"));return"number"==typeof e?t[e]?t[e]:[]:t},lists:function(e){var t=[];return this.paragraphs().forEach((function(e){t=t.concat(e.lists())})),"number"==typeof e?t[e]:t},interwiki:function(e){var t=[];return this.paragraphs().forEach((function(e){t=t.concat(e.interwiki())})),"number"==typeof e?t[e]:t||[]},images:function(e){var t=[];return this.paragraphs().forEach((function(e){t=t.concat(e.images())})),"number"==typeof e?t[e]:t||[]},references:function(e){var t=this.data.references||[];return"number"==typeof e?t[e]:t},remove:function(){if(!this.doc)return null;var e={};e[this.title()]=!0,this.children().forEach((function(t){return e[t.title()]=!0}));var t=this.doc.data.sections;return t=t.filter((function(t){return!0!==e.hasOwnProperty(t.title())})),this.doc.data.sections=t,this.doc},nextSibling:function(){if(!this.doc)return null;for(var e=this.doc.sections(),t=this.index()+1;tthis.depth)for(var a=i+1;athis.depth;a+=1)n.push(t[a]);return"string"==typeof e?(e=e.toLowerCase(),n.find((function(t){return t.title().toLowerCase()===e}))):"number"==typeof e?n[e]:n},parent:function(){if(!this.doc)return null;for(var e=this.doc.sections(),t=this.index();t>=0;t-=1)if(e[t]&&e[t].depth0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e},le=/^[0-9,.]+$/,pe={text:!0,links:!0,formatting:!0,numbers:!0},me=function(e,t){t=p(t,pe);var i={},n=e.text();if(!0===t.text&&(i.text=n),!0===t.numbers&&le.test(n)){var a=Number(n.replace(/,/g,""));!1===isNaN(a)&&(i.number=a)}return t.links&&e.links().length>0&&(i.links=e.links().map((function(e){return e.json()}))),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i},de=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},fe={links:function(e){var t=this.data.links||[];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page===e}));return void 0===i?[]:[i]}return t},interwiki:function(e){var t=this.links().filter((function(e){return void 0!==e.wiki}));return"number"==typeof e?t[e]:t},bolds:function(e){var t=[];return this.data&&this.data.fmt&&this.data.fmt.bold&&(t=this.data.fmt.bold||[]),"number"==typeof e?t[e]:t},italics:function(e){var t=[];return this.data&&this.data.fmt&&this.data.fmt.italic&&(t=this.data.fmt.italic||[]),"number"==typeof e?t[e]:t},dates:function(e){var t=[];return"number"==typeof e?t[e]:t},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return me(this,e)}};Object.keys(fe).forEach((function(e){de.prototype[e]=fe[e]})),de.prototype.italic=de.prototype.italics,de.prototype.bold=de.prototype.bolds,de.prototype.plaintext=de.prototype.text;var ge=de,he=["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("[^]][^]]"),be=new RegExp("(^| |')("+he.join("|")+")[.!?] ?$","i"),ke=new RegExp("[ |.|'|[][A-Z].? *?$","i"),we=new RegExp("\\.\\.\\.* +?$"),ve=/ c\. $/,ye=new RegExp("[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]","iu"),xe=function(e){var t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;for(var n=function(e){var t=e.split(/(\n+)/);return function(e){var t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t=(t=t.filter((function(e){return e.match(/\S/)}))).map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s+|$)/g)})))}(e),a=0;ai.length)return!1;var n=e.match(/"/g);return!(n&&n.length%2!=0&&e.length<900)}(o))?i[s+1]=i[s]+(i[s+1]||""):i[s]&&i[s].length>0&&(t.push(i[s]),i[s]="");return 0===t.length?[e]:t};function $e(e){var t,i={text:e};return ce(i),i.text=(t=(t=(t=i.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(t=ne(t)).replace(/ +\.$/,".")),i=ue(i),new ge(i)}var je=$e,ze=function(e){var t=xe(e.wiki);(t=t.map($e))[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t},Oe=function(e){return e=(e=e.replace(/^\{\{/,"")).replace(/\}\}$/,"")},Ee=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")},_e=function(e){var t=e.split(/\n?\|/);t.forEach((function(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)}));for(var i=(t=(t=t.filter((function(e){return null!==e}))).map((function(e){return(e||"").trim()}))).length-1;i>=0;i-=1){""===t[i]&&t.pop();break}return t},Se=/^[ '-\)\x2D\.0-9_a-z\xC0-\xFF\u0153\u017F\u1E9E\u212A\u212B]+=/i,Ce={template:!0,list:!0,prototype:!0},qe=function(e,t){var i=0;return e.reduce((function(e,n){if(n=(n||"").trim(),!0===Se.test(n)){var a=function(e){var t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();var n=t.slice(1).join("=");return Ce.hasOwnProperty(i)&&(i="_"+i),{key:i,val:n.trim()}}(n);if(a.key)return e[a.key]=a.val,e}t&&t[i]?e[t[i]]=n:(e.list=e.list||[],e.list.push(n));return i+=1,e}),{})},Ne={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},Ae=function(e){return Object.keys(e).forEach((function(t){!0===Ne[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]})),e},Le=je,De=function(e,t){var i=Le(e);return"json"===t?i.json():"raw"===t?i:i.text()},Te=function(e,t,i){t=t||[],e=Oe(e||"");var n=_e(e),a=n.shift(),r=qe(n,t);return(r=Ae(r))[1]&&t[0]&&!1===r.hasOwnProperty(t[0])&&(r[t[0]]=r[1],delete r[1]),Object.keys(r).forEach((function(e){r[e]="list"!==e?De(r[e],i):r[e].map((function(e){return De(e,i)}))})),a&&(r.template=Ee(a)),r},Ie=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},Pe={title:function(){var e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){var 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);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t||[]},text:function(){return""},json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=V(t)),t}};Object.keys(Pe).forEach((function(e){Ie.prototype[e]=Pe[e]}));var Me=Ie,Re=je,Ue=function(e){return/^ *?\{\{ *?(cite|citation)/i.test(e)&&/\}\} *?$/.test(e)&&!1===/citation needed/i.test(e)},Fe=function(e){var t=Te(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},Ke=function(e){return{template:"citation",type:"inline",data:{},inline:Re(e)||{}}},Be=function(e){var t=[],i=e.wiki;i=(i=(i=(i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,n){if(Ue(n)){var a=Fe(n);a&&t.push(a),i=i.replace(n,"")}else t.push(Ke(n));return" "}))).replace(/ ?]{0,200}?\/> ?/gi," ")).replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,n){if(Ue(n)){var a=Fe(n);a&&t.push(a),i=i.replace(n,"")}else t.push(Ke(n));return" "}))).replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g," "),e.references=t.map((function(e){return new Me(e)})),e.wiki=i},We=je,Ye=/^(={1,5})(.{1,200}?)={1,5}$/,Ze=function(e,t){var i=t.match(Ye);if(!i)return e.title="",e.depth=0,e;var n=i[2]||"",a={wiki:n=(n=We(n).text()).replace(/\{\{.+?\}\}/,"")};Be(a),n=ne(n=a.wiki);var r=0;return i[1]&&(r=i[1].length-2),e.title=n,e.depth=r,e},Ge=function(e){var t=[],i=[];e=function(e){return e=e.filter((function(e){return 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(var n=0;n0&&(t.push(i),i=[]):(!(a=a.split(/(?:\|\||!!)/))[0]&&a[1]&&a.shift(),a.forEach((function(e){e=(e=e.replace(/^\| */,"")).trim(),i.push(e)})))}return i.length>0&&t.push(i),t},He=/.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/,Ve=/.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/,Je=function(e){return e=function(e){return e.forEach((function(t,i){t.forEach((function(n,a){var r=n.match(He);if(null!==r){var o=parseInt(r[1],10);n=n.replace(He,""),t[a]=n;for(var s=i+1;s0}))}(e))},Qe=je,Xe=/^!/,et={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},tt=function(e){return(e=Qe(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},it=function(e){return(e=e||[]).length-e.filter((function(e){return e})).length>3},nt=function(e){if(e.length<=3)return[];var t=e[0].slice(0);t=t.map((function(e){return e=e.replace(/^\! */,""),e=Qe(e).text(),e=(e=tt(e)).toLowerCase()}));for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:[],t=[];it(e[0])&&e.shift();var i=e[0];return i&&i[0]&&i[1]&&(/^!/.test(i[0])||/^!/.test(i[1]))&&(t=i.map((function(e){return e=e.replace(/^\! */,""),tt(e)})),e.shift()),(i=e[0])&&i[0]&&i[1]&&/^!/.test(i[0])&&/^!/.test(i[1])&&(i.forEach((function(e,i){e=e.replace(/^\! */,""),e=tt(e),!0===Boolean(e)&&(t[i]=e)})),e.shift()),t}(i=Je(i));if(!n||n.length<=1){n=nt(i);var a=i[i.length-1]||[];n.length<=1&&a.length>2&&(n=nt(i.slice(1))).length>0&&(i=i.slice(2))}return i.map((function(e){return function(e,t){var i={};return e.forEach((function(e,n){var a=t[n]||"col"+(n+1),r=Qe(e);r.text(tt(r.text())),i[a]=r})),i}(e,n)}))},rt=function(e,t){return e.map((function(e){var i={};return Object.keys(e).forEach((function(t){i[t]=e[t].json()})),!0===t.encode&&(i=V(i)),i}))},ot={},st=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},ct={links:function(e){var t=[];if(this.data.forEach((function(e){Object.keys(e).forEach((function(i){t=t.concat(e[i].links())}))})),"number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t},keyValue:function(e){var t=this.json(e);return t.forEach((function(e){Object.keys(e).forEach((function(t){e[t]=e[t].text}))})),t},json:function(e){return e=p(e,ot),rt(this.data,e)},text:function(){return""}};ct.keyvalue=ct.keyValue,ct.keyval=ct.keyValue,Object.keys(ct).forEach((function(e){st.prototype[e]=ct[e]}));var ut=st,lt=/^\s*{\|/,pt=/^\s*\|}/,mt=function(e){for(var t=[],i=e.wiki,n=i.split("\n"),a=[],r=0;r0&&(a[a.length-1]+="\n"+n[r]);else{a[a.length-1]+="\n"+n[r];var o=a.pop();t.push(o)}else a.push(n[r]);var s=[];t.forEach((function(e){if(e){i=(i=i.replace(e+"\n","")).replace(e,"");var t=at(e);t&&t.length>0&&s.push(new ut(t))}})),s.length>0&&(e.tables=s),e.wiki=i},dt={sentences:!0},ft=function(e,t){var i={};return!0===(t=p(t,dt)).sentences&&(i.sentences=e.sentences().map((function(e){return e.json(t)}))),i},gt={sentences:!0,lists:!0,images:!0},ht=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},bt={sentences:function(e){return"number"==typeof e?this.data.sentences[e]:this.data.sentences||[]},references:function(e){return"number"==typeof e?this.data.references[e]:this.data.references},lists:function(e){return"number"==typeof e?this.data.lists[e]:this.data.lists},images:function(e){return"number"==typeof e?this.data.images[e]:this.data.images||[]},links:function(e){var t=[];if(this.sentences().forEach((function(i){t=t.concat(i.links(e))})),"number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t||[]},interwiki:function(e){var t=[];return this.sentences().forEach((function(e){t=t.concat(e.interwiki())})),"number"==typeof e?t[e]:t||[]},text:function(e){e=p(e,gt);var t=this.sentences().map((function(t){return t.text(e)})).join(" ");return this.lists().forEach((function(e){t+="\n"+e.text()})),t},json:function(e){return e=p(e,gt),ft(this,e)}};bt.citations=bt.references,Object.keys(bt).forEach((function(e){ht.prototype[e]=bt[e]}));var kt=ht;var wt=function(e){for(var t=[],i=[],n=e.split(""),a=0,r=0;r0){for(var s=0,c=0,u=0;uc&&i.push("]"),t.push(i.join("")),i=[]}}return t},vt=je,yt=new RegExp("("+_.images.join("|")+"):","i"),xt="(".concat(_.images.join("|"),")"),$t=new RegExp(xt+":(.+?)[\\||\\]]","iu"),jt={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},zt=function(e,t){var i=e.wiki;wt(i).forEach((function(n){if(!0===yt.test(n)){e.images=e.images||[];var a=function(e,t){var i=e.match($t);if(null===i||!i[2])return null;var n="".concat(i[1],":").concat(i[2]||""),a=(n=n.trim()).charAt(0).toUpperCase()+n.substring(1);if(a=a.replace(/ /g,"_")){var r={file:n,lang:t.lang,domain:t.domain};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");var o=Te(e),s=o.list||[];return o.alt&&(r.alt=o.alt),(s=s.filter((function(e){return!1===jt.hasOwnProperty(e)})))[s.length-1]&&(r.caption=vt(s[s.length-1])),new $(r)}return null}(n,t);a&&e.images.push(a),i=i.replace(n,"")}})),e.wiki=i},Ot={},Et=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},_t={lines:function(){return this.data},links:function(e){var t=[];if(this.lines().forEach((function(e){t=t.concat(e.links())})),"number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t},json:function(e){return e=p(e,Ot),this.lines().map((function(t){return t.json(e)}))},text:function(){return function(e,t){return e.map((function(e){return" * "+e.text(t)})).join("\n")}(this.data)}};Object.keys(_t).forEach((function(e){Et.prototype[e]=_t[e]}));var St=Et,Ct=je,qt=/^[#\*:;\|]+/,Nt=/^\*+[^:,\|]{4}/,At=/^ ?\#[^:,\|]{4}/,Lt=/[a-z_0-9\]\}]/i,Dt=function(e){return qt.test(e)||Nt.test(e)||At.test(e)},Tt=function(e,t){for(var i=[],n=t;n0&&(i.push(r),a+=r.length-1)}else n.push(t[a]);e.lists=i.map((function(e){return new St(e)})),e.wiki=n.join("\n")}},Rt=function(e,t){var i=e.wiki,n=i.split(Pt);n=(n=n.filter((function(e){return e&&e.trim().length>0}))).map((function(e){var i={wiki:e,lists:[],sentences:[],images:[]};return Mt.list(i),Mt.image(i,t),It(i),new kt(i)})),e.wiki=i,e.paragraphs=n},Ut=function(e,t){var i=Object.keys(e.data).reduce((function(t,i){return e.data[i]&&(t[i]=e.data[i].json()),t}),{});return!0===t.encode&&(i=V(i)),i},Ft=function(e){return(e=(e=e.toLowerCase()).replace(/[-_]/g," ")).trim()},Kt=function(e){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data})},Bt={type:function(){return this._type},links:function(e){var t=this,i=[];if(Object.keys(this.data).forEach((function(e){t.data[e].links().forEach((function(e){return i.push(e)}))})),"number"==typeof e)return i[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var n=i.find((function(t){return t.page()===e}));return void 0===n?[]:[n]}return i},image:function(){var e=this.get("image")||this.get("image2")||this.get("logo");if(!e)return null;var t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new $(t)},get:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";e=Ft(e);for(var t=Object.keys(this.data),i=0;i0?a++:a=e.indexOf(Yt,a+1)){var r=e[a];if(r===Yt&&(t+=1),t>0){if("}"===r&&0===(t-=1)){n.push(r);var o=n.join("");n=[],/\{\{/.test(o)&&/\}\}/.test(o)&&i.push(o);continue}if(1===t&&r!==Yt&&"}"!==r){t=0,n=[];continue}n.push(r)}}return i},Gt=function(e){var t=null;return(t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+?)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1])&&(t=t.replace(/:.*/,""),t=Ee(t)),t||null},Ht=/\{\{/,Vt=function(e){return{body:e=e.replace(/#invoke:/,""),name:Gt(e),children:[]}},Jt=function e(t){var i=t.body.substr(2);return i=i.replace(/\}\}$/,""),t.children=Zt(i),t.children=t.children.map(Vt),0===t.children.length||t.children.forEach((function(t){var i=t.body.substr(2);return Ht.test(i)?e(t):null})),t},Qt=function(e){var t=Zt(e);return t=(t=t.map(Vt)).map(Jt)},Xt=["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((function(e,t){return e[t]=!0,e}),{}),ei=new RegExp("^(subst.)?("+_.infoboxes.join("|")+")[: \n]","i"),ti=/^infobox /i,ii=/ infobox$/i,ni=/$Year in [A-Z]/i,ai={"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},ri=function(e){return!0===ai.hasOwnProperty(e)||(!!ei.test(e)||(!(!ti.test(e)&&!ii.test(e))||!!ni.test(e)))},oi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.template.match(ei),i=e.template;t&&t[0]&&(i=i.replace(t[0],""));var n={template:"infobox",type:i=i.trim(),data:e};return delete n.data.template,delete n.data.list,n},si=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],ci=si.reduce((function(e,t,i){return 0===i||(e[t.toLowerCase()]=i),e}),{}),ui=function(e){return e<10?"0"+e:String(e)},li=function(e){var t=String(e.year||"");if(void 0!==e.month&&!0===si.hasOwnProperty(e.month))if(void 0===e.date)t="".concat(si[e.month]," ").concat(e.year);else{if(t="".concat(si[e.month]," ").concat(e.date,", ").concat(e.year),void 0!==e.hour&&void 0!==e.minute){var i="".concat(ui(e.hour),":").concat(ui(e.minute));void 0!==e.second&&(i=i+":"+ui(e.second)),t=i+", "+t}e.tz&&(t+=" (".concat(e.tz,")"))}return t},pi=function(e){for(var t={},i=["year","month","date","hour","minute","second"],n=0;n0&&(n.years=a,i-=n.years*gi);var r=Math.floor(i/fi,10);r>0&&(n.months=r,i-=n.months*fi);var o=Math.floor(i/di,10);return o>0&&(n.days=o),n},ki=pi,wi=li,vi=function(e){return{template:"date",data:e}},yi=function(e){var t=(e=Oe(e)).split("|"),i=ki(t.slice(1,4)),n=t.slice(4,7);if(0===n.length){var a=new Date;n=[a.getFullYear(),a.getMonth(),a.getDate()]}return{from:i,to:n=ki(n)}},xi={date:function(e,t){var i=Te(e,["year","month","date","hour","minute","second","timezone"]),n=ki([i.year,i.month,i.date||i.day]);return i.text=wi(n),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=" (".concat(i.timezone,")")),i.hour&&i.minute&&(i.second?i.text="".concat(i.hour,":").concat(i.minute,":").concat(i.second,", ")+i.text:i.text="".concat(i.hour,":").concat(i.minute,", ")+i.text),i.text&&t.push(vi(i)),i.text},natural_date:function(e,t){var i=Te(e,["text"]).text||"",n={};if(/^[0-9]{4}$/.test(i))n.year=parseInt(i,10);else{var a=i.replace(/[a-z]+\/[a-z]+/i,"");a=a.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");var r=new Date(a);!1===isNaN(r.getTime())&&(n.year=r.getFullYear(),n.month=r.getMonth()+1,n.date=r.getDate())}return t.push(vi(n)),i.trim()},one_year:function(e,t){var i=Te(e,["year"]),n=Number(i.year);return t.push(vi({year:n})),String(n)},two_dates:function(e,t){var i=Te(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){var n=ki([i.birth_year,i.birth_month,i.birth_date]);return t.push(vi(n)),wi(n)}var a=ki([i.death_year,i.death_month,i.death_date]);return t.push(vi(a)),wi(a)},age:function(e){var t=yi(e);return bi(t.from,t.to).years||0},"diff-y":function(e){var t=yi(e),i=bi(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":function(e){var t=yi(e),i=bi(t.from,t.to),n=[];return 1===i.years?n.push(i.years+" year"):i.years&&0!==i.years&&n.push(i.years+" years"),1===i.months?n.push("1 month"):i.months&&0!==i.months&&n.push(i.months+" months"),n.join(", ")},"diff-ymd":function(e){var t=yi(e),i=bi(t.from,t.to),n=[];return 1===i.years?n.push(i.years+" year"):i.years&&0!==i.years&&n.push(i.years+" years"),1===i.months?n.push("1 month"):i.months&&0!==i.months&&n.push(i.months+" months"),1===i.days?n.push("1 day"):i.days&&0!==i.days&&n.push(i.days+" days"),n.join(", ")},"diff-yd":function(e){var t=yi(e),i=bi(t.from,t.to),n=[];return 1===i.years?n.push(i.years+" year"):i.years&&0!==i.years&&n.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?n.push("1 day"):i.days&&0!==i.days&&n.push(i.days+" days"),n.join(", ")},"diff-d":function(e){var t=yi(e),i=bi(t.from,t.to),n=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?n.push("1 day"):i.days&&0!==i.days&&n.push(i.days+" days"),n.join(", ")}},$i=function(e){var t=new Date(e);if(isNaN(t.getTime()))return"";var i=(new Date).getTime()-t.getTime(),n="ago";i<0&&(n="from now",i=Math.abs(i));var a=i/1e3/60/60/24;return a<365?parseInt(a,10)+" days "+n:parseInt(a/365,10)+" years "+n},ji=xi.date,zi=xi.natural_date,Oi=["January","February","March","April","May","June","July","August","September","October","November","December"],Ei=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],_i=Object.assign({},mi,{currentday:function(){var e=new Date;return String(e.getDate())},currentdayname:function(){var e=new Date;return Ei[e.getDay()]},currentmonth:function(){var e=new Date;return Oi[e.getMonth()]},currentyear:function(){var e=new Date;return String(e.getFullYear())},monthyear:function(){var e=new Date;return Oi[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":function(){var e=new Date;return e.setMonth(e.getMonth()-1),Oi[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":function(){var e=new Date;return e.setMonth(e.getMonth()+1),Oi[e.getMonth()]+" "+e.getFullYear()},date:0,"time ago":function(e){var t=Te(e,["date","fmt"]).date;return $i(t)},"birth date and age":function(e,t){var i=Te(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?zi(e,t):(t.push(i),i=pi([i.year,i.month,i.day]),li(i))},"birth year and age":function(e,t){var i=Te(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return zi(e,t);t.push(i);var n=(new Date).getFullYear()-parseInt(i.birth_year,10);i=pi([i.birth_year,i.birth_month]);var a=li(i);return n&&(a+=" (age ".concat(n,")")),a},"death year and age":function(e,t){var i=Te(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?zi(e,t):(t.push(i),i=pi([i.death_year,i.death_month]),li(i))},"birth date and age2":function(e,t){var i=Te(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":function(e,t){var i=Te(e,["age","year","month","day"]);t.push(i);var n=parseInt(i.age,10),a=parseInt(i.year,10)-n;return a&&n?"".concat(a," (age ").concat(i.age,")"):"(age ".concat(i.age,")")},"death date and given age":function(e,t){var i=Te(e,["year","month","day","age"]);t.push(i),i=pi([i.year,i.month,i.day]);var n=li(i);return i.age&&(n+=" (age ".concat(i.age,")")),n},dts:function(e){e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");var t=Te(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):""},start:ji,end:ji,birth:ji,death:ji,"start date":ji,"end date":ji,"birth date":ji,"death date":ji,"start date and age":ji,"end date and age":ji,"start-date":zi,"end-date":zi,"birth-date":zi,"death-date":zi,"birth-date and age":zi,"birth-date and given age":zi,"death-date and age":zi,"death-date and given age":zi,birthdeathage:xi.two_dates,dob:ji,age:xi.age,"age nts":xi.age,"age in years":xi["diff-y"],"age in years and months":xi["diff-ym"],"age in years, months and days":xi["diff-ymd"],"age in years and days":xi["diff-yd"],"age in days":xi["diff-d"]});_i.localday=_i.currentday,_i.localdayname=_i.currentdayname,_i.localmonth=_i.currentmonth,_i.localyear=_i.currentyear,_i.currentmonthname=_i.currentmonth,_i.currentmonthabbrev=_i.currentmonth,_i["death date and age"]=_i["birth date and age"],_i.bda=_i["birth date and age"],_i["birth date based on age at death"]=_i["birth based on age as of date"];var Si=_i,Ci={tag:function(e){var t=Te(e,["tag","open"]);return t.open&&"pair"!==t.open?"":{span:!0,div:!0,p:!0}[t.tag]?t.content||"":"<".concat(t.tag," ").concat(t.attribs||"",">").concat(t.content||"","")},plural:function(e){e=e.replace(/plural:/,"plural|");var t=Te(e,["num","word"]),i=Number(t.num),n=t.word;return 1!==i&&(/.y$/.test(n)?n=n.replace(/y$/,"ies"):n+="s"),i+" "+n},"first word":function(e){var t=Te(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:function(e){var t=Te(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":function(e){var t=Te(e,["str","start","end"]),i=parseInt(t.start,10)-1,n=parseInt(t.end,10);return t.str.substr(i,n)},p1:0,p2:1,p3:2,braces:function(e){var t=Te(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},nobold:0,noitalic:0,nocaps:0,syntaxhighlight:function(e,t){var i=Te(e);return t.push(i),i.code||""},samp:function(e,t){var i=Te(e,["1"]);return t.push(i),i[1]||""},vanchor:0,resize:1,ra:function(e){var t=Te(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:function(e){return(Te(e,["degrees"]).degrees||"")+"°"},hms2deg:function(e){var t=Te(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:function(e){var t=Te(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},rnd:0,dec:function(e){var t=Te(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:function(e){var t=Te(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());var n=i||"";return t.p&&(n=t.p+n),t.s&&(n=t.s+n),(t.u||t.ul||t.upl)&&(n=n+" "+(t.u||t.ul||t.upl)),n},sub:function(e,t){var i=Te(e,["text"]);return t.push(i),i.text||""},sup:function(e,t){var i=Te(e,["text"]);return t.push(i),i.text||""}};Ci.rndfrac=Ci.rnd,Ci.rndnear=Ci.rnd,Ci["unité"]=Ci.val;["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((function(e){Ci[e]=function(e){return Te(e,["text"]).text||""}}));var qi=Ci,Ni={plainlist:function(e){var t=(e=Oe(e)).split("|");return e=(t=t.slice(1)).join("|"),(t=(t=e.split(/\n ?\* ?/)).filter((function(e){return e}))).join("\n\n")},"collapsible list":function(e,t){var i=Te(e);t.push(i);var n="";if(i.title&&(n+="'''".concat(i.title,"'''")+"\n\n"),!i.list){i.list=[];for(var a=1;a<10;a+=1)i[a]&&(i.list.push(i[a]),delete i[a])}return i.list=i.list.filter((function(e){return e})),n+=i.list.join("\n\n")},"ordered list":function(e,t){var i=Te(e);return t.push(i),i.list=i.list||[],i.list.map((function(e,t){return"".concat(t+1,". ").concat(e)})).join("\n\n")},hlist:function(e){var t=Te(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:function(e){return(Te(e).list||[]).join(", ")},catlist:function(e){return(Te(e).list||[]).join(", ")},"br separated entries":function(e){return(Te(e).list||[]).join("\n\n")},"comma separated entries":function(e){return(Te(e).list||[]).join(", ")},"anchored list":function(e){var t=Te(e).list||[];return(t=t.map((function(e,t){return"".concat(t+1,". ").concat(e)}))).join("\n\n")},"bulleted list":function(e){var t=Te(e).list||[];return(t=(t=t.filter((function(e){return e}))).map((function(e){return"• "+e}))).join("\n\n")},"columns-list":function(e,t){var i=((Te(e).list||[])[0]||"").split(/\n/);return i=(i=i.filter((function(e){return e}))).map((function(e){return e.replace(/\*/,"")})),t.push({template:"columns-list",list:i}),(i=i.map((function(e){return"• "+e}))).join("\n\n")}};Ni.flatlist=Ni.plainlist,Ni.ublist=Ni.plainlist,Ni["unbulleted list"]=Ni["collapsible list"],Ni.ubl=Ni["collapsible list"],Ni["bare anchored list"]=Ni["anchored list"],Ni["plain list"]=Ni.plainlist,Ni.cmn=Ni["columns-list"],Ni.collist=Ni["columns-list"],Ni["col-list"]=Ni["columns-list"],Ni.columnslist=Ni["columns-list"];var Ai=Ni,Li={convert:function(e){var t=Te(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?"".concat(t.num," ").concat(t.two," ").concat(t.three," ").concat(t.four):"".concat(t.num," ").concat(t.two," ").concat(t.three):"".concat(t.num," ").concat(t.two)},term:function(e){var t=Te(e,["term"]);return"".concat(t.term,":")},defn:0,lino:0,linum:function(e){var t=Te(e,["num","text"]);return"".concat(t.num,". ").concat(t.text)},ill:function(e){return Te(e,["text","lan1","text1","lan2","text2"]).text},frac:function(e){var t=Te(e,["a","b","c"]);return t.c?"".concat(t.a," ").concat(t.b,"/").concat(t.c):t.b?"".concat(t.a,"/").concat(t.b):"1/".concat(t.b)},height:function(e,t){var i=Te(e);t.push(i);var n=[];return["m","cm","ft","in"].forEach((function(e){!0===i.hasOwnProperty(e)&&n.push(i[e]+e)})),n.join(" ")},"block indent":function(e){var t=Te(e);return t[1]?"\n"+t[1]+"\n":""},quote:function(e,t){var i=Te(e,["text","author"]);if(t.push(i),i.text){var n='"'.concat(i.text,'"');return i.author&&(n+="\n\n",n+=" - ".concat(i.author)),n+"\n"}return""},lbs:function(e){var t=Te(e,["text"]);return"[[".concat(t.text," Lifeboat Station|").concat(t.text,"]]")},lbc:function(e){var t=Te(e,["text"]);return"[[".concat(t.text,"-class lifeboat|").concat(t.text,"-class]]")},lbb:function(e){var t=Te(e,["text"]);return"[[".concat(t.text,"-class lifeboat|").concat(t.text,"]]")},own:function(e){var t=Te(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},sic:function(e,t){var i=Te(e,["one","two","three"]),n=(i.one||"")+(i.two||"");return"?"===i.one&&(n=(i.two||"")+(i.three||"")),t.push({template:"sic",word:n}),"y"===i.nolink?n:"".concat(n," [sic]")},formatnum:function(e){e=e.replace(/:/,"|");var t=Te(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},"#dateformat":function(e){return e=e.replace(/:/,"|"),Te(e,["date","format"]).date},lc:function(e){return e=e.replace(/:/,"|"),(Te(e,["text"]).text||"").toLowerCase()},lcfirst:function(e){e=e.replace(/:/,"|");var t=Te(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},uc:function(e){return e=e.replace(/:/,"|"),(Te(e,["text"]).text||"").toUpperCase()},ucfirst:function(e){e=e.replace(/:/,"|");var t=Te(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:function(e){e=e.replace(/:/,"|");var t=Te(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:function(e){e=e.replace(/:/,"|");var t=Te(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbr:function(e){return Te(e,["abbr","meaning","ipa"]).abbr},abbrlink:function(e){var t=Te(e,["abbr","page"]);return t.page?"[[".concat(t.page,"|").concat(t.abbr,"]]"):"[[".concat(t.abbr,"]]")},h:1,finedetail:0,sort:1};Li["str left"]=Li.trunc,Li["str crop"]=Li.trunc,Li.tooltip=Li.abbr,Li.abbrv=Li.abbr,Li.define=Li.abbr,Li.cvt=Li.convert;var Di=Li,Ti=Object.assign({},qi,Ai,Di);var Ii=function(e){var t=e.pop(),i=Number(e[0]||0),n=Number(e[1]||0),a=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;var r=1;return/[SW]/i.test(t)&&(r=-1),r*(i+n/60+a/3600)},Pi=function(e){if("number"!=typeof e)return e;var t=1e5;return Math.round(e*t)/t},Mi={s:!0,w:!0},Ri=function(e){var i=Te(e);i=function(e){return e.list=e.list||[],e.list=e.list.map((function(t){var i=Number(t);if(!isNaN(i))return i;var n=t.split(/:/);return n.length>1?(e.props=e.props||{},e.props[n[0]]=n.slice(1).join(":"),null):t})),e.list=e.list.filter((function(e){return null!==e})),e}(i);var n,a,r=(n=i.list,a=n.map((function(e){return t(e)})).join("|"),2===n.length&&"number|number"===a?{lat:n[0],lon:n[1]}:4===n.length&&"number|string|number|string"===a?(Mi[n[1].toLowerCase()]&&(n[0]*=-1),"w"===n[3].toLowerCase()&&(n[2]*=-1),{lat:n[0],lon:n[2]}):6===n.length?{lat:Ii(n.slice(0,3)),lon:Ii(n.slice(3))}:8===n.length?{lat:Ii(n.slice(0,4)),lon:Ii(n.slice(4))}:{});return i.lat=Pi(r.lat),i.lon=Pi(r.lon),i.template="coord",delete i.list,i},Ui={coord:function(e,t){var i=Ri(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":"".concat(i.lat||"","°N, ").concat(i.lon||"","°W")},geo:["lat","lon","zoom"]};Ui.coor=Ui.coord,Ui["coor title dms"]=Ui.coord,Ui["coor title dec"]=Ui.coord,Ui["coor dms"]=Ui.coord,Ui["coor dm"]=Ui.coord,Ui["coor dec"]=Ui.coord;var Fi=Ui,Ki={etyl:1,mention:1,link:1,"la-verb-form":0,"la-ipa":0,sortname:function(e){var t=Te(e,["first","last","target","sort"]),i="".concat(t.first||""," ").concat(t.last||"");return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=" (".concat(t.dab,")"),t.target&&(t.target+=" (".concat(t.dab,")"))),t.target?"[[".concat(t.target,"|").concat(i,"]]"):"[[".concat(i,"]]"))}};["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"].forEach((function(e){Ki[e]=function(e){var t=Te(e,["first","second"]);return t.second||t.first}})),Ki.m=Ki.mention,Ki["m-self"]=Ki.mention,Ki.l=Ki.link,Ki.ll=Ki.link,Ki["l-self"]=Ki.link;var Bi=Ki,Wi={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"},Yi={about:function(e,t){var i=Te(e);return t.push(i),""},main:function(e,t){var i=Te(e);return t.push(i),""},"main list":function(e,t){var i=Te(e);return t.push(i),""},see:function(e,t){var i=Te(e);return t.push(i),""},for:function(e,t){var i=Te(e);return t.push(i),""},further:function(e,t){var i=Te(e);return t.push(i),""},"further information":function(e,t){var i=Te(e);return t.push(i),""},listen:function(e,t){var i=Te(e);return t.push(i),""},"wide image":["file","width","caption"],redirect:function(e,t){for(var i=Te(e,["redirect"]),n=i.list||[],a=[],r=0;r0&&t.push(a)}return{template:"playoffbracket",rounds:t}}(e);return t.push(i),""}};["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"].forEach((function(e){en[e]=en["4teambracket"]}));var tn=en,nn={"£":"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"},an=function(e,t){var i=Te(e,["amount","code"]);t.push(i);var n=i.template||"";switch("currency"===n?(n=i.code)||(i.code=n="usd"):""!==n&&"monnaie"!==n&&"unité"!==n&&"nombre"!==n&&"nb"!==n||(n=i.code),n=(n||"").toLowerCase()){case"us":i.code=n="usd";break;case"uk":i.code=n="gbp"}var a="".concat(nn[n]||"").concat(i.amount||"");return i.code&&!nn[i.code.toLowerCase()]&&(a+=" "+i.code),a},rn={currency:an,monnaie:an,"unité":an,nombre:an,nb:an,iso4217:an,inrconvert:function(e,t){var i=Te(e,["rupee_value","currency_formatting"]);t.push(i);var n=i.currency_formatting;if(n){var a=1;switch(n){case"k":a=1e3;break;case"m":a=1e6;break;case"b":a=1e9;break;case"t":a=1e12;break;case"l":a=1e5;break;case"c":a=1e7;break;case"lc":a=1e12}i.rupee_value=i.rupee_value*a}return"inr ".concat(i.rupee_value||"")}};Object.keys(nn).forEach((function(e){rn[e]=an}));var on=rn,sn={"election box begin":function(e,t){var i=Te(e);return t.push(i),""},"election box candidate":function(e,t){var i=Te(e);return t.push(i),""},"election box hold with party link":function(e,t){var i=Te(e);return t.push(i),""},"election box gain with party link":function(e,t){var i=Te(e);return t.push(i),""}};sn["election box begin no change"]=sn["election box begin"],sn["election box begin no party"]=sn["election box begin"],sn["election box begin no party no change"]=sn["election box begin"],sn["election box inline begin"]=sn["election box begin"],sn["election box inline begin no change"]=sn["election box begin"],sn["election box candidate for alliance"]=sn["election box candidate"],sn["election box candidate minor party"]=sn["election box candidate"],sn["election box candidate no party link no change"]=sn["election box candidate"],sn["election box candidate with party link"]=sn["election box candidate"],sn["election box candidate with party link coalition 1918"]=sn["election box candidate"],sn["election box candidate with party link no change"]=sn["election box candidate"],sn["election box inline candidate"]=sn["election box candidate"],sn["election box inline candidate no change"]=sn["election box candidate"],sn["election box inline candidate with party link"]=sn["election box candidate"],sn["election box inline candidate with party link no change"]=sn["election box candidate"],sn["election box inline incumbent"]=sn["election box candidate"];var cn=sn,un=[["🇦🇩","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"],["🇺🇸","usa","united states"],["🇺🇸","us","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"],["","win","west indies"],["🇼🇫","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"]],ln={flag:function(e){var t=Te(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();var n=un.find((function(e){return t.flag===e[1]||t.flag===e[2]}))||[],a=n[0]||"";return"".concat(a," [[").concat(n[2],"|").concat(i,"]]")},flagcountry:function(e){var t=Te(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=un.find((function(e){return t.flag===e[1]||t.flag===e[2]}))||[],n=i[0]||"";return"".concat(n," [[").concat(i[2],"]]")},flagcu:function(e){var t=Te(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=un.find((function(e){return t.flag===e[1]||t.flag===e[2]}))||[],n=i[0]||"";return"".concat(n," ").concat(i[2])},flagicon:function(e){var t=Te(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=un.find((function(e){return t.flag===e[1]||t.flag===e[2]}));return i?"[[".concat(i[2],"|").concat(i[0],"]]"):""},flagdeco:function(e){var t=Te(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(un.find((function(e){return t.flag===e[1]||t.flag===e[2]}))||[])[0]||""},fb:function(e){var t=Te(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=un.find((function(e){return t.flag===e[1]||t.flag===e[2]}));return i?"".concat(i[0]," [[").concat(i[2]," national football team|").concat(i[2],"]]"):""},fbicon:function(e){var t=Te(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=un.find((function(e){return t.flag===e[1]||t.flag===e[2]}));return i?" [[".concat(i[2]," national football team|").concat(i[0],"]]"):""},flagathlete:function(e){var t=Te(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=un.find((function(e){return t.flag===e[1]||t.flag===e[2]}));return i?"".concat(i[0]," [[").concat(t.name||"","]] (").concat(i[1].toUpperCase(),")"):"[[".concat(t.name||"","]]")}};un.forEach((function(e){ln[e[1]]=function(){return e[0]}})),ln.cr=ln.flagcountry,ln["cr-rt"]=ln.flagcountry,ln.cricon=ln.flagicon;var pn=ln,mn=function(e){var t=e.match(/ipac?-(.+)/);return null!==t?!0===S.hasOwnProperty(t[1])?S[t[1]].english_title:t[1]:null},dn={ipa:function(e,t){var i=Te(e,["transcription","lang","audio"]);return i.lang=mn(i.template),i.template="ipa",t.push(i),""},ipac:function(e,t){var i=Te(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=mn(i.template),i.template="ipac",t.push(i),""},transl:function(e,t){var i=Te(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""}};Object.keys(S).forEach((function(e){dn["ipa-"+e]=dn.ipa,dn["ipac-"+e]=dn.ipac}));var fn=dn,gn={lang:1,"lang-de":0,"rtl-lang":1,taste:0,nihongo:function(e,t){var i=Te(e,["english","kanji","romaji","extra"]);t.push(i);var n=i.english||i.romaji||"";return i.kanji&&(n+=" (".concat(i.kanji,")")),n}};Object.keys(S).forEach((function(e){gn["lang-"+e]=gn["lang-de"]})),gn.nihongo2=gn.nihongo,gn.nihongo3=gn.nihongo,gn["nihongo-s"]=gn.nihongo,gn["nihongo foot"]=gn.nihongo;var hn=gn,bn=function(e){if(!e.numerator&&!e.denominator)return null;var t=Number(e.numerator)/Number(e.denominator);t*=100;var i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},kn={math:function(e,t){var i=Te(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},frac:function(e,t){var i=Te(e,["a","b","c"]),n={template:"sfrac"};return i.c?(n.integer=i.a,n.numerator=i.b,n.denominator=i.c):i.b?(n.numerator=i.a,n.denominator=i.b):(n.numerator=1,n.denominator=i.a),t.push(n),n.integer?"".concat(n.integer," ").concat(n.numerator,"⁄").concat(n.denominator):"".concat(n.numerator,"⁄").concat(n.denominator)},radic:function(e){var t=Te(e,["after","before"]);return"".concat(t.before||"","√").concat(t.after||"")},percentage:function(e){var t=Te(e,["numerator","denominator","decimals"]),i=bn(t);return null===i?"":i+"%"},"percent-done":function(e){var t=Te(e,["done","total","digits"]),i=bn({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":"".concat(t.done," (").concat(i,"%) done")},"winning percentage":function(e,t){var i=Te(e,["wins","losses","ties"]);t.push(i);var n=Number(i.wins),a=Number(i.losses),r=Number(i.ties)||0,o=n+a+r;"y"===i.ignore_ties&&(r=0),r&&(n+=r/2);var s=bn({numerator:n,denominator:o,decimals:1});return null===s?"":".".concat(10*s)},winlosspct:function(e,t){var i=Te(e,["wins","losses"]);t.push(i);var n=Number(i.wins),a=Number(i.losses),r=bn({numerator:n,denominator:n+a,decimals:1});return null===r?"":(r=".".concat(10*r),"".concat(n||0," || ").concat(a||0," || ").concat(r||"-"))}};kn.sfrac=kn.frac,kn.sqrt=kn.radic,kn.pct=kn.percentage,kn.percent=kn.percentage,kn.winpct=kn["winning percentage"],kn.winperc=kn["winning percentage"];var wn=kn,vn=function(e,t,i){var n=Te(e);return i&&(n.name=n.template,n.template=i),t.push(n),""},yn={persondata:vn,taxobox:vn,citation:vn,portal:vn,reflist:vn,"cite book":vn,"cite journal":vn,"cite web":vn,"commons cat":vn,"portuguese name":["first","second","suffix"],uss:["ship","id"],isbn:function(e,t){var i=Te(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},marriage:function(e,t){var i=Te(e,["spouse","from","to","end"]);t.push(i);var n="".concat(i.spouse||"");return i.from&&(i.to?n+=" (m. ".concat(i.from,"-").concat(i.to,")"):n+=" (m. ".concat(i.from,")")),n},"based on":function(e,t){var i=Te(e,["title","author"]);return t.push(i),"".concat(i.title," by ").concat(i.author||"")},"video game release":function(e,t){for(var i=["region","date","region2","date2","region3","date3","region4","date4"],n=Te(e,i),a={template:"video game release",releases:[]},r=0;r0&&t.push(c),""},Hn=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},Vn={text:function(){return""},json:function(){return this.data}};Object.keys(Vn).forEach((function(e){Hn.prototype[e]=Vn[e]}));var Jn=Hn,Qn=new RegExp("^(cite |citation)","i"),Xn={citation:!0,refn:!0,harvnb:!0},ea=function(e){return"infobox"===e.template&&e.data&&function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}(e.data)},ta=function(e,t){var i=e.wiki,n=Qt(i),a=[],r=function e(t,n){t.parent=n,t.children&&t.children.length>0&&t.children.forEach((function(i){return e(i,t)})),t.out=Gn(t,a);!function e(t,i,n){t.parent&&(t.parent.body=t.parent.body.replace(i,n),e(t.parent,i,n))}(t,t.body,t.out),i=i.replace(t.body,t.out)};n.forEach((function(e){return r(e,null)})),e.infoboxes=e.infoboxes||[],e.references=e.references||[],e.templates=e.templates||[],e.templates=e.templates.concat(a),e.templates=e.templates.filter((function(i){return!0===function(e){return!0===Xn[e.template]||!0===Qn.test(e.template)}(i)?(e.references.push(new Me(i)),!1):!0!==ea(i)||(i.domain=t.domain,e.infoboxes.push(new Wt(i)),!1)})),e.templates=e.templates.map((function(e){return new Jn(e)})),n.forEach((function(e){i=i.replace(e.body,e.out)})),e.wiki=i},ia=je,na=function(e,t){var i=e.wiki;i=i.replace(/]*?)>([\s\S]+?)<\/gallery>/g,(function(i,n,a){var r=a.split(/\n/g);return(r=(r=r.filter((function(e){return e&&""!==e.trim()}))).map((function(e){var i=e.split(/\|/),n={file:i[0].trim(),lang:t.language,domain:t.domain},a=new $(n).json(),r=i.slice(1).join("|");return""!==r&&(a.caption=ia(r)),a}))).length>0&&e.templates.push({template:"gallery",images:r,pos:e.title}),""})),e.wiki=i},aa=function(e){var t=e.wiki;t=t.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,(function(t){var i={wiki:t,templates:[]};ta(i);var n=i.templates.map((function(e){return e.json()})),a=n.find((function(e){return"election box"===e.template}))||{},r=n.filter((function(e){return"election box candidate"===e.template})),o=n.find((function(e){return"election box gain"===e.template||"election box hold"===e.template}))||{};return(r.length>0||o)&&e.templates.push({template:"election box",title:a.title,candidates:r,summary:o.data}),""})),e.wiki=t},ra={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"]},oa=function(e){var t=e.wiki;t=t.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,(function(t,i){t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();var n="! "+ra[i].join(" !! "),a=at("{|\n"+n+"\n"+t+"\n|}");return a=a.map((function(e){return Object.keys(e).forEach((function(t){e[t]=e[t].text()})),e})),e.templates.push({template:"NBA "+i+" statistics",data:a}),""})),e.wiki=t},sa=function(e){var t=e.wiki;t=t.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,(function(t){var i=function(e){var 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,"");var n="! "+i.join(" !! "),a=at("{|\n"+n+"\n"+t+"\n|}");return a=a.map((function(e){return Object.keys(e).forEach((function(t){e[t]=e[t].text()})),e})),e.templates.push({template:"mlb game log section",data:a}),""})),e.wiki=t},ca=["res","record","opponent","method","event","date","round","time","location","notes"],ua=function(e){var t=e.wiki;t=t.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,(function(t){t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");var i="! "+ca.join(" !! "),n=at("{|\n"+i+"\n"+t+"\n|}");return n=n.map((function(e){return Object.keys(e).forEach((function(t){e[t]=e[t].text()})),e})),e.templates.push({template:"mma record start",data:n}),""})),e.wiki=t},la=je,pa=function(e){var t=e.wiki;t=(t=t.replace(/]*?)>([\s\S]+?)<\/math>/g,(function(t,i,n){var a=la(n).text();return e.templates.push({template:"math",formula:a,raw:n}),a&&a.length<12?a:""}))).replace(/]*?)>([\s\S]+?)<\/chem>/g,(function(t,i,n){return e.templates.push({template:"chem",data:n}),""})),e.wiki=t},ma=function(e,t){aa(e),na(e,t),pa(e),sa(e),ua(e),oa(e)},da=new RegExp("^("+_.references.join("|")+"):?","i"),fa=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,ga={heading:Ze,table:mt,paragraphs:Rt,templates:ta,references:Be,startEndTemplates:ma},ha=function(e,t){return ga.startEndTemplates(e,t),ga.references(e),ga.templates(e,t),ga.table(e),ga.paragraphs(e,t),e=new ie(e)},ba=function(e){for(var t=[],i=e.wiki.split(fa),n=0;n0||t.templates().length>0||(e[i+1]&&e[i+1].depth>t.depth&&(e[i+1].depth-=1),!1)}))}(t)},ka=new RegExp("\\[\\[:?("+_.categories.join("|")+"):(.{2,178}?)]](w{0,10})","ig"),wa=new RegExp("^\\[\\[:?("+_.categories.join("|")+"):","ig"),va={section:ba,categories:function(e){var t=e.wiki,i=t.match(ka);i&&i.forEach((function(t){(t=(t=(t=t.replace(wa,"")).replace(/\|?[ \*]?\]\]$/i,"")).replace(/\|.*/,""))&&!t.match(/[\[\]]/)&&e.categories.push(t.trim())})),t=t.replace(ka,""),e.wiki=t}},ya=function(e,t){t=t||{};var i=Object.assign(t,{title:t.title||null,pageID:t.pageID||t.id||null,namespace:t.namespace||t.ns||null,type:"page",wiki:e||"",categories:[],sections:[],coordinates:[]});return!0===R(e)?(i.type="redirect",i.redirectTo=U(e),va.categories(i),new E(i)):(Z(i),va.categories(i),va.section(i),new E(i))},xa=function(e){var t=(e=e.filter((function(e){return e}))).map((function(e){return ya(e.wiki,e.meta)}));return 0===t.length?null:1===t.length?t[0]:t},$a=function(e,t){return fetch(e,t).then((function(e){return e.json()}))},ja=function(e){var t=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":t,"User-Agent":t,Origin:e.noOrigin?"":e.origin||e.Origin||"*"},redirect:"follow"}},za=/^https?:\/\//,Oa={lang:"en",wiki:"wikipedia",domain:null,follow_redirects:!0,path:"api.php"},Ea=function(t,i,n){var a=null;"function"==typeof i&&(a=i,i={}),"function"==typeof n&&(a=n,n={}),"string"==typeof i&&(n=n||{},i=Object.assign({},{lang:i},n)),i=i||{},(i=Object.assign({},Oa,i)).title=t,za.test(t)&&(i=Object.assign(i,e(t)));var r=c(i),o=ja(i);return $a(r,o).then((function(e){try{var t=u(e,i);return t=xa(t),a&&a(null,t),t}catch(e){throw e}})).catch((function(e){return console.error(e),a&&a(e,null),null}))},_a={lang:"en",wiki:"wikipedia",domain:null,path:"w/api.php"},Sa=function(e,t){var i;t=t||{},t=Object.assign({},_a,t),"string"==typeof e?t.lang=e:(i=e)&&"[object Object]"===Object.prototype.toString.call(i)&&(t=Object.assign(t,e));var n="https://".concat(t.lang,".wikipedia.org/").concat(t.path,"?");t.domain&&(n="https://".concat(t.domain,"/").concat(t.path,"?")),n+="format=json&action=query&generator=random&grnnamespace=0&prop=revisions|pageprops&rvprop=content&grnlimit=1&rvslots=main&origin=*";var a=ja(t);return $a(n,a).then((function(e){try{var t=u(e);return xa(t)}catch(e){throw e}})).catch((function(e){return console.error(e),null}))},Ca={lang:"en",wiki:"wikipedia",domain:null,path:"w/api.php"},qa=function(e,t,i){var n;i=i||{},i=Object.assign({},Ca,i),"string"==typeof t?i.lang=t:(n=t)&&"[object Object]"===Object.prototype.toString.call(n)&&(i=Object.assign(i,t));var a={pages:[],categories:[]};return new Promise((function(t,n){!function r(o){var s=function(e,t,i){e=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return!1===/^Category/i.test(e)&&(e="Category:"+e),e.replace(/ /g,"_")}(e),e=encodeURIComponent(e);var n="https://".concat(t.lang,".wikipedia.org/").concat(t.path,"?");return t.domain&&(n="https://".concat(t.domain,"/").concat(t.path,"?")),n+="action=query&list=categorymembers&cmtitle=".concat(e,"&cmlimit=500&format=json&origin=*&redirects=true&cmtype=page|subcat"),i&&(n+="&cmcontinue="+i),n}(e,i,o),c=ja(i);return $a(s,c).then((function(e){a=function(e){var t=e.query.categorymembers||[],i={pages:[],categories:[]};return t.forEach((function(e){14===e.ns?(delete e.ns,i.categories.push(e)):(delete e.ns,i.pages.push(e))})),i}(e),e.continue&&e.continue.cmcontinue?r(e.continue.cmcontinue):t(a)})).catch((function(e){console.error(e),n(e)}))}(null)}))},Na=function(e,t){return ya(e,t)},Aa={Doc:E,Section:ie,Paragraph:kt,Sentence:ge,Image:$,Infobox:Wt,Link:se,List:St,Reference:Me,Table:ut,Template:Jn,http:$a,wtf:Na};return Na.fetch=function(e,t,i,n){return Ea(e,t,i)},Na.random=function(e,t,i){return Sa(e,t)},Na.category=function(e,t,i,n){return qa(e,t,i)},Na.extend=function(e){return e(Aa,Wn,this),this},Na.version="8.5.1",Na})); +!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 2c1d69ae..c55b0493 100644 --- a/builds/wtf_wikipedia-client.mjs +++ b/builds/wtf_wikipedia-client.mjs @@ -1 +1 @@ -var e=function(e){var t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};function t(e){return(t="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})(e)}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var i=[],n=!0,a=!1,r=void 0;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done)&&(i.push(o.value),!t||i.length!==t);n=!0);}catch(e){a=!0,r=e}finally{try{n||null==s.return||s.return()}finally{if(a)throw r}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);"Object"===i&&e.constructor&&(i=e.constructor.name);if("Map"===i||"Set"===i)return Array.from(e);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return n(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);iObject.keys(t.data).length?-1:1})),"number"==typeof e?t[e]:t},text:function(e){return e=p(e,j),!0===this.isRedirect()?"":this.sections().map((function(t){return t.text(e)})).join("\n\n")},json:function(e){return e=p(e,j),d(this,e)},debug:function(){return console.log("\n"),this.sections().forEach((function(e){for(var t=" - ",i=0;i500)&&M.test(e)},U=function(e){var t=e.match(M);return t&&t[2]?(P(t[2])||[])[0]:{}},F=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],K="< ?(".concat(F.join("|"),") ?[^>]{0,200}?>"),B="< ?/ ?(".concat(F.join("|"),") ?>"),W=new RegExp("".concat(K,"[").concat("\\s\\S","]+?").concat(B),"ig"),Y=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(W," ")).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 Z=function(e){var t=e.wiki;t=(t=(t=(t=(t=(t=(t=(t=(t=t.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," "),t=(t=(t=Y(t)).replace(/\([,;: ]+?\)/g,"")).replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,""),e.wiki=t},G=/[\\\.$]/,H=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")},V=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e),i=0;i0&&(i.paragraphs=n)}if(!0===t.images){var a=e.images().map((function(e){return e.json(t)}));a.length>0&&(i.images=a)}if(!0===t.tables){var r=e.tables().map((function(e){return e.json(t)}));r.length>0&&(i.tables=r)}if(!0===t.templates){var o=e.templates();o.length>0&&(i.templates=o,!0===t.encode&&i.templates.forEach((function(e){return V(e)})))}if(!0===t.infoboxes){var s=e.infoboxes().map((function(e){return e.json(t)}));s.length>0&&(i.infoboxes=s)}if(!0===t.lists){var c=e.lists().map((function(e){return e.json(t)}));c.length>0&&(i.lists=c)}if(!0===t.references||!0===t.citations){var u=e.references().map((function(e){return e.json(t)}));u.length>0&&(i.references=u)}return!0===t.sentences&&(i.sentences=e.sentences().map((function(e){return e.json(t)}))),i},X={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0},ee=function(e){this.depth=e.depth,this.doc=null,this._title=e.title||"",Object.defineProperty(this,"doc",{enumerable:!1,value:null}),e.templates=e.templates||[],Object.defineProperty(this,"data",{enumerable:!1,value:e})},te={title:function(){return this._title||""},index:function(){if(!this.doc)return null;var e=this.doc.sections().indexOf(this);return-1===e?null:e},indentation:function(){return this.depth},sentences:function(e){var t=this.paragraphs().reduce((function(e,t){return e.concat(t.sentences())}),[]);return"number"==typeof e?t[e]:t||[]},paragraphs:function(e){var t=this.data.paragraphs||[];return"number"==typeof e?t[e]:t||[]},paragraph:function(e){var t=this.data.paragraphs||[];return"number"==typeof e?t[e]:t[0]},links:function(e){var t=[];if(this.infoboxes().forEach((function(i){i.links(e).forEach((function(e){return t.push(e)}))})),this.sentences().forEach((function(i){i.links(e).forEach((function(e){return t.push(e)}))})),this.tables().forEach((function(i){i.links(e).forEach((function(e){return t.push(e)}))})),this.lists().forEach((function(i){i.links(e).forEach((function(e){return t.push(e)}))})),"number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t},tables:function(e){var t=this.data.tables||[];return"number"==typeof e?t[e]:t},templates:function(e){var t=this.data.templates||[];return t=t.map((function(e){return e.json()})),"number"==typeof e?t[e]:"string"==typeof e?(e=e.toLowerCase(),t.filter((function(t){return t.template===e||t.name===e}))):t},infoboxes:function(e){var t=this.data.infoboxes||[];return"number"==typeof e?t[e]:t},coordinates:function(e){var t=[].concat(this.templates("coord"),this.templates("coor"));return"number"==typeof e?t[e]?t[e]:[]:t},lists:function(e){var t=[];return this.paragraphs().forEach((function(e){t=t.concat(e.lists())})),"number"==typeof e?t[e]:t},interwiki:function(e){var t=[];return this.paragraphs().forEach((function(e){t=t.concat(e.interwiki())})),"number"==typeof e?t[e]:t||[]},images:function(e){var t=[];return this.paragraphs().forEach((function(e){t=t.concat(e.images())})),"number"==typeof e?t[e]:t||[]},references:function(e){var t=this.data.references||[];return"number"==typeof e?t[e]:t},remove:function(){if(!this.doc)return null;var e={};e[this.title()]=!0,this.children().forEach((function(t){return e[t.title()]=!0}));var t=this.doc.data.sections;return t=t.filter((function(t){return!0!==e.hasOwnProperty(t.title())})),this.doc.data.sections=t,this.doc},nextSibling:function(){if(!this.doc)return null;for(var e=this.doc.sections(),t=this.index()+1;tthis.depth)for(var a=i+1;athis.depth;a+=1)n.push(t[a]);return"string"==typeof e?(e=e.toLowerCase(),n.find((function(t){return t.title().toLowerCase()===e}))):"number"==typeof e?n[e]:n},parent:function(){if(!this.doc)return null;for(var e=this.doc.sections(),t=this.index();t>=0;t-=1)if(e[t]&&e[t].depth0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e},le=/^[0-9,.]+$/,pe={text:!0,links:!0,formatting:!0,numbers:!0},me=function(e,t){t=p(t,pe);var i={},n=e.text();if(!0===t.text&&(i.text=n),!0===t.numbers&&le.test(n)){var a=Number(n.replace(/,/g,""));!1===isNaN(a)&&(i.number=a)}return t.links&&e.links().length>0&&(i.links=e.links().map((function(e){return e.json()}))),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i},de=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},fe={links:function(e){var t=this.data.links||[];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page===e}));return void 0===i?[]:[i]}return t},interwiki:function(e){var t=this.links().filter((function(e){return void 0!==e.wiki}));return"number"==typeof e?t[e]:t},bolds:function(e){var t=[];return this.data&&this.data.fmt&&this.data.fmt.bold&&(t=this.data.fmt.bold||[]),"number"==typeof e?t[e]:t},italics:function(e){var t=[];return this.data&&this.data.fmt&&this.data.fmt.italic&&(t=this.data.fmt.italic||[]),"number"==typeof e?t[e]:t},dates:function(e){var t=[];return"number"==typeof e?t[e]:t},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return me(this,e)}};Object.keys(fe).forEach((function(e){de.prototype[e]=fe[e]})),de.prototype.italic=de.prototype.italics,de.prototype.bold=de.prototype.bolds,de.prototype.plaintext=de.prototype.text;var ge=de,he=["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("[^]][^]]"),be=new RegExp("(^| |')("+he.join("|")+")[.!?] ?$","i"),ke=new RegExp("[ |.|'|[][A-Z].? *?$","i"),we=new RegExp("\\.\\.\\.* +?$"),ve=/ c\. $/,ye=new RegExp("[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]","iu"),xe=function(e){var t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;for(var n=function(e){var t=e.split(/(\n+)/);return function(e){var t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t=(t=t.filter((function(e){return e.match(/\S/)}))).map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s+|$)/g)})))}(e),a=0;ai.length)return!1;var n=e.match(/"/g);return!(n&&n.length%2!=0&&e.length<900)}(o))?i[s+1]=i[s]+(i[s+1]||""):i[s]&&i[s].length>0&&(t.push(i[s]),i[s]="");return 0===t.length?[e]:t};function $e(e){var t,i={text:e};return ce(i),i.text=(t=(t=(t=i.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(t=ne(t)).replace(/ +\.$/,".")),i=ue(i),new ge(i)}var je=$e,ze=function(e){var t=xe(e.wiki);(t=t.map($e))[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t},Oe=function(e){return e=(e=e.replace(/^\{\{/,"")).replace(/\}\}$/,"")},Ee=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")},_e=function(e){var t=e.split(/\n?\|/);t.forEach((function(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)}));for(var i=(t=(t=t.filter((function(e){return null!==e}))).map((function(e){return(e||"").trim()}))).length-1;i>=0;i-=1){""===t[i]&&t.pop();break}return t},Se=/^[ '-\)\x2D\.0-9_a-z\xC0-\xFF\u0153\u017F\u1E9E\u212A\u212B]+=/i,Ce={template:!0,list:!0,prototype:!0},qe=function(e,t){var i=0;return e.reduce((function(e,n){if(n=(n||"").trim(),!0===Se.test(n)){var a=function(e){var t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();var n=t.slice(1).join("=");return Ce.hasOwnProperty(i)&&(i="_"+i),{key:i,val:n.trim()}}(n);if(a.key)return e[a.key]=a.val,e}t&&t[i]?e[t[i]]=n:(e.list=e.list||[],e.list.push(n));return i+=1,e}),{})},Ne={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},Ae=function(e){return Object.keys(e).forEach((function(t){!0===Ne[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]})),e},Le=je,De=function(e,t){var i=Le(e);return"json"===t?i.json():"raw"===t?i:i.text()},Ie=function(e,t,i){t=t||[],e=Oe(e||"");var n=_e(e),a=n.shift(),r=qe(n,t);return(r=Ae(r))[1]&&t[0]&&!1===r.hasOwnProperty(t[0])&&(r[t[0]]=r[1],delete r[1]),Object.keys(r).forEach((function(e){r[e]="list"!==e?De(r[e],i):r[e].map((function(e){return De(e,i)}))})),a&&(r.template=Ee(a)),r},Te=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},Pe={title:function(){var e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){var 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);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t||[]},text:function(){return""},json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=V(t)),t}};Object.keys(Pe).forEach((function(e){Te.prototype[e]=Pe[e]}));var Me=Te,Re=je,Ue=function(e){return/^ *?\{\{ *?(cite|citation)/i.test(e)&&/\}\} *?$/.test(e)&&!1===/citation needed/i.test(e)},Fe=function(e){var t=Ie(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},Ke=function(e){return{template:"citation",type:"inline",data:{},inline:Re(e)||{}}},Be=function(e){var t=[],i=e.wiki;i=(i=(i=(i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,n){if(Ue(n)){var a=Fe(n);a&&t.push(a),i=i.replace(n,"")}else t.push(Ke(n));return" "}))).replace(/ ?]{0,200}?\/> ?/gi," ")).replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,n){if(Ue(n)){var a=Fe(n);a&&t.push(a),i=i.replace(n,"")}else t.push(Ke(n));return" "}))).replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g," "),e.references=t.map((function(e){return new Me(e)})),e.wiki=i},We=je,Ye=/^(={1,5})(.{1,200}?)={1,5}$/,Ze=function(e,t){var i=t.match(Ye);if(!i)return e.title="",e.depth=0,e;var n=i[2]||"",a={wiki:n=(n=We(n).text()).replace(/\{\{.+?\}\}/,"")};Be(a),n=ne(n=a.wiki);var r=0;return i[1]&&(r=i[1].length-2),e.title=n,e.depth=r,e},Ge=function(e){var t=[],i=[];e=function(e){return e=e.filter((function(e){return 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(var n=0;n0&&(t.push(i),i=[]):(!(a=a.split(/(?:\|\||!!)/))[0]&&a[1]&&a.shift(),a.forEach((function(e){e=(e=e.replace(/^\| */,"")).trim(),i.push(e)})))}return i.length>0&&t.push(i),t},He=/.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/,Ve=/.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/,Je=function(e){return e=function(e){return e.forEach((function(t,i){t.forEach((function(n,a){var r=n.match(He);if(null!==r){var o=parseInt(r[1],10);n=n.replace(He,""),t[a]=n;for(var s=i+1;s0}))}(e))},Qe=je,Xe=/^!/,et={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},tt=function(e){return(e=Qe(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},it=function(e){return(e=e||[]).length-e.filter((function(e){return e})).length>3},nt=function(e){if(e.length<=3)return[];var t=e[0].slice(0);t=t.map((function(e){return e=e.replace(/^\! */,""),e=Qe(e).text(),e=(e=tt(e)).toLowerCase()}));for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:[],t=[];it(e[0])&&e.shift();var i=e[0];return i&&i[0]&&i[1]&&(/^!/.test(i[0])||/^!/.test(i[1]))&&(t=i.map((function(e){return e=e.replace(/^\! */,""),tt(e)})),e.shift()),(i=e[0])&&i[0]&&i[1]&&/^!/.test(i[0])&&/^!/.test(i[1])&&(i.forEach((function(e,i){e=e.replace(/^\! */,""),e=tt(e),!0===Boolean(e)&&(t[i]=e)})),e.shift()),t}(i=Je(i));if(!n||n.length<=1){n=nt(i);var a=i[i.length-1]||[];n.length<=1&&a.length>2&&(n=nt(i.slice(1))).length>0&&(i=i.slice(2))}return i.map((function(e){return function(e,t){var i={};return e.forEach((function(e,n){var a=t[n]||"col"+(n+1),r=Qe(e);r.text(tt(r.text())),i[a]=r})),i}(e,n)}))},rt=function(e,t){return e.map((function(e){var i={};return Object.keys(e).forEach((function(t){i[t]=e[t].json()})),!0===t.encode&&(i=V(i)),i}))},ot={},st=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},ct={links:function(e){var t=[];if(this.data.forEach((function(e){Object.keys(e).forEach((function(i){t=t.concat(e[i].links())}))})),"number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t},keyValue:function(e){var t=this.json(e);return t.forEach((function(e){Object.keys(e).forEach((function(t){e[t]=e[t].text}))})),t},json:function(e){return e=p(e,ot),rt(this.data,e)},text:function(){return""}};ct.keyvalue=ct.keyValue,ct.keyval=ct.keyValue,Object.keys(ct).forEach((function(e){st.prototype[e]=ct[e]}));var ut=st,lt=/^\s*{\|/,pt=/^\s*\|}/,mt=function(e){for(var t=[],i=e.wiki,n=i.split("\n"),a=[],r=0;r0&&(a[a.length-1]+="\n"+n[r]);else{a[a.length-1]+="\n"+n[r];var o=a.pop();t.push(o)}else a.push(n[r]);var s=[];t.forEach((function(e){if(e){i=(i=i.replace(e+"\n","")).replace(e,"");var t=at(e);t&&t.length>0&&s.push(new ut(t))}})),s.length>0&&(e.tables=s),e.wiki=i},dt={sentences:!0},ft=function(e,t){var i={};return!0===(t=p(t,dt)).sentences&&(i.sentences=e.sentences().map((function(e){return e.json(t)}))),i},gt={sentences:!0,lists:!0,images:!0},ht=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},bt={sentences:function(e){return"number"==typeof e?this.data.sentences[e]:this.data.sentences||[]},references:function(e){return"number"==typeof e?this.data.references[e]:this.data.references},lists:function(e){return"number"==typeof e?this.data.lists[e]:this.data.lists},images:function(e){return"number"==typeof e?this.data.images[e]:this.data.images||[]},links:function(e){var t=[];if(this.sentences().forEach((function(i){t=t.concat(i.links(e))})),"number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t||[]},interwiki:function(e){var t=[];return this.sentences().forEach((function(e){t=t.concat(e.interwiki())})),"number"==typeof e?t[e]:t||[]},text:function(e){e=p(e,gt);var t=this.sentences().map((function(t){return t.text(e)})).join(" ");return this.lists().forEach((function(e){t+="\n"+e.text()})),t},json:function(e){return e=p(e,gt),ft(this,e)}};bt.citations=bt.references,Object.keys(bt).forEach((function(e){ht.prototype[e]=bt[e]}));var kt=ht;var wt=function(e){for(var t=[],i=[],n=e.split(""),a=0,r=0;r0){for(var s=0,c=0,u=0;uc&&i.push("]"),t.push(i.join("")),i=[]}}return t},vt=je,yt=new RegExp("("+_.images.join("|")+"):","i"),xt="(".concat(_.images.join("|"),")"),$t=new RegExp(xt+":(.+?)[\\||\\]]","iu"),jt={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},zt=function(e,t){var i=e.wiki;wt(i).forEach((function(n){if(!0===yt.test(n)){e.images=e.images||[];var a=function(e,t){var i=e.match($t);if(null===i||!i[2])return null;var n="".concat(i[1],":").concat(i[2]||""),a=(n=n.trim()).charAt(0).toUpperCase()+n.substring(1);if(a=a.replace(/ /g,"_")){var r={file:n,lang:t.lang,domain:t.domain};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");var o=Ie(e),s=o.list||[];return o.alt&&(r.alt=o.alt),(s=s.filter((function(e){return!1===jt.hasOwnProperty(e)})))[s.length-1]&&(r.caption=vt(s[s.length-1])),new $(r)}return null}(n,t);a&&e.images.push(a),i=i.replace(n,"")}})),e.wiki=i},Ot={},Et=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},_t={lines:function(){return this.data},links:function(e){var t=[];if(this.lines().forEach((function(e){t=t.concat(e.links())})),"number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var i=t.find((function(t){return t.page()===e}));return void 0===i?[]:[i]}return t},json:function(e){return e=p(e,Ot),this.lines().map((function(t){return t.json(e)}))},text:function(){return function(e,t){return e.map((function(e){return" * "+e.text(t)})).join("\n")}(this.data)}};Object.keys(_t).forEach((function(e){Et.prototype[e]=_t[e]}));var St=Et,Ct=je,qt=/^[#\*:;\|]+/,Nt=/^\*+[^:,\|]{4}/,At=/^ ?\#[^:,\|]{4}/,Lt=/[a-z_0-9\]\}]/i,Dt=function(e){return qt.test(e)||Nt.test(e)||At.test(e)},It=function(e,t){for(var i=[],n=t;n0&&(i.push(r),a+=r.length-1)}else n.push(t[a]);e.lists=i.map((function(e){return new St(e)})),e.wiki=n.join("\n")}},Rt=function(e,t){var i=e.wiki,n=i.split(Pt);n=(n=n.filter((function(e){return e&&e.trim().length>0}))).map((function(e){var i={wiki:e,lists:[],sentences:[],images:[]};return Mt.list(i),Mt.image(i,t),Tt(i),new kt(i)})),e.wiki=i,e.paragraphs=n},Ut=function(e,t){var i=Object.keys(e.data).reduce((function(t,i){return e.data[i]&&(t[i]=e.data[i].json()),t}),{});return!0===t.encode&&(i=V(i)),i},Ft=function(e){return(e=(e=e.toLowerCase()).replace(/[-_]/g," ")).trim()},Kt=function(e){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data})},Bt={type:function(){return this._type},links:function(e){var t=this,i=[];if(Object.keys(this.data).forEach((function(e){t.data[e].links().forEach((function(e){return i.push(e)}))})),"number"==typeof e)return i[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);var n=i.find((function(t){return t.page()===e}));return void 0===n?[]:[n]}return i},image:function(){var e=this.get("image")||this.get("image2")||this.get("logo");if(!e)return null;var t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new $(t)},get:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";e=Ft(e);for(var t=Object.keys(this.data),i=0;i0?a++:a=e.indexOf("{",a+1)){var r=e[a];if("{"===r&&(t+=1),t>0){if("}"===r&&0===(t-=1)){n.push(r);var o=n.join("");n=[],/\{\{/.test(o)&&/\}\}/.test(o)&&i.push(o);continue}if(1===t&&"{"!==r&&"}"!==r){t=0,n=[];continue}n.push(r)}}return i},Zt=function(e){var t=null;return(t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+?)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1])&&(t=t.replace(/:.*/,""),t=Ee(t)),t||null},Gt=/\{\{/,Ht=function(e){return{body:e=e.replace(/#invoke:/,""),name:Zt(e),children:[]}},Vt=function e(t){var i=t.body.substr(2);return i=i.replace(/\}\}$/,""),t.children=Yt(i),t.children=t.children.map(Ht),0===t.children.length||t.children.forEach((function(t){var i=t.body.substr(2);return Gt.test(i)?e(t):null})),t},Jt=function(e){var t=Yt(e);return t=(t=t.map(Ht)).map(Vt)},Qt=["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((function(e,t){return e[t]=!0,e}),{}),Xt=new RegExp("^(subst.)?("+_.infoboxes.join("|")+")[: \n]","i"),ei=/^infobox /i,ti=/ infobox$/i,ii=/$Year in [A-Z]/i,ni={"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},ai=function(e){return!0===ni.hasOwnProperty(e)||(!!Xt.test(e)||(!(!ei.test(e)&&!ti.test(e))||!!ii.test(e)))},ri=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.template.match(Xt),i=e.template;t&&t[0]&&(i=i.replace(t[0],""));var n={template:"infobox",type:i=i.trim(),data:e};return delete n.data.template,delete n.data.list,n},oi=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],si=oi.reduce((function(e,t,i){return 0===i||(e[t.toLowerCase()]=i),e}),{}),ci=function(e){return e<10?"0"+e:String(e)},ui=function(e){var t=String(e.year||"");if(void 0!==e.month&&!0===oi.hasOwnProperty(e.month))if(void 0===e.date)t="".concat(oi[e.month]," ").concat(e.year);else{if(t="".concat(oi[e.month]," ").concat(e.date,", ").concat(e.year),void 0!==e.hour&&void 0!==e.minute){var i="".concat(ci(e.hour),":").concat(ci(e.minute));void 0!==e.second&&(i=i+":"+ci(e.second)),t=i+", "+t}e.tz&&(t+=" (".concat(e.tz,")"))}return t},li=function(e){for(var t={},i=["year","month","date","hour","minute","second"],n=0;n0&&(n.years=a,i-=31536e6*n.years);var r=Math.floor(i/2592e6,10);r>0&&(n.months=r,i-=2592e6*n.months);var o=Math.floor(i/mi,10);return o>0&&(n.days=o),n},gi=li,hi=ui,bi=function(e){return{template:"date",data:e}},ki=function(e){var t=(e=Oe(e)).split("|"),i=gi(t.slice(1,4)),n=t.slice(4,7);if(0===n.length){var a=new Date;n=[a.getFullYear(),a.getMonth(),a.getDate()]}return{from:i,to:n=gi(n)}},wi={date:function(e,t){var i=Ie(e,["year","month","date","hour","minute","second","timezone"]),n=gi([i.year,i.month,i.date||i.day]);return i.text=hi(n),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=" (".concat(i.timezone,")")),i.hour&&i.minute&&(i.second?i.text="".concat(i.hour,":").concat(i.minute,":").concat(i.second,", ")+i.text:i.text="".concat(i.hour,":").concat(i.minute,", ")+i.text),i.text&&t.push(bi(i)),i.text},natural_date:function(e,t){var i=Ie(e,["text"]).text||"",n={};if(/^[0-9]{4}$/.test(i))n.year=parseInt(i,10);else{var a=i.replace(/[a-z]+\/[a-z]+/i,"");a=a.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");var r=new Date(a);!1===isNaN(r.getTime())&&(n.year=r.getFullYear(),n.month=r.getMonth()+1,n.date=r.getDate())}return t.push(bi(n)),i.trim()},one_year:function(e,t){var i=Ie(e,["year"]),n=Number(i.year);return t.push(bi({year:n})),String(n)},two_dates:function(e,t){var i=Ie(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){var n=gi([i.birth_year,i.birth_month,i.birth_date]);return t.push(bi(n)),hi(n)}var a=gi([i.death_year,i.death_month,i.death_date]);return t.push(bi(a)),hi(a)},age:function(e){var t=ki(e);return fi(t.from,t.to).years||0},"diff-y":function(e){var t=ki(e),i=fi(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":function(e){var t=ki(e),i=fi(t.from,t.to),n=[];return 1===i.years?n.push(i.years+" year"):i.years&&0!==i.years&&n.push(i.years+" years"),1===i.months?n.push("1 month"):i.months&&0!==i.months&&n.push(i.months+" months"),n.join(", ")},"diff-ymd":function(e){var t=ki(e),i=fi(t.from,t.to),n=[];return 1===i.years?n.push(i.years+" year"):i.years&&0!==i.years&&n.push(i.years+" years"),1===i.months?n.push("1 month"):i.months&&0!==i.months&&n.push(i.months+" months"),1===i.days?n.push("1 day"):i.days&&0!==i.days&&n.push(i.days+" days"),n.join(", ")},"diff-yd":function(e){var t=ki(e),i=fi(t.from,t.to),n=[];return 1===i.years?n.push(i.years+" year"):i.years&&0!==i.years&&n.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?n.push("1 day"):i.days&&0!==i.days&&n.push(i.days+" days"),n.join(", ")},"diff-d":function(e){var t=ki(e),i=fi(t.from,t.to),n=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?n.push("1 day"):i.days&&0!==i.days&&n.push(i.days+" days"),n.join(", ")}},vi=function(e){var t=new Date(e);if(isNaN(t.getTime()))return"";var i=(new Date).getTime()-t.getTime(),n="ago";i<0&&(n="from now",i=Math.abs(i));var a=i/1e3/60/60/24;return a<365?parseInt(a,10)+" days "+n:parseInt(a/365,10)+" years "+n},yi=wi.date,xi=wi.natural_date,$i=["January","February","March","April","May","June","July","August","September","October","November","December"],ji=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],zi=Object.assign({},pi,{currentday:function(){var e=new Date;return String(e.getDate())},currentdayname:function(){var e=new Date;return ji[e.getDay()]},currentmonth:function(){var e=new Date;return $i[e.getMonth()]},currentyear:function(){var e=new Date;return String(e.getFullYear())},monthyear:function(){var e=new Date;return $i[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":function(){var e=new Date;return e.setMonth(e.getMonth()-1),$i[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":function(){var e=new Date;return e.setMonth(e.getMonth()+1),$i[e.getMonth()]+" "+e.getFullYear()},date:0,"time ago":function(e){var t=Ie(e,["date","fmt"]).date;return vi(t)},"birth date and age":function(e,t){var i=Ie(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?xi(e,t):(t.push(i),i=li([i.year,i.month,i.day]),ui(i))},"birth year and age":function(e,t){var i=Ie(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return xi(e,t);t.push(i);var n=(new Date).getFullYear()-parseInt(i.birth_year,10);i=li([i.birth_year,i.birth_month]);var a=ui(i);return n&&(a+=" (age ".concat(n,")")),a},"death year and age":function(e,t){var i=Ie(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?xi(e,t):(t.push(i),i=li([i.death_year,i.death_month]),ui(i))},"birth date and age2":function(e,t){var i=Ie(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]),ui(i)},"birth based on age as of date":function(e,t){var i=Ie(e,["age","year","month","day"]);t.push(i);var n=parseInt(i.age,10),a=parseInt(i.year,10)-n;return a&&n?"".concat(a," (age ").concat(i.age,")"):"(age ".concat(i.age,")")},"death date and given age":function(e,t){var i=Ie(e,["year","month","day","age"]);t.push(i),i=li([i.year,i.month,i.day]);var n=ui(i);return i.age&&(n+=" (age ".concat(i.age,")")),n},dts:function(e){e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");var t=Ie(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):""},start:yi,end:yi,birth:yi,death:yi,"start date":yi,"end date":yi,"birth date":yi,"death date":yi,"start date and age":yi,"end date and age":yi,"start-date":xi,"end-date":xi,"birth-date":xi,"death-date":xi,"birth-date and age":xi,"birth-date and given age":xi,"death-date and age":xi,"death-date and given age":xi,birthdeathage:wi.two_dates,dob:yi,age:wi.age,"age nts":wi.age,"age in years":wi["diff-y"],"age in years and months":wi["diff-ym"],"age in years, months and days":wi["diff-ymd"],"age in years and days":wi["diff-yd"],"age in days":wi["diff-d"]});zi.localday=zi.currentday,zi.localdayname=zi.currentdayname,zi.localmonth=zi.currentmonth,zi.localyear=zi.currentyear,zi.currentmonthname=zi.currentmonth,zi.currentmonthabbrev=zi.currentmonth,zi["death date and age"]=zi["birth date and age"],zi.bda=zi["birth date and age"],zi["birth date based on age at death"]=zi["birth based on age as of date"];var Oi=zi,Ei={tag:function(e){var t=Ie(e,["tag","open"]);return t.open&&"pair"!==t.open?"":{span:!0,div:!0,p:!0}[t.tag]?t.content||"":"<".concat(t.tag," ").concat(t.attribs||"",">").concat(t.content||"","")},plural:function(e){e=e.replace(/plural:/,"plural|");var t=Ie(e,["num","word"]),i=Number(t.num),n=t.word;return 1!==i&&(/.y$/.test(n)?n=n.replace(/y$/,"ies"):n+="s"),i+" "+n},"first word":function(e){var t=Ie(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:function(e){var t=Ie(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":function(e){var t=Ie(e,["str","start","end"]),i=parseInt(t.start,10)-1,n=parseInt(t.end,10);return t.str.substr(i,n)},p1:0,p2:1,p3:2,braces:function(e){var t=Ie(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},nobold:0,noitalic:0,nocaps:0,syntaxhighlight:function(e,t){var i=Ie(e);return t.push(i),i.code||""},samp:function(e,t){var i=Ie(e,["1"]);return t.push(i),i[1]||""},vanchor:0,resize:1,ra:function(e){var t=Ie(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:function(e){return(Ie(e,["degrees"]).degrees||"")+"°"},hms2deg:function(e){var t=Ie(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:function(e){var t=Ie(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},rnd:0,dec:function(e){var t=Ie(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:function(e){var t=Ie(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());var n=i||"";return t.p&&(n=t.p+n),t.s&&(n=t.s+n),(t.u||t.ul||t.upl)&&(n=n+" "+(t.u||t.ul||t.upl)),n},sub:function(e,t){var i=Ie(e,["text"]);return t.push(i),i.text||""},sup:function(e,t){var i=Ie(e,["text"]);return t.push(i),i.text||""}};Ei.rndfrac=Ei.rnd,Ei.rndnear=Ei.rnd,Ei["unité"]=Ei.val;["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((function(e){Ei[e]=function(e){return Ie(e,["text"]).text||""}}));var _i=Ei,Si={plainlist:function(e){var t=(e=Oe(e)).split("|");return e=(t=t.slice(1)).join("|"),(t=(t=e.split(/\n ?\* ?/)).filter((function(e){return e}))).join("\n\n")},"collapsible list":function(e,t){var i=Ie(e);t.push(i);var n="";if(i.title&&(n+="'''".concat(i.title,"'''")+"\n\n"),!i.list){i.list=[];for(var a=1;a<10;a+=1)i[a]&&(i.list.push(i[a]),delete i[a])}return i.list=i.list.filter((function(e){return e})),n+=i.list.join("\n\n")},"ordered list":function(e,t){var i=Ie(e);return t.push(i),i.list=i.list||[],i.list.map((function(e,t){return"".concat(t+1,". ").concat(e)})).join("\n\n")},hlist:function(e){var t=Ie(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:function(e){return(Ie(e).list||[]).join(", ")},catlist:function(e){return(Ie(e).list||[]).join(", ")},"br separated entries":function(e){return(Ie(e).list||[]).join("\n\n")},"comma separated entries":function(e){return(Ie(e).list||[]).join(", ")},"anchored list":function(e){var t=Ie(e).list||[];return(t=t.map((function(e,t){return"".concat(t+1,". ").concat(e)}))).join("\n\n")},"bulleted list":function(e){var t=Ie(e).list||[];return(t=(t=t.filter((function(e){return e}))).map((function(e){return"• "+e}))).join("\n\n")},"columns-list":function(e,t){var i=((Ie(e).list||[])[0]||"").split(/\n/);return i=(i=i.filter((function(e){return e}))).map((function(e){return e.replace(/\*/,"")})),t.push({template:"columns-list",list:i}),(i=i.map((function(e){return"• "+e}))).join("\n\n")}};Si.flatlist=Si.plainlist,Si.ublist=Si.plainlist,Si["unbulleted list"]=Si["collapsible list"],Si.ubl=Si["collapsible list"],Si["bare anchored list"]=Si["anchored list"],Si["plain list"]=Si.plainlist,Si.cmn=Si["columns-list"],Si.collist=Si["columns-list"],Si["col-list"]=Si["columns-list"],Si.columnslist=Si["columns-list"];var Ci=Si,qi={convert:function(e){var t=Ie(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?"".concat(t.num," ").concat(t.two," ").concat(t.three," ").concat(t.four):"".concat(t.num," ").concat(t.two," ").concat(t.three):"".concat(t.num," ").concat(t.two)},term:function(e){var t=Ie(e,["term"]);return"".concat(t.term,":")},defn:0,lino:0,linum:function(e){var t=Ie(e,["num","text"]);return"".concat(t.num,". ").concat(t.text)},ill:function(e){return Ie(e,["text","lan1","text1","lan2","text2"]).text},frac:function(e){var t=Ie(e,["a","b","c"]);return t.c?"".concat(t.a," ").concat(t.b,"/").concat(t.c):t.b?"".concat(t.a,"/").concat(t.b):"1/".concat(t.b)},height:function(e,t){var i=Ie(e);t.push(i);var n=[];return["m","cm","ft","in"].forEach((function(e){!0===i.hasOwnProperty(e)&&n.push(i[e]+e)})),n.join(" ")},"block indent":function(e){var t=Ie(e);return t[1]?"\n"+t[1]+"\n":""},quote:function(e,t){var i=Ie(e,["text","author"]);if(t.push(i),i.text){var n='"'.concat(i.text,'"');return i.author&&(n+="\n\n",n+=" - ".concat(i.author)),n+"\n"}return""},lbs:function(e){var t=Ie(e,["text"]);return"[[".concat(t.text," Lifeboat Station|").concat(t.text,"]]")},lbc:function(e){var t=Ie(e,["text"]);return"[[".concat(t.text,"-class lifeboat|").concat(t.text,"-class]]")},lbb:function(e){var t=Ie(e,["text"]);return"[[".concat(t.text,"-class lifeboat|").concat(t.text,"]]")},own:function(e){var t=Ie(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},sic:function(e,t){var i=Ie(e,["one","two","three"]),n=(i.one||"")+(i.two||"");return"?"===i.one&&(n=(i.two||"")+(i.three||"")),t.push({template:"sic",word:n}),"y"===i.nolink?n:"".concat(n," [sic]")},formatnum:function(e){e=e.replace(/:/,"|");var t=Ie(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},"#dateformat":function(e){return e=e.replace(/:/,"|"),Ie(e,["date","format"]).date},lc:function(e){return e=e.replace(/:/,"|"),(Ie(e,["text"]).text||"").toLowerCase()},lcfirst:function(e){e=e.replace(/:/,"|");var t=Ie(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},uc:function(e){return e=e.replace(/:/,"|"),(Ie(e,["text"]).text||"").toUpperCase()},ucfirst:function(e){e=e.replace(/:/,"|");var t=Ie(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:function(e){e=e.replace(/:/,"|");var t=Ie(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:function(e){e=e.replace(/:/,"|");var t=Ie(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbr:function(e){return Ie(e,["abbr","meaning","ipa"]).abbr},abbrlink:function(e){var t=Ie(e,["abbr","page"]);return t.page?"[[".concat(t.page,"|").concat(t.abbr,"]]"):"[[".concat(t.abbr,"]]")},h:1,finedetail:0,sort:1};qi["str left"]=qi.trunc,qi["str crop"]=qi.trunc,qi.tooltip=qi.abbr,qi.abbrv=qi.abbr,qi.define=qi.abbr,qi.cvt=qi.convert;var Ni=qi,Ai=Object.assign({},_i,Ci,Ni);var Li=function(e){var t=e.pop(),i=Number(e[0]||0),n=Number(e[1]||0),a=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;var r=1;return/[SW]/i.test(t)&&(r=-1),r*(i+n/60+a/3600)},Di=function(e){if("number"!=typeof e)return e;var t=1e5;return Math.round(e*t)/t},Ii={s:!0,w:!0},Ti=function(e){var i=Ie(e);i=function(e){return e.list=e.list||[],e.list=e.list.map((function(t){var i=Number(t);if(!isNaN(i))return i;var n=t.split(/:/);return n.length>1?(e.props=e.props||{},e.props[n[0]]=n.slice(1).join(":"),null):t})),e.list=e.list.filter((function(e){return null!==e})),e}(i);var n,a,r=(n=i.list,a=n.map((function(e){return t(e)})).join("|"),2===n.length&&"number|number"===a?{lat:n[0],lon:n[1]}:4===n.length&&"number|string|number|string"===a?(Ii[n[1].toLowerCase()]&&(n[0]*=-1),"w"===n[3].toLowerCase()&&(n[2]*=-1),{lat:n[0],lon:n[2]}):6===n.length?{lat:Li(n.slice(0,3)),lon:Li(n.slice(3))}:8===n.length?{lat:Li(n.slice(0,4)),lon:Li(n.slice(4))}:{});return i.lat=Di(r.lat),i.lon=Di(r.lon),i.template="coord",delete i.list,i},Pi={coord:function(e,t){var i=Ti(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":"".concat(i.lat||"","°N, ").concat(i.lon||"","°W")},geo:["lat","lon","zoom"]};Pi.coor=Pi.coord,Pi["coor title dms"]=Pi.coord,Pi["coor title dec"]=Pi.coord,Pi["coor dms"]=Pi.coord,Pi["coor dm"]=Pi.coord,Pi["coor dec"]=Pi.coord;var Mi=Pi,Ri={etyl:1,mention:1,link:1,"la-verb-form":0,"la-ipa":0,sortname:function(e){var t=Ie(e,["first","last","target","sort"]),i="".concat(t.first||""," ").concat(t.last||"");return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=" (".concat(t.dab,")"),t.target&&(t.target+=" (".concat(t.dab,")"))),t.target?"[[".concat(t.target,"|").concat(i,"]]"):"[[".concat(i,"]]"))}};["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"].forEach((function(e){Ri[e]=function(e){var t=Ie(e,["first","second"]);return t.second||t.first}})),Ri.m=Ri.mention,Ri["m-self"]=Ri.mention,Ri.l=Ri.link,Ri.ll=Ri.link,Ri["l-self"]=Ri.link;var Ui=Ri,Fi={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"},Ki={about:function(e,t){var i=Ie(e);return t.push(i),""},main:function(e,t){var i=Ie(e);return t.push(i),""},"main list":function(e,t){var i=Ie(e);return t.push(i),""},see:function(e,t){var i=Ie(e);return t.push(i),""},for:function(e,t){var i=Ie(e);return t.push(i),""},further:function(e,t){var i=Ie(e);return t.push(i),""},"further information":function(e,t){var i=Ie(e);return t.push(i),""},listen:function(e,t){var i=Ie(e);return t.push(i),""},"wide image":["file","width","caption"],redirect:function(e,t){for(var i=Ie(e,["redirect"]),n=i.list||[],a=[],r=0;r0&&t.push(a)}return{template:"playoffbracket",rounds:t}}(e);return t.push(i),""}};["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"].forEach((function(e){Ji[e]=Ji["4teambracket"]}));var Qi=Ji,Xi={"£":"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"},en=function(e,t){var i=Ie(e,["amount","code"]);t.push(i);var n=i.template||"";switch("currency"===n?(n=i.code)||(i.code=n="usd"):""!==n&&"monnaie"!==n&&"unité"!==n&&"nombre"!==n&&"nb"!==n||(n=i.code),n=(n||"").toLowerCase()){case"us":i.code=n="usd";break;case"uk":i.code=n="gbp"}var a="".concat(Xi[n]||"").concat(i.amount||"");return i.code&&!Xi[i.code.toLowerCase()]&&(a+=" "+i.code),a},tn={currency:en,monnaie:en,"unité":en,nombre:en,nb:en,iso4217:en,inrconvert:function(e,t){var i=Ie(e,["rupee_value","currency_formatting"]);t.push(i);var n=i.currency_formatting;if(n){var a=1;switch(n){case"k":a=1e3;break;case"m":a=1e6;break;case"b":a=1e9;break;case"t":a=1e12;break;case"l":a=1e5;break;case"c":a=1e7;break;case"lc":a=1e12}i.rupee_value=i.rupee_value*a}return"inr ".concat(i.rupee_value||"")}};Object.keys(Xi).forEach((function(e){tn[e]=en}));var nn=tn,an={"election box begin":function(e,t){var i=Ie(e);return t.push(i),""},"election box candidate":function(e,t){var i=Ie(e);return t.push(i),""},"election box hold with party link":function(e,t){var i=Ie(e);return t.push(i),""},"election box gain with party link":function(e,t){var i=Ie(e);return t.push(i),""}};an["election box begin no change"]=an["election box begin"],an["election box begin no party"]=an["election box begin"],an["election box begin no party no change"]=an["election box begin"],an["election box inline begin"]=an["election box begin"],an["election box inline begin no change"]=an["election box begin"],an["election box candidate for alliance"]=an["election box candidate"],an["election box candidate minor party"]=an["election box candidate"],an["election box candidate no party link no change"]=an["election box candidate"],an["election box candidate with party link"]=an["election box candidate"],an["election box candidate with party link coalition 1918"]=an["election box candidate"],an["election box candidate with party link no change"]=an["election box candidate"],an["election box inline candidate"]=an["election box candidate"],an["election box inline candidate no change"]=an["election box candidate"],an["election box inline candidate with party link"]=an["election box candidate"],an["election box inline candidate with party link no change"]=an["election box candidate"],an["election box inline incumbent"]=an["election box candidate"];var rn=an,on=[["🇦🇩","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"],["🇺🇸","usa","united states"],["🇺🇸","us","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"],["","win","west indies"],["🇼🇫","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"]],sn={flag:function(e){var t=Ie(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();var n=on.find((function(e){return t.flag===e[1]||t.flag===e[2]}))||[],a=n[0]||"";return"".concat(a," [[").concat(n[2],"|").concat(i,"]]")},flagcountry:function(e){var t=Ie(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=on.find((function(e){return t.flag===e[1]||t.flag===e[2]}))||[],n=i[0]||"";return"".concat(n," [[").concat(i[2],"]]")},flagcu:function(e){var t=Ie(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=on.find((function(e){return t.flag===e[1]||t.flag===e[2]}))||[],n=i[0]||"";return"".concat(n," ").concat(i[2])},flagicon:function(e){var t=Ie(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=on.find((function(e){return t.flag===e[1]||t.flag===e[2]}));return i?"[[".concat(i[2],"|").concat(i[0],"]]"):""},flagdeco:function(e){var t=Ie(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(on.find((function(e){return t.flag===e[1]||t.flag===e[2]}))||[])[0]||""},fb:function(e){var t=Ie(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=on.find((function(e){return t.flag===e[1]||t.flag===e[2]}));return i?"".concat(i[0]," [[").concat(i[2]," national football team|").concat(i[2],"]]"):""},fbicon:function(e){var t=Ie(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=on.find((function(e){return t.flag===e[1]||t.flag===e[2]}));return i?" [[".concat(i[2]," national football team|").concat(i[0],"]]"):""},flagathlete:function(e){var t=Ie(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();var i=on.find((function(e){return t.flag===e[1]||t.flag===e[2]}));return i?"".concat(i[0]," [[").concat(t.name||"","]] (").concat(i[1].toUpperCase(),")"):"[[".concat(t.name||"","]]")}};on.forEach((function(e){sn[e[1]]=function(){return e[0]}})),sn.cr=sn.flagcountry,sn["cr-rt"]=sn.flagcountry,sn.cricon=sn.flagicon;var cn=sn,un=function(e){var t=e.match(/ipac?-(.+)/);return null!==t?!0===S.hasOwnProperty(t[1])?S[t[1]].english_title:t[1]:null},ln={ipa:function(e,t){var i=Ie(e,["transcription","lang","audio"]);return i.lang=un(i.template),i.template="ipa",t.push(i),""},ipac:function(e,t){var i=Ie(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=un(i.template),i.template="ipac",t.push(i),""},transl:function(e,t){var i=Ie(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""}};Object.keys(S).forEach((function(e){ln["ipa-"+e]=ln.ipa,ln["ipac-"+e]=ln.ipac}));var pn=ln,mn={lang:1,"lang-de":0,"rtl-lang":1,taste:0,nihongo:function(e,t){var i=Ie(e,["english","kanji","romaji","extra"]);t.push(i);var n=i.english||i.romaji||"";return i.kanji&&(n+=" (".concat(i.kanji,")")),n}};Object.keys(S).forEach((function(e){mn["lang-"+e]=mn["lang-de"]})),mn.nihongo2=mn.nihongo,mn.nihongo3=mn.nihongo,mn["nihongo-s"]=mn.nihongo,mn["nihongo foot"]=mn.nihongo;var dn=mn,fn=function(e){if(!e.numerator&&!e.denominator)return null;var t=Number(e.numerator)/Number(e.denominator);t*=100;var i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},gn={math:function(e,t){var i=Ie(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},frac:function(e,t){var i=Ie(e,["a","b","c"]),n={template:"sfrac"};return i.c?(n.integer=i.a,n.numerator=i.b,n.denominator=i.c):i.b?(n.numerator=i.a,n.denominator=i.b):(n.numerator=1,n.denominator=i.a),t.push(n),n.integer?"".concat(n.integer," ").concat(n.numerator,"⁄").concat(n.denominator):"".concat(n.numerator,"⁄").concat(n.denominator)},radic:function(e){var t=Ie(e,["after","before"]);return"".concat(t.before||"","√").concat(t.after||"")},percentage:function(e){var t=Ie(e,["numerator","denominator","decimals"]),i=fn(t);return null===i?"":i+"%"},"percent-done":function(e){var t=Ie(e,["done","total","digits"]),i=fn({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":"".concat(t.done," (").concat(i,"%) done")},"winning percentage":function(e,t){var i=Ie(e,["wins","losses","ties"]);t.push(i);var n=Number(i.wins),a=Number(i.losses),r=Number(i.ties)||0,o=n+a+r;"y"===i.ignore_ties&&(r=0),r&&(n+=r/2);var s=fn({numerator:n,denominator:o,decimals:1});return null===s?"":".".concat(10*s)},winlosspct:function(e,t){var i=Ie(e,["wins","losses"]);t.push(i);var n=Number(i.wins),a=Number(i.losses),r=fn({numerator:n,denominator:n+a,decimals:1});return null===r?"":(r=".".concat(10*r),"".concat(n||0," || ").concat(a||0," || ").concat(r||"-"))}};gn.sfrac=gn.frac,gn.sqrt=gn.radic,gn.pct=gn.percentage,gn.percent=gn.percentage,gn.winpct=gn["winning percentage"],gn.winperc=gn["winning percentage"];var hn=gn,bn=function(e,t,i){var n=Ie(e);return i&&(n.name=n.template,n.template=i),t.push(n),""},kn={persondata:bn,taxobox:bn,citation:bn,portal:bn,reflist:bn,"cite book":bn,"cite journal":bn,"cite web":bn,"commons cat":bn,"portuguese name":["first","second","suffix"],uss:["ship","id"],isbn:function(e,t){var i=Ie(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},marriage:function(e,t){var i=Ie(e,["spouse","from","to","end"]);t.push(i);var n="".concat(i.spouse||"");return i.from&&(i.to?n+=" (m. ".concat(i.from,"-").concat(i.to,")"):n+=" (m. ".concat(i.from,")")),n},"based on":function(e,t){var i=Ie(e,["title","author"]);return t.push(i),"".concat(i.title," by ").concat(i.author||"")},"video game release":function(e,t){for(var i=["region","date","region2","date2","region3","date3","region4","date4"],n=Ie(e,i),a={template:"video game release",releases:[]},r=0;r0&&t.push(c),""},Yn=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},Zn={text:function(){return""},json:function(){return this.data}};Object.keys(Zn).forEach((function(e){Yn.prototype[e]=Zn[e]}));var Gn=Yn,Hn=new RegExp("^(cite |citation)","i"),Vn={citation:!0,refn:!0,harvnb:!0},Jn=function(e){return"infobox"===e.template&&e.data&&function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}(e.data)},Qn=function(e,t){var i=e.wiki,n=Jt(i),a=[],r=function e(t,n){t.parent=n,t.children&&t.children.length>0&&t.children.forEach((function(i){return e(i,t)})),t.out=Wn(t,a);!function e(t,i,n){t.parent&&(t.parent.body=t.parent.body.replace(i,n),e(t.parent,i,n))}(t,t.body,t.out),i=i.replace(t.body,t.out)};n.forEach((function(e){return r(e,null)})),e.infoboxes=e.infoboxes||[],e.references=e.references||[],e.templates=e.templates||[],e.templates=e.templates.concat(a),e.templates=e.templates.filter((function(i){return!0===function(e){return!0===Vn[e.template]||!0===Hn.test(e.template)}(i)?(e.references.push(new Me(i)),!1):!0!==Jn(i)||(i.domain=t.domain,e.infoboxes.push(new Wt(i)),!1)})),e.templates=e.templates.map((function(e){return new Gn(e)})),n.forEach((function(e){i=i.replace(e.body,e.out)})),e.wiki=i},Xn=je,ea=function(e,t){var i=e.wiki;i=i.replace(/]*?)>([\s\S]+?)<\/gallery>/g,(function(i,n,a){var r=a.split(/\n/g);return(r=(r=r.filter((function(e){return e&&""!==e.trim()}))).map((function(e){var i=e.split(/\|/),n={file:i[0].trim(),lang:t.language,domain:t.domain},a=new $(n).json(),r=i.slice(1).join("|");return""!==r&&(a.caption=Xn(r)),a}))).length>0&&e.templates.push({template:"gallery",images:r,pos:e.title}),""})),e.wiki=i},ta=function(e){var t=e.wiki;t=t.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,(function(t){var i={wiki:t,templates:[]};Qn(i);var n=i.templates.map((function(e){return e.json()})),a=n.find((function(e){return"election box"===e.template}))||{},r=n.filter((function(e){return"election box candidate"===e.template})),o=n.find((function(e){return"election box gain"===e.template||"election box hold"===e.template}))||{};return(r.length>0||o)&&e.templates.push({template:"election box",title:a.title,candidates:r,summary:o.data}),""})),e.wiki=t},ia={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"]},na=function(e){var t=e.wiki;t=t.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,(function(t,i){t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();var n="! "+ia[i].join(" !! "),a=at("{|\n"+n+"\n"+t+"\n|}");return a=a.map((function(e){return Object.keys(e).forEach((function(t){e[t]=e[t].text()})),e})),e.templates.push({template:"NBA "+i+" statistics",data:a}),""})),e.wiki=t},aa=function(e){var t=e.wiki;t=t.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,(function(t){var i=function(e){var 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,"");var n="! "+i.join(" !! "),a=at("{|\n"+n+"\n"+t+"\n|}");return a=a.map((function(e){return Object.keys(e).forEach((function(t){e[t]=e[t].text()})),e})),e.templates.push({template:"mlb game log section",data:a}),""})),e.wiki=t},ra=["res","record","opponent","method","event","date","round","time","location","notes"],oa=function(e){var t=e.wiki;t=t.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,(function(t){t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");var i="! "+ra.join(" !! "),n=at("{|\n"+i+"\n"+t+"\n|}");return n=n.map((function(e){return Object.keys(e).forEach((function(t){e[t]=e[t].text()})),e})),e.templates.push({template:"mma record start",data:n}),""})),e.wiki=t},sa=je,ca=function(e){var t=e.wiki;t=(t=t.replace(/]*?)>([\s\S]+?)<\/math>/g,(function(t,i,n){var a=sa(n).text();return e.templates.push({template:"math",formula:a,raw:n}),a&&a.length<12?a:""}))).replace(/]*?)>([\s\S]+?)<\/chem>/g,(function(t,i,n){return e.templates.push({template:"chem",data:n}),""})),e.wiki=t},ua=function(e,t){ta(e),ea(e,t),ca(e),aa(e),oa(e),na(e)},la=new RegExp("^("+_.references.join("|")+"):?","i"),pa=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,ma={heading:Ze,table:mt,paragraphs:Rt,templates:Qn,references:Be,startEndTemplates:ua},da=function(e,t){return ma.startEndTemplates(e,t),ma.references(e),ma.templates(e,t),ma.table(e),ma.paragraphs(e,t),e=new ie(e)},fa=function(e){for(var t=[],i=e.wiki.split(pa),n=0;n0||t.templates().length>0||(e[i+1]&&e[i+1].depth>t.depth&&(e[i+1].depth-=1),!1)}))}(t)},ga=new RegExp("\\[\\[:?("+_.categories.join("|")+"):(.{2,178}?)]](w{0,10})","ig"),ha=new RegExp("^\\[\\[:?("+_.categories.join("|")+"):","ig"),ba={section:fa,categories:function(e){var t=e.wiki,i=t.match(ga);i&&i.forEach((function(t){(t=(t=(t=t.replace(ha,"")).replace(/\|?[ \*]?\]\]$/i,"")).replace(/\|.*/,""))&&!t.match(/[\[\]]/)&&e.categories.push(t.trim())})),t=t.replace(ga,""),e.wiki=t}},ka=function(e,t){t=t||{};var i=Object.assign(t,{title:t.title||null,pageID:t.pageID||t.id||null,namespace:t.namespace||t.ns||null,type:"page",wiki:e||"",categories:[],sections:[],coordinates:[]});return!0===R(e)?(i.type="redirect",i.redirectTo=U(e),ba.categories(i),new E(i)):(Z(i),ba.categories(i),ba.section(i),new E(i))},wa=function(e){var t=(e=e.filter((function(e){return e}))).map((function(e){return ka(e.wiki,e.meta)}));return 0===t.length?null:1===t.length?t[0]:t},va=function(e,t){return fetch(e,t).then((function(e){return e.json()}))},ya=function(e){var t=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":t,"User-Agent":t,Origin:e.noOrigin?"":e.origin||e.Origin||"*"},redirect:"follow"}},xa=/^https?:\/\//,$a={lang:"en",wiki:"wikipedia",domain:null,follow_redirects:!0,path:"api.php"},ja=function(t,i,n){var a=null;"function"==typeof i&&(a=i,i={}),"function"==typeof n&&(a=n,n={}),"string"==typeof i&&(n=n||{},i=Object.assign({},{lang:i},n)),i=i||{},(i=Object.assign({},$a,i)).title=t,xa.test(t)&&(i=Object.assign(i,e(t)));var r=c(i),o=ya(i);return va(r,o).then((function(e){try{var t=u(e,i);return t=wa(t),a&&a(null,t),t}catch(e){throw e}})).catch((function(e){return console.error(e),a&&a(e,null),null}))},za={lang:"en",wiki:"wikipedia",domain:null,path:"w/api.php"},Oa=function(e,t){var i;t=t||{},t=Object.assign({},za,t),"string"==typeof e?t.lang=e:(i=e)&&"[object Object]"===Object.prototype.toString.call(i)&&(t=Object.assign(t,e));var n="https://".concat(t.lang,".wikipedia.org/").concat(t.path,"?");t.domain&&(n="https://".concat(t.domain,"/").concat(t.path,"?")),n+="format=json&action=query&generator=random&grnnamespace=0&prop=revisions|pageprops&rvprop=content&grnlimit=1&rvslots=main&origin=*";var a=ya(t);return va(n,a).then((function(e){try{var t=u(e);return wa(t)}catch(e){throw e}})).catch((function(e){return console.error(e),null}))},Ea={lang:"en",wiki:"wikipedia",domain:null,path:"w/api.php"},_a=function(e,t,i){var n;i=i||{},i=Object.assign({},Ea,i),"string"==typeof t?i.lang=t:(n=t)&&"[object Object]"===Object.prototype.toString.call(n)&&(i=Object.assign(i,t));var a={pages:[],categories:[]};return new Promise((function(t,n){!function r(o){var s=function(e,t,i){e=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return!1===/^Category/i.test(e)&&(e="Category:"+e),e.replace(/ /g,"_")}(e),e=encodeURIComponent(e);var n="https://".concat(t.lang,".wikipedia.org/").concat(t.path,"?");return t.domain&&(n="https://".concat(t.domain,"/").concat(t.path,"?")),n+="action=query&list=categorymembers&cmtitle=".concat(e,"&cmlimit=500&format=json&origin=*&redirects=true&cmtype=page|subcat"),i&&(n+="&cmcontinue="+i),n}(e,i,o),c=ya(i);return va(s,c).then((function(e){a=function(e){var t=e.query.categorymembers||[],i={pages:[],categories:[]};return t.forEach((function(e){14===e.ns?(delete e.ns,i.categories.push(e)):(delete e.ns,i.pages.push(e))})),i}(e),e.continue&&e.continue.cmcontinue?r(e.continue.cmcontinue):t(a)})).catch((function(e){console.error(e),n(e)}))}(null)}))},Sa=function(e,t){return ka(e,t)},Ca={Doc:E,Section:ie,Paragraph:kt,Sentence:ge,Image:$,Infobox:Wt,Link:se,List:St,Reference:Me,Table:ut,Template:Gn,http:va,wtf:Sa};Sa.fetch=function(e,t,i,n){return ja(e,t,i)},Sa.random=function(e,t,i){return Oa(e,t)},Sa.category=function(e,t,i,n){return _a(e,t,i)},Sa.extend=function(e){return e(Ca,Fn,this),this},Sa.version="8.5.1";var qa=Sa;export default qa; +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 e7398464..8cda1312 100644 --- a/builds/wtf_wikipedia.js +++ b/builds/wtf_wikipedia.js @@ -1,18 +1,24 @@ -/* 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('https')) : - typeof define === 'function' && define.amd ? define(['https'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtf = factory(global.https)); -}(this, (function (https) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('isomorphic-unfetch')) : + typeof define === 'function' && define.amd ? define(['isomorphic-unfetch'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtf = factory(global.unfetch)); +}(this, (function (isomorphicUnfetch) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - var https__default = /*#__PURE__*/_interopDefaultLegacy(https); - - var parseUrl = function parseUrl(url) { - var parsed = new URL(url); //eslint-disable-line - - var title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); + var isomorphicUnfetch__default = /*#__PURE__*/_interopDefaultLegacy(isomorphicUnfetch); + + /** + * 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); + let title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); title = decodeURIComponent(title); return { domain: parsed.host, @@ -20,85 +26,84 @@ }; }; - var _00ParseUrl = parseUrl; + var parseUrl_1 = parseUrl; - function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; + /** + * capitalizes the input + * hello -> Hello + * hello there -> Hello there + * + * @private + * @param {string} [str] the string that will be capitalized + * @returns {string} the capitalized string + */ + function capitalise(str) { + if (str && typeof str === 'string') { + return str.charAt(0).toUpperCase() + str.slice(1); } - return _typeof(obj); - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; + return ''; } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } + /** + * 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$1(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 _arr; + 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 _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; + function isArray$3(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 + */ - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; + function isObject$1(x) { + return x && Object.prototype.toString.call(x) === '[object Object]'; } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } + var helpers = { + capitalise, + trim_whitespace: trim_whitespace$1, + isArray: isArray$3, + isObject: isObject$1 + }; - var isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; - var defaults = { + const { + isArray: isArray$2 + } = helpers; + const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; + const defaults$c = { action: 'query', prop: 'revisions|pageprops', - //we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. + // we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. rvprop: 'content', maxlag: 5, rvslots: 'main', @@ -106,97 +111,119 @@ format: 'json', redirects: 'true' }; + /** + * turns a object into a query string + * + * @private + * @param {Object} obj + * @returns {string} QueryString + */ - var toQueryString = function toQueryString(obj) { - return Object.entries(obj).map(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - - return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)); - }).join('&'); - }; - - var isArray = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; + const toQueryString = function (obj) { + return Object.entries(obj).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&'); }; + /** + * cleans and prepares the tile by replacing the spaces with underscores (_) and trimming the white spaces of the ends + * + * @private + * @param {string} page the title that needs cleaning + * @returns {string} the cleaned title + */ - var cleanTitle = function cleanTitle(page) { - page = page.replace(/ /g, '_'); - page = page.trim(); // page = encodeURIComponent(page) - return page; + const cleanTitle = page => { + return page.replace(/ /g, '_').trim(); }; + /** + * generates the url for fetching the pages + * + * @private + * @param {import('.').fetchDefaults} options + * @returns {string} the url that can be used to make the fetch + */ - var makeUrl = function makeUrl(options) { - var params = Object.assign({}, defaults); // default url - var url = "https://".concat(options.lang, ".").concat(options.wiki, ".org/w/api.php?"); // from a 3rd party wiki + const makeUrl = function (options) { + let params = Object.assign({}, defaults$c); //default url - options.domain = options.domain || options.wikiUrl; //support old syntax + let apiPath = ''; //add support for third party apis if (options.domain) { - var path = options.path; //wikimedia api uses ./w/api path. no others do - - if (isInterWiki.test(options.domain)) { - path = 'w/api.php'; - } - - url = "https://".concat(options.domain, "/").concat(path, "?"); + //wikimedia is the only api that uses `/w/api` as its path. other wikis use other paths + let path = isInterWiki.test(options.domain) ? 'w/api.php' : options.path; + apiPath = `https://${options.domain}/${path}?`; + } else if (options.lang && options.wiki) { + apiPath = `https://${options.lang}.${options.wiki}.org/w/api.php?`; + } else { + return ''; } if (!options.follow_redirects) { delete params.redirects; - } // support numerical ids - - - var page = options.title; - - if (typeof page === 'number') { - params.pageids = page; //single pageId - } else if (isArray(page) && typeof page[0] === 'number') { - params.pageids = page.join('|'); //pageid array - } else if (isArray(page) === true) { - //support array - params.titles = page.map(cleanTitle).join('|'); + } //support numerical ids + + + let title = options.title; + + if (typeof title === 'number') { + //single pageId + params.pageids = title; + } else if (typeof title === 'string') { + //single page title + params.titles = cleanTitle(title); + } else if (title !== undefined && isArray$2(title) && typeof title[0] === 'number') { + //pageid array + params.pageids = title.join('|'); + } else if (title !== undefined && isArray$2(title) === true && typeof title[0] === 'string') { + //title array + params.titles = title.map(cleanTitle).join('|'); } else { - // single page - params.titles = cleanTitle(page); - } // make it! + return ''; + } //make it! - url += toQueryString(params); - return url; + return `${apiPath}${toQueryString(params)}`; }; - var _01MakeUrl = makeUrl; + var makeUrl_1 = makeUrl; + + /** + * parses the media wiki api response to something we can use + * + * the data-format from mediawiki api is nutso + * + * @private + * @param {object} data + * @param {object} [options] + * @returns {*} result + */ + const getResult = function (data, options = {}) { + //get all the pagesIds from the result + let pages = Object.keys(data.query.pages); // map over the pageIds to parse out all the information - //this data-format from mediawiki api is nutso - var getResult = function getResult(data, options) { - options = options || {}; - var pages = Object.keys(data.query.pages); - var docs = pages.map(function (id) { - var page = data.query.pages[id] || {}; + return pages.map(id => { + // get the page by pageID + let page = data.query.pages[id] || {}; // if the page is missing or not found than return null if (page.hasOwnProperty('missing') || page.hasOwnProperty('invalid')) { return null; - } + } // get the text from the object + - var text = page.revisions[0]['*']; // console.log(page.revisions[0]) - //us the 'generator' result format, for the random() method + let text = page.revisions[0]['*']; // if the text is not found in the regular place than it is at the other place if (!text && page.revisions[0].slots) { text = page.revisions[0].slots.main['*']; } page.pageprops = page.pageprops || {}; - var domain = options.domain; + let domain = options.domain; if (!domain && options.wiki) { - domain = "".concat(options.wiki, ".org"); + domain = `${options.wiki}.org`; } - var meta = Object.assign({}, options, { + let meta = Object.assign({}, options, { title: page.title, pageID: page.pageid, namespace: page.ns, @@ -204,27 +231,28 @@ wikidata: page.pageprops.wikibase_item, description: page.pageprops['wikibase-shortdesc'] }); - - try { - return { - wiki: text, - meta: meta - }; - } catch (e) { - console.error(e); - throw e; - } + return { + wiki: text, + meta: meta + }; }); - return docs; }; - var _02GetResult = getResult; + var getResult_1 = getResult; - //helper for looping around all sections of a document - var sectionMap = function sectionMap(doc, fn, clue) { - var arr = []; - doc.sections().forEach(function (sec) { - var list = []; + /** + * helper for looping around all sections of a document + * + * @private + * @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 {Array|*} the array of item at the index of the clue + */ + const sectionMap = function (doc, fn, clue) { + let arr = []; + doc.sections().forEach(sec => { + let list = []; if (typeof clue === 'string') { list = sec[fn](clue); @@ -232,13 +260,17 @@ list = sec[fn](); } - list.forEach(function (t) { + list.forEach(t => { arr.push(t); }); }); if (typeof clue === 'number') { - return arr[clue]; + if (arr[clue] === undefined) { + return []; + } + + return [arr[clue]]; } return arr; @@ -246,23 +278,71 @@ var _sectionMap = sectionMap; - // - var setDefaults = function setDefaults(options, defaults) { + /** + * applies the the key values of defaults to options + * + * @private + * @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); }; var setDefaults_1 = setDefaults; - var defaults$1 = { + /** + * @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$b = { title: true, sections: true, pageID: true, categories: true - }; //an opinionated output of the most-wanted data - - var toJSON = function toJSON(doc, options) { - options = setDefaults_1(options, defaults$1); - var data = {}; + }; + /** + * @typedef documentToJsonReturn + * @property {string | undefined} title + * @property {number | null | undefined} pageID + * @property {string[] | undefined} categories + * @property {object[] | undefined} sections + * @property {boolean | undefined} isRedirect + * @property {object | undefined} redirectTo + * @property {object[] | undefined} coordinates + * @property {object[] | undefined} infoboxes + * @property {Image[] | undefined} images + * @property {string | undefined} plaintext + * @property {object[] | undefined} references + */ + + /** + * an opinionated output of the most-wanted data + * + * @private + * @param {Document} doc + * @param {DocumentToJsonOptions} options + * @returns {documentToJsonReturn} + */ + + const toJSON$3 = function (doc, options) { + options = setDefaults_1(options, defaults$b); + /** + * @type {documentToJsonReturn} + */ + + let data = {}; if (options.title) { data.title = doc.title(); @@ -277,14 +357,12 @@ } if (options.sections) { - data.sections = doc.sections().map(function (i) { - return i.json(options); - }); + data.sections = doc.sections().map(i => i.json(options)); } if (doc.isRedirect() === true) { data.isRedirect = true; - data.redirectTo = doc.data.redirectTo; + data.redirectTo = doc.redirectTo(); data.sections = []; } //these are default-off @@ -294,15 +372,11 @@ } if (options.infoboxes) { - data.infoboxes = doc.infoboxes().map(function (i) { - return i.json(options); - }); + data.infoboxes = doc.infoboxes().map(i => i.json(options)); } if (options.images) { - data.images = doc.images().map(function (i) { - return i.json(options); - }); + data.images = doc.images().map(i => i.json(options)); } if (options.plaintext) { @@ -316,9 +390,67 @@ return data; }; - var toJson = toJSON; + var toJson$6 = toJSON$3; + + var categories$1 = ['category', //en + 'abdeeling', // pdc + 'bólkur', // fo + 'catagóir', // ga + 'categori', // cy + 'categoria', 'categoria', // co + 'categoría', // es + 'categorîa', // lij + 'categorìa', // pms + 'catégorie', 'categorie', 'catègorie', // frp + 'category', 'categuria', // lmo + 'catigurìa', // scn + 'class', // kw + 'ẹ̀ka', // yo + 'flocc', 'flocc', // ang + 'flokkur', 'grup', // tpi + 'jamii', // sw + 'kaarangay', // war + 'kateggoría', // lad + 'kategooria', // et + 'kategori', // da + 'kategorî', // ku + 'kategoria', // eu + 'kategória', // hu + 'kategorie', //de + 'kategoriija', // se + 'kategorija', // sl + 'kategorio', // eo + 'kategoriya', 'kategoriýa', // tk + 'kategoriye', // diq + 'kategory', // fy + 'kategorya', // tl + 'kateqoriya', // az + 'katiguriya', // qu + 'klad', // vo + 'luokka', 'ñemohenda', // gn + 'roinn', //-seòrsa gd + 'ronney', // gv + 'rummad', // br + 'setensele', // nso + 'sokajy', // mg + 'sumut', // atassuseq kl + 'thể', // loại vi + 'turkum', // uz + 'категорија', 'категория', // ru + 'категорія', // uk + 'катэгорыя', 'төркем', // tt + 'קטגוריה', // he + 'تصنيف', 'تۈر', // ug + 'رده', 'श्रेणी', 'श्रेणी', // hi + 'বিষয়শ্রেণী', // bn + 'หมวดหมู่', // th + '분류', // ko + '분류', //ko + '分类' // za + //-- + ]; - var disambig = ['dab', //en + var disambig_templates = ['dab', //en 'disamb', //en 'disambig', //en 'disambiguation', //en @@ -490,44 +622,295 @@ // 'သဵင်မိူၼ် တူၼ်ႈထႅဝ်ပႅၵ်ႇ', //shn ]; - var i18n = disambig.reduce(function (h, str) { + // used in titles to denote disambiguation pages + // see 'Football_(disambiguation)' + var disambig_titles = ['disambiguation', //en + 'homonymie', //fr + 'توضيح', //ar + 'desambiguação', //pt + 'Begriffsklärung', //de + 'disambigua', //it + '曖昧さ回避', //ja + '消歧義', //zh + '搞清楚', //zh-yue + 'значения', //ru + 'ابهام‌زدایی', //fa + 'د ابہام', //ur + '동음이의', //ko + 'dubbelsinnig', //af + 'այլ կիրառումներ', //hy + 'ujednoznacznienie' //pl + ]; + + var images = ['file', //en + 'image', //en + 'चित्र', //img + 'archivo', //es + 'attēls', //lv + 'berkas', //id + 'bestand', //nl + 'datei', //de + 'dosiero', //eo + 'dosya', //lad + 'fájl', //hu + 'fasciculus', //la + 'fichier', //fr + 'fil', //da + 'fitxategi', //eu + 'fitxer', //ca + 'gambar', //su + 'imagem', //pt + 'imej', //ms + 'immagine', //it + 'larawan', //tl + 'lêer', //af + 'plik', //pl + 'restr', //br + 'slika', //bs + 'wêne', //ku + 'wobraz', //dsb + 'выява', //be + 'податотека', //mk + 'слика', //sr + 'файл', //ru + 'სურათი', //ka + 'պատկեր', //hy + 'קובץ', //he + 'پرونده', //fa + 'دوتنه', //ps + 'ملف', //ar + 'وێنە', //ckb + 'चित्र', //hi + 'ไฟล์', //th + '파일', //ko + 'ファイル' //ja + ]; + + var infoboxes = ['infobox', //en + 'anfo', //mwl + 'anuāmapa', //haw + 'bilgi kutusu', //tr + 'bilgi', //tr + 'bilgiquti', //uz + 'boaty', //mg + 'boestkelaouiñ', //br + 'bosca', //ga + 'capsa', //la + 'diehtokássa', //se + 'faktamall', //sv + 'ficha', //es + 'generalni', //hr + 'gwybodlen3', //cy + 'info', //pt + 'infobokis', //tpi + 'infoboks', //da + 'infochascha', //rm + 'infokašćik', //dsb + 'infokast', //et + 'infokutija', //bs + 'infolentelė', //lt + 'infopolje', //sl + 'informkesto', //eo + 'infoskreine', //ltg + 'infotaula', //eu + 'inligtingskas', 'inligtingskas3', //af + 'inligtingskas4', //af + 'kishtey', //gv + 'kotak', //su + 'tertcita', //jbo + 'tietolaatikko', //fi + 'yerleşim bilgi kutusu', 'ynfoboks', //fy + 'πλαίσιο', //el + 'акарточка', //ab + 'аҥа', //mhr + 'инфобокс', //kk + 'инфокутија', //sr + 'инфокутия', //bg + 'інфобокс', //rue + 'канадский', 'картка', //be + 'карточка', //ru + 'карточка2', //mdf + 'карточкарус', //ba + 'картуш', //koi + 'қуттӣ', //tg + 'ინფოდაფა', //ka + 'տեղեկաքարտ', //hy + 'אינפאקעסטל', //yi + 'תבנית', //he + 'بطاقة', //ar + 'ڄاڻخانو', //sd + 'خانہ', //ur + 'لغة', 'ज्ञानसन्दूक', //hi + 'তথ্যছক', //bn + 'ਜਾਣਕਾਰੀਡੱਬਾ', //pa + 'సమాచారపెట్టె', //te + 'තොරතුරුකොටුව', //si + 'กล่องข้อมูล', //th + 'ប្រអប់ព័ត៌មាន', //km + '정보상자', //ko + '明細' //zh_yue + ]; + + var redirects$1 = ['adkas', //br + 'aýdaw', 'doorverwijzing', //nl + 'ohjaus', 'patrz', //pl + 'přesměruj', 'redirección', 'redireccion', 'redirección', //es + 'redirecionamento', //pt + 'redirect', //en + 'redirection', 'redirection', //fr + 'rinvia', //it + 'tilvísun', 'uudelleenohjaus', 'weiterleitung', 'weiterleitung', //de + 'yönlendi̇r', 'yönlendirme', 'yönlendi̇rme', //tr + 'ανακατευθυνση', //el + 'айдау', 'перанакіраваньне', 'перенаправлення', //uk + 'пренасочување', //mk + 'преусмери', 'преусмјери', 'تغییر_مسیر', 'تغییرمسیر', 'تغییرمسیر', //fa + 'เปลี่ยนทาง', //th + 'ប្តូរទីតាំងទៅ', //km + '転送', //ja + '重定向']; + + var references = ['references', 'reference', 'einzelnachweise', 'referencias', 'références', 'notes et références', '脚注', 'referenser', 'bronnen', 'примечания']; + + /** + * 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[] + * }} + */ + + var i18n = { + categories: categories$1, + disambig_templates: disambig_templates, + disambig_titles: disambig_titles, + images: images, + infoboxes: infoboxes, + redirects: redirects$1, + references: 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) + //] + + }; + + //alt disambig-templates en-wikipedia uses + let d = ' disambiguation'; + const templates$a = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce((h, str) => { h[str] = true; return h; - }, {}); //special disambig-templates en-wikipedia uses + }, {}); + var _disambig = templates$a; - var d = ' disambiguation'; - var english = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce(function (h, str) { + const inTitle = new RegExp('. \\((' + i18n.disambig_titles.join('|') + ')\\)$', 'i'); + const i18n_templates = i18n.disambig_templates.reduce((h, str) => { h[str] = true; return h; - }, {}); + }, {}); // look for '... may refer to' - var isDisambig = function isDisambig(doc) { - var templates = doc.templates(); - var found = templates.find(function (obj) { - return english.hasOwnProperty(obj.template) || i18n.hasOwnProperty(obj.template); - }); + const byText = function (s) { + if (!s) { + return false; + } - if (found) { - return true; - } // try 'may refer to' on first line for en-wiki? + let txt = s.text(); + if (txt !== null && txt[0]) { + if (/. may (also)? refer to\b/i.test(txt) === true) { + return true; + } + } - if (doc.sentences(0)) { - var firstLine = doc.sentences(0).text(); + return false; + }; + /** + * Parses the wikitext to find out if this page is a disambiguation + * + * @private + * @param {Document} doc the document that is examined + * @returns {boolean} an indication if the document is a disambiguation page + */ - if (firstLine !== null && firstLine[0]) { - if (/. may refer to ./i.test(firstLine) === true) { - return true; - } - } + + const isDisambig = function (doc) { + // check for a {{disambig}} template + let templates = doc.templates().map(tmpl => tmpl.json()); + let found = templates.find(obj => { + return _disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); + }); + + if (found) { + return true; + } // check for (disambiguation) in title + + + let title = doc.title(); + + if (title && inTitle.test(title) === true) { + return true; + } //try 'may refer to' on first line for en-wiki? + + + if (byText(doc.sentence(0)) === true || byText(doc.sentence(1)) === true) { + return true; } return false; }; - var disambig$1 = isDisambig; + var isDisambig_1 = isDisambig; - var defaults$2 = { + const defaults$a = { caption: true, alt: true, links: true, @@ -535,9 +918,9 @@ url: true }; // - var toJson$1 = function toJson(img, options) { - options = setDefaults_1(options, defaults$2); - var json = { + const toJson$5 = function (img, options) { + options = setDefaults_1(options, defaults$a); + let json = { file: img.file() }; @@ -565,12 +948,12 @@ return json; }; - var toJson_1 = toJson$1; + var toJson_1$3 = toJson$5; - var server = 'wikipedia.org'; + const server = 'wikipedia.org'; - var encodeTitle = function encodeTitle(file) { - var title = file.replace(/^(image|file?)\:/i, ''); //titlecase it + const encodeTitle = function (file) { + let title = file.replace(/^(image|file?)\:/i, ''); //titlecase it title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores @@ -579,57 +962,63 @@ }; //the wikimedia image url is a little silly: - var makeSrc = function makeSrc(file) { - var title = encodeTitle(file); + const makeSrc = function (file) { + let title = encodeTitle(file); title = encodeURIComponent(title); return title; }; //the class for our image generation functions - var Image = function Image(data) { + const Image = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; - var methods = { - file: function file() { + const methods$8 = { + file() { return this.data.file || ''; }, - alt: function alt() { - var str = this.data.alt || this.data.file || ''; + + alt() { + let str = this.data.alt || this.data.file || ''; str = str.replace(/^(file|image):/i, ''); str = str.replace(/\.(jpg|jpeg|png|gif|svg)/i, ''); return str.replace(/_/g, ' '); }, - caption: function caption() { + + caption() { if (this.data.caption) { return this.data.caption.text(); } return ''; }, - links: function links() { + + links() { if (this.data.caption) { return this.data.caption.links(); } return []; }, - url: function url() { + + url() { // let lang = 'en' //this.language() || 'en' //hmm: get actual language? - var fileName = makeSrc(this.file()); - var domain = this.data.domain || server; - var path = "wiki/Special:Redirect/file"; - return "https://".concat(domain, "/").concat(path, "/").concat(fileName); + let fileName = makeSrc(this.file()); + let domain = this.data.domain || server; + let path = `wiki/Special:Redirect/file`; + return `https://${domain}/${path}/${fileName}`; }, - thumbnail: function thumbnail(size) { + + thumbnail(size) { size = size || 300; return this.url() + '?width=' + size; }, - format: function format() { - var arr = this.file().split('.'); + + format() { + let arr = this.file().split('.'); if (arr[arr.length - 1]) { return arr[arr.length - 1].toLowerCase(); @@ -637,566 +1026,25 @@ return null; }, - json: function json(options) { + + json: function (options) { options = options || {}; - return toJson_1(this, options); + return toJson_1$3(this, options); }, - text: function text() { + text: function () { return ''; + }, + wikitext: function () { + return this.data.wiki || ''; } }; - Object.keys(methods).forEach(function (k) { - Image.prototype[k] = methods[k]; + Object.keys(methods$8).forEach(k => { + Image.prototype[k] = methods$8[k]; }); Image.prototype.src = Image.prototype.url; Image.prototype.thumb = Image.prototype.thumbnail; var Image_1 = Image; - var defaults$3 = { - tables: true, - lists: true, - paragraphs: true - }; // - - var Document = function Document(data) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - }; - - var methods$1 = { - title: function title(str) { - //use like a setter - if (str !== undefined) { - this.data.title = str; - return str; - } //if we have it already - - - if (this.data.title) { - return this.data.title; - } //guess the title of this page from first sentence bolding - - - var guess = null; - var sen = this.sentences(0); - - if (sen) { - guess = sen.bolds(0); - } - - return guess; - }, - pageID: function pageID(id) { - if (id !== undefined) { - this.data.pageID = id; - } - - return this.data.pageID; - }, - wikidata: function wikidata(id) { - if (id !== undefined) { - this.data.wikidata = id; - } - - return this.data.wikidata; - }, - domain: function domain(str) { - if (str !== undefined) { - this.data.domain = str; - } - - return this.data.domain; - }, - language: function language(lang) { - if (lang !== undefined) { - this.data.lang = lang; - } - - return this.data.lang; - }, - url: function url() { - var title = this.title(); - - if (!title) { - return null; - } - - var lang = this.language() || 'en'; - var domain = this.domain() || 'wikipedia.org'; // replace blank to underscore - - title = title.replace(/ /g, '_'); - title = encodeURIComponent(title); - return "https://".concat(lang, ".").concat(domain, "/wiki/").concat(title); - }, - namespace: function namespace(ns) { - if (ns !== undefined) { - this.data.namespace = ns; - } - - return this.data.namespace; - }, - isRedirect: function isRedirect() { - return this.data.type === 'redirect'; - }, - redirectTo: function redirectTo() { - return this.data.redirectTo; - }, - isDisambiguation: function isDisambiguation() { - return disambig$1(this); - }, - categories: function categories(clue) { - if (typeof clue === 'number') { - return this.data.categories[clue]; - } - - return this.data.categories || []; - }, - sections: function sections(clue) { - var _this = this; - - var arr = this.data.sections || []; - arr.forEach(function (sec) { - return sec.doc = _this; - }); //grab a specific section, by its title - - if (typeof clue === 'string') { - var str = clue.toLowerCase().trim(); - return arr.find(function (s) { - return s.title().toLowerCase() === str; - }); - } - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - paragraphs: function paragraphs(n) { - var arr = []; - this.data.sections.forEach(function (s) { - arr = arr.concat(s.paragraphs()); - }); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; - }, - paragraph: function paragraph(n) { - var arr = this.paragraphs() || []; - - if (typeof n === 'number') { - return arr[n]; - } - - return arr[0]; - }, - sentences: function sentences(n) { - var arr = []; - this.sections().forEach(function (sec) { - arr = arr.concat(sec.sentences()); - }); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; - }, - sentence: function sentence() { - return this.sentences(0); - }, - images: function images(clue) { - var _this2 = this; - - var arr = _sectionMap(this, 'images', null); //grab image from infobox, first - - this.infoboxes().forEach(function (info) { - var img = info.image(); - - if (img) { - arr.unshift(img); //put it at the top - } - }); //look for 'gallery' templates, too - - this.templates().forEach(function (obj) { - if (obj.template === 'gallery') { - obj.images = obj.images || []; - obj.images.forEach(function (img) { - if (img instanceof Image_1 === false) { - img.language = _this2.language(); - img.domain = _this2.domain(); - img = new Image_1(img); - } - - arr.push(img); - }); - } - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - image: function image() { - return this.images(0); - }, - links: function links(clue) { - return _sectionMap(this, 'links', clue); - }, - interwiki: function interwiki(clue) { - return _sectionMap(this, 'interwiki', clue); - }, - lists: function lists(clue) { - return _sectionMap(this, 'lists', clue); - }, - tables: function tables(clue) { - return _sectionMap(this, 'tables', clue); - }, - templates: function templates(clue) { - return _sectionMap(this, 'templates', clue); - }, - references: function references(clue) { - return _sectionMap(this, 'references', clue); - }, - coordinates: function coordinates(clue) { - return _sectionMap(this, 'coordinates', clue); - }, - infoboxes: function infoboxes(clue) { - var arr = _sectionMap(this, 'infoboxes'); //sort them by biggest-first - - arr = arr.sort(function (a, b) { - if (Object.keys(a.data).length > Object.keys(b.data).length) { - return -1; - } - - return 1; - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - text: function text(options) { - options = setDefaults_1(options, defaults$3); //nah, skip these. - - if (this.isRedirect() === true) { - return ''; - } - - var arr = this.sections().map(function (sec) { - return sec.text(options); - }); - return arr.join('\n\n'); - }, - json: function json(options) { - options = setDefaults_1(options, defaults$3); - return toJson(this, options); - }, - debug: function debug() { - console.log('\n'); - this.sections().forEach(function (sec) { - var indent = ' - '; - - for (var i = 0; i < sec.depth; i += 1) { - indent = ' -' + indent; - } - - console.log(indent + (sec.title() || '(Intro)')); - }); - return this; - } - }; - - var isArray$1 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; //add singular-methods, too - - - var plurals = ['sections', 'infoboxes', 'sentences', 'citations', 'references', 'coordinates', 'tables', 'lists', 'links', 'images', 'templates', 'categories']; - plurals.forEach(function (fn) { - var sing = fn.replace(/ies$/, 'y'); - sing = sing.replace(/oxes$/, 'ox'); - sing = sing.replace(/s$/, ''); - - methods$1[sing] = function (n) { - n = n || 0; - var res = this[fn](n); - - if (isArray$1(res)) { - return res[0]; - } - - return res; - }; - }); - Object.keys(methods$1).forEach(function (k) { - Document.prototype[k] = methods$1[k]; - }); //alias these ones - - 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; - var Document_1 = Document; - - var categories = ['category', //en - 'abdeeling', // pdc - 'bólkur', // fo - 'catagóir', // ga - 'categori', // cy - 'categoria', 'categoria', // co - 'categoría', // es - 'categorîa', // lij - 'categorìa', // pms - 'catégorie', 'categorie', 'catègorie', // frp - 'category', 'categuria', // lmo - 'catigurìa', // scn - 'class', // kw - 'ẹ̀ka', // yo - 'flocc', 'flocc', // ang - 'flokkur', 'grup', // tpi - 'jamii', // sw - 'kaarangay', // war - 'kateggoría', // lad - 'kategooria', // et - 'kategori', // da - 'kategorî', // ku - 'kategoria', // eu - 'kategória', // hu - 'kategorie', //de - 'kategoriija', // se - 'kategorija', // sl - 'kategorio', // eo - 'kategoriya', 'kategoriýa', // tk - 'kategoriye', // diq - 'kategory', // fy - 'kategorya', // tl - 'kateqoriya', // az - 'katiguriya', // qu - 'klad', // vo - 'luokka', 'ñemohenda', // gn - 'roinn', //-seòrsa gd - 'ronney', // gv - 'rummad', // br - 'setensele', // nso - 'sokajy', // mg - 'sumut', // atassuseq kl - 'thể', // loại vi - 'turkum', // uz - 'категорија', 'категория', // ru - 'категорія', // uk - 'катэгорыя', 'төркем', // tt - 'קטגוריה', // he - 'تصنيف', 'تۈر', // ug - 'رده', 'श्रेणी', 'श्रेणी', // hi - 'বিষয়শ্রেণী', // bn - 'หมวดหมู่', // th - '분류', // ko - '분류', //ko - '分类' // za - //-- - ]; - - var images = ['file', //en - 'image', //en - 'चित्र', //img - 'archivo', //es - 'attēls', //lv - 'berkas', //id - 'bestand', //nl - 'datei', //de - 'dosiero', //eo - 'dosya', //lad - 'fájl', //hu - 'fasciculus', //la - 'fichier', //fr - 'fil', //da - 'fitxategi', //eu - 'fitxer', //ca - 'gambar', //su - 'imagem', //pt - 'imej', //ms - 'immagine', //it - 'larawan', //tl - 'lêer', //af - 'plik', //pl - 'restr', //br - 'slika', //bs - 'wêne', //ku - 'wobraz', //dsb - 'выява', //be - 'податотека', //mk - 'слика', //sr - 'файл', //ru - 'სურათი', //ka - 'պատկեր', //hy - 'קובץ', //he - 'پرونده', //fa - 'دوتنه', //ps - 'ملف', //ar - 'وێنە', //ckb - 'चित्र', //hi - 'ไฟล์', //th - '파일', //ko - 'ファイル' //ja - ]; - - var infoboxes = ['infobox', //en - 'anfo', //mwl - 'anuāmapa', //haw - 'bilgi kutusu', //tr - 'bilgi', //tr - 'bilgiquti', //uz - 'boaty', //mg - 'boestkelaouiñ', //br - 'bosca', //ga - 'capsa', //la - 'diehtokássa', //se - 'faktamall', //sv - 'ficha', //es - 'generalni', //hr - 'gwybodlen3', //cy - 'info', //pt - 'infobokis', //tpi - 'infoboks', //da - 'infochascha', //rm - 'infokašćik', //dsb - 'infokast', //et - 'infokutija', //bs - 'infolentelė', //lt - 'infopolje', //sl - 'informkesto', //eo - 'infoskreine', //ltg - 'infotaula', //eu - 'inligtingskas', 'inligtingskas3', //af - 'inligtingskas4', //af - 'kishtey', //gv - 'kotak', //su - 'tertcita', //jbo - 'tietolaatikko', //fi - 'yerleşim bilgi kutusu', 'ynfoboks', //fy - 'πλαίσιο', //el - 'акарточка', //ab - 'аҥа', //mhr - 'инфобокс', //kk - 'инфокутија', //sr - 'инфокутия', //bg - 'інфобокс', //rue - 'канадский', 'картка', //be - 'карточка', //ru - 'карточка2', //mdf - 'карточкарус', //ba - 'картуш', //koi - 'қуттӣ', //tg - 'ინფოდაფა', //ka - 'տեղեկաքարտ', //hy - 'אינפאקעסטל', //yi - 'תבנית', //he - 'بطاقة', //ar - 'ڄاڻخانو', //sd - 'خانہ', //ur - 'لغة', 'ज्ञानसन्दूक', //hi - 'তথ্যছক', //bn - 'ਜਾਣਕਾਰੀਡੱਬਾ', //pa - 'సమాచారపెట్టె', //te - 'තොරතුරුකොටුව', //si - 'กล่องข้อมูล', //th - 'ប្រអប់ព័ត៌មាន', //km - '정보상자', //ko - '明細' //zh_yue - ]; - - var redirects = ['adkas', //br - 'aýdaw', 'doorverwijzing', 'ohjaus', 'patrz', //pl - 'přesměruj', 'redirección', 'redireccion', 'redirección', //es - 'redirecionamento', //pt - 'redirect', //en - 'redirection', 'redirection', //fr - 'rinvia', //it - 'tilvísun', 'uudelleenohjaus', 'weiterleitung', 'weiterleitung', //de - 'yönlendi̇r', 'yönlendirme', 'yönlendi̇rme', //tr - 'ανακατευθυνση', //el - 'айдау', 'перанакіраваньне', 'перенаправлення', //uk - 'пренасочување', //mk - 'преусмери', 'преусмјери', 'تغییر_مسیر', 'تغییرمسیر', 'تغییرمسیر', //fa - 'เปลี่ยนทาง', //th - 'ប្តូរទីតាំងទៅ', //km - '転送', //ja - '重定向']; - - var references = ['references', 'reference', 'einzelnachweise', 'referencias', 'références', 'notes et références', '脚注', 'referenser', 'bronnen', 'примечания']; - - // and then manually on March 2020 - - var i18n$1 = { - categories: categories, - disambig: disambig, - images: images, - infoboxes: infoboxes, - redirects: redirects, - references: 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) - // ] - - }; - var languages = { aa: 'Afar', //Afar @@ -1510,7 +1358,7 @@ //Dutch ne: 'नेपाली', //Nepali - "new": 'नेपालभाषा', + new: 'नेपालभाषा', //Newar ng: 'Oshiwambo', //Ndonga @@ -1706,10 +1554,10 @@ }; - var wp = '.wikipedia.org/wiki/$1'; - var wm = '.wikimedia.org/wiki/$1'; - var w = 'www.'; - var interwiki = { + const wp = '.wikipedia.org/wiki/$1'; + const wm = '.wikimedia.org/wiki/$1'; + const w = 'www.'; + var interwiki$1 = { acronym: w + 'acronymfinder.com/$1.html', advisory: 'advisory' + wm, advogato: w + 'advogato.org/$1', @@ -2173,32 +2021,28 @@ //so we have to whitelist allowable interwiki links //add language prefixes too.. - Object.keys(languages).forEach(function (k) { - interwiki[k] = k + '.wikipedia.org/wiki/$1'; + Object.keys(languages).forEach(k => { + interwiki$1[k] = k + '.wikipedia.org/wiki/$1'; }); //this is predictably very complicated. // https://meta.wikimedia.org/wiki/Help:Interwiki_linking - var parseInterwiki = function parseInterwiki(obj) { - var str = obj.page || ''; + const parseInterwiki = function (obj) { + let str = obj.page || ''; if (str.indexOf(':') !== -1) { - var m = str.match(/^(.*):(.*)/); + let m = str.match(/^(.*):(.*)/); if (m === null) { return obj; } - var site = m[1] || ''; + let site = m[1] || ''; site = site.toLowerCase(); if (site.indexOf(':') !== -1) { - var _site$match = site.match(/^:?(.*):(.*)/), - _site$match2 = _slicedToArray(_site$match, 3), - wiki = _site$match2[1], - lang = _site$match2[2]; //only allow interwikis to these specific places + let [, wiki, lang] = site.match(/^:?(.*):(.*)/); //only allow interwikis to these specific places - - if (interwiki.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { + if (interwiki$1.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { return obj; } @@ -2207,7 +2051,7 @@ lang: lang }; } else { - if (interwiki.hasOwnProperty(site) === false) { + if (interwiki$1.hasOwnProperty(site) === false) { return obj; } @@ -2220,13 +2064,13 @@ return obj; }; - var interwiki$1 = parseInterwiki; + var interwiki = parseInterwiki; - var ignore_links = /^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i; - var external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g; - var link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" + const ignore_links = /^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i; + const external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g; + const link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" - var external_links = function external_links(links, str) { + const external_links = function (links, str) { str.replace(external_link, function (raw, protocol, link, text) { text = text || ''; links.push({ @@ -2240,12 +2084,12 @@ return links; }; - var internal_links = function internal_links(links, str) { + const internal_links = function (links, str) { //regular links str.replace(link_reg, function (raw, s, suffix) { - var txt = null; //make a copy of original + let txt = null; //make a copy of original - var link = s; + let link = s; if (s.match(/\|/)) { //replacement link [[link|text]] @@ -2272,16 +2116,16 @@ //remove anchors from end [[toronto#history]] - var obj = { + let obj = { page: link, raw: raw }; - obj.page = obj.page.replace(/#(.*)/, function (a, b) { + obj.page = obj.page.replace(/#(.*)/, (a, b) => { obj.anchor = b; return ''; }); //grab any fr:Paris parts - obj = interwiki$1(obj); + obj = interwiki(obj); if (obj.wiki) { obj.type = 'interwiki'; @@ -2313,8 +2157,8 @@ }; //grab an array of internal links in the text - var parse_links = function parse_links(str) { - var links = []; //first, parse external links + const parse_links = function (str) { + let links = []; //first, parse external links links = external_links(links, str); //internal links @@ -2327,11 +2171,11 @@ return links; }; - var parse = parse_links; + var parse$8 = parse_links; - var REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n$1.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); + const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); - var isRedirect = function isRedirect(wiki) { + const isRedirect = function (wiki) { //too long to be a redirect? if (!wiki || wiki.length > 500) { return false; @@ -2340,49 +2184,49 @@ return REDIRECT_REGEX.test(wiki); }; - var parse$1 = function parse$1(wiki) { - var m = wiki.match(REDIRECT_REGEX); + const parse$7 = function (wiki) { + let m = wiki.match(REDIRECT_REGEX); if (m && m[2]) { - var links = parse(m[2]) || []; + let links = parse$8(m[2]) || []; return links[0]; } return {}; }; - var redirects$1 = { + var redirects = { isRedirect: isRedirect, - parse: parse$1 + parse: parse$7 }; //okay, i know you're not supposed to regex html, but... //https://en.wikipedia.org/wiki/Help:HTML_in_wikitext //these are things we throw-away //these will mess-up if they're nested, but they're not usually. - var ignore = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; - var openTag = "< ?(".concat(ignore.join('|'), ") ?[^>]{0,200}?>"); - var closeTag = "< ?/ ?(".concat(ignore.join('|'), ") ?>"); - var anyChar = '\\s\\S'; //including newline + const ignore$1 = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; + const openTag = `< ?(${ignore$1.join('|')}) ?[^>]{0,200}?>`; + const closeTag = `< ?/ ?(${ignore$1.join('|')}) ?>`; + const anyChar = '\\s\\S'; //including newline - var noThanks = new RegExp("".concat(openTag, "[").concat(anyChar, "]+?").concat(closeTag), 'ig'); + const noThanks = new RegExp(`${openTag}[${anyChar}]+?${closeTag}`, 'ig'); - var kill_xml = function kill_xml(wiki) { + const kill_xml = function (wiki) { //( tags are parsed in Section class) - luckily, refs can't be recursive. //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, ' '); // // convert these html tags to known formatting - wiki = wiki.replace(/(.*?)<\/i>/g, "''$1''"); - wiki = wiki.replace(/(.*?)<\/b>/g, "'''$1'''"); // these are better-handled with templates + wiki = wiki.replace(/(.*?)<\/i>/g, `''$1''`); + wiki = wiki.replace(/(.*?)<\/b>/g, `'''$1'''`); // these are better-handled with templates - wiki = wiki.replace(/(.*?)<\/sub>/g, "{{sub|$1}}"); - wiki = wiki.replace(/(.*?)<\/sup>/g, "{{sup|$1}}"); //some formatting xml, we'll keep their insides though + wiki = wiki.replace(/(.*?)<\/sub>/g, `{{sub|$1}}`); + wiki = wiki.replace(/(.*?)<\/sup>/g, `{{sup|$1}}`); //some formatting xml, we'll keep their insides though wiki = wiki.replace(/ ?<[ \/]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ \/]?> ?/g, ' '); //, @@ -2397,9 +2241,17 @@ var kill_xml_1 = kill_xml; - function preProcess(doc) { - var wiki = doc.wiki; //remove comments - + /** + * removes unnecessary strings from the wikitext + * it is mostly-formatting stuff can be cleaned-up first, to make life easier + * + * @private + * @param {string} wiki the wikitext that needs processing + * @returns {string} the processed text + */ + + function preProcess(wiki) { + //remove comments wiki = wiki.replace(//g, ''); wiki = wiki.replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi, ''); //signitures @@ -2421,34 +2273,40 @@ wiki = wiki.replace(/\([,;: ]+?\)/g, ''); //these templates just screw things up, too wiki = wiki.replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i, ''); - doc.wiki = wiki; + return wiki; } var preProcess_1 = preProcess; - // 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 - var specialChar = /[\\\.$]/; - - var encodeStr = function encodeStr(str) { + const specialChar = /[\\\.$]/; + /** + * this function encodes a string to make it mongodb compatible. + * https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 + * + * @param {string} str + * @returns {string} the encoded string + */ + + const encodeStr = function (str) { if (typeof str !== 'string') { str = ''; } str = str.replace(/\\/g, '\\\\'); - str = str.replace(/^\$/, "\\u0024"); - str = str.replace(/\./g, "\\u002e"); + str = str.replace(/^\$/, '\\u0024'); + str = str.replace(/\./g, '\\u002e'); return str; }; - var encodeObj = function encodeObj() { - var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var keys = Object.keys(obj); + const encodeObj = function (obj = {}) { + let keys = Object.keys(obj); - for (var i = 0; i < keys.length; i += 1) { + for (let i = 0; i < keys.length; i += 1) { if (specialChar.test(keys[i]) === true) { - var str = encodeStr(keys[i]); + let str = encodeStr(keys[i]); if (str !== keys[i]) { obj[str] = obj[keys[i]]; @@ -2464,7 +2322,7 @@ encodeObj: encodeObj }; - var defaults$4 = { + const defaults$9 = { headers: true, depth: true, paragraphs: true, @@ -2474,25 +2332,33 @@ infoboxes: true, lists: true, references: true - }; // + }; + /** + * + * @param {Section} section + * @param {sectionToJsonOptions} options + * @returns {object} + */ + + const toJSON$2 = function (section, options) { + options = setDefaults_1(options, defaults$9); + /** + * @type {object} + */ - var toJSON$1 = function toJSON(section, options) { - options = setDefaults_1(options, defaults$4); - var data = {}; + let data = {}; if (options.headers === true) { data.title = section.title(); } if (options.depth === true) { - data.depth = section.depth; + data.depth = section.depth(); } //these return objects if (options.paragraphs === true) { - var paragraphs = section.paragraphs().map(function (p) { - return p.json(options); - }); + let paragraphs = section.paragraphs().map(p => p.json(options)); if (paragraphs.length > 0) { data.paragraphs = paragraphs; @@ -2501,9 +2367,7 @@ if (options.images === true) { - var images = section.images().map(function (img) { - return img.json(options); - }); + let images = section.images().map(img => img.json(options)); if (images.length > 0) { data.images = images; @@ -2512,9 +2376,7 @@ if (options.tables === true) { - var tables = section.tables().map(function (t) { - return t.json(options); - }); + let tables = section.tables().map(t => t.json(options)); if (tables.length > 0) { data.tables = tables; @@ -2523,24 +2385,20 @@ if (options.templates === true) { - var templates = section.templates(); + let templates = section.templates().map(tmpl => tmpl.json()); if (templates.length > 0) { data.templates = templates; //encode them, for mongodb if (options.encode === true) { - data.templates.forEach(function (t) { - return encode.encodeObj(t); - }); + data.templates.forEach(t => encode.encodeObj(t)); } } } //infobox json data if (options.infoboxes === true) { - var infoboxes = section.infoboxes().map(function (i) { - return i.json(options); - }); + let infoboxes = section.infoboxes().map(i => i.json(options)); if (infoboxes.length > 0) { data.infoboxes = infoboxes; @@ -2549,9 +2407,7 @@ if (options.lists === true) { - var lists = section.lists().map(function (list) { - return list.json(options); - }); + let lists = section.lists().map(list => list.json(options)); if (lists.length > 0) { data.lists = lists; @@ -2560,9 +2416,7 @@ if (options.references === true || options.citations === true) { - var references = section.references().map(function (ref) { - return ref.json(options); - }); + let references = section.references().map(ref => ref.json(options)); if (references.length > 0) { data.references = references; @@ -2571,468 +2425,125 @@ if (options.sentences === true) { - data.sentences = section.sentences().map(function (s) { - return s.json(options); - }); + data.sentences = section.sentences().map(s => s.json(options)); } return data; }; - var toJson$2 = toJSON$1; + var toJson$4 = toJSON$2; - var defaults$5 = { - tables: true, - references: true, - paragraphs: true, - templates: true, - infoboxes: true - }; //the stuff between headings - 'History' section for example + const defaults$8 = { + type: 'internal' + }; - var Section = function Section(data) { - this.depth = data.depth; - this.doc = null; - this._title = data.title || ''; - Object.defineProperty(this, 'doc', { - enumerable: false, - value: null - }); - data.templates = data.templates || []; + const Link = function (data) { + data = data || {}; + data = Object.assign({}, defaults$8, data); Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; - var methods$2 = { - title: function title() { - return this._title || ''; + const methods$7 = { + text: function (str) { + if (str !== undefined) { + this.data.text = str; + } + + let txt = this.data.text || this.data.page || ''; // remove bold/italics + + txt = txt.replace(/''+/g, ''); + return txt; }, - index: function index() { - if (!this.doc) { - return null; + json: function () { + let obj = { + text: this.data.text, + type: this.type() + }; + + if (obj.type === 'internal') { + obj.page = this.page(); + } else if (obj.type === 'interwiki') { + obj.wiki = this.wiki(); + } else { + obj.site = this.site(); } - var index = this.doc.sections().indexOf(this); + let anchor = this.anchor(); - if (index === -1) { - return null; + if (anchor) { + obj.anchor = anchor; } - return index; + return obj; }, - indentation: function indentation() { - return this.depth; + wikitext: function () { + let txt = this.data.raw || ''; + return txt; }, - sentences: function sentences(n) { - var arr = this.paragraphs().reduce(function (list, p) { - return list.concat(p.sentences()); - }, []); - - if (typeof n === 'number') { - return arr[n]; + page: function (str) { + if (str !== undefined) { + this.data.page = str; } - return arr || []; + return this.data.page; }, - paragraphs: function paragraphs(n) { - var arr = this.data.paragraphs || []; - - if (typeof n === 'number') { - return arr[n]; + anchor: function (str) { + if (str !== undefined) { + this.data.anchor = str; } - return arr || []; + return this.data.anchor || ''; }, - paragraph: function paragraph(n) { - var arr = this.data.paragraphs || []; - - if (typeof n === 'number') { - return arr[n]; + wiki: function (str) { + if (str !== undefined) { + this.data.wiki = str; } - return arr[0]; + return this.data.wiki; }, - links: function links(n) { - var arr = []; - this.infoboxes().forEach(function (templ) { - templ.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - this.sentences().forEach(function (s) { - s.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - this.tables().forEach(function (t) { - t.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - this.lists().forEach(function (list) { - list.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - - 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 - - var link = arr.find(function (o) { - return o.page() === n; - }); - return link === undefined ? [] : [link]; + type: function (str) { + if (str !== undefined) { + this.data.type = str; } - return arr; + return this.data.type; }, - tables: function tables(clue) { - var arr = this.data.tables || []; - - if (typeof clue === 'number') { - return arr[clue]; + site: function (str) { + if (str !== undefined) { + this.data.site = str; } - return arr; + return this.data.site; }, - templates: function templates(clue) { - var arr = this.data.templates || []; - arr = arr.map(function (t) { - return t.json(); - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - if (typeof clue === 'string') { - clue = clue.toLowerCase(); - return arr.filter(function (o) { - return o.template === clue || o.name === clue; - }); - } - - return arr; - }, - infoboxes: function infoboxes(clue) { - var arr = this.data.infoboxes || []; - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - coordinates: function coordinates(clue) { - var arr = [].concat(this.templates('coord'), this.templates('coor')); - - if (typeof clue === 'number') { - if (!arr[clue]) { - return []; - } - - return arr[clue]; - } - - return arr; - }, - lists: function lists(clue) { - var arr = []; - this.paragraphs().forEach(function (p) { - arr = arr.concat(p.lists()); - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - interwiki: function interwiki(num) { - var arr = []; - this.paragraphs().forEach(function (p) { - arr = arr.concat(p.interwiki()); - }); - - if (typeof num === 'number') { - return arr[num]; - } - - return arr || []; - }, - images: function images(clue) { - var arr = []; - this.paragraphs().forEach(function (p) { - arr = arr.concat(p.images()); - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr || []; - }, - references: function references(clue) { - var arr = this.data.references || []; - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - //transformations - remove: function remove() { - if (!this.doc) { - return null; - } - - var bads = {}; - bads[this.title()] = true; //remove children too - - this.children().forEach(function (sec) { - return bads[sec.title()] = true; - }); - var arr = this.doc.data.sections; - arr = arr.filter(function (sec) { - return bads.hasOwnProperty(sec.title()) !== true; - }); - this.doc.data.sections = arr; - return this.doc; - }, - //move-around sections like in jquery - nextSibling: function nextSibling() { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - - for (var i = index + 1; i < sections.length; i += 1) { - if (sections[i].depth < this.depth) { - return null; - } - - if (sections[i].depth === this.depth) { - return sections[i]; - } - } - - return null; - }, - lastSibling: function lastSibling() { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - return sections[index - 1] || null; - }, - children: function children(n) { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - var children = []; //(immediately preceding sections with higher depth) - - if (sections[index + 1] && sections[index + 1].depth > this.depth) { - for (var i = index + 1; i < sections.length; i += 1) { - if (sections[i].depth > this.depth) { - children.push(sections[i]); - } else { - break; - } - } - } - - if (typeof n === 'string') { - n = n.toLowerCase(); - return children.find(function (s) { - return s.title().toLowerCase() === n; - }); - } - - if (typeof n === 'number') { - return children[n]; - } - - return children; - }, - parent: function parent() { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - - for (var i = index; i >= 0; i -= 1) { - if (sections[i] && sections[i].depth < this.depth) { - return sections[i]; - } - } - - return null; - }, - text: function text(options) { - options = setDefaults_1(options, defaults$5); - var pList = this.paragraphs(); - pList = pList.map(function (p) { - return p.text(options); - }); - return pList.join('\n\n'); - }, - json: function json(options) { - options = setDefaults_1(options, defaults$5); - return toJson$2(this, options); - } - }; //aliases - - methods$2.next = methods$2.nextSibling; - methods$2.last = methods$2.lastSibling; - methods$2.previousSibling = methods$2.lastSibling; - methods$2.previous = methods$2.lastSibling; - methods$2.citations = methods$2.references; - methods$2.sections = methods$2.children; - Object.keys(methods$2).forEach(function (k) { - Section.prototype[k] = methods$2[k]; - }); - var Section_1 = Section; - - var helpers = { - capitalise: function capitalise(str) { - if (str && typeof str === 'string') { - return str.charAt(0).toUpperCase() + str.slice(1); - } - - return ''; - }, - trim_whitespace: 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 ''; - } - }; - - var defaults$6 = { - type: 'internal' - }; - - var Link = function Link(data) { - data = data || {}; - data = Object.assign({}, defaults$6, data); // console.log(data) - - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - }; - - var methods$3 = { - text: function text(str) { - if (str !== undefined) { - this.data.text = str; - } - - return this.data.text; - }, - json: function json() { - var obj = { - text: this.text(), - type: this.type() - }; - - if (obj.type === 'internal') { - obj.page = this.page(); - } else if (obj.type === 'interwiki') { - obj.wiki = this.wiki(); - } else { - obj.site = this.site(); - } - - var anchor = this.anchor(); - - if (anchor) { - obj.anchor = anchor; - } - - return obj; - }, - page: function page(str) { - if (str !== undefined) { - this.data.page = str; - } - - return this.data.page; - }, - anchor: function anchor(str) { - if (str !== undefined) { - this.data.anchor = str; - } - - return this.data.anchor || ''; - }, - wiki: function wiki(str) { - if (str !== undefined) { - this.data.wiki = str; - } - - return this.data.wiki; - }, - type: function type(str) { - if (str !== undefined) { - this.data.type = str; - } - - return this.data.type; - }, - site: function site(str) { - if (str !== undefined) { - this.data.site = str; - } - - return this.data.site; - }, - // create a url for any type of link - href: function href() { - var type = this.type(); + //create a url for any type of link + href: function () { + let type = this.type(); if (type === 'external') { return this.site(); } - var page = this.page(); + let page = this.page(); page = page.replace(/ /g, '_'); page = encodeURIComponent(page); - var url = ''; + let url = ''; if (type === 'interwiki') { - var wiki = this.wiki(); + let wiki = this.wiki(); url = 'https://en.wikipedia.org/wiki/$1'; - if (interwiki.hasOwnProperty(wiki)) { - url = 'http://' + interwiki[this.wiki()]; + if (interwiki$1.hasOwnProperty(wiki)) { + url = 'http://' + interwiki$1[this.wiki()]; } url = url.replace(/\$1/g, page); } else { //internal link - url = "./".concat(this.page()); - } // add anchor on the end + url = `./${this.page()}`; + } //add anchor on the end if (this.anchor()) { @@ -3042,26 +2553,26 @@ return url; } }; - Object.keys(methods$3).forEach(function (k) { - Link.prototype[k] = methods$3[k]; + Object.keys(methods$7).forEach(k => { + Link.prototype[k] = methods$7[k]; }); var Link_1 = Link; // const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):[^\\]\\]]{2,80}\\]\\]', 'gi') //return only rendered text of wiki links - var removeLinks = function removeLinks(line) { + const removeLinks = function (line) { // [[File:with|Size]] line = line.replace(/\[\[File:(.{2,80}?)\|([^\]]+?)\]\](\w{0,5})/g, '$1'); return line; }; - var getLinks = function getLinks(data) { - var wiki = data.text; - var links = parse(wiki) || []; - data.links = links.map(function (link) { - wiki = wiki.replace(link.raw, link.text || link.page || ''); - delete link.raw; + 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 + return new Link_1(link); }); wiki = removeLinks(wiki); @@ -3071,28 +2582,28 @@ var link = getLinks; //handle the bold/italics - var formatting = function formatting(obj) { - var bolds = []; - var italics = []; - var wiki = obj.text || ''; //bold and italics combined 5 's + const formatting = function (obj) { + let bolds = []; + let italics = []; + let wiki = obj.text || ''; //bold and italics combined 5 's - wiki = wiki.replace(/'''''(.{0,200}?)'''''/g, function (a, b) { + wiki = wiki.replace(/'''''(.{0,200}?)'''''/g, (a, b) => { bolds.push(b); italics.push(b); return b; }); //''''four'''' → bold with quotes - wiki = wiki.replace(/''''(.{0,200}?)''''/g, function (a, b) { - bolds.push("'".concat(b, "'")); - return "'".concat(b, "'"); + wiki = wiki.replace(/''''(.{0,200}?)''''/g, (a, b) => { + bolds.push(`'${b}'`); + return `'${b}'`; }); //'''bold''' - wiki = wiki.replace(/'''(.{0,200}?)'''/g, function (a, b) { + wiki = wiki.replace(/'''(.{0,200}?)'''/g, (a, b) => { bolds.push(b); return b; }); //''italic'' - wiki = wiki.replace(/''(.{0,200}?)''/g, function (a, b) { + wiki = wiki.replace(/''(.{0,200}?)''/g, (a, b) => { italics.push(b); return b; }); //pack it all up.. @@ -3114,18 +2625,18 @@ var formatting_1 = formatting; - var isNumber = /^[0-9,.]+$/; - var defaults$7 = { + const isNumber = /^[0-9,.]+$/; + const defaults$7 = { text: true, links: true, formatting: true, numbers: true }; - var toJSON$2 = function toJSON(s, options) { + const toJSON$1 = function (s, options) { options = setDefaults_1(options, defaults$7); - var data = {}; - var text = s.text(); + let data = {}; + let text = s.text(); if (options.text === true) { data.text = text; @@ -3133,7 +2644,7 @@ if (options.numbers === true && isNumber.test(text)) { - var num = Number(text.replace(/,/g, '')); + let num = Number(text.replace(/,/g, '')); if (isNaN(num) === false) { data.number = num; @@ -3141,9 +2652,7 @@ } if (options.links && s.links().length > 0) { - data.links = s.links().map(function (l) { - return l.json(); - }); + data.links = s.links().map(l => l.json()); } if (options.formatting && s.data.fmt) { @@ -3153,80 +2662,47 @@ return data; }; - var toJson$3 = toJSON$2; + var toJson$3 = toJSON$1; - var Sentence = function Sentence(data) { + const Sentence = function (data = {}) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; - var methods$4 = { - links: function links(n) { - var arr = this.data.links || []; + const methods$6 = { + 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 - var link = arr.find(function (o) { - return o.page === n; - }); + let link = arr.find(o => o.page === n); return link === undefined ? [] : [link]; } return arr; }, - interwiki: function interwiki(n) { - var arr = this.links().filter(function (l) { - return l.wiki !== undefined; - }); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; + interwiki: function () { + return this.links().filter(l => l.wiki !== undefined); }, - bolds: function bolds(n) { - var arr = []; - + bolds: function () { if (this.data && this.data.fmt && this.data.fmt.bold) { - arr = this.data.fmt.bold || []; - } - - if (typeof n === 'number') { - return arr[n]; + return this.data.fmt.bold || []; } - return arr; + return []; }, - italics: function italics(n) { - var arr = []; - + italics: function () { 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 dates(n) { - var arr = []; - - if (typeof n === 'number') { - return arr[n]; + return this.data.fmt.italic || []; } - return arr; + return []; }, - text: function text(str) { + text: function (str) { if (str !== undefined && typeof str === 'string') { //set the text? this.data.text = str; @@ -3234,15 +2710,38 @@ return this.data.text || ''; }, - json: function json(options) { + json: function (options) { return toJson$3(this, options); + }, + wikitext: function () { + return this.data.wiki || ''; + }, + isEmpty: function () { + return this.data.text === ''; } }; - Object.keys(methods$4).forEach(function (k) { - Sentence.prototype[k] = methods$4[k]; + Object.keys(methods$6).forEach(k => { + Sentence.prototype[k] = methods$6[k]; + }); // aliases + + const singular$3 = { + links: 'link', + bolds: 'bold', + italics: 'italic' + }; + Object.keys(singular$3).forEach(k => { + let sing = singular$3[k]; + + Sentence.prototype[sing] = function (clue) { + let arr = this[k](clue); + + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0]; + }; }); - Sentence.prototype.italic = Sentence.prototype.italics; - Sentence.prototype.bold = Sentence.prototype.bolds; Sentence.prototype.plaintext = Sentence.prototype.text; var Sentence_1 = Sentence; @@ -3254,27 +2753,25 @@ // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. // @spencermountain 2015 MIT - var abbreviations = _abbreviations.concat('[^]][^]]'); - var abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + ")[.!?] ?$", 'i'); - var acronym_reg = new RegExp("[ |.|'|[][A-Z].? *?$", 'i'); - var elipses_reg = new RegExp('\\.\\.\\.* +?$'); - var circa_reg = / c\. $/; - var hasWord = new RegExp('[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]', 'iu'); //turn a nested array into one array + const abbreviations = _abbreviations.concat('[^]][^]]'); + const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i'); + 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 - var flatten = function flatten(arr) { - var all = []; + const flatten = function (arr) { + let all = []; arr.forEach(function (a) { all = all.concat(a); }); return all; }; - var naiive_split = function naiive_split(text) { + const naiive_split = function (text) { //first, split by newline - var splits = text.split(/(\n+)/); - splits = splits.filter(function (s) { - return s.match(/\S/); - }); //split by period, question-mark, and exclamation-mark + let splits = text.split(/(\n+)/); + splits = splits.filter(s => s.match(/\S/)); //split by period, question-mark, and exclamation-mark splits = splits.map(function (str) { return str.split(/(\S.+?[.!?]"?)(?=\s+|$)/g); //\u3002 @@ -3283,17 +2780,17 @@ }; // if this looks like a period within a wikipedia link, return false - var isBalanced = function isBalanced(str) { + const isBalanced = function (str) { str = str || ''; - var open = str.split(/\[\[/) || []; - var closed = str.split(/\]\]/) || []; + const open = str.split(/\[\[/) || []; + const closed = str.split(/\]\]/) || []; if (open.length > closed.length) { return false; } //make sure quotes are closed too - var quotes = str.match(/"/g); + const quotes = str.match(/"/g); if (quotes && quotes.length % 2 !== 0 && str.length < 900) { return false; @@ -3302,10 +2799,10 @@ return true; }; - var sentence_parser = function sentence_parser(text) { - var sentences = []; //first do a greedy-split.. + const sentence_parser = function (text) { + let sentences = []; //first do a greedy-split.. - var chunks = []; //ensure it 'smells like' a sentence + let chunks = []; //ensure it 'smells like' a sentence if (!text || typeof text !== 'string' || text.trim().length === 0) { return sentences; @@ -3314,10 +2811,10 @@ // todo: look for side effects in this regex replacement: - var splits = naiive_split(text); //filter-out the grap ones + let splits = naiive_split(text); //filter-out the grap ones - for (var i = 0; i < splits.length; i++) { - var s = splits[i]; + for (let i = 0; i < splits.length; i++) { + let s = splits[i]; if (!s || s === '') { continue; @@ -3340,7 +2837,7 @@ } //detection of non-sentence chunks - var isSentence = function isSentence(hmm) { + const isSentence = function (hmm) { if (hmm.match(abbrev_reg) || hmm.match(acronym_reg) || hmm.match(elipses_reg) || hmm.match(circa_reg)) { return false; } //too short? - no consecutive letters @@ -3358,14 +2855,14 @@ }; //loop through these chunks, and join the non-sentence chunks back together.. - for (var _i = 0; _i < chunks.length; _i++) { + for (let i = 0; i < chunks.length; i++) { //should this chunk be combined with the next one? - if (chunks[_i + 1] && !isSentence(chunks[_i])) { - chunks[_i + 1] = chunks[_i] + (chunks[_i + 1] || ''); //.replace(/ +/g, ' '); - } else if (chunks[_i] && chunks[_i].length > 0) { + if (chunks[i + 1] && !isSentence(chunks[i])) { + chunks[i + 1] = chunks[i] + (chunks[i + 1] || ''); //.replace(/ +/g, ' '); + } else if (chunks[i] && chunks[i].length > 0) { //this chunk is a proper sentence.. - sentences.push(chunks[_i]); - chunks[_i] = ''; + sentences.push(chunks[i]); + chunks[i] = ''; } } //if we never got a sentence, return the given text @@ -3377,7 +2874,15 @@ return sentences; }; - var parse$2 = sentence_parser; + var parse$6 = sentence_parser; + + /** + * This function removes some final characters from the sentence + * + * @private + * @param {string} line the wiki text for processing + * @returns {string} the processed string + */ function postprocess(line) { //remove empty parentheses (sometimes caused by removing templates) @@ -3388,11 +2893,18 @@ line = helpers.trim_whitespace(line); line = line.replace(/ +\.$/, '.'); return line; - } // returns one sentence object + } + /** + * returns one sentence object + * + * @param {string} str create a object from a sentence + * @returns {Sentence} the Sentence created from the text + */ function fromText(str) { - var obj = { + let obj = { + wiki: str, text: str }; //pull-out the [[links]] @@ -3405,9 +2917,9 @@ } //used for consistency with other class-definitions - var byParagraph = function byParagraph(paragraph) { - // array of texts - var sentences = parse$2(paragraph.wiki); // sentence objects + const byParagraph = function (paragraph) { + //array of texts + let sentences = parse$6(paragraph.wiki); //sentence objects sentences = sentences.map(fromText); //remove :indented first line, as it is often a disambiguation @@ -3423,17 +2935,24 @@ byParagraph: byParagraph }; - //remove the top/bottom off the template - var strip = function strip(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; }; var _strip = strip; //normalize template names - var fmtName = function fmtName(name) { + const fmtName = function (name) { name = (name || '').trim(); name = name.toLowerCase(); name = name.replace(/_/g, ' '); @@ -3442,33 +2961,36 @@ var _fmtName = fmtName; - //turn {{name|one|two|three}} into [name, one, two, three] - var pipeSplitter = function pipeSplitter(tmpl) { - //start with a naiive '|' split - var arr = tmpl.split(/\n?\|/); //we've split by '|', which is pretty lame + /** + * 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 :/ - arr.forEach(function (a, i) { + arr.forEach((a, i) => { if (a === null) { return; } //has '[[' but no ']]' - //has equal number of openning and closing tags. handle nested case '[[[[' ']]' + //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]; + 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(function (a) { - return a !== null; - }); - arr = arr.map(function (a) { - return (a || '').trim(); - }); //remove empty fields, only at the end: + arr = arr.filter(a => a !== null); + arr = arr.map(a => (a || '').trim()); //remove empty fields, only at the end: - for (var i = arr.length - 1; i >= 0; i -= 1) { + for (let i = arr.length - 1; i >= 0; i -= 1) { if (arr[i] === '') { arr.pop(); } @@ -3481,21 +3003,33 @@ var _01PipeSplitter = pipeSplitter; - // every value in {{tmpl|a|b|c}} needs a name - // here we come up with names for them - var hasKey = /^[ '-\)\x2D\.0-9_a-z\xC0-\xFF\u0153\u017F\u1E9E\u212A\u212B]+=/i; //templates with these properties are asking for trouble + //every value in {{tmpl|a|b|c}} needs a name + //here we come up with names for them + const hasKey = /^[\p{Letter}0-9\._\- '()œ]+=/iu; //templates with these properties are asking for trouble - var reserved = { + const reserved = { template: true, list: true, prototype: true - }; //turn 'key=val' into {key:key, val:val} - - var parseKey = function parseKey(str) { - var parts = str.split('='); - var key = parts[0] || ''; + }; + /** + * @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] || ''; key = key.toLowerCase().trim(); - var val = parts.slice(1).join('='); //don't let it be called 'template'.. + let val = parts.slice(1).join('='); //don't let it be called 'template'.. if (reserved.hasOwnProperty(key)) { key = '_' + key; @@ -3505,47 +3039,54 @@ key: key, val: val.trim() }; - }; //turn [a, b=v, c] into {'1':a, b:v, '2':c} + }; + /** + * 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 {object} and object with the names as the keys and the values as the values + */ - var keyMaker = function keyMaker(arr, order) { - var o = 0; - return arr.reduce(function (h, str) { - str = (str || '').trim(); //support named keys - 'foo=bar' + 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) { - var res = parseKey(str); + let res = parseKey(str); if (res.key) { h[res.key] = res.val; return h; } - } //try a key from given 'order' names - + } //if the current index is present in the order array then we have a name for the key - if (order && order[o]) { - var key = order[o]; //here goes! + 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; }, {}); }; var _02KeyMaker = keyMaker; - var whoCares = { + const whoCares = { classname: true, style: true, align: true, margin: true, left: true, - "break": true, + break: true, boxsize: true, framestyle: true, item_style: true, @@ -3555,8 +3096,8 @@ colwidth: true }; //remove wiki-cruft & some styling info from templates - var cleanup = function cleanup(obj) { - Object.keys(obj).forEach(function (k) { + const cleanup$1 = function (obj) { + Object.keys(obj).forEach(k => { if (whoCares[k.toLowerCase()] === true) { delete obj[k]; } //remove empty values, too @@ -3569,12 +3110,20 @@ return obj; }; - var _03Cleanup = cleanup; + var _03Cleanup = cleanup$1; - var parseSentence = _04Sentence.fromText; // most templates just want plaintext... + const parseSentence$7 = _04Sentence.fromText; + /** + * most templates just want plaintext... + * + * @private + * @param {str} str + * @param {'json' | 'raw'} [fmt] + * @returns {string} text + */ - var makeFormat = function makeFormat(str, fmt) { - var s = parseSentence(str); //support various output formats + const makeFormat = function (str, fmt) { + let s = parseSentence$7(str); //support various output formats if (fmt === 'json') { return s.json(); @@ -3584,21 +3133,29 @@ return s.text(); - }; // - + }; + /** + * 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 + */ - var parser = function parser(tmpl, order, fmt) { - order = order || []; //renomove {{}}'s + const parser = function (tmpl, order = [], fmt) { + //remove {{}}'s and split based on pipes tmpl = _strip(tmpl || ''); - var arr = _01PipeSplitter(tmpl); //get template name + let arr = _01PipeSplitter(tmpl); //get template name - var name = arr.shift(); //name each value + let name = arr.shift(); //name each value - var obj = _02KeyMaker(arr, order); //remove wiki-junk + let obj = _02KeyMaker(arr, order); //remove wiki-junk obj = _03Cleanup(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) { @@ -3607,11 +3164,9 @@ delete obj['1']; } - Object.keys(obj).forEach(function (k) { + Object.keys(obj).forEach(k => { if (k === 'list') { - obj[k] = obj[k].map(function (v) { - return makeFormat(v, fmt); - }); + obj[k] = obj[k].map(v => makeFormat(v, fmt)); return; } @@ -3625,22 +3180,26 @@ return obj; }; - var parse$3 = parser; + var toJSON = parser; - var Reference = function Reference(data) { + const Reference = function (data, wiki) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; - var methods$5 = { - title: function title() { - var data = this.data; + const methods$5 = { + title: function () { + let data = this.data; return data.title || data.encyclopedia || data.author || ''; }, - links: function links(n) { - var arr = []; + links: function (n) { + let arr = []; if (typeof n === 'number') { return arr[n]; @@ -3653,20 +3212,20 @@ //grab a link like .links('Fortnight') n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it - var link = arr.find(function (o) { - return o.page() === n; - }); + let link = arr.find(o => o.page() === n); return link === undefined ? [] : [link]; } return arr || []; }, - text: function text() { + text: function () { return ''; //nah, skip these. }, - json: function json() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var json = this.data || {}; //encode them, for mongodb + wikitext: function () { + return this.wiki || ''; + }, + json: function (options = {}) { + let json = this.data || {}; //encode them, for mongodb if (options.encode === true) { json = Object.assign({}, json); @@ -3676,68 +3235,80 @@ return json; } }; - Object.keys(methods$5).forEach(function (k) { + Object.keys(methods$5).forEach(k => { Reference.prototype[k] = methods$5[k]; }); var Reference_1 = Reference; - var parseSentence$1 = _04Sentence.fromText; //structured Cite templates - {{Cite.. + const parseSentence$6 = _04Sentence.fromText; //structured Cite templates - {{Cite.. - var hasCitation = function hasCitation(str) { + const hasCitation = function (str) { return /^ *?\{\{ *?(cite|citation)/i.test(str) && /\}\} *?$/.test(str) && /citation needed/i.test(str) === false; }; - var parseCitation = function parseCitation(tmpl) { - var obj = parse$3(tmpl); + const parseCitation = function (tmpl) { + let obj = toJSON(tmpl); obj.type = obj.template.replace(/cite /, ''); obj.template = 'citation'; return obj; }; //handle unstructured ones - some text - var parseInline = function parseInline(str) { - var obj = parseSentence$1(str) || {}; + const parseInline = function (str) { + let obj = parseSentence$6(str) || {}; return { template: 'citation', type: 'inline', data: {}, inline: obj }; - }; // parse xml tags + }; //parse xml tags - var parseRefs = function parseRefs(section) { - var references = []; - var wiki = section.wiki; - wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (a, tmpl) { + const parseRefs = function (section) { + let references = []; + let wiki = section._wiki; + wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { - var obj = parseCitation(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 ' '; - }); // + }); // - wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' '); // + 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)) { - var obj = parseCitation(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 ' '; @@ -3745,19 +3316,35 @@ wiki = wiki.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g, ' '); // - section.references = references.map(function (r) { - return new Reference_1(r); - }); - section.wiki = wiki; + section._references = references.map(obj => new Reference_1(obj.json, obj.wiki)); + section._wiki = wiki; }; var reference = parseRefs; - var parseSentence$2 = _04Sentence.fromText; - var heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; //interpret depth, title of headings like '==See also==' - - var parseHeading = function parseHeading(section, str) { - var m = str.match(heading_reg); + const { + trim_whitespace + } = helpers; + const parseSentence$5 = _04Sentence.fromText; + const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; + /** + * @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) { section.title = ''; @@ -3765,20 +3352,20 @@ return section; } - var title = m[2] || ''; - title = parseSentence$2(title).text(); //amazingly, you can see inline {{templates}} in this text, too + let title = m[2] || ''; + title = parseSentence$5(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..) - var obj = { - wiki: title + let obj = { + _wiki: title }; reference(obj); - title = obj.wiki; //trim leading/trailing whitespace + title = obj._wiki; //trim leading/trailing whitespace - title = helpers.trim_whitespace(title); - var depth = 0; + title = trim_whitespace(title); + let depth = 0; if (m[1]) { depth = m[1].length - 2; @@ -3792,8 +3379,8 @@ var heading = parseHeading; //remove top-bottoms - var cleanup$1 = function cleanup(lines) { - lines = lines.filter(function (line) { + const cleanup = function (lines) { + lines = lines.filter(line => { //a '|+' row is a 'table caption', remove it. return line && /^\|\+/.test(line) !== true; }); @@ -3814,13 +3401,13 @@ }; //turn newline seperated into '|-' seperated - var findRows = function findRows(lines) { - var rows = []; - var row = []; - lines = cleanup$1(lines); + const findRows = function (lines) { + let rows = []; + let row = []; + lines = cleanup(lines); - for (var i = 0; i < lines.length; i += 1) { - var line = lines[i]; //'|-' is a row-seperator + for (let i = 0; i < lines.length; i += 1) { + let line = lines[i]; //'|-' is a row-seperator if (/^\|-/.test(line) === true) { //okay, we're done the row @@ -3836,7 +3423,7 @@ line.shift(); } - line.forEach(function (l) { + line.forEach(l => { l = l.replace(/^\| */, ''); l = l.trim(); row.push(l); @@ -3854,16 +3441,16 @@ var _findRows = findRows; - var getRowSpan = /.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/; - var getColSpan = /.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/; //colspans stretch ←left/right→ + const getRowSpan = /.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/; + const getColSpan = /.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/; //colspans stretch ←left/right→ - var doColSpan = function doColSpan(rows) { - rows.forEach(function (row) { - row.forEach(function (str, c) { - var m = str.match(getColSpan); + const doColSpan = function (rows) { + rows.forEach(row => { + row.forEach((str, c) => { + let m = str.match(getColSpan); if (m !== null) { - var num = parseInt(m[1], 10); //...maybe if num is so big, and centered, remove it? + let num = parseInt(m[1], 10); //...maybe if num is so big, and centered, remove it? // if (num > 3) { // rows[r] = [] // return @@ -3872,31 +3459,29 @@ row[c] = str.replace(getColSpan, ''); - for (var i = 1; i < num; i += 1) { + for (let i = 1; i < num; i += 1) { row.splice(c + 1, 0, ''); } } }); }); - rows = rows.filter(function (r) { - return r.length > 0; - }); + rows = rows.filter(r => r.length > 0); return rows; }; //colspans stretch up/down - var doRowSpan = function doRowSpan(rows) { - rows.forEach(function (row, r) { - row.forEach(function (str, c) { - var m = str.match(getRowSpan); + const doRowSpan = function (rows) { + rows.forEach((row, r) => { + row.forEach((str, c) => { + let m = str.match(getRowSpan); if (m !== null) { - var num = parseInt(m[1], 10); //copy this cell down n rows + let num = parseInt(m[1], 10); //copy this cell down n rows str = str.replace(getRowSpan, ''); row[c] = str; - for (var i = r + 1; i < r + num; i += 1) { + for (let i = r + 1; i < r + num; i += 1) { if (!rows[i]) { break; } @@ -3910,7 +3495,7 @@ }; // - var handleSpans = function handleSpans(rows) { + const handleSpans = function (rows) { rows = doColSpan(rows); rows = doRowSpan(rows); return rows; @@ -3918,10 +3503,10 @@ var _spans = handleSpans; - var parseSentence$3 = _04Sentence.fromText; - var isHeading = /^!/; //common ones + const parseSentence$4 = _04Sentence.fromText; + const isHeading = /^!/; //common ones - var headings = { + const headings$1 = { name: true, age: true, born: true, @@ -3934,8 +3519,8 @@ number: true }; //additional table-cruft to remove before parseLine method - var cleanText = function cleanText(str) { - str = parseSentence$3(str).text(); //anything before a single-pipe is styling, so remove it + const cleanText = function (str) { + str = parseSentence$4(str).text(); //anything before a single-pipe is styling, so remove it if (str.match(/\|/)) { str = str.replace(/.+\| ?/, ''); //class="unsortable"|title @@ -3943,17 +3528,17 @@ str = str.replace(/style=['"].*?["']/, ''); //'!' is used as a highlighed-column - str = str.replace(/^!/, ''); - str = str.trim(); + str = str.replace(/^!/, ''); // str = str.replace(/\(.*?\)/, '') + + str = str.trim(); // str = str.toLowerCase() + return str; }; - var skipSpanRow = function skipSpanRow(row) { + const skipSpanRow = function (row) { row = row || []; - var len = row.length; - var hasTxt = row.filter(function (str) { - return str; - }).length; //does it have 3 empty spaces? + let len = row.length; + let hasTxt = row.filter(str => str).length; //does it have 3 empty spaces? if (len - hasTxt > 3) { return true; @@ -3963,8 +3548,8 @@ }; //remove non-header span rows - var removeMidSpans = function removeMidSpans(rows) { - rows = rows.filter(function (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; } @@ -3975,18 +3560,17 @@ }; //'!' starts a header-row - var findHeaders = function findHeaders() { - var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var headers = []; // is the first-row just a ton of colspan? + const findHeaders = function (rows = []) { + let headers = []; // is the first-row just a ton of colspan? if (skipSpanRow(rows[0])) { rows.shift(); } - var first = rows[0]; + let first = rows[0]; if (first && first[0] && first[1] && (/^!/.test(first[0]) || /^!/.test(first[1]))) { - headers = first.map(function (h) { + headers = first.map(h => { h = h.replace(/^\! */, ''); h = cleanText(h); return h; @@ -3998,7 +3582,7 @@ first = rows[0]; if (first && first[0] && first[1] && /^!/.test(first[0]) && /^!/.test(first[1])) { - first.forEach(function (h, i) { + first.forEach((h, i) => { h = h.replace(/^\! */, ''); h = cleanText(h); @@ -4013,11 +3597,11 @@ }; //turn headers, array into an object - var parseRow = function parseRow(arr, headers) { - var row = {}; - arr.forEach(function (str, i) { - var h = headers[i] || 'col' + (i + 1); - var s = parseSentence$3(str); + const parseRow = function (arr, headers) { + let row = {}; + arr.forEach((str, i) => { + let h = headers[i] || 'col' + (i + 1); + let s = parseSentence$4(str); s.text(cleanText(s.text())); row[h] = s; }); @@ -4025,22 +3609,22 @@ }; //should we use the first row as a the headers? - var firstRowHeader = function firstRowHeader(rows) { + const firstRowHeader = function (rows) { if (rows.length <= 3) { return []; } - var headers = rows[0].slice(0); - headers = headers.map(function (h) { + let headers = rows[0].slice(0); + headers = headers.map(h => { h = h.replace(/^\! */, ''); - h = parseSentence$3(h).text(); + h = parseSentence$4(h).text(); h = cleanText(h); h = h.toLowerCase(); return h; }); - for (var i = 0; i < headers.length; i += 1) { - if (headings.hasOwnProperty(headers[i])) { + for (let i = 0; i < headers.length; i += 1) { + if (headings$1.hasOwnProperty(headers[i])) { rows.shift(); return headers; } @@ -4050,15 +3634,11 @@ }; //turn a {|...table string into an array of arrays - var parseTable = function parseTable(wiki) { - var lines = wiki.replace(/\r/g, '').replace(/\n(\s*[^|!{\s])/g, ' $1') //remove unecessary newlines - .split(/\n/).map(function (l) { - return l.trim(); - }); - var rows = _findRows(lines); - rows = rows.filter(function (r) { - return r; - }); + 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()); + let rows = _findRows(lines); + rows = rows.filter(r => r); if (rows.length === 0) { return []; @@ -4069,11 +3649,11 @@ rows = _spans(rows); //grab the header rows - var headers = findHeaders(rows); + let headers = findHeaders(rows); if (!headers || headers.length <= 1) { headers = firstRowHeader(rows); - var want = rows[rows.length - 1] || []; //try the second row + let want = rows[rows.length - 1] || []; //try the second row if (headers.length <= 1 && want.length > 2) { headers = firstRowHeader(rows.slice(1)); @@ -4085,18 +3665,18 @@ } //index each column by it's header - var table = rows.map(function (arr) { + let table = rows.map(arr => { return parseRow(arr, headers); }); return table; }; - var parse$4 = parseTable; + var parse$5 = parseTable; - var toJson$4 = function toJson(tables, options) { - return tables.map(function (table) { - var row = {}; - Object.keys(table).forEach(function (k) { + const toJson$2 = function (tables, options) { + return tables.map(table => { + let row = {}; + Object.keys(table).forEach(k => { row[k] = table[k].json(); //(they're sentence objects) }); //encode them, for mongodb @@ -4108,74 +3688,121 @@ }); }; - var toJson_1$1 = toJson$4; + var toJson_1$2 = toJson$2; - var defaults$8 = {}; + const defaults$6 = {}; - var Table = function Table(data) { + const normalize$1 = function (key = '') { + key = key.toLowerCase(); + key = key.replace(/[_-]/g, ' '); + key = key.replace(/\(.*?\)/, ''); + key = key.trim(); + return key; + }; + + const Table = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, '_wiki', { + enumerable: false, + value: wiki + }); }; - var methods$6 = { - links: function links(n) { - var links = []; - this.data.forEach(function (r) { - Object.keys(r).forEach(function (k) { + const methods$4 = { + links(n) { + let links = []; + this.data.forEach(r => { + Object.keys(r).forEach(k => { links = links.concat(r[k].links()); }); - }); //grab a specific link.. + }); - if (typeof n === 'number') { - return links[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 - var link = links.find(function (o) { - return o.page() === n; - }); + let link = links.find(o => o.page() === n); return link === undefined ? [] : [link]; } return links; }, - keyValue: function keyValue(options) { - var rows = this.json(options); - rows.forEach(function (row) { - Object.keys(row).forEach(function (k) { + + get(keys) { + // 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).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; + }, {}); + }); + }, + + keyValue(options) { + let rows = this.json(options); + rows.forEach(row => { + Object.keys(row).forEach(k => { row[k] = row[k].text; }); }); return rows; }, - json: function json(options) { - options = setDefaults_1(options, defaults$8); - return toJson_1$1(this.data, options); + + json(options) { + options = setDefaults_1(options, defaults$6); + return toJson_1$2(this.data, options); }, - text: function text() { + + text() { return ''; + }, + + wikitext() { + return this._wiki || ''; } + }; - methods$6.keyvalue = methods$6.keyValue; - methods$6.keyval = methods$6.keyValue; - Object.keys(methods$6).forEach(function (k) { - Table.prototype[k] = methods$6[k]; + methods$4.keyvalue = methods$4.keyValue; + methods$4.keyval = methods$4.keyValue; + Object.keys(methods$4).forEach(k => { + Table.prototype[k] = methods$4[k]; }); var Table_1 = Table; - var openReg = /^\s*{\|/; - var closeReg = /^\s*\|}/; //tables can be recursive, so looky-here. + const openReg = /^\s*{\|/; + const closeReg = /^\s*\|}/; //tables can be recursive, so looky-here. - var findTables = function findTables(section) { - var list = []; - var wiki = section.wiki; - var lines = wiki.split('\n'); - var stack = []; + const findTables = function (section) { + let list = []; + let wiki = section._wiki; + let lines = wiki.split('\n'); + let stack = []; - for (var i = 0; i < lines.length; i += 1) { + for (let i = 0; i < lines.length; i += 1) { //start a table if (openReg.test(lines[i]) === true) { stack.push(lines[i]); @@ -4185,10 +3812,8 @@ if (closeReg.test(lines[i]) === true) { stack[stack.length - 1] += '\n' + lines[i]; - - var _table = stack.pop(); - - list.push(_table); + let table = stack.pop(); + list.push(table); continue; } //keep-going on one @@ -4199,157 +3824,164 @@ } //work-em together for a Table class - var tables = []; - list.forEach(function (str) { + 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, ''); - var data = parse$4(str); + let data = parse$5(str); if (data && data.length > 0) { - tables.push(new Table_1(data)); + tables.push(new Table_1(data, str)); } } }); if (tables.length > 0) { - section.tables = tables; + section._tables = tables; } - section.wiki = wiki; + section._wiki = wiki; }; var table = findTables; - var defaults$9 = { + const defaults$5 = { sentences: true }; - var toJson$5 = function toJson(p, options) { - options = setDefaults_1(options, defaults$9); - var data = {}; + const toJson$1 = function (p, options) { + options = setDefaults_1(options, defaults$5); + let data = {}; if (options.sentences === true) { - data.sentences = p.sentences().map(function (s) { - return s.json(options); - }); + data.sentences = p.sentences().map(s => s.json(options)); } return data; }; - var toJson_1$2 = toJson$5; + var toJson_1$1 = toJson$1; - var defaults$a = { + const defaults$4 = { sentences: true, lists: true, images: true }; - var Paragraph = function Paragraph(data) { + const Paragraph = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; - var methods$7 = { - sentences: function sentences(num) { - if (typeof num === 'number') { - return this.data.sentences[num]; - } - + const methods$3 = { + sentences: function () { return this.data.sentences || []; }, - references: function references(num) { - if (typeof num === 'number') { - return this.data.references[num]; - } - + references: function () { return this.data.references; }, - lists: function lists(num) { - if (typeof num === 'number') { - return this.data.lists[num]; - } - + lists: function () { return this.data.lists; }, - images: function images(num) { - if (typeof num === 'number') { - return this.data.images[num]; - } + images() { return this.data.images || []; }, - links: function links(n) { - var arr = []; - this.sentences().forEach(function (s) { - arr = arr.concat(s.links(n)); + + links: function (clue) { + let arr = []; + this.sentences().forEach(s => { + arr = arr.concat(s.links(clue)); }); - if (typeof n === 'number') { - return arr[n]; - } else if (typeof n === 'string') { + if (typeof clue === 'string') { //grab a specific link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it - var link = arr.find(function (o) { - return o.page() === n; - }); + let link = arr.find(o => o.page() === clue); return link === undefined ? [] : [link]; } return arr || []; }, - interwiki: function interwiki(num) { - var arr = []; - this.sentences().forEach(function (s) { + + interwiki() { + let arr = []; + this.sentences().forEach(s => { arr = arr.concat(s.interwiki()); }); - - if (typeof num === 'number') { - return arr[num]; - } - return arr || []; }, - text: function text(options) { - options = setDefaults_1(options, defaults$a); - var str = this.sentences().map(function (s) { - return s.text(options); - }).join(' '); - this.lists().forEach(function (list) { + + text: function (options) { + options = setDefaults_1(options, defaults$4); + let str = this.sentences().map(s => s.text(options)).join(' '); + this.lists().forEach(list => { str += '\n' + list.text(); }); return str; }, - json: function json(options) { - options = setDefaults_1(options, defaults$a); - return toJson_1$2(this, options); + json: function (options) { + options = setDefaults_1(options, defaults$4); + return toJson_1$1(this, options); + }, + wikitext: function () { + return this.data.wiki; } }; - methods$7.citations = methods$7.references; - Object.keys(methods$7).forEach(function (k) { - Paragraph.prototype[k] = methods$7[k]; + methods$3.citations = methods$3.references; + Object.keys(methods$3).forEach(k => { + Paragraph.prototype[k] = methods$3[k]; + }); // aliases + + const singular$2 = { + sentences: 'sentence', + references: 'reference', + citation: 'citations', + lists: 'list', + images: 'image', + links: 'link' + }; + Object.keys(singular$2).forEach(k => { + let sing = singular$2[k]; + + Paragraph.prototype[sing] = function (clue) { + let arr = this[k](clue); + + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0]; + }; }); var Paragraph_1 = Paragraph; - //find all the pairs of '[[...[[..]]...]]' in the text - //used to properly root out recursive template calls, [[.. [[...]] ]] - //basically just adds open tags, and subtracts closing tags - var opener = '['; - var closer = ']'; + const opener = '['; + const closer = ']'; + /** + * + * find all the pairs of '[[...[[..]]...]]' in the text + * used to properly root out recursive template calls, [[.. [[...]] ]] + * basically just adds open tags, and subtracts closing tags + * + * @private + * @param {string} text the text in which is searched in + * @returns {string[]} all the links in the text + */ function nested_find(text) { - var out = []; - var last = []; - var chars = text.split(''); - var open = 0; + let out = []; + let last = []; + const chars = text.split(''); + let open = 0; - for (var i = 0; i < chars.length; i++) { - var c = text[i]; //increment open tag + for (let i = 0; i < chars.length; i++) { + const c = text[i]; //increment open tag if (c === opener) { open += 1; @@ -4361,8 +3993,8 @@ open = 0; } } else if (last.length === 0) { - // If we're not inside of a pair of delimiters, we can discard the current letter. - // The return of this function is only used to extract images. + //If we're not inside of a pair of delimiters, we can discard the current letter. + //The return of this function is only used to extract images. continue; } @@ -4370,10 +4002,10 @@ if (open === 0 && last.length > 0) { //first, fix botched parse - var open_count = 0; - var close_count = 0; + let open_count = 0; + let close_count = 0; - for (var j = 0; j < last.length; j++) { + for (let j = 0; j < last.length; j++) { if (last[j] === opener) { open_count++; } else if (last[j] === closer) { @@ -4397,13 +4029,13 @@ var nested_find_1 = nested_find; - var parseSentence$4 = _04Sentence.fromText; //regexes: + const parseSentence$3 = _04Sentence.fromText; //regexes: - var isFile = new RegExp('(' + i18n$1.images.join('|') + '):', 'i'); - var fileNames = "(".concat(i18n$1.images.join('|'), ")"); - var file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax + const isFile = new RegExp('(' + i18n.images.join('|') + '):', 'i'); + let fileNames = `(${i18n.images.join('|')})`; + const file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax - var imgLayouts = { + const imgLayouts = { thumb: true, thumbnail: true, border: true, @@ -4417,48 +4049,47 @@ baseline: true, middle: true, sub: true, - "super": true + super: true }; //images are usually [[image:my_pic.jpg]] - var oneImage = function oneImage(img, doc) { - var m = img.match(file_reg); + const oneImage = function (img, doc) { + let m = img.match(file_reg); if (m === null || !m[2]) { return null; } - var file = "".concat(m[1], ":").concat(m[2] || ''); + let file = `${m[1]}:${m[2] || ''}`; file = file.trim(); //titlecase it - var title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores + let title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores title = title.replace(/ /g, '_'); if (title) { - var obj = { + let obj = { file: file, - lang: doc.lang, - domain: doc.domain + lang: doc._lang, + domain: doc._domain, + wiki: img }; //try to grab other metadata, too img = img.replace(/^\[\[/, ''); img = img.replace(/\]\]$/, ''); //https://en.wikipedia.org/wiki/Wikipedia:Extended_image_syntax - // - [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] + //- [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] - var imgData = parse$3(img); - var arr = imgData.list || []; //parse-out alt text, if explicitly given + let imgData = toJSON(img); + let arr = imgData.list || []; //parse-out alt text, if explicitly given if (imgData.alt) { obj.alt = imgData.alt; } //remove 'thumb' and things - arr = arr.filter(function (str) { - return imgLayouts.hasOwnProperty(str) === false; - }); + arr = arr.filter(str => imgLayouts.hasOwnProperty(str) === false); if (arr[arr.length - 1]) { - obj.caption = parseSentence$4(arr[arr.length - 1]); + obj.caption = parseSentence$3(arr[arr.length - 1]); } return new Image_1(obj); @@ -4467,14 +4098,14 @@ return null; }; - var parseImages = function parseImages(paragraph, doc) { - var wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff + const parseImages = function (paragraph, doc) { + let wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff - var matches = nested_find_1(wiki); + let matches = nested_find_1(wiki); matches.forEach(function (s) { if (isFile.test(s) === true) { paragraph.images = paragraph.images || []; - var img = oneImage(s, doc); + let img = oneImage(s, doc); if (img) { paragraph.images.push(img); @@ -4488,80 +4119,84 @@ var image = parseImages; - var defaults$b = {}; + const defaults$3 = {}; - var toText = function toText(list, options) { - return list.map(function (s) { - var str = s.text(options); + const toText$2 = (list, options) => { + return list.map(s => { + let str = s.text(options); return ' * ' + str; }).join('\n'); }; - var List = function List(data) { + const List = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; - var methods$8 = { - lines: function lines() { + const methods$2 = { + lines() { return this.data; }, - links: function links(n) { - var links = []; - this.lines().forEach(function (s) { + + links(clue) { + let links = []; + this.lines().forEach(s => { links = links.concat(s.links()); }); - if (typeof n === 'number') { - return links[n]; - } else if (typeof n === 'string') { + if (typeof clue === 'string') { //grab a link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it - var link = links.find(function (o) { - return o.page() === n; - }); + let link = links.find(o => o.page() === clue); return link === undefined ? [] : [link]; } return links; }, - json: function json(options) { - options = setDefaults_1(options, defaults$b); - return this.lines().map(function (s) { - return s.json(options); - }); + + json(options) { + options = setDefaults_1(options, defaults$3); + return this.lines().map(s => s.json(options)); + }, + + text() { + return toText$2(this.data); }, - text: function text() { - return toText(this.data); + + wikitext() { + return this.wiki || ''; } + }; - Object.keys(methods$8).forEach(function (k) { - List.prototype[k] = methods$8[k]; + Object.keys(methods$2).forEach(k => { + List.prototype[k] = methods$2[k]; }); var List_1 = List; - var parseSentence$5 = _04Sentence.fromText; - var list_reg = /^[#\*:;\|]+/; - var bullet_reg = /^\*+[^:,\|]{4}/; - var number_reg = /^ ?\#[^:,\|]{4}/; - var has_word = /[a-z_0-9\]\}]/i; // does it start with a bullet point or something? + const parseSentence$2 = _04Sentence.fromText; + const list_reg = /^[#\*:;\|]+/; + const bullet_reg = /^\*+[^:,\|]{4}/; + const number_reg = /^ ?\#[^:,\|]{4}/; + const has_word = /[a-z_0-9\]\}]/i; // does it start with a bullet point or something? - var isList = function isList(line) { + const isList = function (line) { return list_reg.test(line) || bullet_reg.test(line) || number_reg.test(line); }; //make bullets/numbers into human-readable *'s - var cleanList = function cleanList(list) { - var number = 1; - list = list.filter(function (l) { - return l; - }); + const cleanList = function (list) { + let number = 1; + list = list.filter(l => l); - for (var i = 0; i < list.length; i++) { - var line = list[i]; //add # numberings formatting + for (let i = 0; i < list.length; i++) { + let line = list[i]; //add # numberings formatting if (line.match(number_reg)) { line = line.replace(/^ ?#*/, number + ') '); @@ -4572,16 +4207,16 @@ line = line.replace(list_reg, ''); } - list[i] = parseSentence$5(line); + list[i] = parseSentence$2(line); } return list; }; - var grabList = function grabList(lines, i) { - var sub = []; + const grabList = function (lines, i) { + let sub = []; - for (var o = i; o < lines.length; o++) { + for (let o = i; o < lines.length; o++) { if (isList(lines[o])) { sub.push(lines[o]); } else { @@ -4589,23 +4224,20 @@ } } - sub = sub.filter(function (a) { - return a && has_word.test(a); - }); + sub = sub.filter(a => a && has_word.test(a)); sub = cleanList(sub); return sub; }; - var parseList = function parseList(paragraph) { - var wiki = paragraph.wiki; - var lines = wiki.split(/\n/g); // lines = lines.filter(l => has_word.test(l)); + const parseList = function (paragraph) { + let wiki = paragraph.wiki; + let lines = wiki.split(/\n/g); + let lists = []; + let theRest = []; - var lists = []; - var theRest = []; - - for (var i = 0; i < lines.length; i++) { + for (let i = 0; i < lines.length; i++) { if (isList(lines[i])) { - var sub = grabList(lines, i); + let sub = grabList(lines, i); if (sub.length > 0) { lists.push(sub); @@ -4616,178 +4248,55 @@ } } - paragraph.lists = lists.map(function (l) { - return new List_1(l); - }); + paragraph.lists = lists.map(l => new List_1(l, wiki)); paragraph.wiki = theRest.join('\n'); }; - var list = parseList; + var list$1 = parseList; - var parseSentences = _04Sentence.byParagraph; - var twoNewLines = /\r?\n\r?\n/; - var parse$5 = { + const parseSentences = _04Sentence.byParagraph; + const twoNewLines = /\r?\n\r?\n/; + const parse$4 = { image: image, - list: list + list: list$1 }; - var parseParagraphs = function parseParagraphs(section, doc) { - var wiki = section.wiki; - var paragraphs = wiki.split(twoNewLines); //don't create empty paragraphs + const parseParagraphs = function (section, doc) { + let wiki = section._wiki; + let paragraphs = wiki.split(twoNewLines); //don't create empty paragraphs - paragraphs = paragraphs.filter(function (p) { - return p && p.trim().length > 0; - }); - paragraphs = paragraphs.map(function (str) { - var paragraph = { + paragraphs = paragraphs.filter(p => p && p.trim().length > 0); + paragraphs = paragraphs.map(str => { + let paragraph = { wiki: str, lists: [], sentences: [], images: [] }; //parse the lists - parse$5.list(paragraph); // parse images + parse$4.list(paragraph); //parse images - parse$5.image(paragraph, doc); //parse the sentences + parse$4.image(paragraph, doc); //parse the sentences parseSentences(paragraph); return new Paragraph_1(paragraph); }); - section.wiki = wiki; - section.paragraphs = paragraphs; + section._wiki = wiki; + section._paragraphs = paragraphs; }; var _03Paragraph = parseParagraphs; - var toJson$6 = function toJson(infobox, options) { - var json = Object.keys(infobox.data).reduce(function (h, k) { - if (infobox.data[k]) { - h[k] = infobox.data[k].json(); - } - - return h; - }, {}); //support mongo-encoding keys - - if (options.encode === true) { - json = encode.encodeObj(json); - } - - return json; - }; - - var toJson_1$3 = toJson$6; - - var normalize = function normalize(str) { - str = str.toLowerCase(); - str = str.replace(/[-_]/g, ' '); - return str.trim(); - }; //a formal key-value data table about a topic - - - var Infobox = function Infobox(obj) { - this._type = obj.type; - this.domain = obj.domain; - Object.defineProperty(this, 'data', { - enumerable: false, - value: obj.data - }); - }; - - var methods$9 = { - type: function type() { - return this._type; - }, - links: function links(n) { - var _this = this; - - var arr = []; - Object.keys(this.data).forEach(function (k) { - _this.data[k].links().forEach(function (l) { - return arr.push(l); - }); - }); - - 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 - - var link = arr.find(function (o) { - return o.page() === n; - }); - return link === undefined ? [] : [link]; - } - - return arr; - }, - image: function image() { - var s = this.get('image') || this.get('image2') || this.get('logo'); - - if (!s) { - return null; - } - - var obj = s.json(); - obj.file = obj.text; - obj.text = ''; - obj.domain = this.domain; // add domain information for image - - return new Image_1(obj); - }, - get: function get() { - var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - key = normalize(key); - var keys = Object.keys(this.data); - - for (var i = 0; i < keys.length; i += 1) { - var tmp = normalize(keys[i]); - - if (key === tmp) { - return this.data[keys[i]]; - } - } - - return null; - }, - text: function text() { - return ''; - }, - json: function json(options) { - options = options || {}; - return toJson_1$3(this, options); - }, - keyValue: function keyValue() { - var _this2 = this; - - return Object.keys(this.data).reduce(function (h, k) { - if (_this2.data[k]) { - h[k] = _this2.data[k].text(); - } - - return h; - }, {}); - } - }; //aliases + const open = '{'; + const close = '}'; //grab all first-level recursions of '{{...}}' - Object.keys(methods$9).forEach(function (k) { - Infobox.prototype[k] = methods$9[k]; - }); - Infobox.prototype.data = Infobox.prototype.keyValue; - Infobox.prototype.template = Infobox.prototype.type; - Infobox.prototype.images = Infobox.prototype.image; - var Infobox_1 = Infobox; - - var open = '{'; - var close = '}'; //grab all first-level recursions of '{{...}}' + const findFlat = function (wiki) { + let depth = 0; + let list = []; + let carry = []; - var findFlat = function findFlat(wiki) { - var depth = 0; - var list = []; - var carry = []; - - for (var i = wiki.indexOf(open); i !== -1 && i < wiki.length; depth > 0 ? i++ : i = wiki.indexOf(open, i + 1)) { - var c = wiki[i]; //open it + for (let i = wiki.indexOf(open); i !== -1 && i < wiki.length; depth > 0 ? i++ : i = wiki.indexOf(open, i + 1)) { + let c = wiki[i]; //open it if (c === open) { depth += 1; @@ -4800,7 +4309,7 @@ if (depth === 0) { carry.push(c); - var tmpl = carry.join(''); + let tmpl = carry.join(''); carry = []; //last check if (/\{\{/.test(tmpl) && /\}\}/.test(tmpl)) { @@ -4825,12 +4334,12 @@ return list; }; - var flat = findFlat; + var _02Flat = findFlat; //templates are usually '{{name|stuff}}' - var getName = function getName(tmpl) { - var name = null; //{{name|foo}} + const getName = function (tmpl) { + let name = null; //{{name|foo}} if (/^\{\{[^\n]+\|/.test(tmpl)) { name = (tmpl.match(/^\{\{(.+?)\|/) || [])[1]; @@ -4852,9 +4361,9 @@ var _getName = getName; - var hasTemplate = /\{\{/; + const hasTemplate = /\{\{/; - var parseTemplate = function parseTemplate(tmpl) { + const parseTemplate$1 = function (tmpl) { // this is some unexplained Lua thing tmpl = tmpl.replace(/#invoke:/, ''); return { @@ -4864,21 +4373,21 @@ }; }; - var doEach = function doEach(obj) { + const doEach = function (obj) { // peel-off top-level - var wiki = obj.body.substr(2); + let wiki = obj.body.substr(2); wiki = wiki.replace(/\}\}$/, ''); // get our child templates - obj.children = flat(wiki); - obj.children = obj.children.map(parseTemplate); + obj.children = _02Flat(wiki); + obj.children = obj.children.map(parseTemplate$1); if (obj.children.length === 0) { return obj; } // recurse through children - obj.children.forEach(function (ch) { - var inside = ch.body.substr(2); + obj.children.forEach(ch => { + let inside = ch.body.substr(2); if (hasTemplate.test(inside)) { return doEach(ch); //keep going @@ -4890,17 +4399,17 @@ }; // return a nested structure of all templates - var findTemplates = function findTemplates(wiki) { - var list = flat(wiki); - list = list.map(parseTemplate); + const findTemplates = function (wiki) { + let list = _02Flat(wiki); + list = list.map(parseTemplate$1); list = list.map(doEach); return list; }; - var find = findTemplates; + var _01Nested = findTemplates; //we explicitly ignore these, because they sometimes have resolve some data - var list$1 = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output + const list = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output 'anchor', 'defaultsort', 'use list-defined references', 'void', //https://en.wikipedia.org/wiki/Category:Protection_templates 'pp', 'pp-move-indef', 'pp-semi-indef', 'pp-vandalism', //https://en.wikipedia.org/wiki/Template:R 'r', //out-of-scope still - https://en.wikipedia.org/wiki/Template:Tag @@ -4924,21 +4433,13 @@ // 'weasel inline', //https://en.wikipedia.org/wiki/Template:End 'pope list end', 'shipwreck list end', 'starbox end', 'end box', 'end', 's-end']; - var ignore$1 = list$1.reduce(function (h, str) { + const ignore = list.reduce((h, str) => { h[str] = true; return h; }, {}); - var _ignore = ignore$1; - - var i18nReg = new RegExp('^(subst.)?(' + i18n$1.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones + var _ignore = ignore; - var startReg = /^infobox /i; - var endReg = / infobox$/i; - var yearIn = /$Year in [A-Z]/i; //some known ones from - // https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes - // and https://en.wikipedia.org/wiki/Category:Infobox_templates - - var known = { + var _infoboxes = { 'gnf protein box': true, 'automatic taxobox': true, 'chembox ': true, @@ -4974,11 +4475,19 @@ 'hockey team player': true, 'hockey team start': true, mlbbioret: true - }; // + }; + + const i18nReg = new RegExp('^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones - var isInfobox = function isInfobox(name) { - // known - if (known.hasOwnProperty(name) === true) { + const startReg = /^infobox /i; + const endReg = / infobox$/i; + const yearIn = /$Year in [A-Z]/i; //some known ones from + //https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes + //and https://en.wikipedia.org/wiki/Category:Infobox_templates + + const isInfobox = function (name) { + //known + if (_infoboxes.hasOwnProperty(name) === true) { return true; } @@ -4996,25 +4505,24 @@ } return false; - }; //turns template data into good inforbox data + }; //turns template data into good infobox data - var fmtInfobox = function fmtInfobox() { - var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var m = obj.template.match(i18nReg); - var type = obj.template; + const fmtInfobox = function (obj = {}) { + let m = obj.template.match(i18nReg); + let type = obj.template; if (m && m[0]) { type = type.replace(m[0], ''); } type = type.trim(); - var infobox = { + let infobox = { template: 'infobox', type: type, data: obj }; - delete infobox.data.template; // already have this. + delete infobox.data.template; //already have this. delete infobox.data.list; //just in case! @@ -5026,1673 +4534,1604 @@ format: fmtInfobox }; - var _months = [undefined, //1-based months.. :/ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - - var monthName = _months.reduce(function (h, str, i) { - if (i === 0) { - return h; - } + let aliases = { + 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' + }; //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'], + 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' //https://en.wikipedia.org/wiki/Template:URL + ] + }; // - 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] - h[str.toLowerCase()] = i; - return h; - }, {}); //parse year|month|date numbers + Object.keys(languages).forEach(lang => { + aliases['ipa-' + lang] = 'ipa'; + aliases['ipac-' + lang] = 'ipac'; + }); // add each alias in - var ymd = function ymd(arr) { - var obj = {}; - var units = ['year', 'month', 'date', 'hour', 'minute', 'second']; //parse each unit in sequence.. + Object.keys(multi).forEach(k => { + multi[k].forEach(str => { + aliases[str] = k; + }); + }); + var aliases_1 = aliases; + + var hardcoded = { + '·': '·', + 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: '▲' + }; + + let templates$9 = { + p1: 0, + p2: 1, + p3: 2, + resize: 1, + //https://en.wikipedia.org/wiki/Template:Resize + lang: 1, + 'rtl-lang': 1, + l: 2, + h: 1, + //https://en.wikipedia.org/wiki/Template:Hover_title + sort: 1 //https://en.wikipedia.org/wiki/Template:Sort - for (var i = 0; i < units.length; i += 1) { - //skip it - if (!arr[i] && arr[1] !== 0) { - continue; - } + }; //templates that we simply grab their insides as plaintext - var num = parseInt(arr[i], 10); + let zeros = ['defn', 'lino', //https://en.wikipedia.org/wiki/Template:Linum + 'finedetail', //https://en.wikipedia.org/wiki/Template:Finedetail + 'nobold', 'noitalic', 'nocaps', 'vanchor', //https://en.wikipedia.org/wiki/Template:Visible_anchor + 'rnd', 'date', //Explictly-set dates - https://en.wikipedia.org/wiki/Template: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', //https://en.wikipedia.org/wiki/Template:Delink + 'pre', 'var', 'mvar', 'pre2', 'code']; + zeros.forEach(k => { + templates$9[k] = 0; + }); //https://en.wikipedia.org/wiki/Category:Lang-x_templates - if (isNaN(num) === false) { - obj[units[i]] = num; //we good. - } else if (units[i] === 'month' && monthName.hasOwnProperty(arr[i])) { - //try for month-name, like 'january - var month = monthName[arr[i]]; - obj[units[i]] = month; - } else { - //we dead. so skip this unit - delete obj[units[i]]; - } - } //try for timezone,too ftw + Object.keys(languages).forEach(k => { + templates$9['lang-' + k] = 0; + }); + var shorthand$1 = templates$9; + const percentage = function (obj) { + if (!obj.numerator && !obj.denominator) { + return null; + } - var last = arr[arr.length - 1] || ''; - last = String(last); + let perc = Number(obj.numerator) / Number(obj.denominator); + perc *= 100; + let dec = Number(obj.decimals); - if (last.toLowerCase() === 'z') { - obj.tz = 'UTC'; - } else if (/[+-][0-9]+:[0-9]/.test(last)) { - obj.tz = arr[6]; + if (isNaN(dec)) { + dec = 1; } - return obj; - }; //zero-pad a number + perc = perc.toFixed(dec); + return Number(perc); + }; + const toNumber = function (str = '') { + if (typeof str === 'number') { + return str; + } - var pad = function pad(num) { - if (num < 10) { - return '0' + num; + str = str.replace(/,/g, ''); + str = str.replace(/−/g, '-'); + let num = Number(str); + + if (isNaN(num)) { + return str; } - return String(num); + return num; }; - var toText$1 = function toText(date) { - //eg '1995' - var str = String(date.year || ''); + const getLang = function (name) { + //grab the language from the template name - 'ipa-de' + let lang = name.match(/ipac?-(.+)/); - if (date.month !== undefined && _months.hasOwnProperty(date.month) === true) { - if (date.date === undefined) { - //January 1995 - str = "".concat(_months[date.month], " ").concat(date.year); - } else { - //January 5, 1995 - str = "".concat(_months[date.month], " ").concat(date.date, ", ").concat(date.year); //add times, if available - - if (date.hour !== undefined && date.minute !== undefined) { - var time = "".concat(pad(date.hour), ":").concat(pad(date.minute)); - - if (date.second !== undefined) { - time = time + ':' + pad(date.second); - } - - str = time + ', ' + str; //add timezone, if there, at the end in brackets - } - - if (date.tz) { - str += " (".concat(date.tz, ")"); - } + if (lang !== null) { + if (languages.hasOwnProperty(lang[1]) === true) { + return languages[lang[1]].english_title; } + + return lang[1]; } - return str; + return null; }; - var _format = { - toText: toText$1, - ymd: ymd - }; // console.log(toText(ymd([2018, 3, 28]))); + const titlecase$1 = str => { + return str.charAt(0).toUpperCase() + str.substring(1); + }; + + const 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' + }; + var _lib$3 = { + titlecase: titlecase$1, + sisterProjects: sisterProjects, + getLang: getLang, + percentage: percentage, + toNumber: toNumber + }; - var misc = { - reign: function reign(tmpl) { - var order = ['start', 'end']; - var obj = parse$3(tmpl, order); - return "(r. ".concat(obj.start, " \u2013 ").concat(obj.end, ")"); + var functions$2 = { + //https://en.wikipedia.org/wiki/Template:Ra + ra: tmpl => { + let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, - circa: function circa(tmpl) { - var obj = parse$3(tmpl, ['year']); - return "c.\u2009".concat(obj.year); + //https://en.wikipedia.org/wiki/Template:Deg2HMS + deg2hms: tmpl => { + //this template should do the conversion + let obj = toJSON(tmpl, ['degrees']); + return (obj.degrees || '') + '°'; }, - //we can't do timezones, so fake this one a little bit - //https://en.wikipedia.org/wiki/Template:Time - time: function time() { - var d = new Date(); - var obj = _format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); - return _format.toText(obj); + hms2deg: tmpl => { + //this template should do the conversion too + let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, - monthname: 0, - //https://en.wikipedia.org/wiki/Template:OldStyleDate - oldstyledate: function oldstyledate(tmpl) { - var order = ['date', 'year']; - var obj = parse$3(tmpl, order); - var str = obj.date; + decdeg: tmpl => { + //this template should do the conversion too + let obj = toJSON(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); + return (obj.deg || obj.degrees) + '°'; + }, + //https://en.wikipedia.org/wiki/Template:Sortname + sortname: tmpl => { + let order = ['first', 'last', 'target', 'sort']; + let obj = toJSON(tmpl, order); + let name = `${obj.first || ''} ${obj.last || ''}`; + name = name.trim(); - if (obj.year) { - str += ' ' + obj.year; + if (obj.nolink) { + return obj.target || name; } - return str; - } - }; - var misc_1 = misc; - - //this is allowed to be rough - var day = 1000 * 60 * 60 * 24; - var month = day * 30; - var year = day * 365; - - var getEpoch = function getEpoch(obj) { - return new Date("".concat(obj.year, "-").concat(obj.month || 0, "-").concat(obj.date || 1)).getTime(); - }; //very rough! - - - var delta = function delta(from, to) { - from = getEpoch(from); - to = getEpoch(to); - var diff = to - from; - var obj = {}; //get years - - var years = Math.floor(diff / year, 10); + if (obj.dab) { + name += ` (${obj.dab})`; - if (years > 0) { - obj.years = years; - diff -= obj.years * year; - } //get months + if (obj.target) { + obj.target += ` (${obj.dab})`; + } + } + if (obj.target) { + return `[[${obj.target}|${name}]]`; + } - var months = Math.floor(diff / month, 10); + return `[[${name}]]`; + }, + // https://en.wikipedia.org/wiki/Template:First_word + 'first word': tmpl => { + let obj = toJSON(tmpl, ['text']); + let str = obj.text; - if (months > 0) { - obj.months = months; - diff -= obj.months * month; - } //get days + if (obj.sep) { + return str.split(obj.sep)[0]; + } + return str.split(' ')[0]; + }, + trunc: tmpl => { + let order = ['str', 'len']; + let obj = toJSON(tmpl, order); + return obj.str.substr(0, obj.len); + }, + 'str mid': tmpl => { + let order = ['str', 'start', 'end']; + let obj = toJSON(tmpl, order); + let start = parseInt(obj.start, 10) - 1; + let end = parseInt(obj.end, 10); + return obj.str.substr(start, end); + }, + reign: tmpl => { + let order = ['start', 'end']; + let obj = toJSON(tmpl, order); + return `(r. ${obj.start} – ${obj.end})`; + }, + circa: tmpl => { + let obj = toJSON(tmpl, ['year']); + return `c. ${obj.year}`; + }, + // https://en.wikipedia.org/wiki/Template:Decade_link + 'decade link': tmpl => { + let obj = toJSON(tmpl, ['year']); + return `${obj.year}|${obj.year}s`; + }, + // https://en.wikipedia.org/wiki/Template:Decade + decade: tmpl => { + let obj = toJSON(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 10, 10) * 10; // round to decade - var days = Math.floor(diff / day, 10); + return `${year}s`; + }, + // https://en.wikipedia.org/wiki/Template:Century + century: tmpl => { + let obj = toJSON(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 100, 10) + 1; + return `${year}`; + }, + //https://en.wikipedia.org/wiki/Template:Radic + radic: tmpl => { + let order = ['after', 'before']; + let obj = toJSON(tmpl, order); + return `${obj.before || ''}√${obj.after || ''}`; + }, + 'medical cases chart/row': tmpl => { + // Deprecated template; we keep it. + return tmpl; + }, + //https://en.wikipedia.org/wiki/Template:OldStyleDate + oldstyledate: tmpl => { + let order = ['date', 'year']; + let obj = toJSON(tmpl, order); + return obj.year ? obj.date + ' ' + obj.year : obj.date; + }, + //formatting things - https://en.wikipedia.org/wiki/Template:Nobold + braces: tmpl => { + let obj = toJSON(tmpl, ['text']); + let attrs = ''; - if (days > 0) { - obj.days = days; // diff -= (obj.days * day); - } + if (obj.list) { + attrs = '|' + obj.list.join('|'); + } - return obj; - }; + return '{{' + (obj.text || '') + attrs + '}}'; + }, + hlist: tmpl => { + let obj = toJSON(tmpl); + obj.list = obj.list || []; + return obj.list.join(' · '); + }, + pagelist: tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join(', '); + }, + //actually rendering these links removes the text. + //https://en.wikipedia.org/wiki/Template:Catlist + catlist: tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join(', '); + }, + //https://en.wikipedia.org/wiki/Template:Br_separated_entries + 'br separated entries': tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join('\n\n'); + }, + 'comma separated entries': tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join(', '); + }, + //https://en.wikipedia.org/wiki/Template:Bare_anchored_list + 'anchored list': tmpl => { + let arr = toJSON(tmpl).list || []; + arr = arr.map((str, i) => `${i + 1}. ${str}`); + return arr.join('\n\n'); + }, + 'bulleted list': tmpl => { + let arr = toJSON(tmpl).list || []; + arr = arr.filter(f => f); + arr = arr.map(str => '• ' + str); + return arr.join('\n\n'); + }, + //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist + plainlist: tmpl => { + tmpl = _strip(tmpl); + let arr = tmpl.split('|').slice(1); //remove the title - var _delta = delta; + arr = arr.join('|').split(/\n ?\* ?/); //split on newline - var ymd$1 = _format.ymd; - var toText$2 = _format.toText; //wrap it up as a template + arr = arr.filter(s => s); + return arr.join('\n\n'); + }, + //https://en.wikipedia.org/wiki/Template:Term + term: tmpl => { + let obj = toJSON(tmpl, ['term']); + return `${obj.term}:`; + }, + linum: tmpl => { + let obj = toJSON(tmpl, ['num', 'text']); + return `${obj.num}. ${obj.text}`; + }, + 'block indent': tmpl => { + let obj = toJSON(tmpl); - var template = function template(date) { - return { - template: 'date', - data: date - }; - }; + if (obj['1']) { + return '\n' + obj['1'] + '\n'; + } - var getBoth = function getBoth(tmpl) { - tmpl = _strip(tmpl); - var arr = tmpl.split('|'); - var from = ymd$1(arr.slice(1, 4)); - var to = arr.slice(4, 7); //assume now, if 'to' is empty + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Lbs + lbs: tmpl => { + let obj = toJSON(tmpl, ['text']); + return `[[${obj.text} Lifeboat Station|${obj.text}]]`; + }, + //Foo-class + lbc: tmpl => { + let obj = toJSON(tmpl, ['text']); + return `[[${obj.text}-class lifeboat|${obj.text}-class]]`; + }, + lbb: tmpl => { + let obj = toJSON(tmpl, ['text']); + return `[[${obj.text}-class lifeboat|${obj.text}]]`; + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + '#dateformat': tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['date', 'format']); + return obj.date; + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + lc: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text']); + return (obj.text || '').toLowerCase(); + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + uc: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text']); + return (obj.text || '').toUpperCase(); + }, + lcfirst: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let text = toJSON(tmpl, ['text']).text; - if (to.length === 0) { - var d = new Date(); - to = [d.getFullYear(), d.getMonth(), d.getDate()]; - } + if (!text) { + return ''; + } - to = ymd$1(to); - return { - from: from, - to: to - }; - }; + return text[0].toLowerCase() + text.substr(1); + }, + ucfirst: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let text = toJSON(tmpl, ['text']).text; - var parsers = { - //generic {{date|year|month|date}} template - date: function date(tmpl, list) { - var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; - var obj = parse$3(tmpl, order); - var data = ymd$1([obj.year, obj.month, obj.date || obj.day]); - obj.text = toText$2(data); //make the replacement string + if (!text) { + return ''; + } - if (obj.timezone) { - if (obj.timezone === 'Z') { - obj.timezone = 'UTC'; - } + return text[0].toUpperCase() + text.substr(1); + }, + padleft: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text', 'num']); + let text = obj.text || ''; + return text.padStart(obj.num, obj.str || '0'); + }, + padright: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text', 'num']); + let text = obj.text || ''; + return text.padEnd(obj.num, obj.str || '0'); + }, + //https://en.wikipedia.org/wiki/Template:Abbrlink + abbrlink: tmpl => { + let obj = toJSON(tmpl, ['abbr', 'page']); - obj.text += " (".concat(obj.timezone, ")"); + if (obj.page) { + return `[[${obj.page}|${obj.abbr}]]`; } - if (obj.hour && obj.minute) { - if (obj.second) { - obj.text = "".concat(obj.hour, ":").concat(obj.minute, ":").concat(obj.second, ", ") + obj.text; - } else { - obj.text = "".concat(obj.hour, ":").concat(obj.minute, ", ") + obj.text; - } - } + return `[[${obj.abbr}]]`; + }, + // https://en.wikipedia.org/wiki/Template:Own + own: tmpl => { + let obj = toJSON(tmpl, ['author']); + let str = 'Own work'; - if (obj.text) { - list.push(template(obj)); + if (obj.author) { + str += ' by ' + obj.author; } - return obj.text; + return str; }, - //support parsing of 'February 10, 1992' - natural_date: function natural_date(tmpl, list) { - var order = ['text']; - var obj = parse$3(tmpl, order); - var str = obj.text || ''; // - just a year - - var date = {}; + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + formatnum: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['number']); + let str = obj.number || ''; + str = str.replace(/,/g, ''); + let num = Number(str); + return num.toLocaleString() || ''; + }, + //https://en.wikipedia.org/wiki/Template:Frac + frac: tmpl => { + let order = ['a', 'b', 'c']; + let obj = toJSON(tmpl, order); - if (/^[0-9]{4}$/.test(str)) { - date.year = parseInt(str, 10); - } else { - //parse the date, using the js date object (for now?) - var txt = str.replace(/[a-z]+\/[a-z]+/i, ''); - txt = txt.replace(/[0-9]+:[0-9]+(am|pm)?/i, ''); - var d = new Date(txt); + if (obj.c) { + return `${obj.a} ${obj.b}/${obj.c}`; + } - if (isNaN(d.getTime()) === false) { - date.year = d.getFullYear(); - date.month = d.getMonth() + 1; - date.date = d.getDate(); - } + if (obj.b) { + return `${obj.a}/${obj.b}`; } - list.push(template(date)); - return str.trim(); - }, - //just grab the first value, and assume it's a year - one_year: function one_year(tmpl, list) { - var order = ['year']; - var obj = parse$3(tmpl, order); - var year = Number(obj.year); - list.push(template({ - year: year - })); - return String(year); + return `1/${obj.b}`; }, - //assume 'y|m|d' | 'y|m|d' // {{BirthDeathAge|B|1976|6|6|1990|8|8}} - two_dates: function two_dates(tmpl, list) { - var order = ['b', 'birth_year', 'birth_month', 'birth_date', 'death_year', 'death_month', 'death_date']; - var obj = parse$3(tmpl, order); //'b' means show birth-date, otherwise show death-date + //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values + convert: tmpl => { + let order = ['num', 'two', 'three', 'four']; + let obj = toJSON(tmpl, order); //todo: support plural units - if (obj.b && obj.b.toLowerCase() === 'b') { - var _date = ymd$1([obj.birth_year, obj.birth_month, obj.birth_date]); + if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { + if (obj.four) { + return `${obj.num} ${obj.two} ${obj.three} ${obj.four}`; + } - list.push(template(_date)); - return toText$2(_date); + return `${obj.num} ${obj.two} ${obj.three}`; } - var date = ymd$1([obj.death_year, obj.death_month, obj.death_date]); - list.push(template(date)); - return toText$2(date); + return `${obj.num} ${obj.two}`; }, - age: function age(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - return diff.years || 0; + // Large number of aliases - https://en.wikipedia.org/wiki/Template:Tl + tl: tmpl => { + let order = ['first', 'second']; + let obj = toJSON(tmpl, order); + return obj.second || obj.first; }, - 'diff-y': function diffY(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - - if (diff.years === 1) { - return diff.years + ' year'; - } - - return (diff.years || 0) + ' years'; + //this one's a little different + won: tmpl => { + let data = toJSON(tmpl, ['text']); + return data.place || data.text || _lib$3.titlecase(data.template); }, - 'diff-ym': function diffYm(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; + //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag + tag: tmpl => { + let obj = toJSON(tmpl, ['tag', 'open']); + const ignore = { + span: true, + div: true, + p: true + }; //pair, empty, close, single - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); - } + if (!obj.open || obj.open === 'pair') { + //just skip generating spans and things.. + if (ignore[obj.tag]) { + return obj.content || ''; + } - if (diff.months === 1) { - arr.push('1 month'); - } else if (diff.months && diff.months !== 0) { - arr.push(diff.months + ' months'); + return `<${obj.tag} ${obj.attribs || ''}>${obj.content || ''}`; } - return arr.join(', '); + return ''; }, - 'diff-ymd': function diffYmd(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; + //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural + plural: tmpl => { + tmpl = tmpl.replace(/plural:/, 'plural|'); + let order = ['num', 'word']; + let obj = toJSON(tmpl, order); + let num = Number(obj.num); + let word = obj.word; - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); + if (num !== 1) { + if (/.y$/.test(word)) { + word = word.replace(/y$/, 'ies'); + } else { + word += 's'; + } } - if (diff.months === 1) { - arr.push('1 month'); - } else if (diff.months && diff.months !== 0) { - arr.push(diff.months + ' months'); + return num + ' ' + word; + }, + //https://en.wikipedia.org/wiki/Template:DEC + dec: tmpl => { + let obj = toJSON(tmpl, ['degrees', 'minutes', 'seconds']); + let str = (obj.degrees || 0) + '°'; + + if (obj.minutes) { + str += obj.minutes + `′`; } - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); + if (obj.seconds) { + str += obj.seconds + '″'; } - return arr.join(', '); + return str; }, - 'diff-yd': function diffYd(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; - - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); - } //ergh... - - - diff.days += (diff.months || 0) * 30; + //https://en.wikipedia.org/wiki/Template:Val + val: tmpl => { + let obj = toJSON(tmpl, ['number', 'uncertainty']); + let num = obj.number; - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); + if (num && Number(num)) { + num = Number(num).toLocaleString(); } - return arr.join(', '); - }, - 'diff-d': function diffD(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; //ergh... - - diff.days += (diff.years || 0) * 365; - diff.days += (diff.months || 0) * 30; + let str = num || ''; //prefix/suffix - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); + if (obj.p) { + str = obj.p + str; } - return arr.join(', '); - } - }; - var parsers_1 = parsers; + if (obj.s) { + str = obj.s + str; + } //add units, too - //not all too fancy - used in {{timesince}} - var timeSince = function timeSince(str) { - var d = new Date(str); - if (isNaN(d.getTime())) { - return ''; - } + if (obj.u || obj.ul || obj.upl) { + str = str + ' ' + (obj.u || obj.ul || obj.upl); + } - var now = new Date(); - var delta = now.getTime() - d.getTime(); - var predicate = 'ago'; + return str; + }, + //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} + percentage: tmpl => { + let obj = toJSON(tmpl, ['numerator', 'denominator', 'decimals']); + let num = _lib$3.percentage(obj); - if (delta < 0) { - predicate = 'from now'; - delta = Math.abs(delta); - } //figure out units + if (num === null) { + return ''; + } + return num + '%'; + }, + // {{Percent-done|done=N|total=N|digits=N}} + 'percent-done': tmpl => { + let obj = toJSON(tmpl, ['done', 'total', 'digits']); + let num = _lib$3.percentage({ + numerator: obj.done, + denominator: obj.total, + decimals: obj.digits + }); - var hours = delta / 1000 / 60 / 60; - var days = hours / 24; + if (num === null) { + return ''; + } - if (days < 365) { - return parseInt(days, 10) + ' days ' + predicate; + return `${obj.done} (${num}%) done`; } - - var years = days / 365; - return parseInt(years, 10) + ' years ' + predicate; }; - var _timeSince = timeSince; - - var date = parsers_1.date; - var natural_date = parsers_1.natural_date; - var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; //date- templates we support + var flags = [['🇦🇩', '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'], //dupe + ['🇧🇭', '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'], //alias + ['🇩🇯', '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'], //['🇬🇪', 'geo', 'georgia'], + ['🇬🇫', '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'], //alias + ['🇺🇸', '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'], //others (later unicode versions) + ['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; - var dateTmpl = Object.assign({}, misc_1, { - currentday: function currentday() { - var d = new Date(); - return String(d.getDate()); - }, - currentdayname: function currentdayname() { - var d = new Date(); - return days[d.getDay()]; - }, - currentmonth: function currentmonth() { - var d = new Date(); - return months[d.getMonth()]; - }, - currentyear: function currentyear() { - var d = new Date(); - return String(d.getFullYear()); - }, - monthyear: function monthyear() { - var d = new Date(); - return months[d.getMonth()] + ' ' + d.getFullYear(); - }, - 'monthyear-1': function monthyear1() { - var d = new Date(); - d.setMonth(d.getMonth() - 1); - return months[d.getMonth()] + ' ' + d.getFullYear(); + let templates$8 = { + //https://en.wikipedia.org/wiki/Template:Flag + // {{flag|USA}} → USA + flag: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(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 flag = found[0] || ''; + return `${flag} [[${found[2]}|${name}]]`; }, - 'monthyear+1': function monthyear1() { - var d = new Date(); - d.setMonth(d.getMonth() + 1); - return months[d.getMonth()] + ' ' + d.getFullYear(); + // {{flagcountry|USA}} → United States + flagcountry: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let flag = found[0] || ''; + return `${flag} [[${found[2]}]]`; }, - //Explictly-set dates - https://en.wikipedia.org/wiki/Template:Date - date: 0, - 'time ago': function timeAgo(tmpl) { - var order = ['date', 'fmt']; - var time = parse$3(tmpl, order).date; - return _timeSince(time); + // (unlinked flag-country) + flagcu: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + 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:Birth_date_and_age - 'birth date and age': function birthDateAndAge(tmpl, list) { - var order = ['year', 'month', 'day']; - var obj = parse$3(tmpl, order); //support 'one property' version + //https://en.wikipedia.org/wiki/Template:Flagicon + // {{flagicon|USA}} → United States + flagicon: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - if (obj.year && /[a-z]/i.test(obj.year)) { - return natural_date(tmpl, list); + if (!found) { + return ''; } - list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - return _format.toText(obj); + return `[[${found[2]}|${found[0]}]]`; + }, + //unlinked flagicon + flagdeco: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + return found[0] || ''; }, - 'birth year and age': function birthYearAndAge(tmpl, list) { - var order = ['birth_year', 'birth_month']; - var obj = parse$3(tmpl, order); //support 'one property' version + //same, but a soccer team + fb: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return natural_date(tmpl, list); + if (!found) { + return ''; } - list.push(obj); - var age = new Date().getFullYear() - parseInt(obj.birth_year, 10); - obj = _format.ymd([obj.birth_year, obj.birth_month]); - var str = _format.toText(obj); + return `${found[0]} [[${found[2]} national football team|${found[2]}]]`; + }, + fbicon: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - if (age) { - str += " (age ".concat(age, ")"); + if (!found) { + return ''; } - return str; + return ` [[${found[2]} national football team|${found[0]}]]`; }, - 'death year and age': function deathYearAndAge(tmpl, list) { - var order = ['death_year', 'birth_year', 'death_month']; - var obj = parse$3(tmpl, order); //support 'one property' version + flagathlete: tmpl => { + let order = ['name', 'flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return natural_date(tmpl, list); + if (!found) { + return `[[${obj.name || ''}]]`; } - list.push(obj); - obj = _format.ymd([obj.death_year, obj.death_month]); - return _format.toText(obj); - }, - //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 - 'birth date and age2': function birthDateAndAge2(tmpl, list) { - var order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; - var obj = parse$3(tmpl, order); - list.push(obj); - obj = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); - return _format.toText(obj); - }, - //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date - 'birth based on age as of date': function birthBasedOnAgeAsOfDate(tmpl, list) { - var order = ['age', 'year', 'month', 'day']; - var obj = parse$3(tmpl, order); - list.push(obj); - var age = parseInt(obj.age, 10); - var year = parseInt(obj.year, 10); - var born = year - age; + return `${found[0]} [[${obj.name || ''}]] (${found[1].toUpperCase()})`; + } + }; //support {{can}} - if (born && age) { - return "".concat(born, " (age ").concat(obj.age, ")"); - } + flags.forEach(a => { + templates$8[a[1]] = () => { + return a[0]; + }; + }); + var flags_1 = templates$8; - return "(age ".concat(obj.age, ")"); - }, - //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age - 'death date and given age': function deathDateAndGivenAge(tmpl, list) { - var order = ['year', 'month', 'day', 'age']; - var obj = parse$3(tmpl, order); - list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - var str = _format.toText(obj); + const titlecase = _lib$3.titlecase; //https://en.wikipedia.org/wiki/Template:Yes - if (obj.age) { - str += " (age ".concat(obj.age, ")"); - } + let templates$7 = {}; + let cells = ['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']; + cells.forEach(str => { + templates$7[str] = tmpl => { + let data = toJSON(tmpl, ['text']); + return data.text || titlecase(data.template); + }; + }); //these ones have a text result - return str; - }, - //sortable dates - - dts: function dts(tmpl) { - //remove formatting stuff, ewww - tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); - tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); - var order = ['year', 'month', 'date', 'bc']; - var obj = parse$3(tmpl, order); + let moreCells = [['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', '']]; + moreCells.forEach(a => { + templates$7[a[0]] = tmpl => { + let data = toJSON(tmpl, ['text']); + return data.text || a[1]; + }; + }); + var tableCell = templates$7; - if (obj.date && obj.month && obj.year) { - //render 'june 5 2018' - if (/[a-z]/.test(obj.month) === true) { - return [obj.month, obj.date, obj.year].join(' '); - } + var textOnly = Object.assign({}, hardcoded, shorthand$1, functions$2, flags_1, tableCell); - return [obj.year, obj.month, obj.date].join('-'); - } + let templates$6 = {}; // these all have ['id', 'name'] - if (obj.month && obj.year) { - return [obj.year, obj.month].join('-'); - } + let idName = ['goodreads author', 'twitter', 'facebook', 'instagram', 'tumblr', 'pinterest', 'espn nfl', 'espn nhl', 'espn fc', 'hockeydb', 'fifa player', 'worldcat', 'worldcat id', 'nfl player', 'ted speaker', 'playmate']; + idName.forEach(name => { + templates$6[name] = ['id', 'name']; + }); + var idName_1 = templates$6; - if (obj.year) { - if (obj.year < 0) { - obj.year = Math.abs(obj.year) + ' BC'; - } + let templates$5 = {}; // these all have ['id', 'title', 'description', 'section'] - return obj.year; - } + let idTitle = ['imdb title', //https://en.wikipedia.org/wiki/Template: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' //https://en.wikipedia.org/wiki/Template:DMOZ + ]; + idTitle.forEach(name => { + templates$5[name] = ['id', 'title', 'description', 'section']; + }); + var idTitle_1 = templates$5; + var functions$1 = { + // https://en.wikipedia.org/wiki/Template:IPA + ipa: (tmpl, list) => { + let obj = toJSON(tmpl, ['transcription', 'lang', 'audio']); + obj.lang = _lib$3.getLang(obj.template); + obj.template = 'ipa'; + list.push(obj); return ''; }, - //date/age/time templates - start: date, - end: date, - birth: date, - death: date, - 'start date': date, - 'end date': date, - 'birth date': date, - 'death date': date, - 'start date and age': date, - 'end date and age': date, - //this is insane (hyphen ones are different) - 'start-date': natural_date, - 'end-date': natural_date, - 'birth-date': natural_date, - 'death-date': natural_date, - 'birth-date and age': natural_date, - 'birth-date and given age': natural_date, - 'death-date and age': natural_date, - 'death-date and given age': natural_date, - birthdeathage: parsers_1.two_dates, - dob: date, - // 'birth date and age2': date, - age: parsers_1.age, - 'age nts': parsers_1.age, - 'age in years': parsers_1['diff-y'], - 'age in years and months': parsers_1['diff-ym'], - 'age in years, months and days': parsers_1['diff-ymd'], - 'age in years and days': parsers_1['diff-yd'], - 'age in days': parsers_1['diff-d'] // 'age in years, months, weeks and days': true, - // 'age as of date': true, - - }); //aliases - - dateTmpl.localday = dateTmpl.currentday; - dateTmpl.localdayname = dateTmpl.currentdayname; - dateTmpl.localmonth = dateTmpl.currentmonth; - dateTmpl.localyear = dateTmpl.currentyear; - dateTmpl.currentmonthname = dateTmpl.currentmonth; - dateTmpl.currentmonthabbrev = dateTmpl.currentmonth; - dateTmpl['death date and age'] = dateTmpl['birth date and age']; - dateTmpl.bda = dateTmpl['birth date and age']; - dateTmpl['birth date based on age at death'] = dateTmpl['birth based on age as of date']; - var dates = dateTmpl; + //https://en.wikipedia.org/wiki/Template:IPAc-en + ipac: (tmpl, list) => { + let obj = toJSON(tmpl); + obj.transcription = (obj.list || []).join(','); + delete obj.list; + obj.lang = _lib$3.getLang(obj.template); + obj.template = 'ipac'; + list.push(obj); + return ''; + }, + quote: (tmpl, list) => { + let order = ['text', 'author']; + let obj = toJSON(tmpl, order); + list.push(obj); //create plaintext version - var templates = { - //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag - tag: function tag(tmpl) { - var obj = parse$3(tmpl, ['tag', 'open']); - var ignore = { - span: true, - div: true, - p: true - }; //pair, empty, close, single + if (obj.text) { + let str = `"${obj.text}"`; - if (!obj.open || obj.open === 'pair') { - //just skip generating spans and things.. - if (ignore[obj.tag]) { - return obj.content || ''; + if (obj.author) { + str += '\n\n'; + str += ` - ${obj.author}`; } - return "<".concat(obj.tag, " ").concat(obj.attribs || '', ">").concat(obj.content || '', ""); + return str + '\n'; } return ''; }, - //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural - plural: function plural(tmpl) { - tmpl = tmpl.replace(/plural:/, 'plural|'); - var order = ['num', 'word']; - var obj = parse$3(tmpl, order); - var num = Number(obj.num); - var word = obj.word; - - if (num !== 1) { - if (/.y$/.test(word)) { - word = word.replace(/y$/, 'ies'); - } else { - word += 's'; - } - } - - return num + ' ' + word; - }, - // https://en.wikipedia.org/wiki/Template:First_word - 'first word': function firstWord(tmpl) { - var obj = parse$3(tmpl, ['text']); - var str = obj.text; - - if (obj.sep) { - return str.split(obj.sep)[0]; - } - - return str.split(' ')[0]; - }, - trunc: function trunc(tmpl) { - var order = ['str', 'len']; - var obj = parse$3(tmpl, order); - return obj.str.substr(0, obj.len); + //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS + 'cite gnis': (tmpl, list) => { + let order = ['id', 'name', 'type']; + let obj = toJSON(tmpl, order); + obj.type = 'gnis'; + obj.template = 'citation'; + list.push(obj); + return ''; }, - 'str mid': function strMid(tmpl) { - var order = ['str', 'start', 'end']; - var obj = parse$3(tmpl, order); - var start = parseInt(obj.start, 10) - 1; - var end = parseInt(obj.end, 10); - return obj.str.substr(start, end); + 'spoken wikipedia': (tmpl, list) => { + let order = ['file', 'date']; + let obj = toJSON(tmpl, order); + obj.template = 'audio'; + list.push(obj); + return ''; }, - //grab the first, second or third pipe - p1: 0, - p2: 1, - p3: 2, - //formatting things - https://en.wikipedia.org/wiki/Template:Nobold - braces: function braces(tmpl) { - var obj = parse$3(tmpl, ['text']); - var attrs = ''; + //yellow card + yel: (tmpl, list) => { + let obj = toJSON(tmpl, ['min']); + list.push(obj); - if (obj.list) { - attrs = '|' + obj.list.join('|'); + if (obj.min) { + return `yellow: ${obj.min || ''}'`; //no yellow-card emoji } - return '{{' + (obj.text || '') + attrs + '}}'; - }, - nobold: 0, - noitalic: 0, - nocaps: 0, - syntaxhighlight: function syntaxhighlight(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return obj.code || ''; + return ''; }, - samp: function samp(tmpl, list) { - var obj = parse$3(tmpl, ['1']); + subon: (tmpl, list) => { + let obj = toJSON(tmpl, ['min']); list.push(obj); - return obj['1'] || ''; - }, - //https://en.wikipedia.org/wiki/Template:Visible_anchor - vanchor: 0, - //https://en.wikipedia.org/wiki/Template:Resize - resize: 1, - //https://en.wikipedia.org/wiki/Template:Ra - ra: function ra(tmpl) { - var obj = parse$3(tmpl, ['hours', 'minutes', 'seconds']); - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); - }, - //https://en.wikipedia.org/wiki/Template:Deg2HMS - deg2hms: function deg2hms(tmpl) { - //this template should do the conversion - var obj = parse$3(tmpl, ['degrees']); - return (obj.degrees || '') + '°'; - }, - hms2deg: function hms2deg(tmpl) { - //this template should do the conversion too - var obj = parse$3(tmpl, ['hours', 'minutes', 'seconds']); - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); - }, - decdeg: function decdeg(tmpl) { - //this template should do the conversion too - var obj = parse$3(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); - return (obj.deg || obj.degrees) + '°'; - }, - rnd: 0, - //https://en.wikipedia.org/wiki/Template:DEC - dec: function dec(tmpl) { - var obj = parse$3(tmpl, ['degrees', 'minutes', 'seconds']); - var str = (obj.degrees || 0) + '°'; - - if (obj.minutes) { - str += obj.minutes + "\u2032"; - } - if (obj.seconds) { - str += obj.seconds + '″'; + if (obj.min) { + return `sub on: ${obj.min || ''}'`; //no yellow-card emoji } - return str; + return ''; }, - //https://en.wikipedia.org/wiki/Template:Val - val: function val(tmpl) { - var obj = parse$3(tmpl, ['number', 'uncertainty']); - var num = obj.number; + suboff: (tmpl, list) => { + let obj = toJSON(tmpl, ['min']); + list.push(obj); - if (num && Number(num)) { - num = Number(num).toLocaleString(); + if (obj.min) { + return `sub off: ${obj.min || ''}'`; //no yellow-card emoji } - var str = num || ''; //prefix/suffix + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Sfn + sfn: (tmpl, list, parser, alias) => { + let order = ['author', 'year', 'location']; + let obj = toJSON(tmpl, order); - if (obj.p) { - str = obj.p + str; + if (alias) { + obj.name = obj.template; + obj.teplate = alias; } - if (obj.s) { - str = obj.s + str; - } //add units, too - + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Redirect + redirect: (tmpl, list) => { + let data = toJSON(tmpl, ['redirect']); + let lines = data.list || []; + let links = []; - if (obj.u || obj.ul || obj.upl) { - str = str + ' ' + (obj.u || obj.ul || obj.upl); + for (let i = 0; i < lines.length; i += 2) { + links.push({ + page: lines[i + 1], + desc: lines[i] + }); } - return str; + let obj = { + template: 'redirect', + redirect: data.redirect, + links: links + }; + list.push(obj); + return ''; }, - //https://en.wikipedia.org/wiki/Template:Sub - sub: function sub(tmpl, list) { - var obj = parse$3(tmpl, ['text']); + //https://en.wikipedia.org/wiki/Template:Sister_project_links + 'sister project links': (tmpl, list) => { + let data = toJSON(tmpl); //rename 'wd' to 'wikidata' + + let links = {}; + Object.keys(_lib$3.sisterProjects).forEach(k => { + if (data.hasOwnProperty(k) === true) { + links[_lib$3.sisterProjects[k]] = data[k]; //.text(); + } + }); + let obj = { + template: 'sister project links', + links: links + }; list.push(obj); - return obj.text || ''; + return ''; }, - //https://en.wikipedia.org/wiki/Template:Sup - sup: function sup(tmpl, list) { - var obj = parse$3(tmpl, ['text']); + //https://en.wikipedia.org/wiki/Template:Subject_bar + 'subject bar': (tmpl, list) => { + let data = toJSON(tmpl); + Object.keys(data).forEach(k => { + //rename 'voy' to 'wikivoyage' + if (_lib$3.sisterProjects.hasOwnProperty(k)) { + data[_lib$3.sisterProjects[k]] = data[k]; + delete data[k]; + } + }); + let obj = { + template: 'subject bar', + links: data + }; list.push(obj); - return obj.text || ''; - } - }; //aliases - - templates['rndfrac'] = templates.rnd; - templates['rndnear'] = templates.rnd; - templates['unité'] = templates.val; //templates that we simply grab their insides as plaintext + return ''; + }, + //amazingly, this one does not obey any known patterns + //https://en.wikipedia.org/wiki/Template:Gallery + gallery: (tmpl, list) => { + let obj = toJSON(tmpl); + let images = (obj.list || []).filter(line => /^ *File ?:/.test(line)); + images = images.map(file => { + let img = { + file: file + }; // todo: add lang and domain information - var inline = ['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', //https://en.wikipedia.org/wiki/Template:Delink - //half-supported - 'pre', 'var', 'mvar', 'pre2', 'code']; - inline.forEach(function (k) { - templates[k] = function (tmpl) { - return parse$3(tmpl, ['text']).text || ''; - }; - }); - var format = templates; + return new Image_1(img).json(); + }); + obj = { + template: 'gallery', + images: images + }; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Sky + sky: (tmpl, list) => { + let obj = toJSON(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); + let template = { + template: 'sky', + ascension: { + hours: obj.asc_hours, + minutes: obj.asc_minutes, + seconds: obj.asc_seconds + }, + declination: { + sign: obj.dec_sign, + degrees: obj.dec_degrees, + minutes: obj.dec_minutes, + seconds: obj.dec_seconds + }, + distance: obj.distance + }; + list.push(template); + return ''; + }, + // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see + // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original + // parsing code. + 'medical cases chart': (tmpl, list) => { + let order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; + let obj = toJSON(tmpl); + obj.data = obj.data || ''; + let rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following + // line on: + // + // for parameter in mw.text.gsplit(line, ';') do - var tmpls = { - //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist - plainlist: function plainlist(tmpl) { - tmpl = _strip(tmpl); //remove the title + let dataArray = rows.map(row => { + let parameters = row.split(';'); + let rowObject = { + options: new Map() + }; + let positionalIndex = 0; - var arr = tmpl.split('|'); - arr = arr.slice(1); - tmpl = arr.join('|'); //split on newline + for (let i = 0; i < parameters.length; i++) { + let parameter = parameters[i].trim(); - arr = tmpl.split(/\n ?\* ?/); - arr = arr.filter(function (s) { - return s; - }); - return arr.join('\n\n'); - }, - //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list - 'collapsible list': function collapsibleList(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - var str = ''; + if (parameter.match(/^[a-zA-Z_]/)) { + // Named argument + let [key, value] = parameter.split('='); // At this point, the Lua code evaluates alttot1 and alttot2 values as + // #expr expressions, but we just pass them through. See also: + // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr - if (obj.title) { - str += "'''".concat(obj.title, "'''") + '\n\n'; - } + if (value === undefined) { + value = null; + } - if (!obj.list) { - obj.list = []; + rowObject.options.set(key, value); + } else { + // Positional argument + // Here again, the Lua code evaluates arguments at index 1 through 5 + // as #expr expressions, but we just pass them through. + if (positionalIndex < order.length) { + rowObject[order[positionalIndex]] = parameter; + } - for (var i = 1; i < 10; i += 1) { - if (obj[i]) { - obj.list.push(obj[i]); - delete obj[i]; + positionalIndex++; } } - } - obj.list = obj.list.filter(function (s) { - return s; + for (; positionalIndex < order.length; positionalIndex++) { + rowObject[order[positionalIndex]] = null; + } + + return rowObject; }); - str += obj.list.join('\n\n'); - return str; - }, - // https://en.wikipedia.org/wiki/Template:Ordered_list - 'ordered list': function orderedList(tmpl, list) { - var obj = parse$3(tmpl); + obj.data = dataArray; list.push(obj); - obj.list = obj.list || []; - var lines = obj.list.map(function (str, i) { - return "".concat(i + 1, ". ").concat(str); - }); - return lines.join('\n\n'); - }, - hlist: function hlist(tmpl) { - var obj = parse$3(tmpl); - obj.list = obj.list || []; - return obj.list.join(' · '); - }, - pagelist: function pagelist(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join(', '); - }, - //actually rendering these links removes the text. - //https://en.wikipedia.org/wiki/Template:Catlist - catlist: function catlist(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join(', '); - }, - //https://en.wikipedia.org/wiki/Template:Br_separated_entries - 'br separated entries': function brSeparatedEntries(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join('\n\n'); - }, - 'comma separated entries': function commaSeparatedEntries(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join(', '); - }, - //https://en.wikipedia.org/wiki/Template:Bare_anchored_list - 'anchored list': function anchoredList(tmpl) { - var arr = parse$3(tmpl).list || []; - arr = arr.map(function (str, i) { - return "".concat(i + 1, ". ").concat(str); - }); - return arr.join('\n\n'); - }, - 'bulleted list': function bulletedList(tmpl) { - var arr = parse$3(tmpl).list || []; - arr = arr.filter(function (f) { - return f; - }); - arr = arr.map(function (str) { - return '• ' + str; - }); - return arr.join('\n\n'); + return ''; }, - //https://en.wikipedia.org/wiki/Template:Columns-list - 'columns-list': function columnsList(tmpl, list) { - var arr = parse$3(tmpl).list || []; - var str = arr[0] || ''; - var lines = str.split(/\n/); - lines = lines.filter(function (f) { - return f; - }); - lines = lines.map(function (s) { - return s.replace(/\*/, ''); - }); - list.push({ - template: 'columns-list', - list: lines - }); - lines = lines.map(function (s) { - return '• ' + s; - }); - return lines.join('\n\n'); - } // 'pagelist':(tmpl)=>{}, + graph: (tmpl, list) => { + let data = toJSON(tmpl); - }; //aliases + if (data.x) { + data.x = data.x.split(',').map(str => str.trim()); + } - tmpls.flatlist = tmpls.plainlist; - tmpls.ublist = tmpls.plainlist; - tmpls['unbulleted list'] = tmpls['collapsible list']; - tmpls['ubl'] = tmpls['collapsible list']; - tmpls['bare anchored list'] = tmpls['anchored list']; - tmpls['plain list'] = tmpls['plainlist']; - tmpls.cmn = tmpls['columns-list']; - tmpls.collist = tmpls['columns-list']; - tmpls['col-list'] = tmpls['columns-list']; - tmpls.columnslist = tmpls['columns-list']; - var lists = tmpls; - - var inline$1 = { - //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values - convert: function convert(tmpl) { - var order = ['num', 'two', 'three', 'four']; - var obj = parse$3(tmpl, order); //todo: support plural units + if (data.y) { + data.y = data.y.split(',').map(str => str.trim()); + } - if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { - if (obj.four) { - return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three, " ").concat(obj.four); - } + let y = 1; - return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three); + while (data['y' + y]) { + data['y' + y] = data['y' + y].split(',').map(str => str.trim()); + y += 1; } - return "".concat(obj.num, " ").concat(obj.two); - }, - //https://en.wikipedia.org/wiki/Template:Term - term: function term(tmpl) { - var obj = parse$3(tmpl, ['term']); - return "".concat(obj.term, ":"); + list.push(data); + return ''; }, - defn: 0, - //https://en.wikipedia.org/wiki/Template:Linum - lino: 0, - linum: function linum(tmpl) { - var obj = parse$3(tmpl, ['num', 'text']); - return "".concat(obj.num, ". ").concat(obj.text); - }, - //https://en.wikipedia.org/wiki/Template:Interlanguage_link - ill: function ill(tmpl) { - var order = ['text', 'lan1', 'text1', 'lan2', 'text2']; - var obj = parse$3(tmpl, order); - return obj.text; - }, - //https://en.wikipedia.org/wiki/Template:Frac - frac: function frac(tmpl) { - var order = ['a', 'b', 'c']; - var obj = parse$3(tmpl, order); - - if (obj.c) { - return "".concat(obj.a, " ").concat(obj.b, "/").concat(obj.c); - } + //https://en.wikipedia.org/wiki/Template:Historical_populations + 'historical populations': (tmpl, list) => { + let data = toJSON(tmpl); + data.list = data.list || []; + let years = []; - if (obj.b) { - return "".concat(obj.a, "/").concat(obj.b); + for (let i = 0; i < data.list.length; i += 2) { + let num = data.list[i + 1]; + years.push({ + year: data.list[i], + val: Number(num) || num + }); } - return "1/".concat(obj.b); + data.data = years; + delete data.list; + list.push(data); + return ''; }, - //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} - height: function height(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - var result = []; - var units = ['m', 'cm', 'ft', 'in']; //order matters + // this one is a handful! + //https://en.wikipedia.org/wiki/Template:Weather_box + 'weather box': (tmpl, list) => { + const hasMonth = /^jan /i; + const isYear = /^year /i; + let obj = toJSON(tmpl); + const monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; + let byMonth = {}; + 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 => { + let key = `${m} ${prop}`; - units.forEach(function (unit) { - if (obj.hasOwnProperty(unit) === true) { - result.push(obj[unit] + unit); + if (obj.hasOwnProperty(key)) { + let num = _lib$3.toNumber(obj[key]); + delete obj[key]; + byMonth[prop].push(num); + } + }); + }); //add these to original + + obj.byMonth = byMonth; //collect year-based data + + let byYear = {}; + Object.keys(obj).forEach(k => { + if (isYear.test(k)) { + let prop = k.replace(isYear, ''); + byYear[prop] = obj[k]; + delete obj[k]; } }); - return result.join(' '); + obj.byYear = byYear; + list.push(obj); + return ''; }, - 'block indent': function blockIndent(tmpl) { - var obj = parse$3(tmpl); - - if (obj['1']) { - return '\n' + obj['1'] + '\n'; - } - + //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation + //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C + 'weather box/concise c': (tmpl, list) => { + let obj = toJSON(tmpl); + obj.list = obj.list.map(s => _lib$3.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) + }; + delete obj.list; + obj.template = 'weather box'; + list.push(obj); return ''; }, - quote: function quote(tmpl, list) { - var order = ['text', 'author']; - var obj = parse$3(tmpl, order); - list.push(obj); //create plaintext version - - if (obj.text) { - var str = "\"".concat(obj.text, "\""); + 'weather box/concise f': (tmpl, list) => { + let obj = toJSON(tmpl); + obj.list = obj.list.map(s => _lib$3.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) + }; + delete obj.list; + obj.template = 'weather box'; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Climate_chart + 'climate chart': (tmpl, list) => { + let lines = toJSON(tmpl).list || []; + let title = lines[0]; + let source = lines[38]; + lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... - if (obj.author) { - str += '\n\n'; - str += " - ".concat(obj.author); + lines = lines.map(str => { + if (str && str[0] === '−') { + str = str.replace(/−/, '-'); } - return str + '\n'; + return str; + }); + let months = []; //groups of three, for 12 months + + for (let i = 0; i < 36; i += 3) { + months.push({ + low: _lib$3.toNumber(lines[i]), + high: _lib$3.toNumber(lines[i + 1]), + precip: _lib$3.toNumber(lines[i + 2]) + }); } + let obj = { + template: 'climate chart', + data: { + title: title, + source: source, + months: months + } + }; + list.push(obj); return ''; + } + }; + + let templates$4 = { + //https://en.wikipedia.org/wiki/Category:External_link_templates + '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'], + //https://en.wikipedia.org/wiki/Template:Taxon_info + 'portuguese name': ['first', 'second', 'suffix'], + // https://en.wikipedia.org/wiki/Template:Portuguese_name + geo: ['lat', 'lon', 'zoom'] //https://en.wikivoyage.org/wiki/Template:Geo + + }; + templates$4 = Object.assign(templates$4, idName_1, idTitle_1, functions$1); + var dataOnly = templates$4; + + var shorthand = { + mlbplayer: { + props: ['number', 'name', 'il'], + out: 'name' }, - //https://en.wikipedia.org/wiki/Template:Lbs - lbs: function lbs(tmpl) { - var obj = parse$3(tmpl, ['text']); - return "[[".concat(obj.text, " Lifeboat Station|").concat(obj.text, "]]"); + syntaxhighlight: { + props: [], + out: 'code' }, - //Foo-class - lbc: function lbc(tmpl) { - var obj = parse$3(tmpl, ['text']); - return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "-class]]"); + samp: { + props: ['1'], + out: '1' }, - lbb: function lbb(tmpl) { - var obj = parse$3(tmpl, ['text']); - return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "]]"); + //https://en.wikipedia.org/wiki/Template:Sub + sub: { + props: ['text'], + out: 'text' }, - // https://en.wikipedia.org/wiki/Template:Own - own: function own(tmpl) { - var obj = parse$3(tmpl, ['author']); - var str = 'Own work'; + //https://en.wikipedia.org/wiki/Template:Sup + sup: { + props: ['text'], + out: 'text' + }, + //https://en.wikipedia.org/wiki/Template:Chem2 + chem2: { + props: ['equation'], + out: 'equation' + }, + //https://en.wikipedia.org/wiki/Template:Interlanguage_link + ill: { + props: ['text', 'lan1', 'text1', 'lan2', 'text2'], + out: 'text' + }, + //https://en.wikipedia.org/wiki/Template:Abbr + abbr: { + props: ['abbr', 'meaning', 'ipa'], + out: 'abbr' + } // name: { + // props: [], + // out: '', + // }, - if (obj.author) { - str += ' by ' + obj.author; - } + }; - return str; + let templates$3 = { + // https://en.wikipedia.org/wiki/Template:Math + math: (tmpl, list) => { + let obj = toJSON(tmpl, ['formula']); + list.push(obj); + return '\n\n' + (obj.formula || '') + '\n\n'; }, - //https://en.wikipedia.org/wiki/Template:Sic - sic: function sic(tmpl, list) { - var obj = parse$3(tmpl, ['one', 'two', 'three']); - var word = (obj.one || '') + (obj.two || ''); //support '[sic?]' + isbn: (tmpl, list) => { + let order = ['id', 'id2', 'id3']; + let obj = toJSON(tmpl, order); + list.push(obj); + return 'ISBN: ' + (obj.id || ''); + }, + //https://en.wikipedia.org/wiki/Template:Based_on + 'based on': (tmpl, list) => { + let obj = toJSON(tmpl, ['title', 'author']); + list.push(obj); + return `${obj.title} by ${obj.author || ''}`; + }, + //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t + 'bbl to t': (tmpl, list) => { + let obj = toJSON(tmpl, ['barrels']); + list.push(obj); - if (obj.one === '?') { - word = (obj.two || '') + (obj.three || ''); + if (obj.barrels === '0') { + return obj.barrels + ' barrel'; } + return obj.barrels + ' barrels'; + }, + //minor planet - https://en.wikipedia.org/wiki/Template:MPC + mpc: (tmpl, list) => { + let obj = toJSON(tmpl, ['number', 'text']); + list.push(obj); + return `[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${obj.text || obj.number}]`; + }, + pengoal: (tmpl, list) => { list.push({ - template: 'sic', - word: word + template: 'pengoal' }); - - if (obj.nolink === 'y') { - return word; - } - - return "".concat(word, " [sic]"); - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - formatnum: function formatnum(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['number']); - var str = obj.number || ''; - str = str.replace(/,/g, ''); - var num = Number(str); - return num.toLocaleString() || ''; + return '✅'; }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - '#dateformat': function dateformat(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['date', 'format']); - return obj.date; + penmiss: (tmpl, list) => { + list.push({ + template: 'penmiss' + }); + return '❌'; }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - lc: function lc(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - return (obj.text || '').toLowerCase(); + // https://en.wikipedia.org/wiki/Template:Ordered_list + 'ordered list': (tmpl, list) => { + let obj = toJSON(tmpl); + list.push(obj); + obj.list = obj.list || []; + let lines = obj.list.map((str, i) => `${i + 1}. ${str}`); + return lines.join('\n\n'); }, - lcfirst: function lcfirst(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - var text = obj.text; + // https://en.wikipedia.org/wiki/Template:Title_year + 'title year': (tmpl, _list, _alias, _parse, doc) => { + let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); - if (!text) { - return ''; + 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 text[0].toLowerCase() + text.substr(1); - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - uc: function uc(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - return (obj.text || '').toUpperCase(); + return obj.nomatch || ''; //use default response }, - ucfirst: function ucfirst(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - var text = obj.text; + // https://en.wikipedia.org/wiki/Template:Title_century + 'title century': (tmpl, _list, _alias, _parse, doc) => { + let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); - if (!text) { - return ''; + 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 text[0].toUpperCase() + text.substr(1); - }, - padleft: function padleft(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text', 'num']); - var text = obj.text || ''; - return text.padStart(obj.num, obj.str || '0'); - }, - padright: function padright(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text', 'num']); - var text = obj.text || ''; - return text.padEnd(obj.num, obj.str || '0'); - }, - //abbreviation/meaning - //https://en.wikipedia.org/wiki/Template:Abbr - abbr: function abbr(tmpl) { - var obj = parse$3(tmpl, ['abbr', 'meaning', 'ipa']); - return obj.abbr; + return obj.nomatch || ''; //use default response }, - //https://en.wikipedia.org/wiki/Template:Abbrlink - abbrlink: function abbrlink(tmpl) { - var obj = parse$3(tmpl, ['abbr', 'page']); + // https://en.wikipedia.org/wiki/Template:Title_decade + 'title decade': (tmpl, _list, _alias, _parse, doc) => { + let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); - if (obj.page) { - return "[[".concat(obj.page, "|").concat(obj.abbr, "]]"); + 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 "[[".concat(obj.abbr, "]]"); + return obj.nomatch || ''; //use default response }, - //https://en.wikipedia.org/wiki/Template:Hover_title - //technically 'h:title' - h: 1, - //https://en.wikipedia.org/wiki/Template:Finedetail - finedetail: 0, - //https://en.wikipedia.org/wiki/Template:Sort - sort: 1 - }; //aliases - - inline$1['str left'] = inline$1.trunc; - inline$1['str crop'] = inline$1.trunc; - inline$1['tooltip'] = inline$1.abbr; - inline$1['abbrv'] = inline$1.abbr; - inline$1['define'] = inline$1.abbr; - inline$1['cvt'] = inline$1.convert; - var misc$1 = inline$1; - - var formatting$1 = Object.assign({}, format, lists, misc$1); - - //converts DMS (decimal-minute-second) geo format to lat/lng format. - //major thank you to https://github.com/gmaclennan/parse-dms - //and https://github.com/WSDOT-GIS/dms-js 👏 - //accepts an array of descending Degree, Minute, Second values, with a hemisphere at the end - //must have N/S/E/W as last thing - function parseDms(arr) { - var hemisphere = arr.pop(); - var degrees = Number(arr[0] || 0); - var minutes = Number(arr[1] || 0); - var seconds = Number(arr[2] || 0); + //https://en.wikipedia.org/wiki/Template:Nihongo + nihongo: (tmpl, list) => { + let obj = toJSON(tmpl, ['english', 'kanji', 'romaji', 'extra']); + list.push(obj); + let str = obj.english || obj.romaji || ''; - if (typeof hemisphere !== 'string' || isNaN(degrees)) { - return null; - } + if (obj.kanji) { + str += ` (${obj.kanji})`; + } - var sign = 1; + return str; + }, + //https://en.wikipedia.org/wiki/Template:Marriage + //this one creates a template, and an inline response + marriage: (tmpl, list) => { + let data = toJSON(tmpl, ['spouse', 'from', 'to', 'end']); + list.push(data); + let str = data.spouse || ''; - if (/[SW]/i.test(hemisphere)) { - sign = -1; - } + if (data.from) { + if (data.to) { + str += ` (m. ${data.from}-${data.to})`; + } else { + str += ` (m. ${data.from})`; + } + } - var decDeg = sign * (degrees + minutes / 60 + seconds / 3600); - return decDeg; - } + return str; + }, + //'red' card - {{sent off|cards|min1|min2}} + 'sent off': (tmpl, list) => { + let obj = toJSON(tmpl, ['cards']); + let result = { + template: 'sent off', + cards: obj.cards, + minutes: obj.list || [] + }; + list.push(result); + let mins = result.minutes.map(m => m + "'").join(', '); + return 'sent off: ' + mins; + }, + transl: (tmpl, list) => { + let obj = toJSON(tmpl, ['lang', 'text', 'text2']); // support 3-param - var dmsFormat = parseDms; // console.log(parseDms([57, 18, 22, 'N'])); + if (obj.text2) { + obj.iso = obj.text; + obj.text = obj.text2; + delete obj.text2; + } - var round = function round(num) { - if (typeof num !== 'number') { - return num; - } + list.push(obj); + return obj.text || ''; + }, + //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list + 'collapsible list': (tmpl, list) => { + let obj = toJSON(tmpl); + list.push(obj); + let str = ''; - var places = 100000; - return Math.round(num * places) / places; - }; //these hemispheres mean negative decimals + if (obj.title) { + str += `'''${obj.title}'''` + '\n\n'; + } + if (!obj.list) { + obj.list = []; - var negative = { - s: true, - w: true - }; - - var findLatLng = function findLatLng(arr) { - var types = arr.map(function (s) { - return _typeof(s); - }).join('|'); //support {{lat|lng}} - - if (arr.length === 2 && types === 'number|number') { - return { - lat: arr[0], - lon: arr[1] - }; - } //support {{dd|N/S|dd|E/W}} + for (let i = 1; i < 10; i += 1) { + if (obj[i]) { + obj.list.push(obj[i]); + delete obj[i]; + } + } + } + obj.list = obj.list.filter(s => s); + str += obj.list.join('\n\n'); + return str; + }, + //https://en.wikipedia.org/wiki/Template:Columns-list + 'columns-list': (tmpl, list) => { + let arr = toJSON(tmpl).list || []; + let str = arr[0] || ''; + let lines = str.split(/\n/).filter(f => f); + lines = lines.map(s => s.replace(/\*/, '')); + list.push({ + template: 'columns-list', + list: lines + }); + lines = lines.map(s => '• ' + s); + return lines.join('\n\n'); + }, + //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} + height: (tmpl, list) => { + let obj = toJSON(tmpl); + list.push(obj); + let result = []; + let units = ['m', 'cm', 'ft', 'in']; //order matters - if (arr.length === 4 && types === 'number|string|number|string') { - if (negative[arr[1].toLowerCase()]) { - arr[0] *= -1; - } + units.forEach(unit => { + if (obj.hasOwnProperty(unit) === true) { + result.push(obj[unit] + unit); + } + }); + return result.join(' '); + }, + //https://en.wikipedia.org/wiki/Template:Sic + sic: (tmpl, list) => { + let obj = toJSON(tmpl, ['one', 'two', 'three']); + let word = (obj.one || '') + (obj.two || ''); //support '[sic?]' - if (arr[3].toLowerCase() === 'w') { - arr[2] *= -1; + if (obj.one === '?') { + word = (obj.two || '') + (obj.three || ''); } - return { - lat: arr[0], - lon: arr[2] - }; - } //support {{dd|mm|N/S|dd|mm|E/W}} + list.push({ + template: 'sic', + word: word + }); + if (obj.nolink === 'y') { + return word; + } - if (arr.length === 6) { - return { - lat: dmsFormat(arr.slice(0, 3)), - lon: dmsFormat(arr.slice(3)) + return `${word} [sic]`; + }, + // + inrconvert: (tmpl, list) => { + let o = toJSON(tmpl, ['rupee_value', 'currency_formatting']); + list.push(o); + const mults = { + k: 1000, + m: 1000000, + b: 1000000000, + t: 1000000000000, + l: 100000, + c: 10000000, + lc: 1000000000000 }; - } //support {{dd|mm|ss|N/S|dd|mm|ss|E/W}} + if (o.currency_formatting) { + let multiplier = mults[o.currency_formatting] || 1; + o.rupee_value = o.rupee_value * multiplier; + } - if (arr.length === 8) { - return { - lat: dmsFormat(arr.slice(0, 4)), - lon: dmsFormat(arr.slice(4)) + return `inr ${o.rupee_value || ''}`; + }, + //fraction - https://en.wikipedia.org/wiki/Template:Sfrac + frac: (tmpl, list) => { + let order = ['a', 'b', 'c']; + let obj = toJSON(tmpl, order); + let data = { + template: 'sfrac' }; - } - return {}; - }; - - var parseParams = function parseParams(obj) { - obj.list = obj.list || []; - obj.list = obj.list.map(function (str) { - var num = Number(str); - - if (!isNaN(num)) { - return num; - } //these are weird - - - var split = str.split(/:/); - - if (split.length > 1) { - obj.props = obj.props || {}; - obj.props[split[0]] = split.slice(1).join(':'); - return null; + if (obj.c) { + data.integer = obj.a; + data.numerator = obj.b; + data.denominator = obj.c; + } else if (obj.b) { + data.numerator = obj.a; + data.denominator = obj.b; + } else { + data.numerator = 1; + data.denominator = obj.a; } - return str; - }); - obj.list = obj.list.filter(function (s) { - return s !== null; - }); - return obj; - }; - - var parseCoor = function parseCoor(tmpl) { - var obj = parse$3(tmpl); - obj = parseParams(obj); - var tmp = findLatLng(obj.list); - obj.lat = round(tmp.lat); - obj.lon = round(tmp.lon); - obj.template = 'coord'; - delete obj.list; - return obj; - }; - - var coor = parseCoor; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} - - var templates$1 = { - coord: function coord(tmpl, list) { - var obj = coor(tmpl); - list.push(obj); //display inline, by default + list.push(data); - if (!obj.display || obj.display.indexOf('inline') !== -1) { - return "".concat(obj.lat || '', "\xB0N, ").concat(obj.lon || '', "\xB0W"); + if (data.integer) { + return `${data.integer} ${data.numerator}⁄${data.denominator}`; } - return ''; + return `${data.numerator}⁄${data.denominator}`; }, - //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}} - - templates$1['coor'] = templates$1.coord; // these are from the nl wiki - - templates$1['coor title dms'] = templates$1.coord; - templates$1['coor title dec'] = templates$1.coord; - templates$1['coor dms'] = templates$1.coord; - templates$1['coor dm'] = templates$1.coord; - templates$1['coor dec'] = templates$1.coord; - var geo = templates$1; - - var templates$2 = { - /* mostly wiktionary*/ - etyl: 1, - mention: 1, - link: 1, - 'la-verb-form': 0, - 'la-ipa': 0, - //https://en.wikipedia.org/wiki/Template:Sortname - sortname: function sortname(tmpl) { - var order = ['first', 'last', 'target', 'sort']; - var obj = parse$3(tmpl, order); - var name = "".concat(obj.first || '', " ").concat(obj.last || ''); - name = name.trim(); - - if (obj.nolink) { - return obj.target || name; - } - - if (obj.dab) { - name += " (".concat(obj.dab, ")"); + 'winning percentage': (tmpl, list) => { + let obj = toJSON(tmpl, ['wins', 'losses', 'ties']); + list.push(obj); + let wins = Number(obj.wins); + let losses = Number(obj.losses); + let ties = Number(obj.ties) || 0; + let games = wins + losses + ties; - if (obj.target) { - obj.target += " (".concat(obj.dab, ")"); - } + if (obj.ignore_ties === 'y') { + ties = 0; } - if (obj.target) { - return "[[".concat(obj.target, "|").concat(name, "]]"); + if (ties) { + wins += ties / 2; } - return "[[".concat(name, "]]"); - } - }; //these are insane - // https://en.wikipedia.org/wiki/Template:Tl - - var links = ['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' //https://en.wikipedia.org/wiki/Template:URL - ]; //keyValues - - links.forEach(function (k) { - templates$2[k] = function (tmpl) { - var order = ['first', 'second']; - var obj = parse$3(tmpl, order); - return obj.second || obj.first; - }; - }); //aliases + let num = _lib$3.percentage({ + numerator: wins, + denominator: games, + decimals: 1 + }); - templates$2.m = templates$2.mention; - templates$2['m-self'] = templates$2.mention; - templates$2.l = templates$2.link; - templates$2.ll = templates$2.link; - templates$2['l-self'] = templates$2.link; - var links_1 = templates$2; + if (num === null) { + return ''; + } - var 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' - }; - var parsers$1 = { - // https://en.wikipedia.org/wiki/Template:About - about: function about(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Main - main: function main(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Main_list - 'main list': function mainList(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:See - see: function see(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:For - "for": function _for(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Further - further: function further(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // same as "further" (but this name is still in use) - 'further information': function furtherInformation(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; + return `.${num * 10}`; }, - // https://en.wikipedia.org/wiki/Template:Listen - listen: function listen(tmpl, list) { - var obj = parse$3(tmpl); + winlosspct: (tmpl, list) => { + let obj = toJSON(tmpl, ['wins', 'losses']); list.push(obj); - return ''; - }, - 'wide image': ['file', 'width', 'caption'], - //https://en.wikipedia.org/wiki/Template:Redirect - redirect: function redirect(tmpl, list) { - var data = parse$3(tmpl, ['redirect']); - var lines = data.list || []; - var links = []; + let wins = Number(obj.wins); + let losses = Number(obj.losses); + let num = _lib$3.percentage({ + numerator: wins, + denominator: wins + losses, + decimals: 1 + }); - for (var i = 0; i < lines.length; i += 2) { - links.push({ - page: lines[i + 1], - desc: lines[i] - }); + if (num === null) { + return ''; } - var obj = { - template: 'redirect', - redirect: data.redirect, - links: links - }; - list.push(obj); - return ''; - }, - //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS - 'cite gnis': function citeGnis(tmpl, list) { - var order = ['id', 'name', 'type']; - var obj = parse$3(tmpl, order); - obj.type = 'gnis'; - obj.template = 'citation'; - list.push(obj); - return ''; + num = `.${num * 10}`; + return `${wins || 0} || ${losses || 0} || ${num || '-'}`; }, - //https://en.wikipedia.org/wiki/Template:Sfn - sfn: function sfn(tmpl, list, alias) { - var order = ['author', 'year', 'location']; - var obj = parse$3(tmpl, order); + //https://en.wikipedia.org/wiki/Template:Video_game_release + 'video game release': (tmpl, list) => { + let order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; + let obj = toJSON(tmpl, order); + let template = { + template: 'video game release', + releases: [] + }; - if (alias) { - obj.name = obj.template; - obj.teplate = alias; + 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]] + }); + } } - list.push(obj); - return ''; + list.push(template); + let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n'); + return '\n' + str + '\n'; }, - audio: ['file', 'text', 'type'], - rp: ['page'], - 'spoken wikipedia': function spokenWikipedia(tmpl, list) { - var order = ['file', 'date']; - var obj = parse$3(tmpl, order); - obj.template = 'audio'; + // https://en.m.wikipedia.org/wiki/Template:USS + uss: (tmpl, list) => { + let obj = toJSON(tmpl, ['name', 'id']); list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Sister_project_links - 'sister project links': function sisterProjectLinks(tmpl, list) { - var data = parse$3(tmpl); //rename 'wd' to 'wikidata' - var links = {}; - Object.keys(sisterProjects).forEach(function (k) { - if (data.hasOwnProperty(k) === true) { - links[sisterProjects[k]] = data[k]; //.text(); - } - }); - var obj = { - template: 'sister project links', - links: links - }; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Subject_bar - 'subject bar': function subjectBar(tmpl, list) { - var data = parse$3(tmpl); - Object.keys(data).forEach(function (k) { - //rename 'voy' to 'wikivoyage' - if (sisterProjects.hasOwnProperty(k)) { - data[sisterProjects[k]] = data[k]; - delete data[k]; - } - }); - var obj = { - template: 'subject bar', - links: data - }; - list.push(obj); - return ''; - }, - 'short description': ['description'], - 'coord missing': ['region'], - //amazingly, this one does not obey any known patterns - //https://en.wikipedia.org/wiki/Template:Gallery - gallery: function gallery(tmpl, list) { - var obj = parse$3(tmpl); - var images = (obj.list || []).filter(function (line) { - return /^ *File ?:/.test(line); - }); - images = images.map(function (file) { - var img = { - file: file - }; // TODO: add lang and domain information + if (obj.id) { + return `[[USS ${obj.name} (${obj.id})|USS ''${obj.name}'' (${obj.id})]]`; + } - return new Image_1(img).json(); - }); - obj = { - template: 'gallery', - images: images - }; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:See_also - 'see also': function seeAlso(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - unreferenced: ['date'] - }; //aliases - - parsers$1['cite'] = parsers$1.citation; - parsers$1['sfnref'] = parsers$1.sfn; - parsers$1['harvid'] = parsers$1.sfn; - parsers$1['harvnb'] = parsers$1.sfn; - parsers$1['unreferenced section'] = parsers$1.unreferenced; - parsers$1['redir'] = parsers$1.redirect; - parsers$1['sisterlinks'] = parsers$1['sister project links']; - parsers$1['main article'] = parsers$1['main']; - var page = parsers$1; - - var titlecase = function titlecase(str) { - return str.charAt(0).toUpperCase() + str.substring(1); - }; //https://en.wikipedia.org/wiki/Template:Yes - - - var templates$3 = {}; - var cells = ['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']; - cells.forEach(function (str) { - templates$3[str] = function (tmpl) { - var data = parse$3(tmpl, ['text']); - return data.text || titlecase(data.template); - }; - }); //these ones have a text result - - var moreCells = [['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', '']]; - moreCells.forEach(function (a) { - templates$3[a[0]] = function (tmpl) { - var data = parse$3(tmpl, ['text']); - return data.text || a[1]; - }; - }); //this one's a little different - - templates$3.won = function (tmpl) { - var data = parse$3(tmpl, ['text']); - return data.place || data.text || titlecase(data.template); - }; - - var tableCell = templates$3; - - var wikipedia = Object.assign({}, links_1, page, tableCell); - - var zeroPad = function zeroPad(num) { - num = String(num); - - if (num.length === 1) { - num = '0' + num; - } - - return num; - }; - - var parseTeam = function parseTeam(obj, round, team) { - if (obj["rd".concat(round, "-team").concat(zeroPad(team))]) { - team = zeroPad(team); - } - - var score = obj["rd".concat(round, "-score").concat(team)]; - var num = Number(score); - - if (isNaN(num) === false) { - score = num; - } - - return { - team: obj["rd".concat(round, "-team").concat(team)], - score: score, - seed: obj["rd".concat(round, "-seed").concat(team)] - }; - }; //these are weird. - - - var playoffBracket = function playoffBracket(tmpl) { - var rounds = []; - var obj = parse$3(tmpl); //try some rounds - - for (var i = 1; i < 7; i += 1) { - var round = []; - - for (var t = 1; t < 16; t += 2) { - var key = "rd".concat(i, "-team"); - - if (obj[key + t] || obj[key + zeroPad(t)]) { - var one = parseTeam(obj, i, t); - var two = parseTeam(obj, i, t + 1); - round.push([one, two]); - } else { - break; - } - } - - if (round.length > 0) { - rounds.push(round); - } + return `[[USS ${obj.name}|USS ''${obj.name}'']]`; } - - return { - template: 'playoffbracket', - rounds: rounds - }; }; + var functions = templates$3; - var all = { - //playoff brackets - '4teambracket': function teambracket(tmpl, list) { - var obj = playoffBracket(tmpl); - list.push(obj); - return ''; - } - }; //a bunch of aliases for these ones: - // https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates - - var brackets = ['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']; - brackets.forEach(function (key) { - all[key] = all['4teambracket']; - }); - var brackets_1 = all; - - var codes = { + const codes$1 = { '£': 'GB£', // https://en.wikipedia.org/wiki/Template:GBP '¥': '¥', @@ -6819,10 +6258,10 @@ }; - var parseCurrency = function parseCurrency(tmpl, list) { - var o = parse$3(tmpl, ['amount', 'code']); + const parseCurrency = (tmpl, list) => { + let o = toJSON(tmpl, ['amount', 'code']); list.push(o); - var code = o.template || ''; + let code = o.template || ''; if (code === 'currency') { code = o.code; @@ -6836,936 +6275,902 @@ 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'; } - var out = codes[code] || ''; - var str = "".concat(out).concat(o.amount || ''); //support unknown currencies after the number - like '5 BTC' + let str = `${codes$1[code] || ''}${o.amount || ''}`; //support unknown currencies after the number - like '5 BTC' - if (o.code && !codes[o.code.toLowerCase()]) { + if (o.code && !codes$1[o.code.toLowerCase()]) { str += ' ' + o.code; } return str; }; - var inrConvert = function inrConvert(tmpl, list) { - var o = parse$3(tmpl, ['rupee_value', 'currency_formatting']); - list.push(o); - var formatting = o.currency_formatting; + let templates$2 = { + currency: parseCurrency + }; //and the others fit the same pattern - if (formatting) { - var multiplier = 1; + Object.keys(codes$1).forEach(k => { + templates$2[k] = parseCurrency; + }); + var currency = templates$2; - switch (formatting) { - case 'k': - multiplier = 1000; - break; + const toOrdinal = function (i) { + let j = i % 10; + let k = i % 100; - case 'm': - multiplier = 1000000; - break; + if (j === 1 && k !== 11) { + return i + 'st'; + } - case 'b': - multiplier = 1000000000; - break; + if (j === 2 && k !== 12) { + return i + 'nd'; + } - case 't': - multiplier = 1000000000000; - break; + if (j === 3 && k !== 13) { + return i + 'rd'; + } - case 'l': - multiplier = 100000; - break; + return i + 'th'; + }; //this is allowed to be rough - case 'c': - multiplier = 10000000; - break; - case 'lc': - multiplier = 1000000000000; - break; - } + const day = 1000 * 60 * 60 * 24; + const month = day * 30; + const year = day * 365; - o.rupee_value = o.rupee_value * multiplier; - } + const getEpoch = function (obj) { + return new Date(`${obj.year}-${obj.month || 0}-${obj.date || 1}`).getTime(); + }; //very rough! - var str = "inr ".concat(o.rupee_value || ''); - return str; - }; - var currencies = { - //this one is generic https://en.wikipedia.org/wiki/Template:Currency - currency: parseCurrency, - monnaie: parseCurrency, - unité: parseCurrency, - nombre: parseCurrency, - nb: parseCurrency, - iso4217: parseCurrency, - inrconvert: inrConvert - }; //the others fit the same pattern.. + const delta$1 = function (from, to) { + from = getEpoch(from); + to = getEpoch(to); + let diff = to - from; + let obj = {}; //get years - Object.keys(codes).forEach(function (k) { - currencies[k] = parseCurrency; - }); - var currency = currencies; + let years = Math.floor(diff / year, 10); - var templates$4 = { - //https://en.wikipedia.org/wiki/Template:Election_box - 'election box begin': function electionBoxBegin(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - 'election box candidate': function electionBoxCandidate(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - 'election box hold with party link': function electionBoxHoldWithPartyLink(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - 'election box gain with party link': function electionBoxGainWithPartyLink(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - } - }; //aliases + if (years > 0) { + obj.years = years; + diff -= obj.years * year; + } //get months - templates$4['election box begin no change'] = templates$4['election box begin']; - templates$4['election box begin no party'] = templates$4['election box begin']; - templates$4['election box begin no party no change'] = templates$4['election box begin']; - templates$4['election box inline begin'] = templates$4['election box begin']; - templates$4['election box inline begin no change'] = templates$4['election box begin']; - templates$4['election box candidate for alliance'] = templates$4['election box candidate']; - templates$4['election box candidate minor party'] = templates$4['election box candidate']; - templates$4['election box candidate no party link no change'] = templates$4['election box candidate']; - templates$4['election box candidate with party link'] = templates$4['election box candidate']; - templates$4['election box candidate with party link coalition 1918'] = templates$4['election box candidate']; - templates$4['election box candidate with party link no change'] = templates$4['election box candidate']; - templates$4['election box inline candidate'] = templates$4['election box candidate']; - templates$4['election box inline candidate no change'] = templates$4['election box candidate']; - templates$4['election box inline candidate with party link'] = templates$4['election box candidate']; - templates$4['election box inline candidate with party link no change'] = templates$4['election box candidate']; - templates$4['election box inline incumbent'] = templates$4['election box candidate']; - var elections = templates$4; - - var flags = [['🇦🇩', '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', //dupe - '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', //alias - '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'], // ['🇬🇪', 'geo', 'georgia'], - ['🇬🇫', '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'], ['🇺🇸', 'usa', 'united states'], ['🇺🇸', 'us', //alias - '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'], ['', 'win', 'west indies'], ['🇼🇫', 'wlf', 'wallis and futuna'], ['🇼🇸', 'wsm', 'samoa'], ['🇾🇪', 'yem', 'yemen'], ['🇾🇹', 'myt', 'mayotte'], ['🇿🇦', 'zaf', 'south africa'], ['🇿🇲', 'zmb', 'zambia'], ['🇿🇼 ', 'zwe', 'zimbabwe'], //others (later unicode versions) - ['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; - var templates$5 = { - //https://en.wikipedia.org/wiki/Template:Flag - // {{flag|USA}} → USA - flag: function flag(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - var name = obj.flag || ''; - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - var flag = found[0] || ''; - return "".concat(flag, " [[").concat(found[2], "|").concat(name, "]]"); - }, - // {{flagcountry|USA}} → United States - flagcountry: function flagcountry(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - var flag = found[0] || ''; - return "".concat(flag, " [[").concat(found[2], "]]"); - }, - // (unlinked flag-country) - flagcu: function flagcu(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - var flag = found[0] || ''; - return "".concat(flag, " ").concat(found[2]); - }, - //https://en.wikipedia.org/wiki/Template:Flagicon - // {{flagicon|USA}} → United States - flagicon: function flagicon(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); + let monthCount = Math.floor(diff / month, 10); - if (!found) { - return ''; - } + if (monthCount > 0) { + obj.months = monthCount; + diff -= obj.months * month; + } //get days - return "[[".concat(found[2], "|").concat(found[0], "]]"); - }, - //unlinked flagicon - flagdeco: function flagdeco(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - return found[0] || ''; - }, - //same, but a soccer team - fb: function fb(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); - if (!found) { - return ''; - } + let days = Math.floor(diff / day, 10); - return "".concat(found[0], " [[").concat(found[2], " national football team|").concat(found[2], "]]"); - }, - fbicon: function fbicon(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); + if (days > 0) { + obj.days = days; // diff -= (obj.days * day); + } - if (!found) { - return ''; - } + return obj; + }; //not all too fancy - used in {{timesince}} - return " [[".concat(found[2], " national football team|").concat(found[0], "]]"); - }, - flagathlete: function flagathlete(tmpl) { - var order = ['name', 'flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); - if (!found) { - return "[[".concat(obj.name || '', "]]"); - } + const timeSince = function (str) { + let d = new Date(str); - return "".concat(found[0], " [[").concat(obj.name || '', "]] (").concat(found[1].toUpperCase(), ")"); + if (isNaN(d.getTime())) { + return ''; } - }; //support {{can}} - flags.forEach(function (a) { - templates$5[a[1]] = function () { - return a[0]; - }; - }); //cricket + let now = new Date(); + let delt = now.getTime() - d.getTime(); + let predicate = 'ago'; - templates$5['cr'] = templates$5.flagcountry; - templates$5['cr-rt'] = templates$5.flagcountry; - templates$5['cricon'] = templates$5.flagicon; - var flags_1 = templates$5; + if (delt < 0) { + predicate = 'from now'; + delt = Math.abs(delt); + } //figure out units - var getLang = function getLang(name) { - //grab the language from the template name - 'ipa-de' - var lang = name.match(/ipac?-(.+)/); - if (lang !== null) { - if (languages.hasOwnProperty(lang[1]) === true) { - return languages[lang[1]].english_title; - } + let hours = delt / 1000 / 60 / 60; + let days = hours / 24; - return lang[1]; + if (days < 365) { + return parseInt(days, 10) + ' days ' + predicate; } - return null; - }; // pronounciation info - - - var templates$6 = { - // https://en.wikipedia.org/wiki/Template:IPA - ipa: function ipa(tmpl, list) { - var obj = parse$3(tmpl, ['transcription', 'lang', 'audio']); - obj.lang = getLang(obj.template); - obj.template = 'ipa'; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:IPAc-en - ipac: function ipac(tmpl, list) { - var obj = parse$3(tmpl); - obj.transcription = (obj.list || []).join(','); - delete obj.list; - obj.lang = getLang(obj.template); - obj.template = 'ipac'; - list.push(obj); - return ''; - }, - transl: function transl(tmpl, list) { - var obj = parse$3(tmpl, ['lang', 'text', 'text2']); // support 3-param + let years = days / 365; + return parseInt(years, 10) + ' years ' + predicate; + }; - if (obj.text2) { - obj.iso = obj.text; - obj.text = obj.text2; - delete obj.text2; - } + const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + var _lib$2 = { + days: days, + timeSince: timeSince, + delta: delta$1, + toOrdinal: toOrdinal + }; - list.push(obj); - return obj.text || ''; + //assorted parsing methods for date/time templates + const months$1 = [undefined, //1-based months.. :/ + 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + const monthName = months$1.reduce((h, str, i) => { + if (i === 0) { + return h; } - }; // - 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(function (lang) { - templates$6['ipa-' + lang] = templates$6.ipa; - templates$6['ipac-' + lang] = templates$6.ipac; - }); - var ipa = templates$6; + h[str.toLowerCase()] = i; + return h; + }, {}); //parse year|month|date numbers - var templates$7 = { - lang: 1, - //this one has a million variants - 'lang-de': 0, - 'rtl-lang': 1, - //german keyboard letterscn - taste: 0, - //https://en.wikipedia.org/wiki/Template:Nihongo - nihongo: function nihongo(tmpl, list) { - var obj = parse$3(tmpl, ['english', 'kanji', 'romaji', 'extra']); - list.push(obj); - var str = obj.english || obj.romaji || ''; + const ymd = function (arr) { + let obj = {}; + let units = ['year', 'month', 'date', 'hour', 'minute', 'second']; //parse each unit in sequence.. - if (obj.kanji) { - str += " (".concat(obj.kanji, ")"); + for (let i = 0; i < units.length; i += 1) { + //skip it + if (!arr[i] && arr[1] !== 0) { + continue; } - return str; - } - }; //https://en.wikipedia.org/wiki/Category:Lang-x_templates + let num = parseInt(arr[i], 10); - Object.keys(languages).forEach(function (k) { - templates$7['lang-' + k] = templates$7['lang-de']; - }); - templates$7['nihongo2'] = templates$7.nihongo; - templates$7['nihongo3'] = templates$7.nihongo; - templates$7['nihongo-s'] = templates$7.nihongo; - templates$7['nihongo foot'] = templates$7.nihongo; - var languages_1 = templates$7; + if (isNaN(num) === false) { + obj[units[i]] = num; //we good. + } else if (units[i] === 'month' && monthName.hasOwnProperty(arr[i])) { + //try for month-name, like 'january + let month = monthName[arr[i]]; + obj[units[i]] = month; + } else { + //we dead. so skip this unit + delete obj[units[i]]; + } + } //try for timezone,too ftw - //simply num/denom * 100 - var _percentage = function percentage(obj) { - if (!obj.numerator && !obj.denominator) { - return null; + let last = arr[arr.length - 1] || ''; + last = String(last); + + if (last.toLowerCase() === 'z') { + obj.tz = 'UTC'; + } else if (/[+-][0-9]+:[0-9]/.test(last)) { + obj.tz = arr[6]; } - var perc = Number(obj.numerator) / Number(obj.denominator); - perc *= 100; - var dec = Number(obj.decimals); + return obj; + }; //zero-pad a number - if (isNaN(dec)) { - dec = 1; + + const pad = function (num) { + if (num < 10) { + return '0' + num; } - perc = perc.toFixed(dec); - return Number(perc); + return String(num); }; - var templates$8 = { - // https://en.wikipedia.org/wiki/Template:Math - math: function math(tmpl, list) { - var obj = parse$3(tmpl, ['formula']); - list.push(obj); - return '\n\n' + (obj.formula || '') + '\n\n'; - }, - //fraction - https://en.wikipedia.org/wiki/Template:Sfrac - frac: function frac(tmpl, list) { - var order = ['a', 'b', 'c']; - var obj = parse$3(tmpl, order); - var data = { - template: 'sfrac' - }; + const toText$1 = function (date) { + //eg '1995' + let str = String(date.year || ''); - if (obj.c) { - data.integer = obj.a; - data.numerator = obj.b; - data.denominator = obj.c; - } else if (obj.b) { - data.numerator = obj.a; - data.denominator = obj.b; + if (date.month !== undefined && months$1.hasOwnProperty(date.month) === true) { + if (date.date === undefined) { + //January 1995 + str = `${months$1[date.month]} ${date.year}`; } else { - data.numerator = 1; - data.denominator = obj.a; + //January 5, 1995 + str = `${months$1[date.month]} ${date.date}, ${date.year}`; //add times, if available + + if (date.hour !== undefined && date.minute !== undefined) { + let time = `${pad(date.hour)}:${pad(date.minute)}`; + + if (date.second !== undefined) { + time = time + ':' + pad(date.second); + } + + str = time + ', ' + str; //add timezone, if there, at the end in brackets + } + + if (date.tz) { + str += ` (${date.tz})`; + } } + } - list.push(data); + return str; + }; - if (data.integer) { - return "".concat(data.integer, " ").concat(data.numerator, "\u2044").concat(data.denominator); + var _format = { + toText: toText$1, + ymd: ymd + }; // console.log(toText(ymd([2018, 3, 28]))); + + const delta = _lib$2.delta; //wrap it up as a template + + const template$1 = function (date) { + return { + template: 'date', + data: date + }; + }; + + const getBoth = function (tmpl) { + tmpl = _strip(tmpl); + let arr = tmpl.split('|'); + let from = _format.ymd(arr.slice(1, 4)); + let to = arr.slice(4, 7); //assume now, if 'to' is empty + + if (to.length === 0) { + let d = new Date(); + to = [d.getFullYear(), d.getMonth(), d.getDate()]; + } + + to = _format.ymd(to); + return { + from: from, + to: to + }; + }; + + const parsers = { + //generic {{date|year|month|date}} template + date: (tmpl, list) => { + let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; + let obj = toJSON(tmpl, order); + let data = _format.ymd([obj.year, obj.month, obj.date || obj.day]); + obj.text = _format.toText(data); //make the replacement string + + if (obj.timezone) { + if (obj.timezone === 'Z') { + obj.timezone = 'UTC'; + } + + obj.text += ` (${obj.timezone})`; } - return "".concat(data.numerator, "\u2044").concat(data.denominator); - }, - //https://en.wikipedia.org/wiki/Template:Radic - radic: function radic(tmpl) { - var order = ['after', 'before']; - var obj = parse$3(tmpl, order); - return "".concat(obj.before || '', "\u221A").concat(obj.after || ''); + if (obj.hour && obj.minute) { + if (obj.second) { + obj.text = `${obj.hour}:${obj.minute}:${obj.second}, ` + obj.text; + } else { + obj.text = `${obj.hour}:${obj.minute}, ` + obj.text; + } + } + + if (obj.text) { + list.push(template$1(obj)); + } + + return obj.text; }, - //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} - percentage: function percentage(tmpl) { - var obj = parse$3(tmpl, ['numerator', 'denominator', 'decimals']); + //support parsing of 'February 10, 1992' + natural_date: (tmpl, list) => { + let order = ['text']; + let obj = toJSON(tmpl, order); + let str = obj.text || ''; // - just a year - var num = _percentage(obj); + let date = {}; - if (num === null) { - return ''; + if (/^[0-9]{4}$/.test(str)) { + date.year = parseInt(str, 10); + } else { + //parse the date, using the js date object (for now?) + let txt = str.replace(/[a-z]+\/[a-z]+/i, ''); + txt = txt.replace(/[0-9]+:[0-9]+(am|pm)?/i, ''); + let d = new Date(txt); + + if (isNaN(d.getTime()) === false) { + date.year = d.getFullYear(); + date.month = d.getMonth() + 1; + date.date = d.getDate(); + } } - return num + '%'; + list.push(template$1(date)); + return str.trim(); }, - // {{Percent-done|done=N|total=N|digits=N}} - 'percent-done': function percentDone(tmpl) { - var obj = parse$3(tmpl, ['done', 'total', 'digits']); + //just grab the first value, and assume it's a year + one_year: (tmpl, list) => { + let order = ['year']; + let obj = toJSON(tmpl, order); + let year = Number(obj.year); + list.push(template$1({ + year: year + })); + return String(year); + }, + //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 obj = toJSON(tmpl, order); //'b' means show birth-date, otherwise show death-date - var num = _percentage({ - numerator: obj.done, - denominator: obj.total, - decimals: obj.digits - }); + if (obj.b && obj.b.toLowerCase() === 'b') { + let date = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_date]); + list.push(template$1(date)); + return _format.toText(date); + } - if (num === null) { - return ''; + let date = _format.ymd([obj.death_year, obj.death_month, obj.death_date]); + list.push(template$1(date)); + return _format.toText(date); + }, + age: tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + return diff.years || 0; + }, + 'diff-y': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + + if (diff.years === 1) { + return diff.years + ' year'; } - return "".concat(obj.done, " (").concat(num, "%) done"); + return (diff.years || 0) + ' years'; }, - 'winning percentage': function winningPercentage(tmpl, list) { - var obj = parse$3(tmpl, ['wins', 'losses', 'ties']); - list.push(obj); - var wins = Number(obj.wins); - var losses = Number(obj.losses); - var ties = Number(obj.ties) || 0; - var games = wins + losses + ties; + 'diff-ym': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; - if (obj.ignore_ties === 'y') { - ties = 0; + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); } - if (ties) { - wins += ties / 2; + if (diff.months === 1) { + arr.push('1 month'); + } else if (diff.months && diff.months !== 0) { + arr.push(diff.months + ' months'); } - var num = _percentage({ - numerator: wins, - denominator: games, - decimals: 1 - }); + return arr.join(', '); + }, + 'diff-ymd': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; - if (num === null) { - return ''; + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } + + if (diff.months === 1) { + arr.push('1 month'); + } else if (diff.months && diff.months !== 0) { + arr.push(diff.months + ' months'); + } + + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); } - return ".".concat(num * 10); + return arr.join(', '); }, - winlosspct: function winlosspct(tmpl, list) { - var obj = parse$3(tmpl, ['wins', 'losses']); - list.push(obj); - var wins = Number(obj.wins); - var losses = Number(obj.losses); + 'diff-yd': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; - var num = _percentage({ - numerator: wins, - denominator: wins + losses, - decimals: 1 - }); + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } //ergh... - if (num === null) { - return ''; + + diff.days += (diff.months || 0) * 30; + + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); } - num = ".".concat(num * 10); - return "".concat(wins || 0, " || ").concat(losses || 0, " || ").concat(num || '-'); - } - }; //aliases + return arr.join(', '); + }, + 'diff-d': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; //ergh... - templates$8['sfrac'] = templates$8.frac; - templates$8['sqrt'] = templates$8.radic; - templates$8['pct'] = templates$8.percentage; - templates$8['percent'] = templates$8.percentage; - templates$8['winpct'] = templates$8['winning percentage']; - templates$8['winperc'] = templates$8['winning percentage']; - var math = templates$8; + diff.days += (diff.years || 0) * 365; + diff.days += (diff.months || 0) * 30; - var generic = function generic(tmpl, list, alias) { - var obj = parse$3(tmpl); + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); + } - if (alias) { - obj.name = obj.template; - obj.template = alias; + return arr.join(', '); } - - list.push(obj); - return ''; }; + var _parsers = parsers; - var misc$2 = { - //i18n templates - persondata: generic, - taxobox: generic, - citation: generic, - portal: generic, - reflist: generic, - 'cite book': generic, - 'cite journal': generic, - 'cite web': generic, - 'commons cat': generic, - // https://en.wikipedia.org/wiki/Template:Portuguese_name - 'portuguese name': ['first', 'second', 'suffix'], - uss: ['ship', 'id'], - isbn: function isbn(tmpl, list) { - var order = ['id', 'id2', 'id3']; - var obj = parse$3(tmpl, order); - list.push(obj); - return 'ISBN: ' + (obj.id || ''); + const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; //date- templates we support + + var dates = { + currentday: () => { + let d = new Date(); + return String(d.getDate()); }, - //https://en.wikipedia.org/wiki/Template:Marriage - //this one creates a template, and an inline response - marriage: function marriage(tmpl, list) { - var data = parse$3(tmpl, ['spouse', 'from', 'to', 'end']); - list.push(data); - var str = "".concat(data.spouse || ''); + currentdayname: () => { + let d = new Date(); + return _lib$2.days[d.getDay()]; + }, + currentmonth: () => { + let d = new Date(); + return months[d.getMonth()]; + }, + currentyear: () => { + let d = new Date(); + return String(d.getFullYear()); + }, + monthyear: () => { + let d = new Date(); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'monthyear-1': () => { + let d = new Date(); + d.setMonth(d.getMonth() - 1); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'monthyear+1': () => { + let d = new Date(); + d.setMonth(d.getMonth() + 1); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'time ago': tmpl => { + let order = ['date', 'fmt']; + let time = toJSON(tmpl, order).date; + return _lib$2.timeSince(time); + }, + //https://en.wikipedia.org/wiki/Template:Birth_date_and_age + 'birth date and age': (tmpl, list) => { + let order = ['year', 'month', 'day']; + let obj = toJSON(tmpl, order); //support 'one property' version - if (data.from) { - if (data.to) { - str += " (m. ".concat(data.from, "-").concat(data.to, ")"); - } else { - str += " (m. ".concat(data.from, ")"); - } + if (obj.year && /[a-z]/i.test(obj.year)) { + return _parsers.natural_date(tmpl, list); } - return str; - }, - //https://en.wikipedia.org/wiki/Template:Based_on - 'based on': function basedOn(tmpl, list) { - var obj = parse$3(tmpl, ['title', 'author']); list.push(obj); - return "".concat(obj.title, " by ").concat(obj.author || ''); + obj = _format.ymd([obj.year, obj.month, obj.day]); + return _format.toText(obj); }, - //https://en.wikipedia.org/wiki/Template:Video_game_release - 'video game release': function videoGameRelease(tmpl, list) { - var order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; - var obj = parse$3(tmpl, order); - var template = { - template: 'video game release', - releases: [] - }; + 'birth year and age': (tmpl, list) => { + let order = ['birth_year', 'birth_month']; + let obj = toJSON(tmpl, order); //support 'one property' version - for (var i = 0; i < order.length; i += 2) { - if (obj[order[i]]) { - template.releases.push({ - region: obj[order[i]], - date: obj[order[i + 1]] - }); - } + if (obj.death_year && /[a-z]/i.test(obj.death_year)) { + return _parsers.natural_date(tmpl, list); } - list.push(template); - var str = template.releases.map(function (o) { - return "".concat(o.region, ": ").concat(o.date || ''); - }).join('\n\n'); - return '\n' + str + '\n'; - }, - //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t - 'bbl to t': function bblToT(tmpl, list) { - var obj = parse$3(tmpl, ['barrels']); list.push(obj); + let age = new Date().getFullYear() - parseInt(obj.birth_year, 10); + obj = _format.ymd([obj.birth_year, obj.birth_month]); + let str = _format.toText(obj); - if (obj.barrels === '0') { - return obj.barrels + ' barrel'; + if (age) { + str += ` (age ${age})`; } - return obj.barrels + ' barrels'; + return str; }, - //https://en.wikipedia.org/wiki/Template:Historical_populations - 'historical populations': function historicalPopulations(tmpl, list) { - var data = parse$3(tmpl); - data.list = data.list || []; - var years = []; + 'death year and age': (tmpl, list) => { + let order = ['death_year', 'birth_year', 'death_month']; + let obj = toJSON(tmpl, order); //support 'one property' version - for (var i = 0; i < data.list.length; i += 2) { - var num = data.list[i + 1]; - years.push({ - year: data.list[i], - val: Number(num) || num - }); + if (obj.death_year && /[a-z]/i.test(obj.death_year)) { + return _parsers.natural_date(tmpl, list); } - data.data = years; - delete data.list; - list.push(data); - return ''; - } - }; - var misc_1$1 = misc$2; - - // okay, these just hurts my feelings - // https://www.mediawiki.org/wiki/Help:Magic_words#Other - var punctuation = [// https://en.wikipedia.org/wiki/Template:%C2%B7 - ['·', '·'], ['·', '·'], ['dot', '·'], ['middot', '·'], ['•', ' • '], //yup, oxford comma template - [',', ','], ['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', ' – '], // these '{{^}}' things are nuts, and used as some ilicit spacing thing. - ['^', ' '], ['!', '|'], ['\\', ' /'], ['`', '`'], ['=', '='], ['bracket', '['], ['[', '['], ['*', '*'], ['asterisk', '*'], ['long dash', '———'], ['clear', '\n\n'], ['h.', 'ḥ']]; - var templates$9 = {}; - punctuation.forEach(function (a) { - templates$9[a[0]] = a[1]; - }); - var punctuation_1 = templates$9; - - var templates$a = { - //https://en.wikipedia.org/wiki/Template:Taxon_info - 'taxon info': ['taxon', 'item'], - //minor planet - https://en.wikipedia.org/wiki/Template:MPC - mpc: function mpc(tmpl, list) { - var obj = parse$3(tmpl, ['number', 'text']); list.push(obj); - return "[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ".concat(obj.text || obj.number, "]"); + obj = _format.ymd([obj.death_year, obj.death_month]); + return _format.toText(obj); }, - //https://en.wikipedia.org/wiki/Template:Chem2 - chem2: function chem2(tmpl, list) { - var obj = parse$3(tmpl, ['equation']); + //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 + 'birth date and age2': (tmpl, list) => { + let order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; + let obj = toJSON(tmpl, order); list.push(obj); - return obj.equation; - }, - //https://en.wikipedia.org/wiki/Template:Sky - sky: function sky(tmpl, list) { - var obj = parse$3(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); - var template = { - template: 'sky', - ascension: { - hours: obj.asc_hours, - minutes: obj.asc_minutes, - seconds: obj.asc_seconds - }, - declination: { - sign: obj.dec_sign, - degrees: obj.dec_degrees, - minutes: obj.dec_minutes, - seconds: obj.dec_seconds - }, - distance: obj.distance - }; - list.push(template); - return ''; + obj = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); + return _format.toText(obj); }, - // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see - // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original - // parsing code. - 'medical cases chart': function medicalCasesChart(tmpl, list) { - var order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; - var obj = parse$3(tmpl); - obj.data = obj.data || ''; - var rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following - // line on: - // - // for parameter in mw.text.gsplit(line, ';') do + //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date + 'birth based on age as of date': (tmpl, list) => { + let order = ['age', 'year', 'month', 'day']; + let obj = toJSON(tmpl, order); + list.push(obj); + let age = parseInt(obj.age, 10); + let year = parseInt(obj.year, 10); + let born = year - age; - var dataArray = rows.map(function (row) { - var parameters = row.split(';'); - var rowObject = { - options: new Map() - }; - var positionalIndex = 0; + if (born && age) { + return `${born} (age ${obj.age})`; + } + + return `(age ${obj.age})`; + }, + //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age + 'death date and given age': (tmpl, list) => { + let order = ['year', 'month', 'day', 'age']; + let obj = toJSON(tmpl, order); + list.push(obj); + obj = _format.ymd([obj.year, obj.month, obj.day]); + let str = _format.toText(obj); - for (var i = 0; i < parameters.length; i++) { - var parameter = parameters[i].trim(); + if (obj.age) { + str += ` (age ${obj.age})`; + } - if (parameter.match(/^[a-zA-Z_]/)) { - // Named argument - var _parameter$split = parameter.split('='), - _parameter$split2 = _slicedToArray(_parameter$split, 2), - key = _parameter$split2[0], - value = _parameter$split2[1]; // At this point, the Lua code evaluates alttot1 and alttot2 values as - // #expr expressions, but we just pass them through. See also: - // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr + return str; + }, + //sortable dates - + dts: tmpl => { + //remove formatting stuff, ewww + tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); + tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); + let order = ['year', 'month', 'date', 'bc']; + let obj = toJSON(tmpl, order); + if (obj.date && obj.month && obj.year) { + //render 'june 5 2018' + if (/[a-z]/.test(obj.month) === true) { + return [obj.month, obj.date, obj.year].join(' '); + } - if (value === undefined) { - value = null; - } + return [obj.year, obj.month, obj.date].join('-'); + } - rowObject.options.set(key, value); - } else { - // Positional argument - // Here again, the Lua code evaluates arguments at index 1 through 5 - // as #expr expressions, but we just pass them through. - if (positionalIndex < order.length) { - rowObject[order[positionalIndex]] = parameter; - } + if (obj.month && obj.year) { + return [obj.year, obj.month].join('-'); + } - positionalIndex++; - } + if (obj.year) { + if (obj.year < 0) { + obj.year = Math.abs(obj.year) + ' BC'; } - for (; positionalIndex < order.length; positionalIndex++) { - rowObject[order[positionalIndex]] = null; - } + return obj.year; + } - return rowObject; - }); - obj.data = dataArray; - list.push(obj); return ''; }, - 'medical cases chart/row': function medicalCasesChartRow(tmpl) { - // Deprecated template; we keep it. - return tmpl; + //we can't do timezones, so fake this one a little bit + //https://en.wikipedia.org/wiki/Template:Time + time: () => { + let d = new Date(); + let obj = _format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); + return _format.toText(obj); + }, + // https://en.wikipedia.org/wiki/Template:MILLENNIUM + millennium: tmpl => { + let obj = toJSON(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 1000, 10) + 1; + + if (obj.abbr && obj.abbr === 'y') { + if (year < 0) { + return `${_lib$2.toOrdinal(Math.abs(year))} BC`; + } + + return `${_lib$2.toOrdinal(year)}`; + } + + return `${_lib$2.toOrdinal(year)} millennium`; + }, + //date/age/time templates + start: _parsers.date, + 'start-date': _parsers.natural_date, + birthdeathage: _parsers.two_dates, + age: _parsers.age, + 'age nts': _parsers.age, + 'age in years': _parsers['diff-y'], + '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'] // 'birth date and age2': date, + // 'age in years, months, weeks and days': true, + // 'age as of date': true, + + }; + + /** + * converts DMS (decimal-minute-second) geo format to lat/lng format. + * major thank you to https://github.com/gmaclennan/parse-dms and https://github.com/WSDOT-GIS/dms-js 👏 + **/ + + function parseDMS(arr) { + let hemisphere = arr.pop(); + let degrees = Number(arr[0] || 0); + let minutes = Number(arr[1] || 0); + let seconds = Number(arr[2] || 0); + + if (typeof hemisphere !== 'string' || isNaN(degrees)) { + return null; + } + + let sign = 1; + + if (/[SW]/i.test(hemisphere)) { + sign = -1; + } + + return sign * (degrees + minutes / 60 + seconds / 3600); + } + + const round = function (num) { + if (typeof num !== 'number') { + return num; } + + let places = 100000; + return Math.round(num * places) / places; + }; //these hemispheres mean negative decimals + + + const negative = { + s: true, + w: true }; - var science = templates$a; - var sports = { - player: function player(tmpl, list) { - var res = parse$3(tmpl, ['number', 'country', 'name', 'dl']); - list.push(res); - var str = "[[".concat(res.name, "]]"); + const findLatLng = function (arr) { + const types = arr.map(s => typeof s).join('|'); //support {{lat|lng}} - if (res.country) { - var country = (res.country || '').toLowerCase(); - var flag = flags.find(function (a) { - return country === a[1] || country === a[2]; - }) || []; + if (arr.length === 2 && types === 'number|number') { + return { + lat: arr[0], + lon: arr[1] + }; + } //support {{dd|N/S|dd|E/W}} - if (flag && flag[0]) { - str = flag[0] + ' ' + str; - } + + if (arr.length === 4 && types === 'number|string|number|string') { + if (negative[arr[1].toLowerCase()]) { + arr[0] *= -1; } - if (res.number) { - str = res.number + ' ' + str; + if (arr[3].toLowerCase() === 'w') { + arr[2] *= -1; } - return str; - }, - //https://en.wikipedia.org/wiki/Template:Goal - goal: function goal(tmpl, list) { - var res = parse$3(tmpl); - var obj = { - template: 'goal', - data: [] + return { + lat: arr[0], + lon: arr[2] }; - var arr = res.list || []; + } //support {{dd|mm|N/S|dd|mm|E/W}} - for (var i = 0; i < arr.length; i += 2) { - obj.data.push({ - min: arr[i], - note: arr[i + 1] || '' - }); - } - list.push(obj); //generate a little text summary + if (arr.length === 6) { + return { + lat: parseDMS(arr.slice(0, 3)), + lon: parseDMS(arr.slice(3)) + }; + } //support {{dd|mm|ss|N/S|dd|mm|ss|E/W}} - var summary = '⚽ '; - summary += obj.data.map(function (o) { - var note = o.note; - if (note) { - note = " (".concat(note, ")"); - } + if (arr.length === 8) { + return { + lat: parseDMS(arr.slice(0, 4)), + lon: parseDMS(arr.slice(4)) + }; + } - return o.min + "'" + note; - }).join(', '); - return summary; - }, - //yellow card - yel: function yel(tmpl, list) { - var obj = parse$3(tmpl, ['min']); - list.push(obj); + return {}; + }; - if (obj.min) { - return "yellow: ".concat(obj.min || '', "'"); //no yellow-card emoji - } + const parseParams = function (obj) { + obj.list = obj.list || []; + obj.list = obj.list.map(str => { + let num = Number(str); - return ''; - }, - subon: function subon(tmpl, list) { - var obj = parse$3(tmpl, ['min']); - list.push(obj); + if (!isNaN(num)) { + return num; + } //these are weird - if (obj.min) { - return "sub on: ".concat(obj.min || '', "'"); //no yellow-card emoji + + let split = str.split(/:/); + + if (split.length > 1) { + obj.props = obj.props || {}; + obj.props[split[0]] = split.slice(1).join(':'); + return null; } - return ''; - }, - suboff: function suboff(tmpl, list) { - var obj = parse$3(tmpl, ['min']); - list.push(obj); + return str; + }); + obj.list = obj.list.filter(s => s !== null); + return obj; + }; - if (obj.min) { - return "sub off: ".concat(obj.min || '', "'"); //no yellow-card emoji + const parseCoor = function (tmpl) { + let obj = toJSON(tmpl); + obj = parseParams(obj); + let tmp = findLatLng(obj.list); + obj.lat = round(tmp.lat); + obj.lon = round(tmp.lon); + obj.template = 'coord'; + delete obj.list; + return obj; + }; //console.log(parseDms([57, 18, 22, 'N'])); + //console.log(parseDms([4, 27, 32, 'W'])); + + + var _lib$1 = parseCoor; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} + + const templates$1 = { + coord: (tmpl, list) => { + let obj = _lib$1(tmpl); + list.push(obj); //display inline, by default + + if (!obj.display || obj.display.indexOf('inline') !== -1) { + return `${obj.lat || ''}°N, ${obj.lon || ''}°W`; } return ''; - }, - pengoal: function pengoal(tmpl, list) { - list.push({ - template: 'pengoal' - }); - return '✅'; - }, - penmiss: function penmiss(tmpl, list) { - list.push({ - template: 'penmiss' - }); - return '❌'; - }, - //'red' card - {{sent off|cards|min1|min2}} - 'sent off': function sentOff(tmpl, list) { - var obj = parse$3(tmpl, ['cards']); - var result = { - template: 'sent off', - cards: obj.cards, - minutes: obj.list || [] - }; - list.push(result); - var mins = result.minutes.map(function (m) { - return m + "'"; - }).join(', '); - return 'sent off: ' + mins; } - }; - var soccer = sports; + }; //{{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}} - var misc$3 = { - 'baseball secondary style': 0, - mlbplayer: function mlbplayer(tmpl, list) { - var obj = parse$3(tmpl, ['number', 'name', 'dl']); - list.push(obj); - return obj.name; - } - }; - var sports$1 = Object.assign({}, misc$3, brackets_1, soccer); + var geo = templates$1; - var codes$1 = { + const generic = function (tmpl, list, _parser, alias) { + let obj = toJSON(tmpl); + + if (alias) { + obj.name = obj.template; + obj.template = alias; + } + + list.push(obj); + return ''; + }; // it may seem redundant, + // but we need these templates for our i18n mappings + + + const misc = { + persondata: generic, + taxobox: generic, + citation: generic, + portal: generic, + reflist: generic, + 'cite book': generic, + 'cite journal': generic, + 'cite web': generic, + 'commons cat': generic, + 'election box candidate': generic, + 'election box begin': generic, + main: generic + }; + var misc_1 = misc; + + const codes = { adx: 'adx', //https://en.wikipedia.org/wiki/Template:Abu_Dhabi_Securities_Exchange aim: 'aim', //https://en.wikipedia.org/wiki/Template:Alternative_Investment_Market - bvpasa: 'bvpasa', - //https://en.wikipedia.org/wiki/Template:BVPASA + amex: 'amex', + //https://en.wikipedia.org/wiki/Template:NYSE_American asx: 'asx', //https://en.wikipedia.org/wiki/Template:Australian_Securities_Exchange athex: 'athex', //https://en.wikipedia.org/wiki/Template:Athens_Exchange + b3: 'b3', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa (redirects to B3 (stock exchange)) + 'B3 (stock exchange)': 'B3 (stock exchange)', + //https://en.wikipedia.org/wiki/Template:B3_(stock_exchange) + barbadosse: 'barbadosse', + //https://en.wikipedia.org/wiki/Template:Barbados_Stock_Exchange + bbv: 'bbv', + //https://en.wikipedia.org/wiki/Template:La_Paz_Stock_Exchange + bcba: 'bcba', + //https://en.wikipedia.org/wiki/Template:Buenos_Aires_Stock_Exchange + bcs: 'bcs', + //https://en.wikipedia.org/wiki/Template:Santiago_Stock_Exchange bhse: 'bhse', //https://en.wikipedia.org/wiki/Template:Bahrain_Bourse - bvb: 'bvb', - //https://en.wikipedia.org/wiki/Template:Bucharest_Stock_Exchange - bbv: 'bbv', - //https://en.wikipedia.org/wiki/Template:BBV - bsx: 'bsx', - //https://en.wikipedia.org/wiki/Template:Bermuda_Stock_Exchange - b3: 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - 'bm&f': 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa + bist: 'bist', + //https://en.wikipedia.org/wiki/Template:Borsa_Istanbul + bit: 'bit', + //https://en.wikipedia.org/wiki/Template:Borsa_Italiana 'bm&f bovespa': 'b3', //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - bwse: 'bwse', - //https://en.wikipedia.org/wiki/Template:Botswana_Stock_Exchange - 'botswana stock exchange': 'botswana stock exchange', + 'bm&f': 'b3', //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - bse: 'bse', - //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + bmad: 'bmad', + //https://en.wikipedia.org/wiki/Template:Bolsa_de_Madrid + bmv: 'bmv', + //https://en.wikipedia.org/wiki/Template:Mexican_Stock_Exchange 'bombay stock exchange': 'bombay stock exchange', //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + 'botswana stock exchange': 'botswana stock exchange', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa bpse: 'bpse', //https://en.wikipedia.org/wiki/Template:Budapest_Stock_Exchange - bcba: 'bcba', - //https://en.wikipedia.org/wiki/Template:Buenos_Aires_Stock_Exchange - 'canadian securities exchange': 'canadian securities exchange', - //https://en.wikipedia.org/wiki/Template:Canadian_Securities_Exchange + bse: 'bse', + //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + bsx: 'bsx', + //https://en.wikipedia.org/wiki/Template:Bermuda_Stock_Exchange + bvb: 'bvb', + //https://en.wikipedia.org/wiki/Template:Bucharest_Stock_Exchange bvc: 'bvc', //https://en.wikipedia.org/wiki/Template:Colombian_Securities_Exchange + bvl: 'bvl', + //https://en.wikipedia.org/wiki/Template:Lima_Stock_Exchange + bvpasa: 'bvpasa', + //https://en.wikipedia.org/wiki/Template:BVPASA + bwse: 'bwse', + //https://en.wikipedia.org/wiki/Template:Botswana_Stock_Exchange + 'canadian securities exchange': 'canadian securities exchange', + //https://en.wikipedia.org/wiki/Template:Canadian_Securities_Exchange cse: 'cse', //https://en.wikipedia.org/wiki/Template:Chittagong_Stock_Exchange darse: 'darse', //https://en.wikipedia.org/wiki/Template:Dar_es_Salaam_Stock_Exchange - dse: 'dse', - //https://en.wikipedia.org/wiki/Template:Dhaka_Stock_Exchange dfm: 'dfm', //https://en.wikipedia.org/wiki/Template:Dubai_Financial_Market + dse: 'dse', + //https://en.wikipedia.org/wiki/Template:Dhaka_Stock_Exchange euronext: 'euronext', //https://en.wikipedia.org/wiki/Template:Euronext - fwb: 'fwb', - //https://en.wikipedia.org/wiki/Template:Frankfurt_Stock_Exchange + euronextparis: 'euronextparis', + //https://en.wikipedia.org/wiki/Template:EuronextParis fse: 'fse', //https://en.wikipedia.org/wiki/Template:Fukuoka_Stock_Exchange + fwb: 'fwb', + //https://en.wikipedia.org/wiki/Template:Frankfurt_Stock_Exchange gse: 'gse', //https://en.wikipedia.org/wiki/Template:Ghana_Stock_Exchange gtsm: 'gtsm', //https://en.wikipedia.org/wiki/Template:Gre_Tai_Securities_Market - sehk: 'sehk', - //https://en.wikipedia.org/wiki/Template:Hong_Kong_Stock_Exchange idx: 'idx', //https://en.wikipedia.org/wiki/Template:Indonesia_Stock_Exchange - nse: 'nse', - //https://en.wikipedia.org/wiki/Template:National_Stock_Exchange_of_India ise: 'ise', //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange + iseq: 'iseq', + //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange isin: 'isin', //https://en.wikipedia.org/wiki/Template:ISIN - bist: 'bist', - //https://en.wikipedia.org/wiki/Template:Borsa_Istanbul - bit: 'bit', - //https://en.wikipedia.org/wiki/Template:Borsa_Italiana jasdaq: 'jasdaq', //https://en.wikipedia.org/wiki/Template:JASDAQ jse: 'jse', //https://en.wikipedia.org/wiki/Template:Johannesburg_Stock_Exchange kase: 'kase', //https://en.wikipedia.org/wiki/Template:Kazakhstan_Stock_Exchange + kn: 'kn', + //https://en.wikipedia.org/wiki/Template:Nairobi_Securities_Exchange krx: 'krx', //https://en.wikipedia.org/wiki/Template:Korea_Exchange - bvl: 'bvl', - //https://en.wikipedia.org/wiki/Template:Lima_Stock_Exchange lse: 'lse', //https://en.wikipedia.org/wiki/Template:London_Stock_Exchange luxse: 'luxse', //https://en.wikipedia.org/wiki/Template:Luxembourg_Stock_Exchange - bmad: 'bmad', - //https://en.wikipedia.org/wiki/Template:Bolsa_de_Madrid - myx: 'myx', - //https://en.wikipedia.org/wiki/Template:Bursa_Malaysia - bmv: 'bmv', - //https://en.wikipedia.org/wiki/Template:Mexican_Stock_Exchange + 'malta stock exchange': 'malta stock exchange', + //https://en.wikipedia.org/wiki/Template:Malta_Stock_Exchange + mai: 'mai', + //https://en.wikipedia.org/wiki/Template:Market_for_Alternative_Investment mcx: 'mcx', //https://en.wikipedia.org/wiki/Template:Moscow_Exchange mutf: 'mutf', //https://en.wikipedia.org/wiki/Template:Mutual_fund + myx: 'myx', + //https://en.wikipedia.org/wiki/Template:Bursa_Malaysia nag: 'nag', //https://en.wikipedia.org/wiki/Template:Nagoya_Stock_Exchange - kn: 'kn', - //https://en.wikipedia.org/wiki/Template:Nairobi_Securities_Exchange 'nasdaq dubai': 'nasdaq dubai', //https://en.wikipedia.org/wiki/Template:NASDAQ_Dubai nasdaq: 'nasdaq', @@ -7774,952 +7179,2190 @@ //https://en.wikipedia.org/wiki/Template:NEEQ nepse: 'nepse', //https://en.wikipedia.org/wiki/Template:Nepal_Stock_Exchange + nex: 'nex', + //https://en.wikipedia.org/wiki/Template:TSXV_NEX + nse: 'nse', + //https://en.wikipedia.org/wiki/Template:National_Stock_Exchange_of_India + newconnect: 'newconnect', + //https://en.wikipedia.org/wiki/Template:NewConnect + 'nyse arca': 'nyse arca', + //https://en.wikipedia.org/wiki/Template:NYSE_Arca nyse: 'nyse', //https://en.wikipedia.org/wiki/Template:New_York_Stock_Exchange nzx: 'nzx', //https://en.wikipedia.org/wiki/Template:New_Zealand_Exchange - amex: 'amex', - //https://en.wikipedia.org/wiki/Template:NYSE_American - 'nyse arca': 'nyse arca', - //https://en.wikipedia.org/wiki/Template:NYSE_Arca - omx: 'omx', - //https://en.wikipedia.org/wiki/Template:OMX 'omx baltic': 'omx baltic', //https://en.wikipedia.org/wiki/Template:OMX_Baltic + omx: 'omx', + //https://en.wikipedia.org/wiki/Template:OMX ose: 'ose', //https://en.wikipedia.org/wiki/Template:Oslo_Stock_Exchange + 'otc expert': 'otc expert', + //https://en.wikipedia.org/wiki/Template:OTC_Expert + 'otc grey': 'otc grey', + //https://en.wikipedia.org/wiki/template:grey_market 'otc pink': 'otc pink', //https://en.wikipedia.org/wiki/Template:OTC_Pink otcqb: 'otcqb', //https://en.wikipedia.org/wiki/Template:OTCQB otcqx: 'otcqx', //https://en.wikipedia.org/wiki/Template:OTCQX + 'pfts ukraine stock exchange': 'pfts ukraine stock exchange', + //https://en.wikipedia.org/wiki/Template:PFTS_Ukraine_Stock_Exchange 'philippine stock exchange': 'philippine stock exchange', //https://en.wikipedia.org/wiki/Template:Philippine_Stock_Exchange prse: 'prse', //https://en.wikipedia.org/wiki/Template:Prague_Stock_Exchange + psx: 'psx', + //https://en.wikipedia.org/wiki/Template:Pakistan_Stock_Exchange + karse: 'karse', + //https://en.wikipedia.org/w/index.php?title=Template:Karse&redirect=no (redirects to psx) qe: 'qe', //https://en.wikipedia.org/wiki/Template:Qatar_Stock_Exchange - bcs: 'bcs', - //https://en.wikipedia.org/wiki/Template:Santiago_Stock_Exchange 'saudi stock exchange': 'saudi stock exchange', //https://en.wikipedia.org/wiki/Template:Saudi_Stock_Exchange + sehk: 'sehk', + //https://en.wikipedia.org/wiki/Template:Hong_Kong_Stock_Exchange + 'Stock Exchange of Thailand': 'Stock Exchange of Thailand', + //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand (alternative for SET) + set: 'set', + //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand sgx: 'sgx', //https://en.wikipedia.org/wiki/Template:Singapore_Exchange sse: 'sse', //https://en.wikipedia.org/wiki/Template:Shanghai_Stock_Exchange - szse: 'szse', - //https://en.wikipedia.org/wiki/Template:Shenzhen_Stock_Exchange swx: 'swx', //https://en.wikipedia.org/wiki/Template:SIX_Swiss_Exchange - set: 'set', - //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand + szse: 'szse', + //https://en.wikipedia.org/wiki/Template:Shenzhen_Stock_Exchange tase: 'tase', //https://en.wikipedia.org/wiki/Template:Tel_Aviv_Stock_Exchange - tyo: 'tyo', - //https://en.wikipedia.org/wiki/Template:Tokyo_Stock_Exchange - tsx: 'tsx', - //https://en.wikipedia.org/wiki/Template:Toronto_Stock_Exchange - twse: 'twse', - //https://en.wikipedia.org/wiki/Template:Taiwan_Stock_Exchange 'tsx-v': 'tsx-v', //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange + tsx: 'tsx', + //https://en.wikipedia.org/wiki/Template:Toronto_Stock_Exchange tsxv: 'tsxv', //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange - nex: 'nex', - //https://en.wikipedia.org/wiki/Template:TSXV_NEX ttse: 'ttse', //https://en.wikipedia.org/wiki/Template:Trinidad_and_Tobago_Stock_Exchange - 'pfts ukraine stock exchange': 'pfts ukraine stock exchange', - //https://en.wikipedia.org/wiki/Template:PFTS_Ukraine_Stock_Exchange - wse: 'wse', - //https://en.wikipedia.org/wiki/Template:Warsaw_Stock_Exchange + twse: 'twse', + //https://en.wikipedia.org/wiki/Template:Taiwan_Stock_Exchange + tyo: 'tyo', + //https://en.wikipedia.org/wiki/Template:Tokyo_Stock_Exchange wbag: 'wbag', //https://en.wikipedia.org/wiki/Template:Wiener_B%C3%B6rse - zse: 'zse', - //https://en.wikipedia.org/wiki/Template:Zagreb_Stock_Exchange + 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 + '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 }; - var parseStockExchange = function parseStockExchange(tmpl, list) { - var o = parse$3(tmpl, ['ticketnumber', 'code']); + const parseStockExchange = (tmpl, list) => { + let o = toJSON(tmpl, ['ticketnumber', 'code']); list.push(o); - var code = o.template || ''; + let code = o.template || ''; if (code === '') { code = o.code; } code = (code || '').toLowerCase(); - var out = codes$1[code] || ''; - var str = out; + let str = codes[code] || ''; if (o.ticketnumber) { - str = "".concat(str, ": ").concat(o.ticketnumber); + str = `${str}: ${o.ticketnumber}`; } - if (o.code && !codes$1[o.code.toLowerCase()]) { + if (o.code && !codes[o.code.toLowerCase()]) { str += ' ' + o.code; } return str; }; - var currencies$1 = {}; //the others fit the same pattern.. + const exchanges = {}; //the others fit the same pattern.. - Object.keys(codes$1).forEach(function (k) { - currencies$1[k] = parseStockExchange; + Object.keys(codes).forEach(k => { + exchanges[k] = parseStockExchange; }); - var stockExchanges = currencies$1; - - var hasMonth = /^jan /i; - var isYear = /^year /i; - var monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; + var stockExchanges = exchanges; - var toNumber = function toNumber(str) { - str = str.replace(/,/g, ''); - str = str.replace(/−/g, '-'); - var num = Number(str); + const zeroPad = function (num) { + num = String(num); - if (isNaN(num)) { - return str; + if (num.length === 1) { + num = '0' + num; } return num; }; - var templates$b = { - // this one is a handful! - //https://en.wikipedia.org/wiki/Template:Weather_box - 'weather box': function weatherBox(tmpl, list) { - var obj = parse$3(tmpl); //collect all month-based data + const parseTeam = function (obj, round, team) { + if (obj[`rd${round}-team${zeroPad(team)}`]) { + team = zeroPad(team); + } - var byMonth = {}; - var properties = Object.keys(obj).filter(function (k) { - return hasMonth.test(k); - }); - properties = properties.map(function (k) { - return k.replace(hasMonth, ''); - }); - properties.forEach(function (prop) { - byMonth[prop] = []; - monthList.forEach(function (m) { - var key = "".concat(m, " ").concat(prop); + let score = obj[`rd${round}-score${team}`]; + let num = Number(score); - if (obj.hasOwnProperty(key)) { - var num = toNumber(obj[key]); - delete obj[key]; - byMonth[prop].push(num); - } - }); - }); //add these to original + if (isNaN(num) === false) { + score = num; + } - obj.byMonth = byMonth; //collect year-based data + return { + team: obj[`rd${round}-team${team}`], + score: score, + seed: obj[`rd${round}-seed${team}`] + }; + }; // https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates + //these are weird. - var byYear = {}; - Object.keys(obj).forEach(function (k) { - if (isYear.test(k)) { - var prop = k.replace(isYear, ''); - byYear[prop] = obj[k]; - delete obj[k]; + + const playoffBracket = function (tmpl) { + let rounds = []; + let obj = toJSON(tmpl); //try some rounds + + for (let i = 1; i < 7; i += 1) { + let round = []; + + for (let t = 1; t < 16; t += 2) { + let key = `rd${i}-team`; + + if (obj[key + t] || obj[key + zeroPad(t)]) { + let one = parseTeam(obj, i, t); + let two = parseTeam(obj, i, t + 1); + round.push([one, two]); + } else { + break; } - }); - obj.byYear = byYear; + } + + if (round.length > 0) { + rounds.push(round); + } + } + + return { + template: 'playoffbracket', + rounds: rounds + }; + }; + + var _lib = playoffBracket; + + let sports = { + //playoff brackets + '4teambracket': function (tmpl, list) { + let obj = _lib(tmpl); list.push(obj); return ''; }, - //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation - //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C - 'weather box/concise c': function weatherBoxConciseC(tmpl, list) { - var obj = parse$3(tmpl); - obj.list = obj.list.map(function (s) { - return 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) - }; - delete obj.list; - obj.template = 'weather box'; - list.push(obj); - return ''; + player: (tmpl, list) => { + let res = toJSON(tmpl, ['number', 'country', 'name', 'dl']); + list.push(res); + let str = `[[${res.name}]]`; + + if (res.country) { + let country = (res.country || '').toLowerCase(); + let flag = flags.find(a => country === a[1] || country === a[2]) || []; + + if (flag && flag[0]) { + str = flag[0] + ' ' + str; + } + } + + if (res.number) { + str = res.number + ' ' + str; + } + + return str; }, - 'weather box/concise f': function weatherBoxConciseF(tmpl, list) { - var obj = parse$3(tmpl); - obj.list = obj.list.map(function (s) { - return 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) + //https://en.wikipedia.org/wiki/Template:Goal + goal: (tmpl, list) => { + let res = toJSON(tmpl); + let obj = { + template: 'goal', + data: [] }; - delete obj.list; - obj.template = 'weather box'; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Climate_chart - 'climate chart': function climateChart(tmpl, list) { - var lines = parse$3(tmpl).list || []; - var title = lines[0]; - var source = lines[38]; - lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... + let arr = res.list || []; + + for (let i = 0; i < arr.length; i += 2) { + obj.data.push({ + min: arr[i], + note: arr[i + 1] || '' + }); + } + + list.push(obj); //generate a little text summary + + let summary = '⚽ '; + summary += obj.data.map(o => { + let note = o.note; + + if (note) { + note = ` (${note})`; + } + + return o.min + "'" + note; + }).join(', '); + return summary; + }, + //a transcluded sports module - https://en.m.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Module:Sports_table + // https://en.wikipedia.org/wiki/Template:2020–21_NHL_North_Division_standings + 'sports table': (tmpl, list) => { + let obj = toJSON(tmpl); + let byTeam = {}; + let teams = Object.keys(obj).filter(k => /^team[0-9]/.test(k)).map(k => obj[k].toLowerCase()); + teams.forEach(team => { + byTeam[team] = { + name: obj[`name_${team}`], + win: Number(obj[`win_${team}`]) || 0, + loss: Number(obj[`loss_${team}`]) || 0, + tie: Number(obj[`tie_${team}`]) || 0, + otloss: Number(obj[`otloss_${team}`]) || 0, + goals_for: Number(obj[`gf_${team}`]) || 0, + goals_against: Number(obj[`ga_${team}`]) || 0 + }; + }); + let res = { + date: obj.update, + header: obj.table_header, + teams: byTeam + }; + list.push(res); + } + }; + var sports_1 = sports; + + var textAndData = Object.assign({}, shorthand, functions, currency, dates, geo, misc_1, stockExchanges, _lib, sports_1, _lib, sports_1); + + let templates = Object.assign({}, textOnly, dataOnly, textAndData); + Object.keys(aliases_1).forEach(k => { + // if (templates[aliases[k]] === undefined) { + // console.error(`Missing template: '${aliases[k]}'`) + // } + templates[k] = templates[aliases_1[k]]; + }); + var custom = templates; // console.log(Object.keys(templates).length) + + const { + isArray: isArray$1, + isObject + } = 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, doc) { + let name = tmpl.name; // dont bother with some junk templates + + if (_ignore.hasOwnProperty(name) === true) { + return ['']; + } //{{infobox settlement...}} + + + if (_infobox.isInfobox(name) === true) { + 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]; + } // ok, here we go! + //parse some known templates + + + if (custom.hasOwnProperty(name) === true) { + //handle number-syntax + if (typeof custom[name] === 'number') { + let obj = toJSON(tmpl.body, nums); + let key = String(custom[name]); + return [obj[key] || '']; + } //handle string-syntax + + + if (typeof custom[name] === 'string') { + return [custom[name]]; + } //handle array sytax + + + if (isArray$1(custom[name]) === true) { + 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], obj]; + } //handle function syntax + + + if (typeof custom[name] === 'function') { + // let json = toJSON(tmpl.body) + //(tmpl, list, alias, doc) + let arr = []; + let txt = custom[name](tmpl.body, arr, toJSON, null, doc); + return [txt, arr[0]]; + } + } //an unknown template with data, so just keep it. + + + let json = toJSON(tmpl.body); + + if (Object.keys(json).length === 0) { + // list.push(json) + json = null; + } //..then remove it + + + return ['', json]; + }; + + var parse$3 = parseTemplate; + + const toJson = function (infobox, options) { + let json = Object.keys(infobox.data).reduce((h, k) => { + if (infobox.data[k]) { + h[k] = infobox.data[k].json(); + } + + return h; + }, {}); //support mongo-encoding keys + + if (options.encode === true) { + json = encode.encodeObj(json); + } + + return json; + }; + + var toJson_1 = toJson; + + const { + isArray + } = helpers; + + const normalize = (str = '') => { + str = str.toLowerCase(); + str = str.replace(/[-_]/g, ' '); + return str.trim(); + }; //a formal key-value data table about a topic + + + 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 = { + type: function () { + return this._type; + }, + links: function (n) { + let arr = []; + Object.keys(this.data).forEach(k => { + this.data[k].links().forEach(l => arr.push(l)); + }); + + 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); + return link === undefined ? [] : [link]; + } + + return arr; + }, + image: function () { + let s = this.data.image || this.data.image2 || this.data.logo || this.data.image_skyline || this.data.image_flag; + + if (!s) { + return null; + } + + let obj = s.json(); + obj.file = obj.text; + obj.text = ''; + obj.domain = this.domain; // add domain information for image + + return new Image_1(obj); + }, + get: function (keys) { + let allKeys = Object.keys(this.data); + + if (typeof keys === 'string') { + let key = normalize(keys); + + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]); + + if (key === tmp) { + return this.data[allKeys[i]]; + } + } + + return new Sentence_1(); + } + + if (isArray(keys)) { + // support array-input + keys = keys.map(normalize); + return keys.map(k => { + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]); + + if (k === tmp) { + return this.data[allKeys[i]]; + } + } + + return new Sentence_1(); + }); + } + + return new Sentence_1(); + }, + text: function () { + return ''; + }, + json: function (options) { + 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]) { + h[k] = this.data[k].text(); + } + + return h; + }, {}); + } + }; //aliases + + Object.keys(methods$1).forEach(k => { + Infobox.prototype[k] = methods$1[k]; + }); + Infobox.prototype.data = Infobox.prototype.keyValue; + Infobox.prototype.template = Infobox.prototype.type; + Infobox.prototype.images = Infobox.prototype.image; + var Infobox_1 = Infobox; + + const toText = _04Sentence.fromText; + const methods = { + text: function () { + let str = this._text || ''; + return toText(str).text(); + }, + json: function () { + return this.data || {}; + }, + wikitext: function () { + return this.wiki || ''; + } + }; + + 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 => { + Template.prototype[k] = methods[k]; + }); + var Template_1 = Template; + + const isCitation = /^(cite |citation)/i; + const referenceTypes = { + citation: true, + refn: true, + harvnb: true, + source: true //wikinews + + }; // split Infoboxes from templates and references + + const sortOut = function (list, domain) { + let res = { + infoboxes: [], + templates: [], + references: [] + }; //remove references and infoboxes from our list + + 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(json, obj.wiki)); + return; + } // is it an Infobox? + + + 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_1(json, obj.wiki)); + return; + } // otherwise, it's just a template + + + res.templates.push(new Template_1(json, obj.text, obj.wiki)); + }); + return res; + }; + + var sortOut_1 = sortOut; + + const allTemplates = function (wiki, doc) { + let list = []; //nested data-structure of templates + + let nested = _01Nested(wiki); //recursive template-parser + + const parseNested = function (obj, parent) { + obj.parent = parent; //do tail-first recursion + + if (obj.children && obj.children.length > 0) { + obj.children.forEach(ch => parseNested(ch, obj)); + } //parse template into json, return replacement wikitext + + + 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) { + node.parent.body = node.parent.body.replace(body, out); + removeIt(node.parent, body, out); + } + }; + + removeIt(obj, obj.body, obj.wiki); + wiki = wiki.replace(obj.body, obj.wiki); + }; //kick it off + + + nested.forEach(node => parseNested(node, null)); //remove the templates from our wiki text + + nested.forEach(node => { + wiki = wiki.replace(node.body, node.wiki); + }); + return { + list: list, + wiki: wiki + }; + }; //find + parse all templates in the section + + + const process = function (section, doc) { + // find+parse them all + let { + list, + wiki + } = allTemplates(section._wiki, doc); // split-out references and infoboxes + + let domain = doc ? doc._domain : null; + let { + infoboxes, + references, + templates + } = sortOut_1(list, domain); //sort-out the templates we decide to keep + + section._infoboxes = section._infoboxes || []; + section._references = section._references || []; + section._templates = section._templates || []; + section._infoboxes = section._infoboxes.concat(infoboxes); + section._references = section._references.concat(references); + section._templates = section._templates.concat(templates); + section._wiki = wiki; + }; + + var template = process; + + const parseSentence$1 = _04Sentence.fromText; //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... + + /** + * + * @private + * @param {object} 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() + }; + let img = new Image_1(obj).json(); + let caption = arr.slice(1).join('|'); + + if (caption !== '') { + img.caption = parseSentence$1(caption); + } + + return img; + }); //add it to our templates list + + if (images.length > 0) { + catcher.templates.push({ + template: 'gallery', + images: images, + pos: section.title + }); + } //return empty string to remove the template from the wiki text + + + return ''; + }); + }; + + var gallery = parseGallery; + + /** + * 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 {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 => { + let data = { + _wiki: tmpl, + _templates: [] + }; //put it through our full template parser.. + + template(data); //okay, pull it apart into something sensible.. + + 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) { + catcher.templates.push({ + template: 'election box', + title: start.title, + candidates: candidates, + summary: summary.data + }); + } //return empty string to remove the template from the wiki text + + + return ''; + }); + }; + + var election = parseElection; + + 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'] + }; + /** + * https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start + * + * @private + * @param {object} 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 = parse$5(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'NBA ' + name + ' statistics', + data: rows + }); //return empty string to remove the template from the wiki text + + return ''; + }); + }; + + var nba = parseNBA; + + //this is pretty nuts + + 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 + } + + if (/\|time=y/i.test(tmpl) === true) { + headings.splice(7, 0, 'time'); //save, time, stadium, attendance + } + + if (/\|box=y/i.test(tmpl) === true) { + headings.push('box'); //record, box + } + + return headings; + }; + /** + * + * @private + * @param {object} 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 = parse$5(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'mlb game log section', + data: rows + }); //return empty string to remove the template from the wiki text + + return ''; + }); + }; + + var mlb = parseMlb; + + let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; + /** + * + * https://en.wikipedia.org/wiki/Template:MMA_record_start + * + * @private + * @param {object} 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 = parse$5(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'mma record start', + data: rows + }); //return empty string to remove the template from the wiki text + + return ''; + }); + }; + + var mma = parseMMA; + + const parseSentence = _04Sentence.fromText; + /** + * 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 {object} 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(); + catcher.templates.push({ + template: 'math', + formula: formula, + raw: inside + }); //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 + + catcher.text = catcher.text.replace(/]*?)>([\s\S]+?)<\/chem>/g, (_, attrs, inside) => { + catcher.templates.push({ + template: 'chem', + data: inside + }); //return empty string to remove the template from the wiki text + + return ''; + }); + }; + + var math = parseMath; + + /** + * 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 + * @returns {Object} wikitext + */ + + const xmlTemplates = function (section, doc) { + const res = { + templates: [], + text: section._wiki + }; + election(res); + gallery(res, doc, section); + math(res); + mlb(res); + mma(res); + nba(res); // turn them into Template objects + + res.templates = res.templates.map(obj => new Template_1(obj)); + return res; + }; + + var startToEnd = xmlTemplates; + + const parse$2 = { + heading: heading, + table: table, + paragraphs: _03Paragraph, + templates: template, + references: reference, + startEndTemplates: startToEnd + }; + const defaults$2 = { + tables: true, + references: true, + paragraphs: true, + templates: true, + infoboxes: true + }; + /** + * 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 { + /** + * 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) { + 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$2.startEndTemplates(this, doc); + this._wiki = startEndTemplates.text; + this._templates = this._templates.concat(startEndTemplates.templates); //parse-out the tags + + parse$2.references(this); //parse-out all {{templates}} + + parse$2.templates(this, doc); //parse the tables + + parse$2.table(this); //now parse all double-newlines + + parse$2.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; + } + + let index = this._doc.sections().indexOf(this); + + if (index === -1) { + return null; + } + + 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(); + } + /** + * returns all sentences in the section + * if an clue is provided then it returns the sentence at clue-th index + * + * @returns {object | object[]} all sentences in an array or the clue-th sentence + */ + + + sentences() { + return this.paragraphs().reduce((list, p) => { + return list.concat(p.sentences()); + }, []); + } + /** + * returns all paragraphs in the section + * if an clue is provided then it returns the paragraph at clue-th index + * + * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph + */ + + + paragraphs() { + return this._paragraphs || []; + } + /** + * 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 {object | object[]} 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 => { + arr.push(templ.links()); + }); + this.sentences().forEach(s => { + arr.push(s.links()); + }); + this.tables().forEach(t => { + arr.push(t.links()); + }); + this.lists().forEach(list => { + 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 clue === 'string') { + let link = arr.find(o => o.page().toLowerCase() === clue.toLowerCase()); + return link === undefined ? [] : [link]; + } + + return arr; + } + /** + * returns all tables in the section + * if an clue is provided then it returns the table at clue-th index + * + * @returns {object | object[]} all tables in an array or the clue-th infobox + */ + + + tables() { + return this._tables || []; + } + /** + * 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 {object | object[]} 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()) + + if (typeof clue === 'string') { + clue = clue.toLowerCase(); + return arr.filter(o => o.data.template === clue || o.data.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|string} [clue] the clue for selecting the infobox + * @returns {object | object[]} all infoboxes in an array or the clue-th infobox + */ + + + infoboxes(clue) { + let arr = this._infoboxes || []; + + if (typeof clue === 'string') { + clue = clue.replace(/^infobox /i, ''); + clue = clue.trim().toLowerCase(); + return arr.filter(info => info._type === clue); + } + + return arr; + } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + + + coordinates() { + let arr = [...this.templates('coord'), ...this.templates('coor')]; + return arr.map(tmpl => tmpl.json()); + } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + + + lists() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.lists()); + }); + return arr; + } + /** + * returns all interwiki links in the section + * if an clue is provided then it returns the interwiki link at clue-th index + * + * @returns {object | object[]} all interwiki links in an array or the clue-th interwiki link + */ + + + interwiki() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.interwiki()); + }); + return arr; + } + /** + * returns all images in the section + * if an clue is provided then it returns the image at clue-th index + * + * @returns {Image | Image[]} all images in an array or the clue-th image + */ + + + images() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.images()); + }); + return arr; + } + /** + * returns all references in the section + * if an clue is provided then it returns the reference at clue-th index + * + * @returns {object | object[]} all references in an array or the clue-th reference + */ + + + references() { + return this._references || []; + } //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 - lines = lines.map(function (str) { - if (str && str[0] === '−') { - str = str.replace(/−/, '-'); + /** + * 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) { + return null; + } //first we get the a list of sections and our own position in this list + + + let sections = this._doc.sections(); + + 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 + //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 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 str; - }); - var months = []; //groups of three, for 12 months - for (var i = 0; i < 36; i += 3) { - months.push({ - low: toNumber(lines[i]), - high: toNumber(lines[i + 1]), - precip: toNumber(lines[i + 2]) - }); + 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; } - var obj = { - template: 'climate chart', - data: { - title: title, - source: source, - months: months - } - }; - list.push(obj); - return ''; + let sections = this._doc.sections(); + + let index = this.index() || 0; + return sections[index - 1] || null; } - }; - var weather = templates$b; - - //this format seems to be a pattern for these - var generic$1 = ['id', 'title', 'description', 'section']; - var idName = ['id', 'name']; //https://en.wikipedia.org/wiki/Category:External_link_templates - - var externals = { - //https://en.wikipedia.org/wiki/Template:IMDb_title - 'imdb title': generic$1, - 'imdb name': generic$1, - 'imdb episode': generic$1, - 'imdb event': generic$1, - 'afi film': generic$1, - 'allmovie title': generic$1, - allgame: generic$1, - 'tcmdb title': generic$1, - 'discogs artist': generic$1, - 'discogs label': generic$1, - 'discogs release': generic$1, - 'discogs master': generic$1, - 'librivox author': generic$1, - 'musicbrainz artist': generic$1, - 'musicbrainz label': generic$1, - 'musicbrainz recording': generic$1, - 'musicbrainz release': generic$1, - 'musicbrainz work': generic$1, - youtube: generic$1, - 'goodreads author': idName, - 'goodreads book': generic$1, - twitter: idName, - facebook: idName, - instagram: idName, - tumblr: idName, - pinterest: idName, - 'espn nfl': idName, - 'espn nhl': idName, - 'espn fc': idName, - hockeydb: idName, - 'fifa player': idName, - worldcat: idName, - 'worldcat id': idName, - 'nfl player': idName, - 'ted speaker': idName, - playmate: idName, - //https://en.wikipedia.org/wiki/Template:DMOZ - dmoz: generic$1, - 'find a grave': ['id', 'name', 'work', 'last', 'first', 'date', 'accessdate'], - congbio: ['id', 'name', 'date'], - 'hollywood walk of fame': ['name'] - }; //alias + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ - externals.imdb = externals['imdb name']; - externals['imdb episodess'] = externals['imdb episode']; - var websites = externals; - //wiktionary... who knows. we should atleast try. + last() { + return this.lastSibling(); + } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ - var templates$c = { - //{{inflection of|avoir||3|p|pres|ind|lang=fr}} - //https://en.wiktionary.org/wiki/Template:inflection_of - inflection: function inflection(tmpl, list) { - var obj = parse$3(tmpl, ['lemma']); - obj.tags = obj.list; - delete obj.list; - obj.type = 'form-of'; - list.push(obj); - return obj.lemma || ''; - }, - //latin verbs - 'la-verb-form': function laVerbForm(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return obj.word || ''; - }, - 'feminine plural': function femininePlural(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return obj.word || ''; - }, - 'male plural': function malePlural(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return obj.word || ''; - }, - rhymes: function rhymes(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return 'Rhymes: -' + (obj.word || ''); + + previousSibling() { + return this.lastSibling(); } - }; //https://en.wiktionary.org/wiki/Category:Form-of_templates + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ - var conjugations = ['abbreviation', 'abessive plural', 'abessive singular', 'accusative plural', 'accusative singular', 'accusative', 'acronym', 'active participle', 'agent noun', 'alternative case form', 'alternative form', 'alternative plural', 'alternative reconstruction', 'alternative spelling', 'alternative typography', 'aphetic form', 'apocopic form', 'archaic form', 'archaic spelling', 'aspirate mutation', 'associative plural', 'associative singular', 'attributive form', 'attributive form', 'augmentative', 'benefactive plural', 'benefactive singular', 'causative plural', 'causative singular', 'causative', 'clipping', 'combining form', 'comitative plural', 'comitative singular', 'comparative plural', 'comparative singular', 'comparative', 'contraction', 'dated form', 'dated spelling', 'dative plural definite', 'dative plural indefinite', 'dative plural', 'dative singular', 'dative', 'definite', 'deliberate misspelling', 'diminutive', 'distributive plural', 'distributive singular', 'dual', 'early form', 'eclipsis', 'elative', 'ellipsis', 'equative', 'euphemistic form', 'euphemistic spelling', 'exclusive plural', 'exclusive singular', 'eye dialect', 'feminine noun', 'feminine plural past participle', 'feminine plural', 'feminine singular past participle', 'feminine singular', 'feminine', 'form', 'former name', 'frequentative', 'future participle', 'genitive plural definite', 'genitive plural indefinite', 'genitive plural', 'genitive singular definite', 'genitive singular indefinite', 'genitive singular', 'genitive', 'gerund', 'h-prothesis', 'hard mutation', 'harmonic variant', 'imperative', 'imperfective form', 'inflected form', 'inflection', 'informal form', 'informal spelling', 'initialism', 'ja-form', 'jyutping reading', 'late form', 'lenition', 'masculine plural past participle', 'masculine plural', 'medieval spelling', 'misconstruction', 'misromanization', 'misspelling', 'mixed mutation', 'monotonic form', 'mutation', 'nasal mutation', 'negative', 'neuter plural past participle', 'neuter plural', 'neuter singular past participle', 'neuter singular', 'nominalization', 'nominative plural', 'nominative singular', 'nonstandard form', 'nonstandard spelling', 'oblique plural', 'oblique singular', 'obsolete form', 'obsolete spelling', 'obsolete typography', 'official form', 'participle', 'passive participle', 'passive', 'past active participle', 'past participle', 'past passive participle', 'past tense', 'perfective form', 'plural definite', 'plural indefinite', 'plural', 'polytonic form', 'present active participle', 'present participle', 'present tense', 'pronunciation spelling', 'rare form', 'rare spelling', 'reflexive', 'second-person singular past', 'short for', 'singular definite', 'singular', 'singulative', 'soft mutation', 'spelling', 'standard form', 'standard spelling', 'substantivisation', 'superlative', 'superseded spelling', 'supine', 'syncopic form', 'synonym', 'terminative plural', 'terminative singular', 'uncommon form', 'uncommon spelling', 'verbal noun', 'vocative plural', 'vocative singular']; - conjugations.forEach(function (name) { - templates$c[name + ' of'] = function (tmpl, list) { - var obj = parse$3(tmpl, ['lemma']); - obj.tags = obj.list; - delete obj.list; - obj.type = 'form-of'; - list.push(obj); - return obj.lemma || ''; - }; - }); - var wiktionary = templates$c; - var templates$d = { - // https://en.wikivoyage.org/wiki/Template:Do - listing: function listing(tmpl, list) { - var obj = parse$3(tmpl, []); - list.push(obj); // flatten it all into one line of text + previous() { + return this.lastSibling(); + } + /** + * 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 + */ - var name = obj.name; - if (obj.url) { - name = "[".concat(obj.url, " ").concat(obj.name, "]"); + children(clue) { + if (!this._doc) { + return null; } - var phone = ''; + let sections = this._doc.sections(); - if (obj.phone) { - phone = "[tel:".concat(obj.phone, "]"); - } + let index = this.index() || 0; + let children = []; //(immediately preceding sections with higher depth) - var updated = ''; + 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()) { + children.push(sections[i]); + } else { + break; + } + } + } - if (obj.lastedit) { - updated = "(updated ".concat(obj.lastedit, ")"); + if (typeof clue === 'string') { + return children.find(s => s.title().toLowerCase() === clue.toLowerCase()); } - var out = "".concat(name, " ").concat(obj.address || '', " ").concat(obj.directions || '', " ").concat(phone, " ").concat(obj.hours || '', " ").concat(obj.content, " ").concat(obj.price, " ").concat(updated); - return out; + return children; } - }; // are these sorta the same? + /** + * 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 + */ - templates$d.see = templates$d.listing; - templates$d["do"] = templates$d.listing; - templates$d.buy = templates$d.listing; - templates$d.eat = templates$d.listing; - templates$d.drink = templates$d.listing; - templates$d.sleep = templates$d.listing; - templates$d.go = templates$d.listing; - var wikivoyage = templates$d; - var templates$e = Object.assign({}, dates, formatting$1, geo, wikipedia, brackets_1, currency, elections, flags_1, ipa, languages_1, math, misc_1$1, punctuation_1, science, soccer, sports$1, stockExchanges, weather, websites, wiktionary, wikivoyage); + 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 + */ - var generic$2 = parse$3; - var nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8']; - var isArray$2 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; //this gets all the {{template}} strings and decides how to parse them + parent() { + if (!this._doc) { + return null; + } + let sections = this._doc.sections(); - var parseTemplate$1 = function parseTemplate(tmpl, list) { - var name = tmpl.name; + let index = this.index() || 0; - if (_ignore.hasOwnProperty(name) === true) { - return ''; - } // {{infobox settlement...}} + for (let i = index; i >= 0; i -= 1) { + if (sections[i] && sections[i].depth() < this.depth()) { + return sections[i]; + } + } + return null; + } //outputs - if (_infobox.isInfobox(name) === true) { - var obj = parse$3(tmpl.body, list, 'raw'); - var infobox = _infobox.format(obj); - list.push(infobox); - return ''; - } // //cite book, cite arxiv... + /** + * returns a plaintext version of the section + * + * @param {object} options options for the text transformation + * @returns {string} the section in text + */ - if (/^cite [a-z]/.test(name) === true) { - var _obj = parse$3(tmpl.body, list); + text(options) { + 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 + */ - _obj.type = _obj.template; - _obj.template = 'citation'; - list.push(_obj); - return ''; - } // known template + wikitext() { + return this._wiki; + } + /** + * returns a json version of the section + * + * @param {object} options keys to include in the resulting json + * @returns {object} the section in json + */ - if (templates$e.hasOwnProperty(name) === true) { - // handle number-syntax - if (typeof templates$e[name] === 'number') { - var _obj2 = generic$2(tmpl.body, nums); - var key = String(templates$e[name]); - return _obj2[key] || ''; - } // handle string-syntax + json(options) { + options = setDefaults_1(options, defaults$2); + return toJson$4(this, options); + } + } - if (typeof templates$e[name] === 'string') { - return templates$e[name]; - } // handle array sytax + Section.prototype.citations = Section.prototype.references; // aliases + const singular$1 = { + sentences: 'sentence', + paragraphs: 'paragraph', + links: 'link', + tables: 'table', + templates: 'template', + infoboxes: 'infobox', + coordinates: 'coordinate', + lists: 'list', + images: 'image', + references: 'reference', + citations: 'citation' + }; + Object.keys(singular$1).forEach(k => { + let sing = singular$1[k]; - if (isArray$2(templates$e[name]) === true) { - var _obj3 = generic$2(tmpl.body, templates$e[name]); + Section.prototype[sing] = function (clue) { + let arr = this[k](clue); - list.push(_obj3); - return ''; - } // handle function syntax + if (typeof clue === 'number') { + return arr[clue]; + } + return arr[0] || null; + }; + }); + var Section_1 = Section; - if (typeof templates$e[name] === 'function') { - return templates$e[name](tmpl.body, list); - } - } // unknown template, try to parse it + const isReference = new RegExp('^(' + i18n.references.join('|') + '):?', 'i'); + const section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines + const parse$1 = { + heading: 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) { + if (s.paragraphs().length > 0) { + return true; + } //does it have some wacky templates? - var parsed = parse$3(tmpl.body); - if (list && Object.keys(parsed).length > 0) { - list.push(parsed); - } // ..then remove it + if (s.templates().length > 0) { + return true; + } //what it has children? awkward - return ''; - }; + if (sections[i + 1] && sections[i + 1].depth() > s.depth()) { + sections[i + 1]._depth -= 1; //move it up a level?... + } - var parse_1 = parseTemplate$1; + return false; + } - var Template = function Template(data) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data + return true; }); }; + /** + * 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 + */ - var methods$a = { - text: function text() { - return ''; - }, - json: function json() { - return this.data; - } - }; - Object.keys(methods$a).forEach(function (k) { - Template.prototype[k] = methods$a[k]; - }); - var Template_1 = Template; - var isCitation = new RegExp('^(cite |citation)', 'i'); - var references$1 = { - citation: true, - refn: true, - harvnb: true - }; + const parseSections = function (doc) { + let sections = []; + + 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 data = { + title: '', + depth: null, + wiki: wiki + }; //figure-out title and depth + + parse$1.heading(data, heading); + sections.push(new Section_1(data, doc)); + } //remove empty references section - var isReference = function isReference(obj) { - return references$1[obj.template] === true || isCitation.test(obj.template) === true; - }; - var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; + return removeReferenceSection(sections); }; - var isInfobox$1 = function isInfobox(obj) { - return obj.template === 'infobox' && obj.data && isObject(obj.data); - }; //reduce the scary recursive situations + var _02Section = parseSections; + + const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'ig'); + const cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n.categories.join('|') + '):', 'ig'); + const parse_categories = function (wiki) { + const categories = []; + let tmp = wiki.match(cat_reg); //regular links - var allTemplates = function allTemplates(section, doc) { - var wiki = section.wiki; // nested data-structure of templates + if (tmp) { + tmp.forEach(function (c) { + c = c.replace(cat_remove_reg, ''); + c = c.replace(/\|?[ \*]?\]\]$/i, ''); //parse fancy ones.. - var list = find(wiki); - var keep = []; // recursive template-parser + c = c.replace(/\|.*/, ''); //everything after the '|' is metadata - var parseThem = function parseThem(obj, parent) { - obj.parent = parent; // do tail-first recurion + if (c && !c.match(/[\[\]]/)) { + categories.push(c.trim()); + } + }); + } - if (obj.children && obj.children.length > 0) { - obj.children.forEach(function (ch) { - return parseThem(ch, obj); + const newWiki = wiki.replace(cat_reg, ''); + return [categories, newWiki]; + }; + + var categories = parse_categories; + + const parse = { + section: _02Section, + categories: categories + }; + const defaults$1 = { + tables: true, + lists: true, + paragraphs: true + }; + /** + * The document class is the main entry point of wtf_wikipedia. + * this class represents an article of wikipedia. + * from here you can go to the infoboxes or paragraphs + * + * @class + */ + + class Document { + /** + * The constructor for the document class + * This function starts parsing the wiki text and sets the options in the class + * + * @param {string} [wiki] The wiki text + * @param {object} [options] The options for the parser + */ + 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, + wiki: wiki || '', + categories: [], + sections: [], + coordinates: [] + }; // this._missing_templates = {} //for stats+debugging purposes + + 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; + return; + } //give ourselves a little head-start - obj.out = parse_1(obj, keep); // remove the text from every parent - var removeIt = function removeIt(node, body, out) { - if (node.parent) { - node.parent.body = node.parent.body.replace(body, out); - removeIt(node.parent, body, out); - } - }; + this._wiki = preProcess_1(this._wiki); //pull-out [[category:whatevers]] - removeIt(obj, obj.body, obj.out); - wiki = wiki.replace(obj.body, obj.out); - }; //kick it off + const [categories, newWiki] = parse.categories(this._wiki); + this._categories = categories; + this._wiki = newWiki; //parse all the headings, and their texts/sentences + this._sections = parse.section(this); + } + /** + * 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 {string} [str] The title that will be set + * @returns {null|string} The title found or given + */ - list.forEach(function (node) { - return 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); // remove references and infoboxes from our list + title(str) { + //use like a setter + if (str !== undefined) { + this._title = str; + return str; + } //if we have it already - section.templates = section.templates.filter(function (obj) { - if (isReference(obj) === true) { - section.references.push(new Reference_1(obj)); - return false; - } - if (isInfobox$1(obj) === true) { - obj.domain = doc.domain; // + if (this._title) { + return this._title; + } //guess the title of this page from first sentence bolding - section.infoboxes.push(new Infobox_1(obj)); - return false; - } - return true; - }); - section.templates = section.templates.map(function (obj) { - return new Template_1(obj); - }); // remove the templates from our wiki text + let guess = null; + let sen = this.sentence(); - list.forEach(function (node) { - wiki = wiki.replace(node.body, node.out); - }); - section.wiki = wiki; - }; + if (sen) { + guess = sen.bold(); + } - var template$1 = allTemplates; + return guess; + } + /** + * 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 {number} [id] The pageID that will be set + * @returns {number|null} The given or found pageID + */ - var parseSentence$6 = _04Sentence.fromText; //okay, is a xml-tag, with newline-seperated 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... - - var parseGallery = function parseGallery(section, doc) { - var wiki = section.wiki; - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/gallery>/g, function (_, attrs, inside) { - var images = inside.split(/\n/g); - images = images.filter(function (str) { - return str && str.trim() !== ''; - }); //parse the line, which has an image and sometimes a caption - - images = images.map(function (str) { - var arr = str.split(/\|/); - var obj = { - file: arr[0].trim(), - lang: doc.language, - domain: doc.domain - }; - var img = new Image_1(obj).json(); - var caption = arr.slice(1).join('|'); - if (caption !== '') { - img.caption = parseSentence$6(caption); - } + pageID(id) { + if (id !== undefined) { + this._pageID = id; + } - return img; - }); //add it to our templates list + return this._pageID || 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 {string} [id] The WikidataID that will be set + * @returns {string|null} The given or found WikidataID + */ - if (images.length > 0) { - section.templates.push({ - template: 'gallery', - images: images, - pos: section.title - }); + + wikidata(id) { + if (id !== undefined) { + this._wikidata = id; } - return ''; - }); - section.wiki = wiki; - }; + return this._wikidata || 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 {string} [str] The domain that will be set + * @returns {string|null} The given or found domain + */ - var gallery = parseGallery; - //https://en.wikipedia.org/wiki/Template:Election_box + domain(str) { + if (str !== undefined) { + this._domain = str; + } - var parseElection = function parseElection(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, function (tmpl) { - var data = { - wiki: tmpl, - templates: [] - }; //put it through our full template parser.. + return this._domain || 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 {string} [lang] The language that will be set + * @returns {string|null} The given or found language + */ - template$1(data); //okay, pull it apart into something sensible.. - var templates = data.templates.map(function (t) { - return t.json(); - }); - var start = templates.find(function (t) { - return t.template === 'election box'; - }) || {}; - var candidates = templates.filter(function (t) { - return t.template === 'election box candidate'; - }); - var summary = templates.find(function (t) { - return t.template === 'election box gain' || t.template === 'election box hold'; - }) || {}; + language(lang) { + if (lang !== undefined) { + this._lang = lang; + } - if (candidates.length > 0 || summary) { - section.templates.push({ - template: 'election box', - title: start.title, - candidates: candidates, - summary: summary.data - }); - } //remove it all + return this._lang || 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 {string|null} The url of the page + */ - return ''; - }); - section.wiki = wiki; - }; + url() { + let title = this.title(); - var election = parseElection; + if (!title) { + return null; + } - var 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'] - }; //https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start + let lang = this.language() || 'en'; + let domain = this.domain() || 'wikipedia.org'; //replace blank to underscore - var parseNBA = function parseNBA(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, function (tmpl, name) { - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{s-end\}\}/, ''); - name = name.toLowerCase().trim(); - var headers = '! ' + keys[name].join(' !! '); - var table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - var rows = parse$4(table); - rows = rows.map(function (row) { - Object.keys(row).forEach(function (k) { - row[k] = row[k].text(); - }); - return row; - }); - section.templates.push({ - template: 'NBA ' + name + ' statistics', - data: rows - }); - return ''; - }); - section.wiki = wiki; - }; + title = title.replace(/ /g, '_'); + title = encodeURIComponent(title); + return `https://${lang}.${domain}/wiki/${title}`; + } + /** + * 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 + */ - var nba = parseNBA; - //this is pretty nuts + namespace(ns) { + if (ns !== undefined) { + this._namespace = ns; + } - var whichHeadings = function whichHeadings(tmpl) { - var headings = ['#', 'date', 'opponent', 'score', 'win', 'loss', 'save', 'attendance', 'record']; + return this._namespace || null; + } + /** + * Returns if the page is a redirect + * + * @returns {boolean} Is the page a redirect + */ - if (/\|stadium=y/i.test(tmpl) === true) { - headings.splice(7, 0, 'stadium'); //save, stadium, attendance + + isRedirect() { + return this._type === 'redirect'; } + /** + * Returns information about the page this page redirects to + * + * @returns {null|object} The redirected page + */ - if (/\|time=y/i.test(tmpl) === true) { - headings.splice(7, 0, 'time'); //save, time, stadium, attendance + + redirectTo() { + return this._redirectTo; } + /** + * This function finds out if a page is a disambiguation page + * + * @returns {boolean} Whether the page is a disambiguation page + */ - if (/\|box=y/i.test(tmpl) === true) { - headings.push('box'); //record, box + + isDisambiguation() { + return isDisambig_1(this); } + /** + * If a clue is available return the category at that index + * Else return all categories + * + * @returns {string | string[]} The category at the provided index or all categories + */ - return headings; - }; - var parseMlb = function parseMlb(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, function (tmpl) { - var headings = whichHeadings(tmpl); - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, ''); - var headers = '! ' + headings.join(' !! '); - var table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - var rows = parse$4(table); - rows = rows.map(function (row) { - Object.keys(row).forEach(function (k) { - row[k] = row[k].text(); - }); - return row; - }); - section.templates.push({ - template: 'mlb game log section', - data: rows - }); - return ''; - }); - section.wiki = wiki; - }; + categories(clue) { + let arr = this._categories || []; - var mlb = parseMlb; + if (typeof clue === 'number') { + return [arr[clue]]; + } - var headings$1 = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; //https://en.wikipedia.org/wiki/Template:MMA_record_start + return arr; + } + /** + * 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 {number | string} [clue] A title of a section or a index of a wanted section + * @returns {object | object[]} A section or a array of sections + */ + + + sections(clue) { + let arr = this._sections || []; + arr.forEach(sec => { + // link-up parent and child + sec._doc = this; + }); //grab a specific section, by its title - var parseMMA = function parseMMA(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, function (tmpl) { - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{end\}\}/i, ''); - var headers = '! ' + headings$1.join(' !! '); - var table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - var rows = parse$4(table); - rows = rows.map(function (row) { - Object.keys(row).forEach(function (k) { - row[k] = row[k].text(); + if (typeof clue === 'string') { + let str = clue.toLowerCase().trim(); + return arr.filter(s => { + return s.title().toLowerCase() === str; }); - return row; - }); - section.templates.push({ - template: 'mma record start', - data: rows - }); - return ''; - }); - section.wiki = wiki; - }; + } else if (typeof clue === 'number') { + return [arr[clue]]; + } - var mma = parseMMA; + return arr; + } + /** + * 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 {number | string} [clue] given index of a paragraph + * @returns {object | object[]} the selected paragraph or an array of all paragraphs + */ - var parseSentence$7 = _04Sentence.fromText; //xml y=mx+b support - //https://en.wikipedia.org/wiki/Help:Displaying_a_formula - var parseMath = function parseMath(section) { - var wiki = section.wiki; - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/math>/g, function (_, attrs, inside) { - //clean it up a little? - var formula = parseSentence$7(inside).text(); - section.templates.push({ - template: 'math', - formula: formula, - raw: inside - }); //should we atleast try to render it in plaintext? :/ + paragraphs(clue) { + let arr = []; + this.sections().forEach(s => { + arr = arr.concat(s.paragraphs()); + }); - if (formula && formula.length < 12) { - return formula; + if (typeof clue === 'number') { + return [arr[clue]]; } - return ''; - }); //try chemistry version too + 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 + */ - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/chem>/g, function (_, attrs, inside) { - section.templates.push({ - template: 'chem', - data: inside + + sentences(clue) { + let arr = []; + this.sections().forEach(sec => { + arr = arr.concat(sec.sentences()); }); - return ''; - }); - section.wiki = wiki; - }; - var math$1 = parseMath; + if (typeof clue === 'number') { + return [arr[clue]]; + } - // ... others are {{start}}...{{end}} - // -> these are those ones. + return arr; + } + /** + * 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 + * + * @returns {Image[]|Image} a single image or an array of images + */ - var xmlTemplates = function xmlTemplates(section, doc) { - election(section); - gallery(section, doc); - math$1(section); - mlb(section); - mma(section); - nba(section); - }; - var startToEnd = xmlTemplates; + images(clue) { + let arr = _sectionMap(this, 'images', null); //grab image from infobox, first - var isReference$1 = new RegExp('^(' + i18n$1.references.join('|') + '):?', 'i'); - var section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines + this.infoboxes().forEach(info => { + let img = info.image(); - var parse$6 = { - heading: heading, - table: table, - paragraphs: _03Paragraph, - templates: template$1, - references: reference, - startEndTemplates: startToEnd - }; + if (img) { + arr.unshift(img); //put it at the top + } + }); //look for 'gallery' templates, too - var oneSection = function oneSection(section, doc) { - parse$6.startEndTemplates(section, doc); //parse-out the tags + this.templates().forEach(obj => { + 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(); + img = new Image_1(img); + } - parse$6.references(section); //parse-out all {{templates}} + arr.push(img); + }); + } + }); - parse$6.templates(section, doc); // //parse the tables + if (typeof clue === 'number') { + return [arr[clue]]; + } - parse$6.table(section); //now parse all double-newlines + return arr; + } + /** + * Return all links or if a clue is provided only the link at that index + * + * @param {number} [clue] the index of the wanted link + * @returns {string[]|string} all the links or the selected link + */ - parse$6.paragraphs(section, doc); - section = new Section_1(section); - return section; - }; - var removeReferenceSection = function removeReferenceSection(sections) { - return sections.filter(function (s, i) { - if (isReference$1.test(s.title()) === true) { - if (s.paragraphs().length > 0) { - return true; - } //does it have some wacky templates? + links(clue) { + return _sectionMap(this, 'links', clue); + } + /** + * Return all inter wiki links or if a clue is provided only the inter wiki link at that index + * + * @param {number} [clue] the index of the wanted inter wiki link + * @returns {string[]|string} all the inter wiki links or the selected inter wiki link + */ - if (s.templates().length > 0) { - return true; - } //what it has children? awkward + interwiki(clue) { + return _sectionMap(this, 'interwiki', clue); + } + /** + * If a clue is available return the list at that index + * Else return all lists + * + * @param {number} [clue] The index of the wanted list + * @returns {object | object[]} The list at the provided index or all lists + */ - if (sections[i + 1] && sections[i + 1].depth > s.depth) { - sections[i + 1].depth -= 1; //move it up a level?... - } + lists(clue) { + return _sectionMap(this, 'lists', 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 {object | object[]} The table at the provided index or all tables + */ - return false; - } - return true; - }); - }; + tables(clue) { + return _sectionMap(this, 'tables', 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 {object | object[]} The category at the provided index or all categories + */ - var parseSections = function parseSections(doc) { - var sections = []; - var split = doc.wiki.split(section_reg); - for (var i = 0; i < split.length; i += 2) { - var heading = split[i - 1] || ''; - var wiki = split[i] || ''; + templates(clue) { + return _sectionMap(this, 'templates', 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 {object | object[]} The category at the provided index or all references + */ - if (wiki === '' && heading === '') { - //usually an empty 'intro' section - continue; - } - var section = { - title: '', - depth: null, - wiki: wiki, - templates: [], - tables: [], - infoboxes: [], - references: [] - }; //figure-out title/depth + 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 + */ - parse$6.heading(section, heading); //parse it up - var s = oneSection(section, doc); - sections.push(s); - } //remove empty references section + citations(clue) { + return this.references(clue); + } + /** + * finds and returns all coordinates + * 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 + */ - doc.sections = removeReferenceSection(sections); - }; + coordinates(clue) { + return _sectionMap(this, 'coordinates', 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 {object | object[]} the selected infobox or an array of infoboxes + */ - var _02Section = parseSections; - var cat_reg = new RegExp('\\[\\[:?(' + i18n$1.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'ig'); - var cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n$1.categories.join('|') + '):', 'ig'); + infoboxes(clue) { + let arr = _sectionMap(this, 'infoboxes', clue); //sort them by biggest-first - var parse_categories = function parse_categories(doc) { - var wiki = doc.wiki; - var tmp = wiki.match(cat_reg); //regular links + arr = arr.sort((a, b) => { + if (Object.keys(a.data).length > Object.keys(b.data).length) { + return -1; + } - if (tmp) { - tmp.forEach(function (c) { - c = c.replace(cat_remove_reg, ''); - c = c.replace(/\|?[ \*]?\]\]$/i, ''); //parse fancy onces.. + return 1; + }); + return arr; + } + /** + * 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 + */ - c = c.replace(/\|.*/, ''); //everything after the '|' is metadata - if (c && !c.match(/[\[\]]/)) { - doc.categories.push(c.trim()); - } - }); + text(options) { + options = setDefaults_1(options, defaults$1); //nah, skip these. + + if (this.isRedirect() === true) { + return ''; + } + + let arr = this.sections().map(sec => sec.text(options)); + return arr.join('\n\n'); } + /** + * return a json version of the Document class + * + * @param {object} [options] options for the rendering + * @returns {object} this document as json + */ - wiki = wiki.replace(cat_reg, ''); - doc.wiki = wiki; - }; - var categories$1 = parse_categories; + json(options) { + options = setDefaults_1(options, defaults$1); + return toJson$6(this, options); + } + /** + * return original wiki markup + * + * @returns {string} markup text + */ + - var parse$7 = { - section: _02Section, - categories: categories$1 - }; //convert wikiscript markup lang to json + wikitext() { + return this._wiki || ''; + } + /** + * prints the title of every section + * + * @returns {Document} the document itself + */ - var main = function main(wiki, options) { - options = options || {}; - var data = Object.assign(options, { - title: options.title || null, - pageID: options.pageID || options.id || null, - namespace: options.namespace || options.ns || null, - type: 'page', - wiki: wiki || '', - categories: [], - sections: [], - coordinates: [] - }); //detect if page is just redirect, and return it - if (redirects$1.isRedirect(wiki) === true) { - data.type = 'redirect'; - data.redirectTo = redirects$1.parse(wiki); - parse$7.categories(data); - return new Document_1(data); - } //give ourselves a little head-start + debug() { + console.log('\n'); + this.sections().forEach(sec => { + let indent = ' - '; + for (let i = 0; i < sec.depth(); i += 1) { + indent = ' -' + indent; + } - preProcess_1(data); //pull-out [[category:whatevers]] + console.log(indent + (sec.title() || '(Intro)')); + }); + return this; + } - parse$7.categories(data); //parse all the headings, and their texts/sentences + } // aliases - parse$7.section(data); //all together now - return new Document_1(data); + 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); + return arr[0] || null; + }; + }); + 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; + var Document_1 = Document; - var _01Document = main; + /** + * 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 + */ - var parseDoc = function parseDoc(res) { - res = res.filter(function (o) { - return o; - }); - var docs = res.map(function (o) { - return _01Document(o.wiki, o.meta); - }); + const parseDoc = function (res) { + // filter out undefined + res = res.filter(o => o); // put all the responses into Document formats + + let docs = res.map(o => { + return new Document_1(o.wiki, o.meta); + }); // if the list is empty than there are no results if (docs.length === 0) { return null; - } + } // if there is only one response then we can get it out of the array + if (docs.length === 1) { return docs[0]; @@ -8728,37 +9371,18 @@ return docs; }; - var _03ParseDoc = parseDoc; - - var request = function request(url) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return new Promise(function (resolve, reject) { - https__default['default'].get(url, opts, function (resp) { - var data = ''; // A chunk of data has been recieved. - - resp.on('data', function (chunk) { - data += chunk; - }); // The whole response has been received. Print out the result. - - resp.on('end', function () { - try { - var json = JSON.parse(data); - resolve(json); - } catch (e) { - reject(e); - } - }); - }).on('error', function (err) { - reject(err); - }); - }); - }; - - var server$1 = request; + var parseDoc_1 = parseDoc; - var makeHeaders = function makeHeaders(options) { - var agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library'; - var origin; + /** + * factory for header options + * + * @private + * @param {object} options + * @returns {object} 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 origin; if (options.noOrigin) { origin = ''; @@ -8766,76 +9390,91 @@ origin = options.origin || options.Origin || '*'; } - var opts = { + return { method: 'GET', headers: { 'Content-Type': 'application/json', 'Api-User-Agent': agent, 'User-Agent': agent, - Origin: origin + Origin: origin, + 'Accept-Encoding': 'gzip' }, redirect: 'follow' }; - return opts; }; var _headers = makeHeaders; - var isUrl = /^https?:\/\//; - var defaults$c = { + 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 | number | Array | 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 }; + /** + * @callback fetchCallback + * @param {Object} error + * @param {(null | Document | Document[])} response + */ - var fetch = function fetch(title, options, c) { - var callback = null; - - if (typeof options === 'function') { - callback = options; - options = {}; - } - - if (typeof c === 'function') { - callback = c; - c = {}; - } //support lang 2nd param - + /** + * fetches the page from the wiki and returns a Promise with the parsed wiki text + * + * @param {string | number | Array | Array} title the title, PageID, URL or an array of all three of the page(s) you want to fetch + * @param {fetchDefaults} [options] the options for the fetch or the language of the wiki for the article + * @param {fetchCallback} [callback] the callback function for the call + * @returns {Promise} either null if the pages is not found, Document if you asked for one result, and a array of Documents if you asked for multiple pages + */ + const fetch$1 = function (title, options, callback) { + // support lang as 2nd param if (typeof options === 'string') { - c = c || {}; - options = Object.assign({}, { + options = { lang: options - }, c); + }; } - options = options || {}; - options = Object.assign({}, defaults$c, options); - options.title = title; // parse url input + options = { ...defaults, + ...options + }; + options.title = title; //parse url input - if (isUrl.test(title)) { - options = Object.assign(options, _00ParseUrl(title)); + if (typeof title === 'string' && isUrl.test(title)) { + options = { ...options, + ...parseUrl_1(title) + }; } - var url = _01MakeUrl(options); - var headers = _headers(options); - return server$1(url, headers).then(function (res) { - try { - var data = _02GetResult(res, options); - data = _03ParseDoc(data); - - if (callback) { - callback(null, data); - } + const url = makeUrl_1(options); + const headers = _headers(options); + return isomorphicUnfetch__default['default'](url, headers).then(res => res.json()).then(res => { + let data = getResult_1(res, options); + data = parseDoc_1(data); - return data; - } catch (e) { - throw e; + if (callback) { + callback(null, data); } - })["catch"](function (e) { + + return data; + }).catch(e => { console.error(e); if (callback) { @@ -8846,159 +9485,33 @@ }); }; - var _fetch = fetch; - - var defaults$d = { - lang: 'en', - wiki: 'wikipedia', - domain: null, - path: 'w/api.php' //some 3rd party sites use a weird path - - }; - - var isObject$1 = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - - var fetchRandom = function fetchRandom(lang, options) { - options = options || {}; - options = Object.assign({}, defaults$d, options); //support lang 2nd param - - if (typeof lang === 'string') { - options.lang = lang; - } else if (isObject$1(lang)) { - options = Object.assign(options, lang); - } - - var url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); - - if (options.domain) { - url = "https://".concat(options.domain, "/").concat(options.path, "?"); - } - - url += "format=json&action=query&generator=random&grnnamespace=0&prop=revisions|pageprops&rvprop=content&grnlimit=1&rvslots=main&origin=*"; - var headers = _headers(options); - return server$1(url, headers).then(function (res) { - try { - var data = _02GetResult(res); - return _03ParseDoc(data); - } catch (e) { - throw e; - } - })["catch"](function (e) { - console.error(e); - return null; - }); - }; - - var random = fetchRandom; - - var defaults$e = { - lang: 'en', - wiki: 'wikipedia', - domain: null, - path: 'w/api.php' //some 3rd party sites use a weird path - - }; - - var normalizeCategory = function normalizeCategory() { - var cat = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - if (/^Category/i.test(cat) === false) { - cat = 'Category:' + cat; - } - - cat = cat.replace(/ /g, '_'); - return cat; - }; - - var isObject$2 = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - - var getResult$1 = function getResult(body) { - var list = body.query.categorymembers || []; - var res = { - pages: [], - categories: [] - }; - list.forEach(function (p) { - if (p.ns === 14) { - delete p.ns; - res.categories.push(p); - } else { - delete p.ns; - res.pages.push(p); - } - }); - return res; - }; - - var makeUrl$1 = function makeUrl(category, options, cm) { - category = normalizeCategory(category); - category = encodeURIComponent(category); - var url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); - - if (options.domain) { - url = "https://".concat(options.domain, "/").concat(options.path, "?"); - } - - url += "action=query&list=categorymembers&cmtitle=".concat(category, "&cmlimit=500&format=json&origin=*&redirects=true&cmtype=page|subcat"); - - if (cm) { - url += '&cmcontinue=' + cm; - } - - return url; - }; - - var fetchCategory = function fetchCategory(category, lang, options) { - options = options || {}; - options = Object.assign({}, defaults$e, options); //support lang 2nd param + var _fetch = fetch$1; - if (typeof lang === 'string') { - options.lang = lang; - } else if (isObject$2(lang)) { - options = Object.assign(options, lang); - } - - var res = { - pages: [], - categories: [] - }; // wrap a promise around potentially-many requests + var _version = '9.0.0'; - return new Promise(function (resolve, reject) { - var doit = function doit(cm) { - var url = makeUrl$1(category, options, cm); - var headers = _headers(options); - return server$1(url, headers).then(function (body) { - res = getResult$1(body); - - if (body["continue"] && body["continue"].cmcontinue) { - doit(body["continue"].cmcontinue); - } else { - resolve(res); - } - })["catch"](function (e) { - console.error(e); - reject(e); - }); - }; + /** + * 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 + */ - doit(null); + const request = function (url, opts) { + return isomorphicUnfetch__default['default'](url, opts).then(function (res) { + return res.json(); }); }; - var category = fetchCategory; - - var _version = '8.5.1'; + var fetch = request; - var wtf = function wtf(wiki, options) { - return _01Document(wiki, options); - }; // export classes for plugin development + const wtf = function (wiki, options) { + return new Document_1(wiki, options); + }; //export classes for plugin development - var models = { + const models = { Doc: Document_1, Section: Section_1, Paragraph: Paragraph_1, @@ -9010,7 +9523,7 @@ Reference: Reference_1, Table: Table_1, Template: Template_1, - http: server$1, + http: fetch, wtf: wtf }; @@ -9018,19 +9531,12 @@ return _fetch(title, lang, options); }; - wtf.random = function (lang, options, cb) { - return random(lang, options); - }; - - wtf.category = function (cat, lang, options, cb) { - return category(cat, lang, options); - }; - wtf.extend = function (fn) { - fn(models, templates$e, this); + fn(models, custom, _infoboxes); return this; }; + wtf.plugin = wtf.extend; wtf.version = _version; var src = wtf; diff --git a/builds/wtf_wikipedia.mjs b/builds/wtf_wikipedia.mjs index 8019450c..2fcbb54f 100644 --- a/builds/wtf_wikipedia.mjs +++ b/builds/wtf_wikipedia.mjs @@ -1,10 +1,16 @@ -/* wtf_wikipedia 8.5.1 MIT */ -import https from 'https'; - -var parseUrl = function parseUrl(url) { - var parsed = new URL(url); //eslint-disable-line - - var title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); +/* wtf_wikipedia 9.0.0 MIT */ +import isomorphicUnfetch from 'isomorphic-unfetch'; + +/** + * 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); + let title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); title = decodeURIComponent(title); return { domain: parsed.host, @@ -12,85 +18,84 @@ var parseUrl = function parseUrl(url) { }; }; -var _00ParseUrl = parseUrl; +var parseUrl_1 = parseUrl; -function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; +/** + * capitalizes the input + * hello -> Hello + * hello there -> Hello there + * + * @private + * @param {string} [str] the string that will be capitalized + * @returns {string} the capitalized string + */ +function capitalise(str) { + if (str && typeof str === 'string') { + return str.charAt(0).toUpperCase() + str.slice(1); } - return _typeof(obj); -} - -function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); -} - -function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; + return ''; } - -function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } +/** + * 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$1(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 _arr; + 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 _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); -} -function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; +function isArray$3(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 + */ - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; +function isObject$1(x) { + return x && Object.prototype.toString.call(x) === '[object Object]'; } -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); -} +var helpers = { + capitalise, + trim_whitespace: trim_whitespace$1, + isArray: isArray$3, + isObject: isObject$1 +}; -var isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; -var defaults = { +const { + isArray: isArray$2 +} = helpers; +const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; +const defaults$c = { action: 'query', prop: 'revisions|pageprops', - //we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. + // we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. rvprop: 'content', maxlag: 5, rvslots: 'main', @@ -98,97 +103,119 @@ var defaults = { format: 'json', redirects: 'true' }; +/** + * turns a object into a query string + * + * @private + * @param {Object} obj + * @returns {string} QueryString + */ -var toQueryString = function toQueryString(obj) { - return Object.entries(obj).map(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - - return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)); - }).join('&'); -}; - -var isArray = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; +const toQueryString = function (obj) { + return Object.entries(obj).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&'); }; +/** + * cleans and prepares the tile by replacing the spaces with underscores (_) and trimming the white spaces of the ends + * + * @private + * @param {string} page the title that needs cleaning + * @returns {string} the cleaned title + */ -var cleanTitle = function cleanTitle(page) { - page = page.replace(/ /g, '_'); - page = page.trim(); // page = encodeURIComponent(page) - return page; +const cleanTitle = page => { + return page.replace(/ /g, '_').trim(); }; +/** + * generates the url for fetching the pages + * + * @private + * @param {import('.').fetchDefaults} options + * @returns {string} the url that can be used to make the fetch + */ -var makeUrl = function makeUrl(options) { - var params = Object.assign({}, defaults); // default url - var url = "https://".concat(options.lang, ".").concat(options.wiki, ".org/w/api.php?"); // from a 3rd party wiki +const makeUrl = function (options) { + let params = Object.assign({}, defaults$c); //default url - options.domain = options.domain || options.wikiUrl; //support old syntax + let apiPath = ''; //add support for third party apis if (options.domain) { - var path = options.path; //wikimedia api uses ./w/api path. no others do - - if (isInterWiki.test(options.domain)) { - path = 'w/api.php'; - } - - url = "https://".concat(options.domain, "/").concat(path, "?"); + //wikimedia is the only api that uses `/w/api` as its path. other wikis use other paths + let path = isInterWiki.test(options.domain) ? 'w/api.php' : options.path; + apiPath = `https://${options.domain}/${path}?`; + } else if (options.lang && options.wiki) { + apiPath = `https://${options.lang}.${options.wiki}.org/w/api.php?`; + } else { + return ''; } if (!options.follow_redirects) { delete params.redirects; - } // support numerical ids - - - var page = options.title; - - if (typeof page === 'number') { - params.pageids = page; //single pageId - } else if (isArray(page) && typeof page[0] === 'number') { - params.pageids = page.join('|'); //pageid array - } else if (isArray(page) === true) { - //support array - params.titles = page.map(cleanTitle).join('|'); + } //support numerical ids + + + let title = options.title; + + if (typeof title === 'number') { + //single pageId + params.pageids = title; + } else if (typeof title === 'string') { + //single page title + params.titles = cleanTitle(title); + } else if (title !== undefined && isArray$2(title) && typeof title[0] === 'number') { + //pageid array + params.pageids = title.join('|'); + } else if (title !== undefined && isArray$2(title) === true && typeof title[0] === 'string') { + //title array + params.titles = title.map(cleanTitle).join('|'); } else { - // single page - params.titles = cleanTitle(page); - } // make it! + return ''; + } //make it! - url += toQueryString(params); - return url; + return `${apiPath}${toQueryString(params)}`; }; -var _01MakeUrl = makeUrl; +var makeUrl_1 = makeUrl; + +/** + * parses the media wiki api response to something we can use + * + * the data-format from mediawiki api is nutso + * + * @private + * @param {object} data + * @param {object} [options] + * @returns {*} result + */ +const getResult = function (data, options = {}) { + //get all the pagesIds from the result + let pages = Object.keys(data.query.pages); // map over the pageIds to parse out all the information -//this data-format from mediawiki api is nutso -var getResult = function getResult(data, options) { - options = options || {}; - var pages = Object.keys(data.query.pages); - var docs = pages.map(function (id) { - var page = data.query.pages[id] || {}; + return pages.map(id => { + // get the page by pageID + let page = data.query.pages[id] || {}; // if the page is missing or not found than return null if (page.hasOwnProperty('missing') || page.hasOwnProperty('invalid')) { return null; - } + } // get the text from the object + - var text = page.revisions[0]['*']; // console.log(page.revisions[0]) - //us the 'generator' result format, for the random() method + let text = page.revisions[0]['*']; // if the text is not found in the regular place than it is at the other place if (!text && page.revisions[0].slots) { text = page.revisions[0].slots.main['*']; } page.pageprops = page.pageprops || {}; - var domain = options.domain; + let domain = options.domain; if (!domain && options.wiki) { - domain = "".concat(options.wiki, ".org"); + domain = `${options.wiki}.org`; } - var meta = Object.assign({}, options, { + let meta = Object.assign({}, options, { title: page.title, pageID: page.pageid, namespace: page.ns, @@ -196,27 +223,28 @@ var getResult = function getResult(data, options) { wikidata: page.pageprops.wikibase_item, description: page.pageprops['wikibase-shortdesc'] }); - - try { - return { - wiki: text, - meta: meta - }; - } catch (e) { - console.error(e); - throw e; - } + return { + wiki: text, + meta: meta + }; }); - return docs; }; -var _02GetResult = getResult; +var getResult_1 = getResult; -//helper for looping around all sections of a document -var sectionMap = function sectionMap(doc, fn, clue) { - var arr = []; - doc.sections().forEach(function (sec) { - var list = []; +/** + * helper for looping around all sections of a document + * + * @private + * @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 {Array|*} the array of item at the index of the clue + */ +const sectionMap = function (doc, fn, clue) { + let arr = []; + doc.sections().forEach(sec => { + let list = []; if (typeof clue === 'string') { list = sec[fn](clue); @@ -224,13 +252,17 @@ var sectionMap = function sectionMap(doc, fn, clue) { list = sec[fn](); } - list.forEach(function (t) { + list.forEach(t => { arr.push(t); }); }); if (typeof clue === 'number') { - return arr[clue]; + if (arr[clue] === undefined) { + return []; + } + + return [arr[clue]]; } return arr; @@ -238,23 +270,71 @@ var sectionMap = function sectionMap(doc, fn, clue) { var _sectionMap = sectionMap; -// -var setDefaults = function setDefaults(options, defaults) { +/** + * applies the the key values of defaults to options + * + * @private + * @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); }; var setDefaults_1 = setDefaults; -var defaults$1 = { +/** + * @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$b = { title: true, sections: true, pageID: true, categories: true -}; //an opinionated output of the most-wanted data - -var toJSON = function toJSON(doc, options) { - options = setDefaults_1(options, defaults$1); - var data = {}; +}; +/** + * @typedef documentToJsonReturn + * @property {string | undefined} title + * @property {number | null | undefined} pageID + * @property {string[] | undefined} categories + * @property {object[] | undefined} sections + * @property {boolean | undefined} isRedirect + * @property {object | undefined} redirectTo + * @property {object[] | undefined} coordinates + * @property {object[] | undefined} infoboxes + * @property {Image[] | undefined} images + * @property {string | undefined} plaintext + * @property {object[] | undefined} references + */ + +/** + * an opinionated output of the most-wanted data + * + * @private + * @param {Document} doc + * @param {DocumentToJsonOptions} options + * @returns {documentToJsonReturn} + */ + +const toJSON$3 = function (doc, options) { + options = setDefaults_1(options, defaults$b); + /** + * @type {documentToJsonReturn} + */ + + let data = {}; if (options.title) { data.title = doc.title(); @@ -269,14 +349,12 @@ var toJSON = function toJSON(doc, options) { } if (options.sections) { - data.sections = doc.sections().map(function (i) { - return i.json(options); - }); + data.sections = doc.sections().map(i => i.json(options)); } if (doc.isRedirect() === true) { data.isRedirect = true; - data.redirectTo = doc.data.redirectTo; + data.redirectTo = doc.redirectTo(); data.sections = []; } //these are default-off @@ -286,15 +364,11 @@ var toJSON = function toJSON(doc, options) { } if (options.infoboxes) { - data.infoboxes = doc.infoboxes().map(function (i) { - return i.json(options); - }); + data.infoboxes = doc.infoboxes().map(i => i.json(options)); } if (options.images) { - data.images = doc.images().map(function (i) { - return i.json(options); - }); + data.images = doc.images().map(i => i.json(options)); } if (options.plaintext) { @@ -308,9 +382,67 @@ var toJSON = function toJSON(doc, options) { return data; }; -var toJson = toJSON; +var toJson$6 = toJSON$3; + +var categories$1 = ['category', //en +'abdeeling', // pdc +'bólkur', // fo +'catagóir', // ga +'categori', // cy +'categoria', 'categoria', // co +'categoría', // es +'categorîa', // lij +'categorìa', // pms +'catégorie', 'categorie', 'catègorie', // frp +'category', 'categuria', // lmo +'catigurìa', // scn +'class', // kw +'ẹ̀ka', // yo +'flocc', 'flocc', // ang +'flokkur', 'grup', // tpi +'jamii', // sw +'kaarangay', // war +'kateggoría', // lad +'kategooria', // et +'kategori', // da +'kategorî', // ku +'kategoria', // eu +'kategória', // hu +'kategorie', //de +'kategoriija', // se +'kategorija', // sl +'kategorio', // eo +'kategoriya', 'kategoriýa', // tk +'kategoriye', // diq +'kategory', // fy +'kategorya', // tl +'kateqoriya', // az +'katiguriya', // qu +'klad', // vo +'luokka', 'ñemohenda', // gn +'roinn', //-seòrsa gd +'ronney', // gv +'rummad', // br +'setensele', // nso +'sokajy', // mg +'sumut', // atassuseq kl +'thể', // loại vi +'turkum', // uz +'категорија', 'категория', // ru +'категорія', // uk +'катэгорыя', 'төркем', // tt +'קטגוריה', // he +'تصنيف', 'تۈر', // ug +'رده', 'श्रेणी', 'श्रेणी', // hi +'বিষয়শ্রেণী', // bn +'หมวดหมู่', // th +'분류', // ko +'분류', //ko +'分类' // za +//-- +]; -var disambig = ['dab', //en +var disambig_templates = ['dab', //en 'disamb', //en 'disambig', //en 'disambiguation', //en @@ -482,44 +614,295 @@ var disambig = ['dab', //en // 'သဵင်မိူၼ် တူၼ်ႈထႅဝ်ပႅၵ်ႇ', //shn ]; -var i18n = disambig.reduce(function (h, str) { +// used in titles to denote disambiguation pages +// see 'Football_(disambiguation)' +var disambig_titles = ['disambiguation', //en +'homonymie', //fr +'توضيح', //ar +'desambiguação', //pt +'Begriffsklärung', //de +'disambigua', //it +'曖昧さ回避', //ja +'消歧義', //zh +'搞清楚', //zh-yue +'значения', //ru +'ابهام‌زدایی', //fa +'د ابہام', //ur +'동음이의', //ko +'dubbelsinnig', //af +'այլ կիրառումներ', //hy +'ujednoznacznienie' //pl +]; + +var images = ['file', //en +'image', //en +'चित्र', //img +'archivo', //es +'attēls', //lv +'berkas', //id +'bestand', //nl +'datei', //de +'dosiero', //eo +'dosya', //lad +'fájl', //hu +'fasciculus', //la +'fichier', //fr +'fil', //da +'fitxategi', //eu +'fitxer', //ca +'gambar', //su +'imagem', //pt +'imej', //ms +'immagine', //it +'larawan', //tl +'lêer', //af +'plik', //pl +'restr', //br +'slika', //bs +'wêne', //ku +'wobraz', //dsb +'выява', //be +'податотека', //mk +'слика', //sr +'файл', //ru +'სურათი', //ka +'պատկեր', //hy +'קובץ', //he +'پرونده', //fa +'دوتنه', //ps +'ملف', //ar +'وێنە', //ckb +'चित्र', //hi +'ไฟล์', //th +'파일', //ko +'ファイル' //ja +]; + +var infoboxes = ['infobox', //en +'anfo', //mwl +'anuāmapa', //haw +'bilgi kutusu', //tr +'bilgi', //tr +'bilgiquti', //uz +'boaty', //mg +'boestkelaouiñ', //br +'bosca', //ga +'capsa', //la +'diehtokássa', //se +'faktamall', //sv +'ficha', //es +'generalni', //hr +'gwybodlen3', //cy +'info', //pt +'infobokis', //tpi +'infoboks', //da +'infochascha', //rm +'infokašćik', //dsb +'infokast', //et +'infokutija', //bs +'infolentelė', //lt +'infopolje', //sl +'informkesto', //eo +'infoskreine', //ltg +'infotaula', //eu +'inligtingskas', 'inligtingskas3', //af +'inligtingskas4', //af +'kishtey', //gv +'kotak', //su +'tertcita', //jbo +'tietolaatikko', //fi +'yerleşim bilgi kutusu', 'ynfoboks', //fy +'πλαίσιο', //el +'акарточка', //ab +'аҥа', //mhr +'инфобокс', //kk +'инфокутија', //sr +'инфокутия', //bg +'інфобокс', //rue +'канадский', 'картка', //be +'карточка', //ru +'карточка2', //mdf +'карточкарус', //ba +'картуш', //koi +'қуттӣ', //tg +'ინფოდაფა', //ka +'տեղեկաքարտ', //hy +'אינפאקעסטל', //yi +'תבנית', //he +'بطاقة', //ar +'ڄاڻخانو', //sd +'خانہ', //ur +'لغة', 'ज्ञानसन्दूक', //hi +'তথ্যছক', //bn +'ਜਾਣਕਾਰੀਡੱਬਾ', //pa +'సమాచారపెట్టె', //te +'තොරතුරුකොටුව', //si +'กล่องข้อมูล', //th +'ប្រអប់ព័ត៌មាន', //km +'정보상자', //ko +'明細' //zh_yue +]; + +var redirects$1 = ['adkas', //br +'aýdaw', 'doorverwijzing', //nl +'ohjaus', 'patrz', //pl +'přesměruj', 'redirección', 'redireccion', 'redirección', //es +'redirecionamento', //pt +'redirect', //en +'redirection', 'redirection', //fr +'rinvia', //it +'tilvísun', 'uudelleenohjaus', 'weiterleitung', 'weiterleitung', //de +'yönlendi̇r', 'yönlendirme', 'yönlendi̇rme', //tr +'ανακατευθυνση', //el +'айдау', 'перанакіраваньне', 'перенаправлення', //uk +'пренасочување', //mk +'преусмери', 'преусмјери', 'تغییر_مسیر', 'تغییرمسیر', 'تغییرمسیر', //fa +'เปลี่ยนทาง', //th +'ប្តូរទីតាំងទៅ', //km +'転送', //ja +'重定向']; + +var references = ['references', 'reference', 'einzelnachweise', 'referencias', 'références', 'notes et références', '脚注', 'referenser', 'bronnen', 'примечания']; + +/** + * 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[] + * }} + */ + +var i18n = { + categories: categories$1, + disambig_templates: disambig_templates, + disambig_titles: disambig_titles, + images: images, + infoboxes: infoboxes, + redirects: redirects$1, + references: 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) + //] + +}; + +//alt disambig-templates en-wikipedia uses +let d = ' disambiguation'; +const templates$a = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce((h, str) => { h[str] = true; return h; -}, {}); //special disambig-templates en-wikipedia uses +}, {}); +var _disambig = templates$a; -var d = ' disambiguation'; -var english = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce(function (h, str) { +const inTitle = new RegExp('. \\((' + i18n.disambig_titles.join('|') + ')\\)$', 'i'); +const i18n_templates = i18n.disambig_templates.reduce((h, str) => { h[str] = true; return h; -}, {}); +}, {}); // look for '... may refer to' -var isDisambig = function isDisambig(doc) { - var templates = doc.templates(); - var found = templates.find(function (obj) { - return english.hasOwnProperty(obj.template) || i18n.hasOwnProperty(obj.template); - }); +const byText = function (s) { + if (!s) { + return false; + } - if (found) { - return true; - } // try 'may refer to' on first line for en-wiki? + let txt = s.text(); + if (txt !== null && txt[0]) { + if (/. may (also)? refer to\b/i.test(txt) === true) { + return true; + } + } - if (doc.sentences(0)) { - var firstLine = doc.sentences(0).text(); + return false; +}; +/** + * Parses the wikitext to find out if this page is a disambiguation + * + * @private + * @param {Document} doc the document that is examined + * @returns {boolean} an indication if the document is a disambiguation page + */ - if (firstLine !== null && firstLine[0]) { - if (/. may refer to ./i.test(firstLine) === true) { - return true; - } - } + +const isDisambig = function (doc) { + // check for a {{disambig}} template + let templates = doc.templates().map(tmpl => tmpl.json()); + let found = templates.find(obj => { + return _disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); + }); + + if (found) { + return true; + } // check for (disambiguation) in title + + + let title = doc.title(); + + if (title && inTitle.test(title) === true) { + return true; + } //try 'may refer to' on first line for en-wiki? + + + if (byText(doc.sentence(0)) === true || byText(doc.sentence(1)) === true) { + return true; } return false; }; -var disambig$1 = isDisambig; +var isDisambig_1 = isDisambig; -var defaults$2 = { +const defaults$a = { caption: true, alt: true, links: true, @@ -527,9 +910,9 @@ var defaults$2 = { url: true }; // -var toJson$1 = function toJson(img, options) { - options = setDefaults_1(options, defaults$2); - var json = { +const toJson$5 = function (img, options) { + options = setDefaults_1(options, defaults$a); + let json = { file: img.file() }; @@ -557,12 +940,12 @@ var toJson$1 = function toJson(img, options) { return json; }; -var toJson_1 = toJson$1; +var toJson_1$3 = toJson$5; -var server = 'wikipedia.org'; +const server = 'wikipedia.org'; -var encodeTitle = function encodeTitle(file) { - var title = file.replace(/^(image|file?)\:/i, ''); //titlecase it +const encodeTitle = function (file) { + let title = file.replace(/^(image|file?)\:/i, ''); //titlecase it title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores @@ -571,57 +954,63 @@ var encodeTitle = function encodeTitle(file) { }; //the wikimedia image url is a little silly: -var makeSrc = function makeSrc(file) { - var title = encodeTitle(file); +const makeSrc = function (file) { + let title = encodeTitle(file); title = encodeURIComponent(title); return title; }; //the class for our image generation functions -var Image = function Image(data) { +const Image = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; -var methods = { - file: function file() { +const methods$8 = { + file() { return this.data.file || ''; }, - alt: function alt() { - var str = this.data.alt || this.data.file || ''; + + alt() { + let str = this.data.alt || this.data.file || ''; str = str.replace(/^(file|image):/i, ''); str = str.replace(/\.(jpg|jpeg|png|gif|svg)/i, ''); return str.replace(/_/g, ' '); }, - caption: function caption() { + + caption() { if (this.data.caption) { return this.data.caption.text(); } return ''; }, - links: function links() { + + links() { if (this.data.caption) { return this.data.caption.links(); } return []; }, - url: function url() { + + url() { // let lang = 'en' //this.language() || 'en' //hmm: get actual language? - var fileName = makeSrc(this.file()); - var domain = this.data.domain || server; - var path = "wiki/Special:Redirect/file"; - return "https://".concat(domain, "/").concat(path, "/").concat(fileName); + let fileName = makeSrc(this.file()); + let domain = this.data.domain || server; + let path = `wiki/Special:Redirect/file`; + return `https://${domain}/${path}/${fileName}`; }, - thumbnail: function thumbnail(size) { + + thumbnail(size) { size = size || 300; return this.url() + '?width=' + size; }, - format: function format() { - var arr = this.file().split('.'); + + format() { + let arr = this.file().split('.'); if (arr[arr.length - 1]) { return arr[arr.length - 1].toLowerCase(); @@ -629,566 +1018,25 @@ var methods = { return null; }, - json: function json(options) { + + json: function (options) { options = options || {}; - return toJson_1(this, options); + return toJson_1$3(this, options); }, - text: function text() { + text: function () { return ''; + }, + wikitext: function () { + return this.data.wiki || ''; } }; -Object.keys(methods).forEach(function (k) { - Image.prototype[k] = methods[k]; +Object.keys(methods$8).forEach(k => { + Image.prototype[k] = methods$8[k]; }); Image.prototype.src = Image.prototype.url; Image.prototype.thumb = Image.prototype.thumbnail; var Image_1 = Image; -var defaults$3 = { - tables: true, - lists: true, - paragraphs: true -}; // - -var Document = function Document(data) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); -}; - -var methods$1 = { - title: function title(str) { - //use like a setter - if (str !== undefined) { - this.data.title = str; - return str; - } //if we have it already - - - if (this.data.title) { - return this.data.title; - } //guess the title of this page from first sentence bolding - - - var guess = null; - var sen = this.sentences(0); - - if (sen) { - guess = sen.bolds(0); - } - - return guess; - }, - pageID: function pageID(id) { - if (id !== undefined) { - this.data.pageID = id; - } - - return this.data.pageID; - }, - wikidata: function wikidata(id) { - if (id !== undefined) { - this.data.wikidata = id; - } - - return this.data.wikidata; - }, - domain: function domain(str) { - if (str !== undefined) { - this.data.domain = str; - } - - return this.data.domain; - }, - language: function language(lang) { - if (lang !== undefined) { - this.data.lang = lang; - } - - return this.data.lang; - }, - url: function url() { - var title = this.title(); - - if (!title) { - return null; - } - - var lang = this.language() || 'en'; - var domain = this.domain() || 'wikipedia.org'; // replace blank to underscore - - title = title.replace(/ /g, '_'); - title = encodeURIComponent(title); - return "https://".concat(lang, ".").concat(domain, "/wiki/").concat(title); - }, - namespace: function namespace(ns) { - if (ns !== undefined) { - this.data.namespace = ns; - } - - return this.data.namespace; - }, - isRedirect: function isRedirect() { - return this.data.type === 'redirect'; - }, - redirectTo: function redirectTo() { - return this.data.redirectTo; - }, - isDisambiguation: function isDisambiguation() { - return disambig$1(this); - }, - categories: function categories(clue) { - if (typeof clue === 'number') { - return this.data.categories[clue]; - } - - return this.data.categories || []; - }, - sections: function sections(clue) { - var _this = this; - - var arr = this.data.sections || []; - arr.forEach(function (sec) { - return sec.doc = _this; - }); //grab a specific section, by its title - - if (typeof clue === 'string') { - var str = clue.toLowerCase().trim(); - return arr.find(function (s) { - return s.title().toLowerCase() === str; - }); - } - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - paragraphs: function paragraphs(n) { - var arr = []; - this.data.sections.forEach(function (s) { - arr = arr.concat(s.paragraphs()); - }); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; - }, - paragraph: function paragraph(n) { - var arr = this.paragraphs() || []; - - if (typeof n === 'number') { - return arr[n]; - } - - return arr[0]; - }, - sentences: function sentences(n) { - var arr = []; - this.sections().forEach(function (sec) { - arr = arr.concat(sec.sentences()); - }); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; - }, - sentence: function sentence() { - return this.sentences(0); - }, - images: function images(clue) { - var _this2 = this; - - var arr = _sectionMap(this, 'images', null); //grab image from infobox, first - - this.infoboxes().forEach(function (info) { - var img = info.image(); - - if (img) { - arr.unshift(img); //put it at the top - } - }); //look for 'gallery' templates, too - - this.templates().forEach(function (obj) { - if (obj.template === 'gallery') { - obj.images = obj.images || []; - obj.images.forEach(function (img) { - if (img instanceof Image_1 === false) { - img.language = _this2.language(); - img.domain = _this2.domain(); - img = new Image_1(img); - } - - arr.push(img); - }); - } - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - image: function image() { - return this.images(0); - }, - links: function links(clue) { - return _sectionMap(this, 'links', clue); - }, - interwiki: function interwiki(clue) { - return _sectionMap(this, 'interwiki', clue); - }, - lists: function lists(clue) { - return _sectionMap(this, 'lists', clue); - }, - tables: function tables(clue) { - return _sectionMap(this, 'tables', clue); - }, - templates: function templates(clue) { - return _sectionMap(this, 'templates', clue); - }, - references: function references(clue) { - return _sectionMap(this, 'references', clue); - }, - coordinates: function coordinates(clue) { - return _sectionMap(this, 'coordinates', clue); - }, - infoboxes: function infoboxes(clue) { - var arr = _sectionMap(this, 'infoboxes'); //sort them by biggest-first - - arr = arr.sort(function (a, b) { - if (Object.keys(a.data).length > Object.keys(b.data).length) { - return -1; - } - - return 1; - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - text: function text(options) { - options = setDefaults_1(options, defaults$3); //nah, skip these. - - if (this.isRedirect() === true) { - return ''; - } - - var arr = this.sections().map(function (sec) { - return sec.text(options); - }); - return arr.join('\n\n'); - }, - json: function json(options) { - options = setDefaults_1(options, defaults$3); - return toJson(this, options); - }, - debug: function debug() { - console.log('\n'); - this.sections().forEach(function (sec) { - var indent = ' - '; - - for (var i = 0; i < sec.depth; i += 1) { - indent = ' -' + indent; - } - - console.log(indent + (sec.title() || '(Intro)')); - }); - return this; - } -}; - -var isArray$1 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; -}; //add singular-methods, too - - -var plurals = ['sections', 'infoboxes', 'sentences', 'citations', 'references', 'coordinates', 'tables', 'lists', 'links', 'images', 'templates', 'categories']; -plurals.forEach(function (fn) { - var sing = fn.replace(/ies$/, 'y'); - sing = sing.replace(/oxes$/, 'ox'); - sing = sing.replace(/s$/, ''); - - methods$1[sing] = function (n) { - n = n || 0; - var res = this[fn](n); - - if (isArray$1(res)) { - return res[0]; - } - - return res; - }; -}); -Object.keys(methods$1).forEach(function (k) { - Document.prototype[k] = methods$1[k]; -}); //alias these ones - -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; -var Document_1 = Document; - -var categories = ['category', //en -'abdeeling', // pdc -'bólkur', // fo -'catagóir', // ga -'categori', // cy -'categoria', 'categoria', // co -'categoría', // es -'categorîa', // lij -'categorìa', // pms -'catégorie', 'categorie', 'catègorie', // frp -'category', 'categuria', // lmo -'catigurìa', // scn -'class', // kw -'ẹ̀ka', // yo -'flocc', 'flocc', // ang -'flokkur', 'grup', // tpi -'jamii', // sw -'kaarangay', // war -'kateggoría', // lad -'kategooria', // et -'kategori', // da -'kategorî', // ku -'kategoria', // eu -'kategória', // hu -'kategorie', //de -'kategoriija', // se -'kategorija', // sl -'kategorio', // eo -'kategoriya', 'kategoriýa', // tk -'kategoriye', // diq -'kategory', // fy -'kategorya', // tl -'kateqoriya', // az -'katiguriya', // qu -'klad', // vo -'luokka', 'ñemohenda', // gn -'roinn', //-seòrsa gd -'ronney', // gv -'rummad', // br -'setensele', // nso -'sokajy', // mg -'sumut', // atassuseq kl -'thể', // loại vi -'turkum', // uz -'категорија', 'категория', // ru -'категорія', // uk -'катэгорыя', 'төркем', // tt -'קטגוריה', // he -'تصنيف', 'تۈر', // ug -'رده', 'श्रेणी', 'श्रेणी', // hi -'বিষয়শ্রেণী', // bn -'หมวดหมู่', // th -'분류', // ko -'분류', //ko -'分类' // za -//-- -]; - -var images = ['file', //en -'image', //en -'चित्र', //img -'archivo', //es -'attēls', //lv -'berkas', //id -'bestand', //nl -'datei', //de -'dosiero', //eo -'dosya', //lad -'fájl', //hu -'fasciculus', //la -'fichier', //fr -'fil', //da -'fitxategi', //eu -'fitxer', //ca -'gambar', //su -'imagem', //pt -'imej', //ms -'immagine', //it -'larawan', //tl -'lêer', //af -'plik', //pl -'restr', //br -'slika', //bs -'wêne', //ku -'wobraz', //dsb -'выява', //be -'податотека', //mk -'слика', //sr -'файл', //ru -'სურათი', //ka -'պատկեր', //hy -'קובץ', //he -'پرونده', //fa -'دوتنه', //ps -'ملف', //ar -'وێنە', //ckb -'चित्र', //hi -'ไฟล์', //th -'파일', //ko -'ファイル' //ja -]; - -var infoboxes = ['infobox', //en -'anfo', //mwl -'anuāmapa', //haw -'bilgi kutusu', //tr -'bilgi', //tr -'bilgiquti', //uz -'boaty', //mg -'boestkelaouiñ', //br -'bosca', //ga -'capsa', //la -'diehtokássa', //se -'faktamall', //sv -'ficha', //es -'generalni', //hr -'gwybodlen3', //cy -'info', //pt -'infobokis', //tpi -'infoboks', //da -'infochascha', //rm -'infokašćik', //dsb -'infokast', //et -'infokutija', //bs -'infolentelė', //lt -'infopolje', //sl -'informkesto', //eo -'infoskreine', //ltg -'infotaula', //eu -'inligtingskas', 'inligtingskas3', //af -'inligtingskas4', //af -'kishtey', //gv -'kotak', //su -'tertcita', //jbo -'tietolaatikko', //fi -'yerleşim bilgi kutusu', 'ynfoboks', //fy -'πλαίσιο', //el -'акарточка', //ab -'аҥа', //mhr -'инфобокс', //kk -'инфокутија', //sr -'инфокутия', //bg -'інфобокс', //rue -'канадский', 'картка', //be -'карточка', //ru -'карточка2', //mdf -'карточкарус', //ba -'картуш', //koi -'қуттӣ', //tg -'ინფოდაფა', //ka -'տեղեկաքարտ', //hy -'אינפאקעסטל', //yi -'תבנית', //he -'بطاقة', //ar -'ڄاڻخانو', //sd -'خانہ', //ur -'لغة', 'ज्ञानसन्दूक', //hi -'তথ্যছক', //bn -'ਜਾਣਕਾਰੀਡੱਬਾ', //pa -'సమాచారపెట్టె', //te -'තොරතුරුකොටුව', //si -'กล่องข้อมูล', //th -'ប្រអប់ព័ត៌មាន', //km -'정보상자', //ko -'明細' //zh_yue -]; - -var redirects = ['adkas', //br -'aýdaw', 'doorverwijzing', 'ohjaus', 'patrz', //pl -'přesměruj', 'redirección', 'redireccion', 'redirección', //es -'redirecionamento', //pt -'redirect', //en -'redirection', 'redirection', //fr -'rinvia', //it -'tilvísun', 'uudelleenohjaus', 'weiterleitung', 'weiterleitung', //de -'yönlendi̇r', 'yönlendirme', 'yönlendi̇rme', //tr -'ανακατευθυνση', //el -'айдау', 'перанакіраваньне', 'перенаправлення', //uk -'пренасочување', //mk -'преусмери', 'преусмјери', 'تغییر_مسیر', 'تغییرمسیر', 'تغییرمسیر', //fa -'เปลี่ยนทาง', //th -'ប្តូរទីតាំងទៅ', //km -'転送', //ja -'重定向']; - -var references = ['references', 'reference', 'einzelnachweise', 'referencias', 'références', 'notes et références', '脚注', 'referenser', 'bronnen', 'примечания']; - -// and then manually on March 2020 - -var i18n$1 = { - categories: categories, - disambig: disambig, - images: images, - infoboxes: infoboxes, - redirects: redirects, - references: 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) - // ] - -}; - var languages = { aa: 'Afar', //Afar @@ -1502,7 +1350,7 @@ var languages = { //Dutch ne: 'नेपाली', //Nepali - "new": 'नेपालभाषा', + new: 'नेपालभाषा', //Newar ng: 'Oshiwambo', //Ndonga @@ -1698,10 +1546,10 @@ var languages = { }; -var wp = '.wikipedia.org/wiki/$1'; -var wm = '.wikimedia.org/wiki/$1'; -var w = 'www.'; -var interwiki = { +const wp = '.wikipedia.org/wiki/$1'; +const wm = '.wikimedia.org/wiki/$1'; +const w = 'www.'; +var interwiki$1 = { acronym: w + 'acronymfinder.com/$1.html', advisory: 'advisory' + wm, advogato: w + 'advogato.org/$1', @@ -2165,32 +2013,28 @@ var interwiki = { //so we have to whitelist allowable interwiki links //add language prefixes too.. -Object.keys(languages).forEach(function (k) { - interwiki[k] = k + '.wikipedia.org/wiki/$1'; +Object.keys(languages).forEach(k => { + interwiki$1[k] = k + '.wikipedia.org/wiki/$1'; }); //this is predictably very complicated. // https://meta.wikimedia.org/wiki/Help:Interwiki_linking -var parseInterwiki = function parseInterwiki(obj) { - var str = obj.page || ''; +const parseInterwiki = function (obj) { + let str = obj.page || ''; if (str.indexOf(':') !== -1) { - var m = str.match(/^(.*):(.*)/); + let m = str.match(/^(.*):(.*)/); if (m === null) { return obj; } - var site = m[1] || ''; + let site = m[1] || ''; site = site.toLowerCase(); if (site.indexOf(':') !== -1) { - var _site$match = site.match(/^:?(.*):(.*)/), - _site$match2 = _slicedToArray(_site$match, 3), - wiki = _site$match2[1], - lang = _site$match2[2]; //only allow interwikis to these specific places + let [, wiki, lang] = site.match(/^:?(.*):(.*)/); //only allow interwikis to these specific places - - if (interwiki.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { + if (interwiki$1.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { return obj; } @@ -2199,7 +2043,7 @@ var parseInterwiki = function parseInterwiki(obj) { lang: lang }; } else { - if (interwiki.hasOwnProperty(site) === false) { + if (interwiki$1.hasOwnProperty(site) === false) { return obj; } @@ -2212,13 +2056,13 @@ var parseInterwiki = function parseInterwiki(obj) { return obj; }; -var interwiki$1 = parseInterwiki; +var interwiki = parseInterwiki; -var ignore_links = /^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i; -var external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g; -var link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" +const ignore_links = /^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i; +const external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g; +const link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" -var external_links = function external_links(links, str) { +const external_links = function (links, str) { str.replace(external_link, function (raw, protocol, link, text) { text = text || ''; links.push({ @@ -2232,12 +2076,12 @@ var external_links = function external_links(links, str) { return links; }; -var internal_links = function internal_links(links, str) { +const internal_links = function (links, str) { //regular links str.replace(link_reg, function (raw, s, suffix) { - var txt = null; //make a copy of original + let txt = null; //make a copy of original - var link = s; + let link = s; if (s.match(/\|/)) { //replacement link [[link|text]] @@ -2264,16 +2108,16 @@ var internal_links = function internal_links(links, str) { //remove anchors from end [[toronto#history]] - var obj = { + let obj = { page: link, raw: raw }; - obj.page = obj.page.replace(/#(.*)/, function (a, b) { + obj.page = obj.page.replace(/#(.*)/, (a, b) => { obj.anchor = b; return ''; }); //grab any fr:Paris parts - obj = interwiki$1(obj); + obj = interwiki(obj); if (obj.wiki) { obj.type = 'interwiki'; @@ -2305,8 +2149,8 @@ var internal_links = function internal_links(links, str) { }; //grab an array of internal links in the text -var parse_links = function parse_links(str) { - var links = []; //first, parse external links +const parse_links = function (str) { + let links = []; //first, parse external links links = external_links(links, str); //internal links @@ -2319,11 +2163,11 @@ var parse_links = function parse_links(str) { return links; }; -var parse = parse_links; +var parse$8 = parse_links; -var REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n$1.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); +const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); -var isRedirect = function isRedirect(wiki) { +const isRedirect = function (wiki) { //too long to be a redirect? if (!wiki || wiki.length > 500) { return false; @@ -2332,49 +2176,49 @@ var isRedirect = function isRedirect(wiki) { return REDIRECT_REGEX.test(wiki); }; -var parse$1 = function parse$1(wiki) { - var m = wiki.match(REDIRECT_REGEX); +const parse$7 = function (wiki) { + let m = wiki.match(REDIRECT_REGEX); if (m && m[2]) { - var links = parse(m[2]) || []; + let links = parse$8(m[2]) || []; return links[0]; } return {}; }; -var redirects$1 = { +var redirects = { isRedirect: isRedirect, - parse: parse$1 + parse: parse$7 }; //okay, i know you're not supposed to regex html, but... //https://en.wikipedia.org/wiki/Help:HTML_in_wikitext //these are things we throw-away //these will mess-up if they're nested, but they're not usually. -var ignore = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; -var openTag = "< ?(".concat(ignore.join('|'), ") ?[^>]{0,200}?>"); -var closeTag = "< ?/ ?(".concat(ignore.join('|'), ") ?>"); -var anyChar = '\\s\\S'; //including newline +const ignore$1 = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; +const openTag = `< ?(${ignore$1.join('|')}) ?[^>]{0,200}?>`; +const closeTag = `< ?/ ?(${ignore$1.join('|')}) ?>`; +const anyChar = '\\s\\S'; //including newline -var noThanks = new RegExp("".concat(openTag, "[").concat(anyChar, "]+?").concat(closeTag), 'ig'); +const noThanks = new RegExp(`${openTag}[${anyChar}]+?${closeTag}`, 'ig'); -var kill_xml = function kill_xml(wiki) { +const kill_xml = function (wiki) { //( tags are parsed in Section class) - luckily, refs can't be recursive. //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, ' '); // // convert these html tags to known formatting - wiki = wiki.replace(/(.*?)<\/i>/g, "''$1''"); - wiki = wiki.replace(/(.*?)<\/b>/g, "'''$1'''"); // these are better-handled with templates + wiki = wiki.replace(/(.*?)<\/i>/g, `''$1''`); + wiki = wiki.replace(/(.*?)<\/b>/g, `'''$1'''`); // these are better-handled with templates - wiki = wiki.replace(/(.*?)<\/sub>/g, "{{sub|$1}}"); - wiki = wiki.replace(/(.*?)<\/sup>/g, "{{sup|$1}}"); //some formatting xml, we'll keep their insides though + wiki = wiki.replace(/(.*?)<\/sub>/g, `{{sub|$1}}`); + wiki = wiki.replace(/(.*?)<\/sup>/g, `{{sup|$1}}`); //some formatting xml, we'll keep their insides though wiki = wiki.replace(/ ?<[ \/]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ \/]?> ?/g, ' '); //, @@ -2389,9 +2233,17 @@ var kill_xml = function kill_xml(wiki) { var kill_xml_1 = kill_xml; -function preProcess(doc) { - var wiki = doc.wiki; //remove comments - +/** + * removes unnecessary strings from the wikitext + * it is mostly-formatting stuff can be cleaned-up first, to make life easier + * + * @private + * @param {string} wiki the wikitext that needs processing + * @returns {string} the processed text + */ + +function preProcess(wiki) { + //remove comments wiki = wiki.replace(//g, ''); wiki = wiki.replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi, ''); //signitures @@ -2413,34 +2265,40 @@ function preProcess(doc) { wiki = wiki.replace(/\([,;: ]+?\)/g, ''); //these templates just screw things up, too wiki = wiki.replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i, ''); - doc.wiki = wiki; + return wiki; } var preProcess_1 = preProcess; -// 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 -var specialChar = /[\\\.$]/; - -var encodeStr = function encodeStr(str) { +const specialChar = /[\\\.$]/; +/** + * this function encodes a string to make it mongodb compatible. + * https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 + * + * @param {string} str + * @returns {string} the encoded string + */ + +const encodeStr = function (str) { if (typeof str !== 'string') { str = ''; } str = str.replace(/\\/g, '\\\\'); - str = str.replace(/^\$/, "\\u0024"); - str = str.replace(/\./g, "\\u002e"); + str = str.replace(/^\$/, '\\u0024'); + str = str.replace(/\./g, '\\u002e'); return str; }; -var encodeObj = function encodeObj() { - var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var keys = Object.keys(obj); +const encodeObj = function (obj = {}) { + let keys = Object.keys(obj); - for (var i = 0; i < keys.length; i += 1) { + for (let i = 0; i < keys.length; i += 1) { if (specialChar.test(keys[i]) === true) { - var str = encodeStr(keys[i]); + let str = encodeStr(keys[i]); if (str !== keys[i]) { obj[str] = obj[keys[i]]; @@ -2456,7 +2314,7 @@ var encode = { encodeObj: encodeObj }; -var defaults$4 = { +const defaults$9 = { headers: true, depth: true, paragraphs: true, @@ -2466,25 +2324,33 @@ var defaults$4 = { infoboxes: true, lists: true, references: true -}; // +}; +/** + * + * @param {Section} section + * @param {sectionToJsonOptions} options + * @returns {object} + */ + +const toJSON$2 = function (section, options) { + options = setDefaults_1(options, defaults$9); + /** + * @type {object} + */ -var toJSON$1 = function toJSON(section, options) { - options = setDefaults_1(options, defaults$4); - var data = {}; + let data = {}; if (options.headers === true) { data.title = section.title(); } if (options.depth === true) { - data.depth = section.depth; + data.depth = section.depth(); } //these return objects if (options.paragraphs === true) { - var paragraphs = section.paragraphs().map(function (p) { - return p.json(options); - }); + let paragraphs = section.paragraphs().map(p => p.json(options)); if (paragraphs.length > 0) { data.paragraphs = paragraphs; @@ -2493,9 +2359,7 @@ var toJSON$1 = function toJSON(section, options) { if (options.images === true) { - var images = section.images().map(function (img) { - return img.json(options); - }); + let images = section.images().map(img => img.json(options)); if (images.length > 0) { data.images = images; @@ -2504,9 +2368,7 @@ var toJSON$1 = function toJSON(section, options) { if (options.tables === true) { - var tables = section.tables().map(function (t) { - return t.json(options); - }); + let tables = section.tables().map(t => t.json(options)); if (tables.length > 0) { data.tables = tables; @@ -2515,24 +2377,20 @@ var toJSON$1 = function toJSON(section, options) { if (options.templates === true) { - var templates = section.templates(); + let templates = section.templates().map(tmpl => tmpl.json()); if (templates.length > 0) { data.templates = templates; //encode them, for mongodb if (options.encode === true) { - data.templates.forEach(function (t) { - return encode.encodeObj(t); - }); + data.templates.forEach(t => encode.encodeObj(t)); } } } //infobox json data if (options.infoboxes === true) { - var infoboxes = section.infoboxes().map(function (i) { - return i.json(options); - }); + let infoboxes = section.infoboxes().map(i => i.json(options)); if (infoboxes.length > 0) { data.infoboxes = infoboxes; @@ -2541,9 +2399,7 @@ var toJSON$1 = function toJSON(section, options) { if (options.lists === true) { - var lists = section.lists().map(function (list) { - return list.json(options); - }); + let lists = section.lists().map(list => list.json(options)); if (lists.length > 0) { data.lists = lists; @@ -2552,9 +2408,7 @@ var toJSON$1 = function toJSON(section, options) { if (options.references === true || options.citations === true) { - var references = section.references().map(function (ref) { - return ref.json(options); - }); + let references = section.references().map(ref => ref.json(options)); if (references.length > 0) { data.references = references; @@ -2563,468 +2417,125 @@ var toJSON$1 = function toJSON(section, options) { if (options.sentences === true) { - data.sentences = section.sentences().map(function (s) { - return s.json(options); - }); + data.sentences = section.sentences().map(s => s.json(options)); } return data; }; -var toJson$2 = toJSON$1; +var toJson$4 = toJSON$2; -var defaults$5 = { - tables: true, - references: true, - paragraphs: true, - templates: true, - infoboxes: true -}; //the stuff between headings - 'History' section for example +const defaults$8 = { + type: 'internal' +}; -var Section = function Section(data) { - this.depth = data.depth; - this.doc = null; - this._title = data.title || ''; - Object.defineProperty(this, 'doc', { - enumerable: false, - value: null - }); - data.templates = data.templates || []; +const Link = function (data) { + data = data || {}; + data = Object.assign({}, defaults$8, data); Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; -var methods$2 = { - title: function title() { - return this._title || ''; +const methods$7 = { + text: function (str) { + if (str !== undefined) { + this.data.text = str; + } + + let txt = this.data.text || this.data.page || ''; // remove bold/italics + + txt = txt.replace(/''+/g, ''); + return txt; }, - index: function index() { - if (!this.doc) { - return null; + json: function () { + let obj = { + text: this.data.text, + type: this.type() + }; + + if (obj.type === 'internal') { + obj.page = this.page(); + } else if (obj.type === 'interwiki') { + obj.wiki = this.wiki(); + } else { + obj.site = this.site(); } - var index = this.doc.sections().indexOf(this); + let anchor = this.anchor(); - if (index === -1) { - return null; + if (anchor) { + obj.anchor = anchor; } - return index; + return obj; }, - indentation: function indentation() { - return this.depth; + wikitext: function () { + let txt = this.data.raw || ''; + return txt; }, - sentences: function sentences(n) { - var arr = this.paragraphs().reduce(function (list, p) { - return list.concat(p.sentences()); - }, []); - - if (typeof n === 'number') { - return arr[n]; + page: function (str) { + if (str !== undefined) { + this.data.page = str; } - return arr || []; + return this.data.page; }, - paragraphs: function paragraphs(n) { - var arr = this.data.paragraphs || []; - - if (typeof n === 'number') { - return arr[n]; + anchor: function (str) { + if (str !== undefined) { + this.data.anchor = str; } - return arr || []; + return this.data.anchor || ''; }, - paragraph: function paragraph(n) { - var arr = this.data.paragraphs || []; - - if (typeof n === 'number') { - return arr[n]; + wiki: function (str) { + if (str !== undefined) { + this.data.wiki = str; } - return arr[0]; + return this.data.wiki; }, - links: function links(n) { - var arr = []; - this.infoboxes().forEach(function (templ) { - templ.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - this.sentences().forEach(function (s) { - s.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - this.tables().forEach(function (t) { - t.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - this.lists().forEach(function (list) { - list.links(n).forEach(function (link) { - return arr.push(link); - }); - }); - - 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 - - var link = arr.find(function (o) { - return o.page() === n; - }); - return link === undefined ? [] : [link]; + type: function (str) { + if (str !== undefined) { + this.data.type = str; } - return arr; + return this.data.type; }, - tables: function tables(clue) { - var arr = this.data.tables || []; - - if (typeof clue === 'number') { - return arr[clue]; + site: function (str) { + if (str !== undefined) { + this.data.site = str; } - return arr; + return this.data.site; }, - templates: function templates(clue) { - var arr = this.data.templates || []; - arr = arr.map(function (t) { - return t.json(); - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - if (typeof clue === 'string') { - clue = clue.toLowerCase(); - return arr.filter(function (o) { - return o.template === clue || o.name === clue; - }); - } - - return arr; - }, - infoboxes: function infoboxes(clue) { - var arr = this.data.infoboxes || []; - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - coordinates: function coordinates(clue) { - var arr = [].concat(this.templates('coord'), this.templates('coor')); - - if (typeof clue === 'number') { - if (!arr[clue]) { - return []; - } - - return arr[clue]; - } - - return arr; - }, - lists: function lists(clue) { - var arr = []; - this.paragraphs().forEach(function (p) { - arr = arr.concat(p.lists()); - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - interwiki: function interwiki(num) { - var arr = []; - this.paragraphs().forEach(function (p) { - arr = arr.concat(p.interwiki()); - }); - - if (typeof num === 'number') { - return arr[num]; - } - - return arr || []; - }, - images: function images(clue) { - var arr = []; - this.paragraphs().forEach(function (p) { - arr = arr.concat(p.images()); - }); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr || []; - }, - references: function references(clue) { - var arr = this.data.references || []; - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr; - }, - //transformations - remove: function remove() { - if (!this.doc) { - return null; - } - - var bads = {}; - bads[this.title()] = true; //remove children too - - this.children().forEach(function (sec) { - return bads[sec.title()] = true; - }); - var arr = this.doc.data.sections; - arr = arr.filter(function (sec) { - return bads.hasOwnProperty(sec.title()) !== true; - }); - this.doc.data.sections = arr; - return this.doc; - }, - //move-around sections like in jquery - nextSibling: function nextSibling() { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - - for (var i = index + 1; i < sections.length; i += 1) { - if (sections[i].depth < this.depth) { - return null; - } - - if (sections[i].depth === this.depth) { - return sections[i]; - } - } - - return null; - }, - lastSibling: function lastSibling() { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - return sections[index - 1] || null; - }, - children: function children(n) { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - var children = []; //(immediately preceding sections with higher depth) - - if (sections[index + 1] && sections[index + 1].depth > this.depth) { - for (var i = index + 1; i < sections.length; i += 1) { - if (sections[i].depth > this.depth) { - children.push(sections[i]); - } else { - break; - } - } - } - - if (typeof n === 'string') { - n = n.toLowerCase(); - return children.find(function (s) { - return s.title().toLowerCase() === n; - }); - } - - if (typeof n === 'number') { - return children[n]; - } - - return children; - }, - parent: function parent() { - if (!this.doc) { - return null; - } - - var sections = this.doc.sections(); - var index = this.index(); - - for (var i = index; i >= 0; i -= 1) { - if (sections[i] && sections[i].depth < this.depth) { - return sections[i]; - } - } - - return null; - }, - text: function text(options) { - options = setDefaults_1(options, defaults$5); - var pList = this.paragraphs(); - pList = pList.map(function (p) { - return p.text(options); - }); - return pList.join('\n\n'); - }, - json: function json(options) { - options = setDefaults_1(options, defaults$5); - return toJson$2(this, options); - } -}; //aliases - -methods$2.next = methods$2.nextSibling; -methods$2.last = methods$2.lastSibling; -methods$2.previousSibling = methods$2.lastSibling; -methods$2.previous = methods$2.lastSibling; -methods$2.citations = methods$2.references; -methods$2.sections = methods$2.children; -Object.keys(methods$2).forEach(function (k) { - Section.prototype[k] = methods$2[k]; -}); -var Section_1 = Section; - -var helpers = { - capitalise: function capitalise(str) { - if (str && typeof str === 'string') { - return str.charAt(0).toUpperCase() + str.slice(1); - } - - return ''; - }, - trim_whitespace: 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 ''; - } -}; - -var defaults$6 = { - type: 'internal' -}; - -var Link = function Link(data) { - data = data || {}; - data = Object.assign({}, defaults$6, data); // console.log(data) - - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); -}; - -var methods$3 = { - text: function text(str) { - if (str !== undefined) { - this.data.text = str; - } - - return this.data.text; - }, - json: function json() { - var obj = { - text: this.text(), - type: this.type() - }; - - if (obj.type === 'internal') { - obj.page = this.page(); - } else if (obj.type === 'interwiki') { - obj.wiki = this.wiki(); - } else { - obj.site = this.site(); - } - - var anchor = this.anchor(); - - if (anchor) { - obj.anchor = anchor; - } - - return obj; - }, - page: function page(str) { - if (str !== undefined) { - this.data.page = str; - } - - return this.data.page; - }, - anchor: function anchor(str) { - if (str !== undefined) { - this.data.anchor = str; - } - - return this.data.anchor || ''; - }, - wiki: function wiki(str) { - if (str !== undefined) { - this.data.wiki = str; - } - - return this.data.wiki; - }, - type: function type(str) { - if (str !== undefined) { - this.data.type = str; - } - - return this.data.type; - }, - site: function site(str) { - if (str !== undefined) { - this.data.site = str; - } - - return this.data.site; - }, - // create a url for any type of link - href: function href() { - var type = this.type(); + //create a url for any type of link + href: function () { + let type = this.type(); if (type === 'external') { return this.site(); } - var page = this.page(); + let page = this.page(); page = page.replace(/ /g, '_'); page = encodeURIComponent(page); - var url = ''; + let url = ''; if (type === 'interwiki') { - var wiki = this.wiki(); + let wiki = this.wiki(); url = 'https://en.wikipedia.org/wiki/$1'; - if (interwiki.hasOwnProperty(wiki)) { - url = 'http://' + interwiki[this.wiki()]; + if (interwiki$1.hasOwnProperty(wiki)) { + url = 'http://' + interwiki$1[this.wiki()]; } url = url.replace(/\$1/g, page); } else { //internal link - url = "./".concat(this.page()); - } // add anchor on the end + url = `./${this.page()}`; + } //add anchor on the end if (this.anchor()) { @@ -3034,26 +2545,26 @@ var methods$3 = { return url; } }; -Object.keys(methods$3).forEach(function (k) { - Link.prototype[k] = methods$3[k]; +Object.keys(methods$7).forEach(k => { + Link.prototype[k] = methods$7[k]; }); var Link_1 = Link; // const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):[^\\]\\]]{2,80}\\]\\]', 'gi') //return only rendered text of wiki links -var removeLinks = function removeLinks(line) { +const removeLinks = function (line) { // [[File:with|Size]] line = line.replace(/\[\[File:(.{2,80}?)\|([^\]]+?)\]\](\w{0,5})/g, '$1'); return line; }; -var getLinks = function getLinks(data) { - var wiki = data.text; - var links = parse(wiki) || []; - data.links = links.map(function (link) { - wiki = wiki.replace(link.raw, link.text || link.page || ''); - delete link.raw; +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 + return new Link_1(link); }); wiki = removeLinks(wiki); @@ -3063,28 +2574,28 @@ var getLinks = function getLinks(data) { var link = getLinks; //handle the bold/italics -var formatting = function formatting(obj) { - var bolds = []; - var italics = []; - var wiki = obj.text || ''; //bold and italics combined 5 's +const formatting = function (obj) { + let bolds = []; + let italics = []; + let wiki = obj.text || ''; //bold and italics combined 5 's - wiki = wiki.replace(/'''''(.{0,200}?)'''''/g, function (a, b) { + wiki = wiki.replace(/'''''(.{0,200}?)'''''/g, (a, b) => { bolds.push(b); italics.push(b); return b; }); //''''four'''' → bold with quotes - wiki = wiki.replace(/''''(.{0,200}?)''''/g, function (a, b) { - bolds.push("'".concat(b, "'")); - return "'".concat(b, "'"); + wiki = wiki.replace(/''''(.{0,200}?)''''/g, (a, b) => { + bolds.push(`'${b}'`); + return `'${b}'`; }); //'''bold''' - wiki = wiki.replace(/'''(.{0,200}?)'''/g, function (a, b) { + wiki = wiki.replace(/'''(.{0,200}?)'''/g, (a, b) => { bolds.push(b); return b; }); //''italic'' - wiki = wiki.replace(/''(.{0,200}?)''/g, function (a, b) { + wiki = wiki.replace(/''(.{0,200}?)''/g, (a, b) => { italics.push(b); return b; }); //pack it all up.. @@ -3106,18 +2617,18 @@ var formatting = function formatting(obj) { var formatting_1 = formatting; -var isNumber = /^[0-9,.]+$/; -var defaults$7 = { +const isNumber = /^[0-9,.]+$/; +const defaults$7 = { text: true, links: true, formatting: true, numbers: true }; -var toJSON$2 = function toJSON(s, options) { +const toJSON$1 = function (s, options) { options = setDefaults_1(options, defaults$7); - var data = {}; - var text = s.text(); + let data = {}; + let text = s.text(); if (options.text === true) { data.text = text; @@ -3125,7 +2636,7 @@ var toJSON$2 = function toJSON(s, options) { if (options.numbers === true && isNumber.test(text)) { - var num = Number(text.replace(/,/g, '')); + let num = Number(text.replace(/,/g, '')); if (isNaN(num) === false) { data.number = num; @@ -3133,9 +2644,7 @@ var toJSON$2 = function toJSON(s, options) { } if (options.links && s.links().length > 0) { - data.links = s.links().map(function (l) { - return l.json(); - }); + data.links = s.links().map(l => l.json()); } if (options.formatting && s.data.fmt) { @@ -3145,80 +2654,47 @@ var toJSON$2 = function toJSON(s, options) { return data; }; -var toJson$3 = toJSON$2; +var toJson$3 = toJSON$1; -var Sentence = function Sentence(data) { +const Sentence = function (data = {}) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; -var methods$4 = { - links: function links(n) { - var arr = this.data.links || []; +const methods$6 = { + 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 - var link = arr.find(function (o) { - return o.page === n; - }); + let link = arr.find(o => o.page === n); return link === undefined ? [] : [link]; } return arr; }, - interwiki: function interwiki(n) { - var arr = this.links().filter(function (l) { - return l.wiki !== undefined; - }); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; + interwiki: function () { + return this.links().filter(l => l.wiki !== undefined); }, - bolds: function bolds(n) { - var arr = []; - + bolds: function () { if (this.data && this.data.fmt && this.data.fmt.bold) { - arr = this.data.fmt.bold || []; - } - - if (typeof n === 'number') { - return arr[n]; + return this.data.fmt.bold || []; } - return arr; + return []; }, - italics: function italics(n) { - var arr = []; - + italics: function () { 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 dates(n) { - var arr = []; - - if (typeof n === 'number') { - return arr[n]; + return this.data.fmt.italic || []; } - return arr; + return []; }, - text: function text(str) { + text: function (str) { if (str !== undefined && typeof str === 'string') { //set the text? this.data.text = str; @@ -3226,15 +2702,38 @@ var methods$4 = { return this.data.text || ''; }, - json: function json(options) { + json: function (options) { return toJson$3(this, options); + }, + wikitext: function () { + return this.data.wiki || ''; + }, + isEmpty: function () { + return this.data.text === ''; } }; -Object.keys(methods$4).forEach(function (k) { - Sentence.prototype[k] = methods$4[k]; +Object.keys(methods$6).forEach(k => { + Sentence.prototype[k] = methods$6[k]; +}); // aliases + +const singular$3 = { + links: 'link', + bolds: 'bold', + italics: 'italic' +}; +Object.keys(singular$3).forEach(k => { + let sing = singular$3[k]; + + Sentence.prototype[sing] = function (clue) { + let arr = this[k](clue); + + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0]; + }; }); -Sentence.prototype.italic = Sentence.prototype.italics; -Sentence.prototype.bold = Sentence.prototype.bolds; Sentence.prototype.plaintext = Sentence.prototype.text; var Sentence_1 = Sentence; @@ -3246,27 +2745,25 @@ var _abbreviations = ['ad', 'adj', 'adm', 'adv', 'al', 'alta', 'approx', 'apr', // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. // @spencermountain 2015 MIT -var abbreviations = _abbreviations.concat('[^]][^]]'); -var abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + ")[.!?] ?$", 'i'); -var acronym_reg = new RegExp("[ |.|'|[][A-Z].? *?$", 'i'); -var elipses_reg = new RegExp('\\.\\.\\.* +?$'); -var circa_reg = / c\. $/; -var hasWord = new RegExp('[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]', 'iu'); //turn a nested array into one array +const abbreviations = _abbreviations.concat('[^]][^]]'); +const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i'); +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 -var flatten = function flatten(arr) { - var all = []; +const flatten = function (arr) { + let all = []; arr.forEach(function (a) { all = all.concat(a); }); return all; }; -var naiive_split = function naiive_split(text) { +const naiive_split = function (text) { //first, split by newline - var splits = text.split(/(\n+)/); - splits = splits.filter(function (s) { - return s.match(/\S/); - }); //split by period, question-mark, and exclamation-mark + let splits = text.split(/(\n+)/); + splits = splits.filter(s => s.match(/\S/)); //split by period, question-mark, and exclamation-mark splits = splits.map(function (str) { return str.split(/(\S.+?[.!?]"?)(?=\s+|$)/g); //\u3002 @@ -3275,17 +2772,17 @@ var naiive_split = function naiive_split(text) { }; // if this looks like a period within a wikipedia link, return false -var isBalanced = function isBalanced(str) { +const isBalanced = function (str) { str = str || ''; - var open = str.split(/\[\[/) || []; - var closed = str.split(/\]\]/) || []; + const open = str.split(/\[\[/) || []; + const closed = str.split(/\]\]/) || []; if (open.length > closed.length) { return false; } //make sure quotes are closed too - var quotes = str.match(/"/g); + const quotes = str.match(/"/g); if (quotes && quotes.length % 2 !== 0 && str.length < 900) { return false; @@ -3294,10 +2791,10 @@ var isBalanced = function isBalanced(str) { return true; }; -var sentence_parser = function sentence_parser(text) { - var sentences = []; //first do a greedy-split.. +const sentence_parser = function (text) { + let sentences = []; //first do a greedy-split.. - var chunks = []; //ensure it 'smells like' a sentence + let chunks = []; //ensure it 'smells like' a sentence if (!text || typeof text !== 'string' || text.trim().length === 0) { return sentences; @@ -3306,10 +2803,10 @@ var sentence_parser = function sentence_parser(text) { // todo: look for side effects in this regex replacement: - var splits = naiive_split(text); //filter-out the grap ones + let splits = naiive_split(text); //filter-out the grap ones - for (var i = 0; i < splits.length; i++) { - var s = splits[i]; + for (let i = 0; i < splits.length; i++) { + let s = splits[i]; if (!s || s === '') { continue; @@ -3332,7 +2829,7 @@ var sentence_parser = function sentence_parser(text) { } //detection of non-sentence chunks - var isSentence = function isSentence(hmm) { + const isSentence = function (hmm) { if (hmm.match(abbrev_reg) || hmm.match(acronym_reg) || hmm.match(elipses_reg) || hmm.match(circa_reg)) { return false; } //too short? - no consecutive letters @@ -3350,14 +2847,14 @@ var sentence_parser = function sentence_parser(text) { }; //loop through these chunks, and join the non-sentence chunks back together.. - for (var _i = 0; _i < chunks.length; _i++) { + for (let i = 0; i < chunks.length; i++) { //should this chunk be combined with the next one? - if (chunks[_i + 1] && !isSentence(chunks[_i])) { - chunks[_i + 1] = chunks[_i] + (chunks[_i + 1] || ''); //.replace(/ +/g, ' '); - } else if (chunks[_i] && chunks[_i].length > 0) { + if (chunks[i + 1] && !isSentence(chunks[i])) { + chunks[i + 1] = chunks[i] + (chunks[i + 1] || ''); //.replace(/ +/g, ' '); + } else if (chunks[i] && chunks[i].length > 0) { //this chunk is a proper sentence.. - sentences.push(chunks[_i]); - chunks[_i] = ''; + sentences.push(chunks[i]); + chunks[i] = ''; } } //if we never got a sentence, return the given text @@ -3369,7 +2866,15 @@ var sentence_parser = function sentence_parser(text) { return sentences; }; -var parse$2 = sentence_parser; +var parse$6 = sentence_parser; + +/** + * This function removes some final characters from the sentence + * + * @private + * @param {string} line the wiki text for processing + * @returns {string} the processed string + */ function postprocess(line) { //remove empty parentheses (sometimes caused by removing templates) @@ -3380,11 +2885,18 @@ function postprocess(line) { line = helpers.trim_whitespace(line); line = line.replace(/ +\.$/, '.'); return line; -} // returns one sentence object +} +/** + * returns one sentence object + * + * @param {string} str create a object from a sentence + * @returns {Sentence} the Sentence created from the text + */ function fromText(str) { - var obj = { + let obj = { + wiki: str, text: str }; //pull-out the [[links]] @@ -3397,9 +2909,9 @@ function fromText(str) { } //used for consistency with other class-definitions -var byParagraph = function byParagraph(paragraph) { - // array of texts - var sentences = parse$2(paragraph.wiki); // sentence objects +const byParagraph = function (paragraph) { + //array of texts + let sentences = parse$6(paragraph.wiki); //sentence objects sentences = sentences.map(fromText); //remove :indented first line, as it is often a disambiguation @@ -3415,17 +2927,24 @@ var _04Sentence = { byParagraph: byParagraph }; -//remove the top/bottom off the template -var strip = function strip(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; }; var _strip = strip; //normalize template names -var fmtName = function fmtName(name) { +const fmtName = function (name) { name = (name || '').trim(); name = name.toLowerCase(); name = name.replace(/_/g, ' '); @@ -3434,33 +2953,36 @@ var fmtName = function fmtName(name) { var _fmtName = fmtName; -//turn {{name|one|two|three}} into [name, one, two, three] -var pipeSplitter = function pipeSplitter(tmpl) { - //start with a naiive '|' split - var arr = tmpl.split(/\n?\|/); //we've split by '|', which is pretty lame +/** + * 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 :/ - arr.forEach(function (a, i) { + arr.forEach((a, i) => { if (a === null) { return; } //has '[[' but no ']]' - //has equal number of openning and closing tags. handle nested case '[[[[' ']]' + //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]; + 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(function (a) { - return a !== null; - }); - arr = arr.map(function (a) { - return (a || '').trim(); - }); //remove empty fields, only at the end: + arr = arr.filter(a => a !== null); + arr = arr.map(a => (a || '').trim()); //remove empty fields, only at the end: - for (var i = arr.length - 1; i >= 0; i -= 1) { + for (let i = arr.length - 1; i >= 0; i -= 1) { if (arr[i] === '') { arr.pop(); } @@ -3473,21 +2995,33 @@ var pipeSplitter = function pipeSplitter(tmpl) { var _01PipeSplitter = pipeSplitter; -// every value in {{tmpl|a|b|c}} needs a name -// here we come up with names for them -var hasKey = /^[ '-\)\x2D\.0-9_a-z\xC0-\xFF\u0153\u017F\u1E9E\u212A\u212B]+=/i; //templates with these properties are asking for trouble +//every value in {{tmpl|a|b|c}} needs a name +//here we come up with names for them +const hasKey = /^[\p{Letter}0-9\._\- '()œ]+=/iu; //templates with these properties are asking for trouble -var reserved = { +const reserved = { template: true, list: true, prototype: true -}; //turn 'key=val' into {key:key, val:val} - -var parseKey = function parseKey(str) { - var parts = str.split('='); - var key = parts[0] || ''; +}; +/** + * @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] || ''; key = key.toLowerCase().trim(); - var val = parts.slice(1).join('='); //don't let it be called 'template'.. + let val = parts.slice(1).join('='); //don't let it be called 'template'.. if (reserved.hasOwnProperty(key)) { key = '_' + key; @@ -3497,47 +3031,54 @@ var parseKey = function parseKey(str) { key: key, val: val.trim() }; -}; //turn [a, b=v, c] into {'1':a, b:v, '2':c} +}; +/** + * 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 {object} and object with the names as the keys and the values as the values + */ -var keyMaker = function keyMaker(arr, order) { - var o = 0; - return arr.reduce(function (h, str) { - str = (str || '').trim(); //support named keys - 'foo=bar' +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) { - var res = parseKey(str); + let res = parseKey(str); if (res.key) { h[res.key] = res.val; return h; } - } //try a key from given 'order' names - + } //if the current index is present in the order array then we have a name for the key - if (order && order[o]) { - var key = order[o]; //here goes! + 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; }, {}); }; var _02KeyMaker = keyMaker; -var whoCares = { +const whoCares = { classname: true, style: true, align: true, margin: true, left: true, - "break": true, + break: true, boxsize: true, framestyle: true, item_style: true, @@ -3547,8 +3088,8 @@ var whoCares = { colwidth: true }; //remove wiki-cruft & some styling info from templates -var cleanup = function cleanup(obj) { - Object.keys(obj).forEach(function (k) { +const cleanup$1 = function (obj) { + Object.keys(obj).forEach(k => { if (whoCares[k.toLowerCase()] === true) { delete obj[k]; } //remove empty values, too @@ -3561,12 +3102,20 @@ var cleanup = function cleanup(obj) { return obj; }; -var _03Cleanup = cleanup; +var _03Cleanup = cleanup$1; -var parseSentence = _04Sentence.fromText; // most templates just want plaintext... +const parseSentence$7 = _04Sentence.fromText; +/** + * most templates just want plaintext... + * + * @private + * @param {str} str + * @param {'json' | 'raw'} [fmt] + * @returns {string} text + */ -var makeFormat = function makeFormat(str, fmt) { - var s = parseSentence(str); //support various output formats +const makeFormat = function (str, fmt) { + let s = parseSentence$7(str); //support various output formats if (fmt === 'json') { return s.json(); @@ -3576,21 +3125,29 @@ var makeFormat = function makeFormat(str, fmt) { return s.text(); -}; // - +}; +/** + * 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 + */ -var parser = function parser(tmpl, order, fmt) { - order = order || []; //renomove {{}}'s +const parser = function (tmpl, order = [], fmt) { + //remove {{}}'s and split based on pipes tmpl = _strip(tmpl || ''); - var arr = _01PipeSplitter(tmpl); //get template name + let arr = _01PipeSplitter(tmpl); //get template name - var name = arr.shift(); //name each value + let name = arr.shift(); //name each value - var obj = _02KeyMaker(arr, order); //remove wiki-junk + let obj = _02KeyMaker(arr, order); //remove wiki-junk obj = _03Cleanup(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) { @@ -3599,11 +3156,9 @@ var parser = function parser(tmpl, order, fmt) { delete obj['1']; } - Object.keys(obj).forEach(function (k) { + Object.keys(obj).forEach(k => { if (k === 'list') { - obj[k] = obj[k].map(function (v) { - return makeFormat(v, fmt); - }); + obj[k] = obj[k].map(v => makeFormat(v, fmt)); return; } @@ -3617,22 +3172,26 @@ var parser = function parser(tmpl, order, fmt) { return obj; }; -var parse$3 = parser; +var toJSON = parser; -var Reference = function Reference(data) { +const Reference = function (data, wiki) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; -var methods$5 = { - title: function title() { - var data = this.data; +const methods$5 = { + title: function () { + let data = this.data; return data.title || data.encyclopedia || data.author || ''; }, - links: function links(n) { - var arr = []; + links: function (n) { + let arr = []; if (typeof n === 'number') { return arr[n]; @@ -3645,20 +3204,20 @@ var methods$5 = { //grab a link like .links('Fortnight') n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it - var link = arr.find(function (o) { - return o.page() === n; - }); + let link = arr.find(o => o.page() === n); return link === undefined ? [] : [link]; } return arr || []; }, - text: function text() { + text: function () { return ''; //nah, skip these. }, - json: function json() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var json = this.data || {}; //encode them, for mongodb + wikitext: function () { + return this.wiki || ''; + }, + json: function (options = {}) { + let json = this.data || {}; //encode them, for mongodb if (options.encode === true) { json = Object.assign({}, json); @@ -3668,68 +3227,80 @@ var methods$5 = { return json; } }; -Object.keys(methods$5).forEach(function (k) { +Object.keys(methods$5).forEach(k => { Reference.prototype[k] = methods$5[k]; }); var Reference_1 = Reference; -var parseSentence$1 = _04Sentence.fromText; //structured Cite templates - {{Cite.. +const parseSentence$6 = _04Sentence.fromText; //structured Cite templates - {{Cite.. -var hasCitation = function hasCitation(str) { +const hasCitation = function (str) { return /^ *?\{\{ *?(cite|citation)/i.test(str) && /\}\} *?$/.test(str) && /citation needed/i.test(str) === false; }; -var parseCitation = function parseCitation(tmpl) { - var obj = parse$3(tmpl); +const parseCitation = function (tmpl) { + let obj = toJSON(tmpl); obj.type = obj.template.replace(/cite /, ''); obj.template = 'citation'; return obj; }; //handle unstructured ones - some text -var parseInline = function parseInline(str) { - var obj = parseSentence$1(str) || {}; +const parseInline = function (str) { + let obj = parseSentence$6(str) || {}; return { template: 'citation', type: 'inline', data: {}, inline: obj }; -}; // parse xml tags +}; //parse xml tags -var parseRefs = function parseRefs(section) { - var references = []; - var wiki = section.wiki; - wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (a, tmpl) { +const parseRefs = function (section) { + let references = []; + let wiki = section._wiki; + wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { - var obj = parseCitation(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 ' '; - }); // + }); // - wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' '); // + 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)) { - var obj = parseCitation(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 ' '; @@ -3737,19 +3308,35 @@ var parseRefs = function parseRefs(section) { wiki = wiki.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g, ' '); // - section.references = references.map(function (r) { - return new Reference_1(r); - }); - section.wiki = wiki; + section._references = references.map(obj => new Reference_1(obj.json, obj.wiki)); + section._wiki = wiki; }; var reference = parseRefs; -var parseSentence$2 = _04Sentence.fromText; -var heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; //interpret depth, title of headings like '==See also==' - -var parseHeading = function parseHeading(section, str) { - var m = str.match(heading_reg); +const { + trim_whitespace +} = helpers; +const parseSentence$5 = _04Sentence.fromText; +const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; +/** + * @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) { section.title = ''; @@ -3757,20 +3344,20 @@ var parseHeading = function parseHeading(section, str) { return section; } - var title = m[2] || ''; - title = parseSentence$2(title).text(); //amazingly, you can see inline {{templates}} in this text, too + let title = m[2] || ''; + title = parseSentence$5(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..) - var obj = { - wiki: title + let obj = { + _wiki: title }; reference(obj); - title = obj.wiki; //trim leading/trailing whitespace + title = obj._wiki; //trim leading/trailing whitespace - title = helpers.trim_whitespace(title); - var depth = 0; + title = trim_whitespace(title); + let depth = 0; if (m[1]) { depth = m[1].length - 2; @@ -3784,8 +3371,8 @@ var parseHeading = function parseHeading(section, str) { var heading = parseHeading; //remove top-bottoms -var cleanup$1 = function cleanup(lines) { - lines = lines.filter(function (line) { +const cleanup = function (lines) { + lines = lines.filter(line => { //a '|+' row is a 'table caption', remove it. return line && /^\|\+/.test(line) !== true; }); @@ -3806,13 +3393,13 @@ var cleanup$1 = function cleanup(lines) { }; //turn newline seperated into '|-' seperated -var findRows = function findRows(lines) { - var rows = []; - var row = []; - lines = cleanup$1(lines); +const findRows = function (lines) { + let rows = []; + let row = []; + lines = cleanup(lines); - for (var i = 0; i < lines.length; i += 1) { - var line = lines[i]; //'|-' is a row-seperator + for (let i = 0; i < lines.length; i += 1) { + let line = lines[i]; //'|-' is a row-seperator if (/^\|-/.test(line) === true) { //okay, we're done the row @@ -3828,7 +3415,7 @@ var findRows = function findRows(lines) { line.shift(); } - line.forEach(function (l) { + line.forEach(l => { l = l.replace(/^\| */, ''); l = l.trim(); row.push(l); @@ -3846,16 +3433,16 @@ var findRows = function findRows(lines) { var _findRows = findRows; -var getRowSpan = /.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/; -var getColSpan = /.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/; //colspans stretch ←left/right→ +const getRowSpan = /.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/; +const getColSpan = /.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/; //colspans stretch ←left/right→ -var doColSpan = function doColSpan(rows) { - rows.forEach(function (row) { - row.forEach(function (str, c) { - var m = str.match(getColSpan); +const doColSpan = function (rows) { + rows.forEach(row => { + row.forEach((str, c) => { + let m = str.match(getColSpan); if (m !== null) { - var num = parseInt(m[1], 10); //...maybe if num is so big, and centered, remove it? + let num = parseInt(m[1], 10); //...maybe if num is so big, and centered, remove it? // if (num > 3) { // rows[r] = [] // return @@ -3864,31 +3451,29 @@ var doColSpan = function doColSpan(rows) { row[c] = str.replace(getColSpan, ''); - for (var i = 1; i < num; i += 1) { + for (let i = 1; i < num; i += 1) { row.splice(c + 1, 0, ''); } } }); }); - rows = rows.filter(function (r) { - return r.length > 0; - }); + rows = rows.filter(r => r.length > 0); return rows; }; //colspans stretch up/down -var doRowSpan = function doRowSpan(rows) { - rows.forEach(function (row, r) { - row.forEach(function (str, c) { - var m = str.match(getRowSpan); +const doRowSpan = function (rows) { + rows.forEach((row, r) => { + row.forEach((str, c) => { + let m = str.match(getRowSpan); if (m !== null) { - var num = parseInt(m[1], 10); //copy this cell down n rows + let num = parseInt(m[1], 10); //copy this cell down n rows str = str.replace(getRowSpan, ''); row[c] = str; - for (var i = r + 1; i < r + num; i += 1) { + for (let i = r + 1; i < r + num; i += 1) { if (!rows[i]) { break; } @@ -3902,7 +3487,7 @@ var doRowSpan = function doRowSpan(rows) { }; // -var handleSpans = function handleSpans(rows) { +const handleSpans = function (rows) { rows = doColSpan(rows); rows = doRowSpan(rows); return rows; @@ -3910,10 +3495,10 @@ var handleSpans = function handleSpans(rows) { var _spans = handleSpans; -var parseSentence$3 = _04Sentence.fromText; -var isHeading = /^!/; //common ones +const parseSentence$4 = _04Sentence.fromText; +const isHeading = /^!/; //common ones -var headings = { +const headings$1 = { name: true, age: true, born: true, @@ -3926,8 +3511,8 @@ var headings = { number: true }; //additional table-cruft to remove before parseLine method -var cleanText = function cleanText(str) { - str = parseSentence$3(str).text(); //anything before a single-pipe is styling, so remove it +const cleanText = function (str) { + str = parseSentence$4(str).text(); //anything before a single-pipe is styling, so remove it if (str.match(/\|/)) { str = str.replace(/.+\| ?/, ''); //class="unsortable"|title @@ -3935,17 +3520,17 @@ var cleanText = function cleanText(str) { str = str.replace(/style=['"].*?["']/, ''); //'!' is used as a highlighed-column - str = str.replace(/^!/, ''); - str = str.trim(); + str = str.replace(/^!/, ''); // str = str.replace(/\(.*?\)/, '') + + str = str.trim(); // str = str.toLowerCase() + return str; }; -var skipSpanRow = function skipSpanRow(row) { +const skipSpanRow = function (row) { row = row || []; - var len = row.length; - var hasTxt = row.filter(function (str) { - return str; - }).length; //does it have 3 empty spaces? + let len = row.length; + let hasTxt = row.filter(str => str).length; //does it have 3 empty spaces? if (len - hasTxt > 3) { return true; @@ -3955,8 +3540,8 @@ var skipSpanRow = function skipSpanRow(row) { }; //remove non-header span rows -var removeMidSpans = function removeMidSpans(rows) { - rows = rows.filter(function (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; } @@ -3967,18 +3552,17 @@ var removeMidSpans = function removeMidSpans(rows) { }; //'!' starts a header-row -var findHeaders = function findHeaders() { - var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var headers = []; // is the first-row just a ton of colspan? +const findHeaders = function (rows = []) { + let headers = []; // is the first-row just a ton of colspan? if (skipSpanRow(rows[0])) { rows.shift(); } - var first = rows[0]; + let first = rows[0]; if (first && first[0] && first[1] && (/^!/.test(first[0]) || /^!/.test(first[1]))) { - headers = first.map(function (h) { + headers = first.map(h => { h = h.replace(/^\! */, ''); h = cleanText(h); return h; @@ -3990,7 +3574,7 @@ var findHeaders = function findHeaders() { first = rows[0]; if (first && first[0] && first[1] && /^!/.test(first[0]) && /^!/.test(first[1])) { - first.forEach(function (h, i) { + first.forEach((h, i) => { h = h.replace(/^\! */, ''); h = cleanText(h); @@ -4005,11 +3589,11 @@ var findHeaders = function findHeaders() { }; //turn headers, array into an object -var parseRow = function parseRow(arr, headers) { - var row = {}; - arr.forEach(function (str, i) { - var h = headers[i] || 'col' + (i + 1); - var s = parseSentence$3(str); +const parseRow = function (arr, headers) { + let row = {}; + arr.forEach((str, i) => { + let h = headers[i] || 'col' + (i + 1); + let s = parseSentence$4(str); s.text(cleanText(s.text())); row[h] = s; }); @@ -4017,22 +3601,22 @@ var parseRow = function parseRow(arr, headers) { }; //should we use the first row as a the headers? -var firstRowHeader = function firstRowHeader(rows) { +const firstRowHeader = function (rows) { if (rows.length <= 3) { return []; } - var headers = rows[0].slice(0); - headers = headers.map(function (h) { + let headers = rows[0].slice(0); + headers = headers.map(h => { h = h.replace(/^\! */, ''); - h = parseSentence$3(h).text(); + h = parseSentence$4(h).text(); h = cleanText(h); h = h.toLowerCase(); return h; }); - for (var i = 0; i < headers.length; i += 1) { - if (headings.hasOwnProperty(headers[i])) { + for (let i = 0; i < headers.length; i += 1) { + if (headings$1.hasOwnProperty(headers[i])) { rows.shift(); return headers; } @@ -4042,15 +3626,11 @@ var firstRowHeader = function firstRowHeader(rows) { }; //turn a {|...table string into an array of arrays -var parseTable = function parseTable(wiki) { - var lines = wiki.replace(/\r/g, '').replace(/\n(\s*[^|!{\s])/g, ' $1') //remove unecessary newlines - .split(/\n/).map(function (l) { - return l.trim(); - }); - var rows = _findRows(lines); - rows = rows.filter(function (r) { - return r; - }); +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()); + let rows = _findRows(lines); + rows = rows.filter(r => r); if (rows.length === 0) { return []; @@ -4061,11 +3641,11 @@ var parseTable = function parseTable(wiki) { rows = _spans(rows); //grab the header rows - var headers = findHeaders(rows); + let headers = findHeaders(rows); if (!headers || headers.length <= 1) { headers = firstRowHeader(rows); - var want = rows[rows.length - 1] || []; //try the second row + let want = rows[rows.length - 1] || []; //try the second row if (headers.length <= 1 && want.length > 2) { headers = firstRowHeader(rows.slice(1)); @@ -4077,18 +3657,18 @@ var parseTable = function parseTable(wiki) { } //index each column by it's header - var table = rows.map(function (arr) { + let table = rows.map(arr => { return parseRow(arr, headers); }); return table; }; -var parse$4 = parseTable; +var parse$5 = parseTable; -var toJson$4 = function toJson(tables, options) { - return tables.map(function (table) { - var row = {}; - Object.keys(table).forEach(function (k) { +const toJson$2 = function (tables, options) { + return tables.map(table => { + let row = {}; + Object.keys(table).forEach(k => { row[k] = table[k].json(); //(they're sentence objects) }); //encode them, for mongodb @@ -4100,74 +3680,121 @@ var toJson$4 = function toJson(tables, options) { }); }; -var toJson_1$1 = toJson$4; +var toJson_1$2 = toJson$2; -var defaults$8 = {}; +const defaults$6 = {}; -var Table = function Table(data) { +const normalize$1 = function (key = '') { + key = key.toLowerCase(); + key = key.replace(/[_-]/g, ' '); + key = key.replace(/\(.*?\)/, ''); + key = key.trim(); + return key; +}; + +const Table = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, '_wiki', { + enumerable: false, + value: wiki + }); }; -var methods$6 = { - links: function links(n) { - var links = []; - this.data.forEach(function (r) { - Object.keys(r).forEach(function (k) { +const methods$4 = { + links(n) { + let links = []; + this.data.forEach(r => { + Object.keys(r).forEach(k => { links = links.concat(r[k].links()); }); - }); //grab a specific link.. + }); - if (typeof n === 'number') { - return links[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 - var link = links.find(function (o) { - return o.page() === n; - }); + let link = links.find(o => o.page() === n); return link === undefined ? [] : [link]; } return links; }, - keyValue: function keyValue(options) { - var rows = this.json(options); - rows.forEach(function (row) { - Object.keys(row).forEach(function (k) { + + get(keys) { + // 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).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; + }, {}); + }); + }, + + keyValue(options) { + let rows = this.json(options); + rows.forEach(row => { + Object.keys(row).forEach(k => { row[k] = row[k].text; }); }); return rows; }, - json: function json(options) { - options = setDefaults_1(options, defaults$8); - return toJson_1$1(this.data, options); + + json(options) { + options = setDefaults_1(options, defaults$6); + return toJson_1$2(this.data, options); }, - text: function text() { + + text() { return ''; + }, + + wikitext() { + return this._wiki || ''; } + }; -methods$6.keyvalue = methods$6.keyValue; -methods$6.keyval = methods$6.keyValue; -Object.keys(methods$6).forEach(function (k) { - Table.prototype[k] = methods$6[k]; +methods$4.keyvalue = methods$4.keyValue; +methods$4.keyval = methods$4.keyValue; +Object.keys(methods$4).forEach(k => { + Table.prototype[k] = methods$4[k]; }); var Table_1 = Table; -var openReg = /^\s*{\|/; -var closeReg = /^\s*\|}/; //tables can be recursive, so looky-here. +const openReg = /^\s*{\|/; +const closeReg = /^\s*\|}/; //tables can be recursive, so looky-here. -var findTables = function findTables(section) { - var list = []; - var wiki = section.wiki; - var lines = wiki.split('\n'); - var stack = []; +const findTables = function (section) { + let list = []; + let wiki = section._wiki; + let lines = wiki.split('\n'); + let stack = []; - for (var i = 0; i < lines.length; i += 1) { + for (let i = 0; i < lines.length; i += 1) { //start a table if (openReg.test(lines[i]) === true) { stack.push(lines[i]); @@ -4177,10 +3804,8 @@ var findTables = function findTables(section) { if (closeReg.test(lines[i]) === true) { stack[stack.length - 1] += '\n' + lines[i]; - - var _table = stack.pop(); - - list.push(_table); + let table = stack.pop(); + list.push(table); continue; } //keep-going on one @@ -4191,157 +3816,164 @@ var findTables = function findTables(section) { } //work-em together for a Table class - var tables = []; - list.forEach(function (str) { + 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, ''); - var data = parse$4(str); + let data = parse$5(str); if (data && data.length > 0) { - tables.push(new Table_1(data)); + tables.push(new Table_1(data, str)); } } }); if (tables.length > 0) { - section.tables = tables; + section._tables = tables; } - section.wiki = wiki; + section._wiki = wiki; }; var table = findTables; -var defaults$9 = { +const defaults$5 = { sentences: true }; -var toJson$5 = function toJson(p, options) { - options = setDefaults_1(options, defaults$9); - var data = {}; +const toJson$1 = function (p, options) { + options = setDefaults_1(options, defaults$5); + let data = {}; if (options.sentences === true) { - data.sentences = p.sentences().map(function (s) { - return s.json(options); - }); + data.sentences = p.sentences().map(s => s.json(options)); } return data; }; -var toJson_1$2 = toJson$5; +var toJson_1$1 = toJson$1; -var defaults$a = { +const defaults$4 = { sentences: true, lists: true, images: true }; -var Paragraph = function Paragraph(data) { +const Paragraph = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); }; -var methods$7 = { - sentences: function sentences(num) { - if (typeof num === 'number') { - return this.data.sentences[num]; - } - +const methods$3 = { + sentences: function () { return this.data.sentences || []; }, - references: function references(num) { - if (typeof num === 'number') { - return this.data.references[num]; - } - + references: function () { return this.data.references; }, - lists: function lists(num) { - if (typeof num === 'number') { - return this.data.lists[num]; - } - + lists: function () { return this.data.lists; }, - images: function images(num) { - if (typeof num === 'number') { - return this.data.images[num]; - } + images() { return this.data.images || []; }, - links: function links(n) { - var arr = []; - this.sentences().forEach(function (s) { - arr = arr.concat(s.links(n)); + + links: function (clue) { + let arr = []; + this.sentences().forEach(s => { + arr = arr.concat(s.links(clue)); }); - if (typeof n === 'number') { - return arr[n]; - } else if (typeof n === 'string') { + if (typeof clue === 'string') { //grab a specific link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it - var link = arr.find(function (o) { - return o.page() === n; - }); + let link = arr.find(o => o.page() === clue); return link === undefined ? [] : [link]; } return arr || []; }, - interwiki: function interwiki(num) { - var arr = []; - this.sentences().forEach(function (s) { + + interwiki() { + let arr = []; + this.sentences().forEach(s => { arr = arr.concat(s.interwiki()); }); - - if (typeof num === 'number') { - return arr[num]; - } - return arr || []; }, - text: function text(options) { - options = setDefaults_1(options, defaults$a); - var str = this.sentences().map(function (s) { - return s.text(options); - }).join(' '); - this.lists().forEach(function (list) { + + text: function (options) { + options = setDefaults_1(options, defaults$4); + let str = this.sentences().map(s => s.text(options)).join(' '); + this.lists().forEach(list => { str += '\n' + list.text(); }); return str; }, - json: function json(options) { - options = setDefaults_1(options, defaults$a); - return toJson_1$2(this, options); + json: function (options) { + options = setDefaults_1(options, defaults$4); + return toJson_1$1(this, options); + }, + wikitext: function () { + return this.data.wiki; } }; -methods$7.citations = methods$7.references; -Object.keys(methods$7).forEach(function (k) { - Paragraph.prototype[k] = methods$7[k]; +methods$3.citations = methods$3.references; +Object.keys(methods$3).forEach(k => { + Paragraph.prototype[k] = methods$3[k]; +}); // aliases + +const singular$2 = { + sentences: 'sentence', + references: 'reference', + citation: 'citations', + lists: 'list', + images: 'image', + links: 'link' +}; +Object.keys(singular$2).forEach(k => { + let sing = singular$2[k]; + + Paragraph.prototype[sing] = function (clue) { + let arr = this[k](clue); + + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0]; + }; }); var Paragraph_1 = Paragraph; -//find all the pairs of '[[...[[..]]...]]' in the text -//used to properly root out recursive template calls, [[.. [[...]] ]] -//basically just adds open tags, and subtracts closing tags -var opener = '['; -var closer = ']'; +const opener = '['; +const closer = ']'; +/** + * + * find all the pairs of '[[...[[..]]...]]' in the text + * used to properly root out recursive template calls, [[.. [[...]] ]] + * basically just adds open tags, and subtracts closing tags + * + * @private + * @param {string} text the text in which is searched in + * @returns {string[]} all the links in the text + */ function nested_find(text) { - var out = []; - var last = []; - var chars = text.split(''); - var open = 0; + let out = []; + let last = []; + const chars = text.split(''); + let open = 0; - for (var i = 0; i < chars.length; i++) { - var c = text[i]; //increment open tag + for (let i = 0; i < chars.length; i++) { + const c = text[i]; //increment open tag if (c === opener) { open += 1; @@ -4353,8 +3985,8 @@ function nested_find(text) { open = 0; } } else if (last.length === 0) { - // If we're not inside of a pair of delimiters, we can discard the current letter. - // The return of this function is only used to extract images. + //If we're not inside of a pair of delimiters, we can discard the current letter. + //The return of this function is only used to extract images. continue; } @@ -4362,10 +3994,10 @@ function nested_find(text) { if (open === 0 && last.length > 0) { //first, fix botched parse - var open_count = 0; - var close_count = 0; + let open_count = 0; + let close_count = 0; - for (var j = 0; j < last.length; j++) { + for (let j = 0; j < last.length; j++) { if (last[j] === opener) { open_count++; } else if (last[j] === closer) { @@ -4389,13 +4021,13 @@ function nested_find(text) { var nested_find_1 = nested_find; -var parseSentence$4 = _04Sentence.fromText; //regexes: +const parseSentence$3 = _04Sentence.fromText; //regexes: -var isFile = new RegExp('(' + i18n$1.images.join('|') + '):', 'i'); -var fileNames = "(".concat(i18n$1.images.join('|'), ")"); -var file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax +const isFile = new RegExp('(' + i18n.images.join('|') + '):', 'i'); +let fileNames = `(${i18n.images.join('|')})`; +const file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax -var imgLayouts = { +const imgLayouts = { thumb: true, thumbnail: true, border: true, @@ -4409,48 +4041,47 @@ var imgLayouts = { baseline: true, middle: true, sub: true, - "super": true + super: true }; //images are usually [[image:my_pic.jpg]] -var oneImage = function oneImage(img, doc) { - var m = img.match(file_reg); +const oneImage = function (img, doc) { + let m = img.match(file_reg); if (m === null || !m[2]) { return null; } - var file = "".concat(m[1], ":").concat(m[2] || ''); + let file = `${m[1]}:${m[2] || ''}`; file = file.trim(); //titlecase it - var title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores + let title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores title = title.replace(/ /g, '_'); if (title) { - var obj = { + let obj = { file: file, - lang: doc.lang, - domain: doc.domain + lang: doc._lang, + domain: doc._domain, + wiki: img }; //try to grab other metadata, too img = img.replace(/^\[\[/, ''); img = img.replace(/\]\]$/, ''); //https://en.wikipedia.org/wiki/Wikipedia:Extended_image_syntax - // - [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] + //- [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] - var imgData = parse$3(img); - var arr = imgData.list || []; //parse-out alt text, if explicitly given + let imgData = toJSON(img); + let arr = imgData.list || []; //parse-out alt text, if explicitly given if (imgData.alt) { obj.alt = imgData.alt; } //remove 'thumb' and things - arr = arr.filter(function (str) { - return imgLayouts.hasOwnProperty(str) === false; - }); + arr = arr.filter(str => imgLayouts.hasOwnProperty(str) === false); if (arr[arr.length - 1]) { - obj.caption = parseSentence$4(arr[arr.length - 1]); + obj.caption = parseSentence$3(arr[arr.length - 1]); } return new Image_1(obj); @@ -4459,14 +4090,14 @@ var oneImage = function oneImage(img, doc) { return null; }; -var parseImages = function parseImages(paragraph, doc) { - var wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff +const parseImages = function (paragraph, doc) { + let wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff - var matches = nested_find_1(wiki); + let matches = nested_find_1(wiki); matches.forEach(function (s) { if (isFile.test(s) === true) { paragraph.images = paragraph.images || []; - var img = oneImage(s, doc); + let img = oneImage(s, doc); if (img) { paragraph.images.push(img); @@ -4480,80 +4111,84 @@ var parseImages = function parseImages(paragraph, doc) { var image = parseImages; -var defaults$b = {}; +const defaults$3 = {}; -var toText = function toText(list, options) { - return list.map(function (s) { - var str = s.text(options); +const toText$2 = (list, options) => { + return list.map(s => { + let str = s.text(options); return ' * ' + str; }).join('\n'); }; -var List = function List(data) { +const List = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; -var methods$8 = { - lines: function lines() { +const methods$2 = { + lines() { return this.data; }, - links: function links(n) { - var links = []; - this.lines().forEach(function (s) { + + links(clue) { + let links = []; + this.lines().forEach(s => { links = links.concat(s.links()); }); - if (typeof n === 'number') { - return links[n]; - } else if (typeof n === 'string') { + if (typeof clue === 'string') { //grab a link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it - var link = links.find(function (o) { - return o.page() === n; - }); + let link = links.find(o => o.page() === clue); return link === undefined ? [] : [link]; } return links; }, - json: function json(options) { - options = setDefaults_1(options, defaults$b); - return this.lines().map(function (s) { - return s.json(options); - }); + + json(options) { + options = setDefaults_1(options, defaults$3); + return this.lines().map(s => s.json(options)); + }, + + text() { + return toText$2(this.data); }, - text: function text() { - return toText(this.data); + + wikitext() { + return this.wiki || ''; } + }; -Object.keys(methods$8).forEach(function (k) { - List.prototype[k] = methods$8[k]; +Object.keys(methods$2).forEach(k => { + List.prototype[k] = methods$2[k]; }); var List_1 = List; -var parseSentence$5 = _04Sentence.fromText; -var list_reg = /^[#\*:;\|]+/; -var bullet_reg = /^\*+[^:,\|]{4}/; -var number_reg = /^ ?\#[^:,\|]{4}/; -var has_word = /[a-z_0-9\]\}]/i; // does it start with a bullet point or something? +const parseSentence$2 = _04Sentence.fromText; +const list_reg = /^[#\*:;\|]+/; +const bullet_reg = /^\*+[^:,\|]{4}/; +const number_reg = /^ ?\#[^:,\|]{4}/; +const has_word = /[a-z_0-9\]\}]/i; // does it start with a bullet point or something? -var isList = function isList(line) { +const isList = function (line) { return list_reg.test(line) || bullet_reg.test(line) || number_reg.test(line); }; //make bullets/numbers into human-readable *'s -var cleanList = function cleanList(list) { - var number = 1; - list = list.filter(function (l) { - return l; - }); +const cleanList = function (list) { + let number = 1; + list = list.filter(l => l); - for (var i = 0; i < list.length; i++) { - var line = list[i]; //add # numberings formatting + for (let i = 0; i < list.length; i++) { + let line = list[i]; //add # numberings formatting if (line.match(number_reg)) { line = line.replace(/^ ?#*/, number + ') '); @@ -4564,16 +4199,16 @@ var cleanList = function cleanList(list) { line = line.replace(list_reg, ''); } - list[i] = parseSentence$5(line); + list[i] = parseSentence$2(line); } return list; }; -var grabList = function grabList(lines, i) { - var sub = []; +const grabList = function (lines, i) { + let sub = []; - for (var o = i; o < lines.length; o++) { + for (let o = i; o < lines.length; o++) { if (isList(lines[o])) { sub.push(lines[o]); } else { @@ -4581,23 +4216,20 @@ var grabList = function grabList(lines, i) { } } - sub = sub.filter(function (a) { - return a && has_word.test(a); - }); + sub = sub.filter(a => a && has_word.test(a)); sub = cleanList(sub); return sub; }; -var parseList = function parseList(paragraph) { - var wiki = paragraph.wiki; - var lines = wiki.split(/\n/g); // lines = lines.filter(l => has_word.test(l)); +const parseList = function (paragraph) { + let wiki = paragraph.wiki; + let lines = wiki.split(/\n/g); + let lists = []; + let theRest = []; - var lists = []; - var theRest = []; - - for (var i = 0; i < lines.length; i++) { + for (let i = 0; i < lines.length; i++) { if (isList(lines[i])) { - var sub = grabList(lines, i); + let sub = grabList(lines, i); if (sub.length > 0) { lists.push(sub); @@ -4608,178 +4240,55 @@ var parseList = function parseList(paragraph) { } } - paragraph.lists = lists.map(function (l) { - return new List_1(l); - }); + paragraph.lists = lists.map(l => new List_1(l, wiki)); paragraph.wiki = theRest.join('\n'); }; -var list = parseList; +var list$1 = parseList; -var parseSentences = _04Sentence.byParagraph; -var twoNewLines = /\r?\n\r?\n/; -var parse$5 = { +const parseSentences = _04Sentence.byParagraph; +const twoNewLines = /\r?\n\r?\n/; +const parse$4 = { image: image, - list: list + list: list$1 }; -var parseParagraphs = function parseParagraphs(section, doc) { - var wiki = section.wiki; - var paragraphs = wiki.split(twoNewLines); //don't create empty paragraphs +const parseParagraphs = function (section, doc) { + let wiki = section._wiki; + let paragraphs = wiki.split(twoNewLines); //don't create empty paragraphs - paragraphs = paragraphs.filter(function (p) { - return p && p.trim().length > 0; - }); - paragraphs = paragraphs.map(function (str) { - var paragraph = { + paragraphs = paragraphs.filter(p => p && p.trim().length > 0); + paragraphs = paragraphs.map(str => { + let paragraph = { wiki: str, lists: [], sentences: [], images: [] }; //parse the lists - parse$5.list(paragraph); // parse images + parse$4.list(paragraph); //parse images - parse$5.image(paragraph, doc); //parse the sentences + parse$4.image(paragraph, doc); //parse the sentences parseSentences(paragraph); return new Paragraph_1(paragraph); }); - section.wiki = wiki; - section.paragraphs = paragraphs; + section._wiki = wiki; + section._paragraphs = paragraphs; }; var _03Paragraph = parseParagraphs; -var toJson$6 = function toJson(infobox, options) { - var json = Object.keys(infobox.data).reduce(function (h, k) { - if (infobox.data[k]) { - h[k] = infobox.data[k].json(); - } - - return h; - }, {}); //support mongo-encoding keys - - if (options.encode === true) { - json = encode.encodeObj(json); - } - - return json; -}; - -var toJson_1$3 = toJson$6; - -var normalize = function normalize(str) { - str = str.toLowerCase(); - str = str.replace(/[-_]/g, ' '); - return str.trim(); -}; //a formal key-value data table about a topic - - -var Infobox = function Infobox(obj) { - this._type = obj.type; - this.domain = obj.domain; - Object.defineProperty(this, 'data', { - enumerable: false, - value: obj.data - }); -}; - -var methods$9 = { - type: function type() { - return this._type; - }, - links: function links(n) { - var _this = this; - - var arr = []; - Object.keys(this.data).forEach(function (k) { - _this.data[k].links().forEach(function (l) { - return arr.push(l); - }); - }); - - 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 - - var link = arr.find(function (o) { - return o.page() === n; - }); - return link === undefined ? [] : [link]; - } - - return arr; - }, - image: function image() { - var s = this.get('image') || this.get('image2') || this.get('logo'); - - if (!s) { - return null; - } - - var obj = s.json(); - obj.file = obj.text; - obj.text = ''; - obj.domain = this.domain; // add domain information for image - - return new Image_1(obj); - }, - get: function get() { - var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - key = normalize(key); - var keys = Object.keys(this.data); - - for (var i = 0; i < keys.length; i += 1) { - var tmp = normalize(keys[i]); - - if (key === tmp) { - return this.data[keys[i]]; - } - } - - return null; - }, - text: function text() { - return ''; - }, - json: function json(options) { - options = options || {}; - return toJson_1$3(this, options); - }, - keyValue: function keyValue() { - var _this2 = this; - - return Object.keys(this.data).reduce(function (h, k) { - if (_this2.data[k]) { - h[k] = _this2.data[k].text(); - } - - return h; - }, {}); - } -}; //aliases +const open = '{'; +const close = '}'; //grab all first-level recursions of '{{...}}' -Object.keys(methods$9).forEach(function (k) { - Infobox.prototype[k] = methods$9[k]; -}); -Infobox.prototype.data = Infobox.prototype.keyValue; -Infobox.prototype.template = Infobox.prototype.type; -Infobox.prototype.images = Infobox.prototype.image; -var Infobox_1 = Infobox; - -var open = '{'; -var close = '}'; //grab all first-level recursions of '{{...}}' +const findFlat = function (wiki) { + let depth = 0; + let list = []; + let carry = []; -var findFlat = function findFlat(wiki) { - var depth = 0; - var list = []; - var carry = []; - - for (var i = wiki.indexOf(open); i !== -1 && i < wiki.length; depth > 0 ? i++ : i = wiki.indexOf(open, i + 1)) { - var c = wiki[i]; //open it + for (let i = wiki.indexOf(open); i !== -1 && i < wiki.length; depth > 0 ? i++ : i = wiki.indexOf(open, i + 1)) { + let c = wiki[i]; //open it if (c === open) { depth += 1; @@ -4792,7 +4301,7 @@ var findFlat = function findFlat(wiki) { if (depth === 0) { carry.push(c); - var tmpl = carry.join(''); + let tmpl = carry.join(''); carry = []; //last check if (/\{\{/.test(tmpl) && /\}\}/.test(tmpl)) { @@ -4817,12 +4326,12 @@ var findFlat = function findFlat(wiki) { return list; }; -var flat = findFlat; +var _02Flat = findFlat; //templates are usually '{{name|stuff}}' -var getName = function getName(tmpl) { - var name = null; //{{name|foo}} +const getName = function (tmpl) { + let name = null; //{{name|foo}} if (/^\{\{[^\n]+\|/.test(tmpl)) { name = (tmpl.match(/^\{\{(.+?)\|/) || [])[1]; @@ -4844,9 +4353,9 @@ var getName = function getName(tmpl) { var _getName = getName; -var hasTemplate = /\{\{/; +const hasTemplate = /\{\{/; -var parseTemplate = function parseTemplate(tmpl) { +const parseTemplate$1 = function (tmpl) { // this is some unexplained Lua thing tmpl = tmpl.replace(/#invoke:/, ''); return { @@ -4856,21 +4365,21 @@ var parseTemplate = function parseTemplate(tmpl) { }; }; -var doEach = function doEach(obj) { +const doEach = function (obj) { // peel-off top-level - var wiki = obj.body.substr(2); + let wiki = obj.body.substr(2); wiki = wiki.replace(/\}\}$/, ''); // get our child templates - obj.children = flat(wiki); - obj.children = obj.children.map(parseTemplate); + obj.children = _02Flat(wiki); + obj.children = obj.children.map(parseTemplate$1); if (obj.children.length === 0) { return obj; } // recurse through children - obj.children.forEach(function (ch) { - var inside = ch.body.substr(2); + obj.children.forEach(ch => { + let inside = ch.body.substr(2); if (hasTemplate.test(inside)) { return doEach(ch); //keep going @@ -4882,17 +4391,17 @@ var doEach = function doEach(obj) { }; // return a nested structure of all templates -var findTemplates = function findTemplates(wiki) { - var list = flat(wiki); - list = list.map(parseTemplate); +const findTemplates = function (wiki) { + let list = _02Flat(wiki); + list = list.map(parseTemplate$1); list = list.map(doEach); return list; }; -var find = findTemplates; +var _01Nested = findTemplates; //we explicitly ignore these, because they sometimes have resolve some data -var list$1 = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output +const list = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output 'anchor', 'defaultsort', 'use list-defined references', 'void', //https://en.wikipedia.org/wiki/Category:Protection_templates 'pp', 'pp-move-indef', 'pp-semi-indef', 'pp-vandalism', //https://en.wikipedia.org/wiki/Template:R 'r', //out-of-scope still - https://en.wikipedia.org/wiki/Template:Tag @@ -4916,21 +4425,13 @@ var list$1 = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible // 'weasel inline', //https://en.wikipedia.org/wiki/Template:End 'pope list end', 'shipwreck list end', 'starbox end', 'end box', 'end', 's-end']; -var ignore$1 = list$1.reduce(function (h, str) { +const ignore = list.reduce((h, str) => { h[str] = true; return h; }, {}); -var _ignore = ignore$1; - -var i18nReg = new RegExp('^(subst.)?(' + i18n$1.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones +var _ignore = ignore; -var startReg = /^infobox /i; -var endReg = / infobox$/i; -var yearIn = /$Year in [A-Z]/i; //some known ones from -// https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes -// and https://en.wikipedia.org/wiki/Category:Infobox_templates - -var known = { +var _infoboxes = { 'gnf protein box': true, 'automatic taxobox': true, 'chembox ': true, @@ -4966,11 +4467,19 @@ var known = { 'hockey team player': true, 'hockey team start': true, mlbbioret: true -}; // +}; + +const i18nReg = new RegExp('^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones -var isInfobox = function isInfobox(name) { - // known - if (known.hasOwnProperty(name) === true) { +const startReg = /^infobox /i; +const endReg = / infobox$/i; +const yearIn = /$Year in [A-Z]/i; //some known ones from +//https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes +//and https://en.wikipedia.org/wiki/Category:Infobox_templates + +const isInfobox = function (name) { + //known + if (_infoboxes.hasOwnProperty(name) === true) { return true; } @@ -4988,25 +4497,24 @@ var isInfobox = function isInfobox(name) { } return false; -}; //turns template data into good inforbox data +}; //turns template data into good infobox data -var fmtInfobox = function fmtInfobox() { - var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var m = obj.template.match(i18nReg); - var type = obj.template; +const fmtInfobox = function (obj = {}) { + let m = obj.template.match(i18nReg); + let type = obj.template; if (m && m[0]) { type = type.replace(m[0], ''); } type = type.trim(); - var infobox = { + let infobox = { template: 'infobox', type: type, data: obj }; - delete infobox.data.template; // already have this. + delete infobox.data.template; //already have this. delete infobox.data.list; //just in case! @@ -5018,1673 +4526,1604 @@ var _infobox = { format: fmtInfobox }; -var _months = [undefined, //1-based months.. :/ -'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - -var monthName = _months.reduce(function (h, str, i) { - if (i === 0) { - return h; - } +let aliases = { + 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' +}; //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'], + 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' //https://en.wikipedia.org/wiki/Template:URL + ] +}; // - 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] - h[str.toLowerCase()] = i; - return h; -}, {}); //parse year|month|date numbers +Object.keys(languages).forEach(lang => { + aliases['ipa-' + lang] = 'ipa'; + aliases['ipac-' + lang] = 'ipac'; +}); // add each alias in -var ymd = function ymd(arr) { - var obj = {}; - var units = ['year', 'month', 'date', 'hour', 'minute', 'second']; //parse each unit in sequence.. +Object.keys(multi).forEach(k => { + multi[k].forEach(str => { + aliases[str] = k; + }); +}); +var aliases_1 = aliases; + +var hardcoded = { + '·': '·', + 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: '▲' +}; + +let templates$9 = { + p1: 0, + p2: 1, + p3: 2, + resize: 1, + //https://en.wikipedia.org/wiki/Template:Resize + lang: 1, + 'rtl-lang': 1, + l: 2, + h: 1, + //https://en.wikipedia.org/wiki/Template:Hover_title + sort: 1 //https://en.wikipedia.org/wiki/Template:Sort - for (var i = 0; i < units.length; i += 1) { - //skip it - if (!arr[i] && arr[1] !== 0) { - continue; - } +}; //templates that we simply grab their insides as plaintext - var num = parseInt(arr[i], 10); +let zeros = ['defn', 'lino', //https://en.wikipedia.org/wiki/Template:Linum +'finedetail', //https://en.wikipedia.org/wiki/Template:Finedetail +'nobold', 'noitalic', 'nocaps', 'vanchor', //https://en.wikipedia.org/wiki/Template:Visible_anchor +'rnd', 'date', //Explictly-set dates - https://en.wikipedia.org/wiki/Template: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', //https://en.wikipedia.org/wiki/Template:Delink +'pre', 'var', 'mvar', 'pre2', 'code']; +zeros.forEach(k => { + templates$9[k] = 0; +}); //https://en.wikipedia.org/wiki/Category:Lang-x_templates - if (isNaN(num) === false) { - obj[units[i]] = num; //we good. - } else if (units[i] === 'month' && monthName.hasOwnProperty(arr[i])) { - //try for month-name, like 'january - var month = monthName[arr[i]]; - obj[units[i]] = month; - } else { - //we dead. so skip this unit - delete obj[units[i]]; - } - } //try for timezone,too ftw +Object.keys(languages).forEach(k => { + templates$9['lang-' + k] = 0; +}); +var shorthand$1 = templates$9; +const percentage = function (obj) { + if (!obj.numerator && !obj.denominator) { + return null; + } - var last = arr[arr.length - 1] || ''; - last = String(last); + let perc = Number(obj.numerator) / Number(obj.denominator); + perc *= 100; + let dec = Number(obj.decimals); - if (last.toLowerCase() === 'z') { - obj.tz = 'UTC'; - } else if (/[+-][0-9]+:[0-9]/.test(last)) { - obj.tz = arr[6]; + if (isNaN(dec)) { + dec = 1; } - return obj; -}; //zero-pad a number + perc = perc.toFixed(dec); + return Number(perc); +}; +const toNumber = function (str = '') { + if (typeof str === 'number') { + return str; + } -var pad = function pad(num) { - if (num < 10) { - return '0' + num; + str = str.replace(/,/g, ''); + str = str.replace(/−/g, '-'); + let num = Number(str); + + if (isNaN(num)) { + return str; } - return String(num); + return num; }; -var toText$1 = function toText(date) { - //eg '1995' - var str = String(date.year || ''); +const getLang = function (name) { + //grab the language from the template name - 'ipa-de' + let lang = name.match(/ipac?-(.+)/); - if (date.month !== undefined && _months.hasOwnProperty(date.month) === true) { - if (date.date === undefined) { - //January 1995 - str = "".concat(_months[date.month], " ").concat(date.year); - } else { - //January 5, 1995 - str = "".concat(_months[date.month], " ").concat(date.date, ", ").concat(date.year); //add times, if available - - if (date.hour !== undefined && date.minute !== undefined) { - var time = "".concat(pad(date.hour), ":").concat(pad(date.minute)); - - if (date.second !== undefined) { - time = time + ':' + pad(date.second); - } - - str = time + ', ' + str; //add timezone, if there, at the end in brackets - } - - if (date.tz) { - str += " (".concat(date.tz, ")"); - } + if (lang !== null) { + if (languages.hasOwnProperty(lang[1]) === true) { + return languages[lang[1]].english_title; } + + return lang[1]; } - return str; + return null; }; -var _format = { - toText: toText$1, - ymd: ymd -}; // console.log(toText(ymd([2018, 3, 28]))); +const titlecase$1 = str => { + return str.charAt(0).toUpperCase() + str.substring(1); +}; + +const 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' +}; +var _lib$3 = { + titlecase: titlecase$1, + sisterProjects: sisterProjects, + getLang: getLang, + percentage: percentage, + toNumber: toNumber +}; -var misc = { - reign: function reign(tmpl) { - var order = ['start', 'end']; - var obj = parse$3(tmpl, order); - return "(r. ".concat(obj.start, " \u2013 ").concat(obj.end, ")"); +var functions$2 = { + //https://en.wikipedia.org/wiki/Template:Ra + ra: tmpl => { + let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, - circa: function circa(tmpl) { - var obj = parse$3(tmpl, ['year']); - return "c.\u2009".concat(obj.year); + //https://en.wikipedia.org/wiki/Template:Deg2HMS + deg2hms: tmpl => { + //this template should do the conversion + let obj = toJSON(tmpl, ['degrees']); + return (obj.degrees || '') + '°'; }, - //we can't do timezones, so fake this one a little bit - //https://en.wikipedia.org/wiki/Template:Time - time: function time() { - var d = new Date(); - var obj = _format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); - return _format.toText(obj); + hms2deg: tmpl => { + //this template should do the conversion too + let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, - monthname: 0, - //https://en.wikipedia.org/wiki/Template:OldStyleDate - oldstyledate: function oldstyledate(tmpl) { - var order = ['date', 'year']; - var obj = parse$3(tmpl, order); - var str = obj.date; + decdeg: tmpl => { + //this template should do the conversion too + let obj = toJSON(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); + return (obj.deg || obj.degrees) + '°'; + }, + //https://en.wikipedia.org/wiki/Template:Sortname + sortname: tmpl => { + let order = ['first', 'last', 'target', 'sort']; + let obj = toJSON(tmpl, order); + let name = `${obj.first || ''} ${obj.last || ''}`; + name = name.trim(); - if (obj.year) { - str += ' ' + obj.year; + if (obj.nolink) { + return obj.target || name; } - return str; - } -}; -var misc_1 = misc; - -//this is allowed to be rough -var day = 1000 * 60 * 60 * 24; -var month = day * 30; -var year = day * 365; - -var getEpoch = function getEpoch(obj) { - return new Date("".concat(obj.year, "-").concat(obj.month || 0, "-").concat(obj.date || 1)).getTime(); -}; //very rough! - - -var delta = function delta(from, to) { - from = getEpoch(from); - to = getEpoch(to); - var diff = to - from; - var obj = {}; //get years - - var years = Math.floor(diff / year, 10); + if (obj.dab) { + name += ` (${obj.dab})`; - if (years > 0) { - obj.years = years; - diff -= obj.years * year; - } //get months + if (obj.target) { + obj.target += ` (${obj.dab})`; + } + } + if (obj.target) { + return `[[${obj.target}|${name}]]`; + } - var months = Math.floor(diff / month, 10); + return `[[${name}]]`; + }, + // https://en.wikipedia.org/wiki/Template:First_word + 'first word': tmpl => { + let obj = toJSON(tmpl, ['text']); + let str = obj.text; - if (months > 0) { - obj.months = months; - diff -= obj.months * month; - } //get days + if (obj.sep) { + return str.split(obj.sep)[0]; + } + return str.split(' ')[0]; + }, + trunc: tmpl => { + let order = ['str', 'len']; + let obj = toJSON(tmpl, order); + return obj.str.substr(0, obj.len); + }, + 'str mid': tmpl => { + let order = ['str', 'start', 'end']; + let obj = toJSON(tmpl, order); + let start = parseInt(obj.start, 10) - 1; + let end = parseInt(obj.end, 10); + return obj.str.substr(start, end); + }, + reign: tmpl => { + let order = ['start', 'end']; + let obj = toJSON(tmpl, order); + return `(r. ${obj.start} – ${obj.end})`; + }, + circa: tmpl => { + let obj = toJSON(tmpl, ['year']); + return `c. ${obj.year}`; + }, + // https://en.wikipedia.org/wiki/Template:Decade_link + 'decade link': tmpl => { + let obj = toJSON(tmpl, ['year']); + return `${obj.year}|${obj.year}s`; + }, + // https://en.wikipedia.org/wiki/Template:Decade + decade: tmpl => { + let obj = toJSON(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 10, 10) * 10; // round to decade - var days = Math.floor(diff / day, 10); + return `${year}s`; + }, + // https://en.wikipedia.org/wiki/Template:Century + century: tmpl => { + let obj = toJSON(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 100, 10) + 1; + return `${year}`; + }, + //https://en.wikipedia.org/wiki/Template:Radic + radic: tmpl => { + let order = ['after', 'before']; + let obj = toJSON(tmpl, order); + return `${obj.before || ''}√${obj.after || ''}`; + }, + 'medical cases chart/row': tmpl => { + // Deprecated template; we keep it. + return tmpl; + }, + //https://en.wikipedia.org/wiki/Template:OldStyleDate + oldstyledate: tmpl => { + let order = ['date', 'year']; + let obj = toJSON(tmpl, order); + return obj.year ? obj.date + ' ' + obj.year : obj.date; + }, + //formatting things - https://en.wikipedia.org/wiki/Template:Nobold + braces: tmpl => { + let obj = toJSON(tmpl, ['text']); + let attrs = ''; - if (days > 0) { - obj.days = days; // diff -= (obj.days * day); - } + if (obj.list) { + attrs = '|' + obj.list.join('|'); + } - return obj; -}; + return '{{' + (obj.text || '') + attrs + '}}'; + }, + hlist: tmpl => { + let obj = toJSON(tmpl); + obj.list = obj.list || []; + return obj.list.join(' · '); + }, + pagelist: tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join(', '); + }, + //actually rendering these links removes the text. + //https://en.wikipedia.org/wiki/Template:Catlist + catlist: tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join(', '); + }, + //https://en.wikipedia.org/wiki/Template:Br_separated_entries + 'br separated entries': tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join('\n\n'); + }, + 'comma separated entries': tmpl => { + let arr = toJSON(tmpl).list || []; + return arr.join(', '); + }, + //https://en.wikipedia.org/wiki/Template:Bare_anchored_list + 'anchored list': tmpl => { + let arr = toJSON(tmpl).list || []; + arr = arr.map((str, i) => `${i + 1}. ${str}`); + return arr.join('\n\n'); + }, + 'bulleted list': tmpl => { + let arr = toJSON(tmpl).list || []; + arr = arr.filter(f => f); + arr = arr.map(str => '• ' + str); + return arr.join('\n\n'); + }, + //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist + plainlist: tmpl => { + tmpl = _strip(tmpl); + let arr = tmpl.split('|').slice(1); //remove the title -var _delta = delta; + arr = arr.join('|').split(/\n ?\* ?/); //split on newline -var ymd$1 = _format.ymd; -var toText$2 = _format.toText; //wrap it up as a template + arr = arr.filter(s => s); + return arr.join('\n\n'); + }, + //https://en.wikipedia.org/wiki/Template:Term + term: tmpl => { + let obj = toJSON(tmpl, ['term']); + return `${obj.term}:`; + }, + linum: tmpl => { + let obj = toJSON(tmpl, ['num', 'text']); + return `${obj.num}. ${obj.text}`; + }, + 'block indent': tmpl => { + let obj = toJSON(tmpl); -var template = function template(date) { - return { - template: 'date', - data: date - }; -}; + if (obj['1']) { + return '\n' + obj['1'] + '\n'; + } -var getBoth = function getBoth(tmpl) { - tmpl = _strip(tmpl); - var arr = tmpl.split('|'); - var from = ymd$1(arr.slice(1, 4)); - var to = arr.slice(4, 7); //assume now, if 'to' is empty + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Lbs + lbs: tmpl => { + let obj = toJSON(tmpl, ['text']); + return `[[${obj.text} Lifeboat Station|${obj.text}]]`; + }, + //Foo-class + lbc: tmpl => { + let obj = toJSON(tmpl, ['text']); + return `[[${obj.text}-class lifeboat|${obj.text}-class]]`; + }, + lbb: tmpl => { + let obj = toJSON(tmpl, ['text']); + return `[[${obj.text}-class lifeboat|${obj.text}]]`; + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + '#dateformat': tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['date', 'format']); + return obj.date; + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + lc: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text']); + return (obj.text || '').toLowerCase(); + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + uc: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text']); + return (obj.text || '').toUpperCase(); + }, + lcfirst: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let text = toJSON(tmpl, ['text']).text; - if (to.length === 0) { - var d = new Date(); - to = [d.getFullYear(), d.getMonth(), d.getDate()]; - } + if (!text) { + return ''; + } - to = ymd$1(to); - return { - from: from, - to: to - }; -}; + return text[0].toLowerCase() + text.substr(1); + }, + ucfirst: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let text = toJSON(tmpl, ['text']).text; -var parsers = { - //generic {{date|year|month|date}} template - date: function date(tmpl, list) { - var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; - var obj = parse$3(tmpl, order); - var data = ymd$1([obj.year, obj.month, obj.date || obj.day]); - obj.text = toText$2(data); //make the replacement string + if (!text) { + return ''; + } - if (obj.timezone) { - if (obj.timezone === 'Z') { - obj.timezone = 'UTC'; - } + return text[0].toUpperCase() + text.substr(1); + }, + padleft: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text', 'num']); + let text = obj.text || ''; + return text.padStart(obj.num, obj.str || '0'); + }, + padright: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['text', 'num']); + let text = obj.text || ''; + return text.padEnd(obj.num, obj.str || '0'); + }, + //https://en.wikipedia.org/wiki/Template:Abbrlink + abbrlink: tmpl => { + let obj = toJSON(tmpl, ['abbr', 'page']); - obj.text += " (".concat(obj.timezone, ")"); + if (obj.page) { + return `[[${obj.page}|${obj.abbr}]]`; } - if (obj.hour && obj.minute) { - if (obj.second) { - obj.text = "".concat(obj.hour, ":").concat(obj.minute, ":").concat(obj.second, ", ") + obj.text; - } else { - obj.text = "".concat(obj.hour, ":").concat(obj.minute, ", ") + obj.text; - } - } + return `[[${obj.abbr}]]`; + }, + // https://en.wikipedia.org/wiki/Template:Own + own: tmpl => { + let obj = toJSON(tmpl, ['author']); + let str = 'Own work'; - if (obj.text) { - list.push(template(obj)); + if (obj.author) { + str += ' by ' + obj.author; } - return obj.text; + return str; }, - //support parsing of 'February 10, 1992' - natural_date: function natural_date(tmpl, list) { - var order = ['text']; - var obj = parse$3(tmpl, order); - var str = obj.text || ''; // - just a year - - var date = {}; + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + formatnum: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = toJSON(tmpl, ['number']); + let str = obj.number || ''; + str = str.replace(/,/g, ''); + let num = Number(str); + return num.toLocaleString() || ''; + }, + //https://en.wikipedia.org/wiki/Template:Frac + frac: tmpl => { + let order = ['a', 'b', 'c']; + let obj = toJSON(tmpl, order); - if (/^[0-9]{4}$/.test(str)) { - date.year = parseInt(str, 10); - } else { - //parse the date, using the js date object (for now?) - var txt = str.replace(/[a-z]+\/[a-z]+/i, ''); - txt = txt.replace(/[0-9]+:[0-9]+(am|pm)?/i, ''); - var d = new Date(txt); + if (obj.c) { + return `${obj.a} ${obj.b}/${obj.c}`; + } - if (isNaN(d.getTime()) === false) { - date.year = d.getFullYear(); - date.month = d.getMonth() + 1; - date.date = d.getDate(); - } + if (obj.b) { + return `${obj.a}/${obj.b}`; } - list.push(template(date)); - return str.trim(); - }, - //just grab the first value, and assume it's a year - one_year: function one_year(tmpl, list) { - var order = ['year']; - var obj = parse$3(tmpl, order); - var year = Number(obj.year); - list.push(template({ - year: year - })); - return String(year); + return `1/${obj.b}`; }, - //assume 'y|m|d' | 'y|m|d' // {{BirthDeathAge|B|1976|6|6|1990|8|8}} - two_dates: function two_dates(tmpl, list) { - var order = ['b', 'birth_year', 'birth_month', 'birth_date', 'death_year', 'death_month', 'death_date']; - var obj = parse$3(tmpl, order); //'b' means show birth-date, otherwise show death-date + //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values + convert: tmpl => { + let order = ['num', 'two', 'three', 'four']; + let obj = toJSON(tmpl, order); //todo: support plural units - if (obj.b && obj.b.toLowerCase() === 'b') { - var _date = ymd$1([obj.birth_year, obj.birth_month, obj.birth_date]); + if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { + if (obj.four) { + return `${obj.num} ${obj.two} ${obj.three} ${obj.four}`; + } - list.push(template(_date)); - return toText$2(_date); + return `${obj.num} ${obj.two} ${obj.three}`; } - var date = ymd$1([obj.death_year, obj.death_month, obj.death_date]); - list.push(template(date)); - return toText$2(date); + return `${obj.num} ${obj.two}`; }, - age: function age(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - return diff.years || 0; + // Large number of aliases - https://en.wikipedia.org/wiki/Template:Tl + tl: tmpl => { + let order = ['first', 'second']; + let obj = toJSON(tmpl, order); + return obj.second || obj.first; }, - 'diff-y': function diffY(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - - if (diff.years === 1) { - return diff.years + ' year'; - } - - return (diff.years || 0) + ' years'; + //this one's a little different + won: tmpl => { + let data = toJSON(tmpl, ['text']); + return data.place || data.text || _lib$3.titlecase(data.template); }, - 'diff-ym': function diffYm(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; + //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag + tag: tmpl => { + let obj = toJSON(tmpl, ['tag', 'open']); + const ignore = { + span: true, + div: true, + p: true + }; //pair, empty, close, single - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); - } + if (!obj.open || obj.open === 'pair') { + //just skip generating spans and things.. + if (ignore[obj.tag]) { + return obj.content || ''; + } - if (diff.months === 1) { - arr.push('1 month'); - } else if (diff.months && diff.months !== 0) { - arr.push(diff.months + ' months'); + return `<${obj.tag} ${obj.attribs || ''}>${obj.content || ''}`; } - return arr.join(', '); + return ''; }, - 'diff-ymd': function diffYmd(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; + //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural + plural: tmpl => { + tmpl = tmpl.replace(/plural:/, 'plural|'); + let order = ['num', 'word']; + let obj = toJSON(tmpl, order); + let num = Number(obj.num); + let word = obj.word; - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); + if (num !== 1) { + if (/.y$/.test(word)) { + word = word.replace(/y$/, 'ies'); + } else { + word += 's'; + } } - if (diff.months === 1) { - arr.push('1 month'); - } else if (diff.months && diff.months !== 0) { - arr.push(diff.months + ' months'); + return num + ' ' + word; + }, + //https://en.wikipedia.org/wiki/Template:DEC + dec: tmpl => { + let obj = toJSON(tmpl, ['degrees', 'minutes', 'seconds']); + let str = (obj.degrees || 0) + '°'; + + if (obj.minutes) { + str += obj.minutes + `′`; } - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); + if (obj.seconds) { + str += obj.seconds + '″'; } - return arr.join(', '); + return str; }, - 'diff-yd': function diffYd(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; - - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); - } //ergh... - - - diff.days += (diff.months || 0) * 30; + //https://en.wikipedia.org/wiki/Template:Val + val: tmpl => { + let obj = toJSON(tmpl, ['number', 'uncertainty']); + let num = obj.number; - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); + if (num && Number(num)) { + num = Number(num).toLocaleString(); } - return arr.join(', '); - }, - 'diff-d': function diffD(tmpl) { - var d = getBoth(tmpl); - var diff = _delta(d.from, d.to); - var arr = []; //ergh... - - diff.days += (diff.years || 0) * 365; - diff.days += (diff.months || 0) * 30; + let str = num || ''; //prefix/suffix - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); + if (obj.p) { + str = obj.p + str; } - return arr.join(', '); - } -}; -var parsers_1 = parsers; + if (obj.s) { + str = obj.s + str; + } //add units, too -//not all too fancy - used in {{timesince}} -var timeSince = function timeSince(str) { - var d = new Date(str); - if (isNaN(d.getTime())) { - return ''; - } + if (obj.u || obj.ul || obj.upl) { + str = str + ' ' + (obj.u || obj.ul || obj.upl); + } - var now = new Date(); - var delta = now.getTime() - d.getTime(); - var predicate = 'ago'; + return str; + }, + //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} + percentage: tmpl => { + let obj = toJSON(tmpl, ['numerator', 'denominator', 'decimals']); + let num = _lib$3.percentage(obj); - if (delta < 0) { - predicate = 'from now'; - delta = Math.abs(delta); - } //figure out units + if (num === null) { + return ''; + } + return num + '%'; + }, + // {{Percent-done|done=N|total=N|digits=N}} + 'percent-done': tmpl => { + let obj = toJSON(tmpl, ['done', 'total', 'digits']); + let num = _lib$3.percentage({ + numerator: obj.done, + denominator: obj.total, + decimals: obj.digits + }); - var hours = delta / 1000 / 60 / 60; - var days = hours / 24; + if (num === null) { + return ''; + } - if (days < 365) { - return parseInt(days, 10) + ' days ' + predicate; + return `${obj.done} (${num}%) done`; } - - var years = days / 365; - return parseInt(years, 10) + ' years ' + predicate; }; -var _timeSince = timeSince; - -var date = parsers_1.date; -var natural_date = parsers_1.natural_date; -var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; -var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; //date- templates we support +var flags = [['🇦🇩', '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'], //dupe +['🇧🇭', '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'], //alias +['🇩🇯', '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'], //['🇬🇪', 'geo', 'georgia'], +['🇬🇫', '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'], //alias +['🇺🇸', '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'], //others (later unicode versions) +['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; -var dateTmpl = Object.assign({}, misc_1, { - currentday: function currentday() { - var d = new Date(); - return String(d.getDate()); - }, - currentdayname: function currentdayname() { - var d = new Date(); - return days[d.getDay()]; - }, - currentmonth: function currentmonth() { - var d = new Date(); - return months[d.getMonth()]; - }, - currentyear: function currentyear() { - var d = new Date(); - return String(d.getFullYear()); - }, - monthyear: function monthyear() { - var d = new Date(); - return months[d.getMonth()] + ' ' + d.getFullYear(); - }, - 'monthyear-1': function monthyear1() { - var d = new Date(); - d.setMonth(d.getMonth() - 1); - return months[d.getMonth()] + ' ' + d.getFullYear(); +let templates$8 = { + //https://en.wikipedia.org/wiki/Template:Flag + // {{flag|USA}} → USA + flag: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(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 flag = found[0] || ''; + return `${flag} [[${found[2]}|${name}]]`; }, - 'monthyear+1': function monthyear1() { - var d = new Date(); - d.setMonth(d.getMonth() + 1); - return months[d.getMonth()] + ' ' + d.getFullYear(); + // {{flagcountry|USA}} → United States + flagcountry: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let flag = found[0] || ''; + return `${flag} [[${found[2]}]]`; }, - //Explictly-set dates - https://en.wikipedia.org/wiki/Template:Date - date: 0, - 'time ago': function timeAgo(tmpl) { - var order = ['date', 'fmt']; - var time = parse$3(tmpl, order).date; - return _timeSince(time); + // (unlinked flag-country) + flagcu: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + 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:Birth_date_and_age - 'birth date and age': function birthDateAndAge(tmpl, list) { - var order = ['year', 'month', 'day']; - var obj = parse$3(tmpl, order); //support 'one property' version + //https://en.wikipedia.org/wiki/Template:Flagicon + // {{flagicon|USA}} → United States + flagicon: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - if (obj.year && /[a-z]/i.test(obj.year)) { - return natural_date(tmpl, list); + if (!found) { + return ''; } - list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - return _format.toText(obj); + return `[[${found[2]}|${found[0]}]]`; + }, + //unlinked flagicon + flagdeco: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + return found[0] || ''; }, - 'birth year and age': function birthYearAndAge(tmpl, list) { - var order = ['birth_year', 'birth_month']; - var obj = parse$3(tmpl, order); //support 'one property' version + //same, but a soccer team + fb: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return natural_date(tmpl, list); + if (!found) { + return ''; } - list.push(obj); - var age = new Date().getFullYear() - parseInt(obj.birth_year, 10); - obj = _format.ymd([obj.birth_year, obj.birth_month]); - var str = _format.toText(obj); + return `${found[0]} [[${found[2]} national football team|${found[2]}]]`; + }, + fbicon: tmpl => { + let order = ['flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - if (age) { - str += " (age ".concat(age, ")"); + if (!found) { + return ''; } - return str; + return ` [[${found[2]} national football team|${found[0]}]]`; }, - 'death year and age': function deathYearAndAge(tmpl, list) { - var order = ['death_year', 'birth_year', 'death_month']; - var obj = parse$3(tmpl, order); //support 'one property' version + flagathlete: tmpl => { + let order = ['name', 'flag', 'variant']; + let obj = toJSON(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return natural_date(tmpl, list); + if (!found) { + return `[[${obj.name || ''}]]`; } - list.push(obj); - obj = _format.ymd([obj.death_year, obj.death_month]); - return _format.toText(obj); - }, - //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 - 'birth date and age2': function birthDateAndAge2(tmpl, list) { - var order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; - var obj = parse$3(tmpl, order); - list.push(obj); - obj = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); - return _format.toText(obj); - }, - //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date - 'birth based on age as of date': function birthBasedOnAgeAsOfDate(tmpl, list) { - var order = ['age', 'year', 'month', 'day']; - var obj = parse$3(tmpl, order); - list.push(obj); - var age = parseInt(obj.age, 10); - var year = parseInt(obj.year, 10); - var born = year - age; + return `${found[0]} [[${obj.name || ''}]] (${found[1].toUpperCase()})`; + } +}; //support {{can}} - if (born && age) { - return "".concat(born, " (age ").concat(obj.age, ")"); - } +flags.forEach(a => { + templates$8[a[1]] = () => { + return a[0]; + }; +}); +var flags_1 = templates$8; - return "(age ".concat(obj.age, ")"); - }, - //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age - 'death date and given age': function deathDateAndGivenAge(tmpl, list) { - var order = ['year', 'month', 'day', 'age']; - var obj = parse$3(tmpl, order); - list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - var str = _format.toText(obj); +const titlecase = _lib$3.titlecase; //https://en.wikipedia.org/wiki/Template:Yes - if (obj.age) { - str += " (age ".concat(obj.age, ")"); - } +let templates$7 = {}; +let cells = ['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']; +cells.forEach(str => { + templates$7[str] = tmpl => { + let data = toJSON(tmpl, ['text']); + return data.text || titlecase(data.template); + }; +}); //these ones have a text result - return str; - }, - //sortable dates - - dts: function dts(tmpl) { - //remove formatting stuff, ewww - tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); - tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); - var order = ['year', 'month', 'date', 'bc']; - var obj = parse$3(tmpl, order); +let moreCells = [['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', '']]; +moreCells.forEach(a => { + templates$7[a[0]] = tmpl => { + let data = toJSON(tmpl, ['text']); + return data.text || a[1]; + }; +}); +var tableCell = templates$7; - if (obj.date && obj.month && obj.year) { - //render 'june 5 2018' - if (/[a-z]/.test(obj.month) === true) { - return [obj.month, obj.date, obj.year].join(' '); - } +var textOnly = Object.assign({}, hardcoded, shorthand$1, functions$2, flags_1, tableCell); - return [obj.year, obj.month, obj.date].join('-'); - } +let templates$6 = {}; // these all have ['id', 'name'] - if (obj.month && obj.year) { - return [obj.year, obj.month].join('-'); - } +let idName = ['goodreads author', 'twitter', 'facebook', 'instagram', 'tumblr', 'pinterest', 'espn nfl', 'espn nhl', 'espn fc', 'hockeydb', 'fifa player', 'worldcat', 'worldcat id', 'nfl player', 'ted speaker', 'playmate']; +idName.forEach(name => { + templates$6[name] = ['id', 'name']; +}); +var idName_1 = templates$6; - if (obj.year) { - if (obj.year < 0) { - obj.year = Math.abs(obj.year) + ' BC'; - } +let templates$5 = {}; // these all have ['id', 'title', 'description', 'section'] - return obj.year; - } +let idTitle = ['imdb title', //https://en.wikipedia.org/wiki/Template: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' //https://en.wikipedia.org/wiki/Template:DMOZ +]; +idTitle.forEach(name => { + templates$5[name] = ['id', 'title', 'description', 'section']; +}); +var idTitle_1 = templates$5; +var functions$1 = { + // https://en.wikipedia.org/wiki/Template:IPA + ipa: (tmpl, list) => { + let obj = toJSON(tmpl, ['transcription', 'lang', 'audio']); + obj.lang = _lib$3.getLang(obj.template); + obj.template = 'ipa'; + list.push(obj); return ''; }, - //date/age/time templates - start: date, - end: date, - birth: date, - death: date, - 'start date': date, - 'end date': date, - 'birth date': date, - 'death date': date, - 'start date and age': date, - 'end date and age': date, - //this is insane (hyphen ones are different) - 'start-date': natural_date, - 'end-date': natural_date, - 'birth-date': natural_date, - 'death-date': natural_date, - 'birth-date and age': natural_date, - 'birth-date and given age': natural_date, - 'death-date and age': natural_date, - 'death-date and given age': natural_date, - birthdeathage: parsers_1.two_dates, - dob: date, - // 'birth date and age2': date, - age: parsers_1.age, - 'age nts': parsers_1.age, - 'age in years': parsers_1['diff-y'], - 'age in years and months': parsers_1['diff-ym'], - 'age in years, months and days': parsers_1['diff-ymd'], - 'age in years and days': parsers_1['diff-yd'], - 'age in days': parsers_1['diff-d'] // 'age in years, months, weeks and days': true, - // 'age as of date': true, - -}); //aliases - -dateTmpl.localday = dateTmpl.currentday; -dateTmpl.localdayname = dateTmpl.currentdayname; -dateTmpl.localmonth = dateTmpl.currentmonth; -dateTmpl.localyear = dateTmpl.currentyear; -dateTmpl.currentmonthname = dateTmpl.currentmonth; -dateTmpl.currentmonthabbrev = dateTmpl.currentmonth; -dateTmpl['death date and age'] = dateTmpl['birth date and age']; -dateTmpl.bda = dateTmpl['birth date and age']; -dateTmpl['birth date based on age at death'] = dateTmpl['birth based on age as of date']; -var dates = dateTmpl; + //https://en.wikipedia.org/wiki/Template:IPAc-en + ipac: (tmpl, list) => { + let obj = toJSON(tmpl); + obj.transcription = (obj.list || []).join(','); + delete obj.list; + obj.lang = _lib$3.getLang(obj.template); + obj.template = 'ipac'; + list.push(obj); + return ''; + }, + quote: (tmpl, list) => { + let order = ['text', 'author']; + let obj = toJSON(tmpl, order); + list.push(obj); //create plaintext version -var templates = { - //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag - tag: function tag(tmpl) { - var obj = parse$3(tmpl, ['tag', 'open']); - var ignore = { - span: true, - div: true, - p: true - }; //pair, empty, close, single + if (obj.text) { + let str = `"${obj.text}"`; - if (!obj.open || obj.open === 'pair') { - //just skip generating spans and things.. - if (ignore[obj.tag]) { - return obj.content || ''; + if (obj.author) { + str += '\n\n'; + str += ` - ${obj.author}`; } - return "<".concat(obj.tag, " ").concat(obj.attribs || '', ">").concat(obj.content || '', ""); + return str + '\n'; } return ''; }, - //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural - plural: function plural(tmpl) { - tmpl = tmpl.replace(/plural:/, 'plural|'); - var order = ['num', 'word']; - var obj = parse$3(tmpl, order); - var num = Number(obj.num); - var word = obj.word; - - if (num !== 1) { - if (/.y$/.test(word)) { - word = word.replace(/y$/, 'ies'); - } else { - word += 's'; - } - } - - return num + ' ' + word; - }, - // https://en.wikipedia.org/wiki/Template:First_word - 'first word': function firstWord(tmpl) { - var obj = parse$3(tmpl, ['text']); - var str = obj.text; - - if (obj.sep) { - return str.split(obj.sep)[0]; - } - - return str.split(' ')[0]; - }, - trunc: function trunc(tmpl) { - var order = ['str', 'len']; - var obj = parse$3(tmpl, order); - return obj.str.substr(0, obj.len); + //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS + 'cite gnis': (tmpl, list) => { + let order = ['id', 'name', 'type']; + let obj = toJSON(tmpl, order); + obj.type = 'gnis'; + obj.template = 'citation'; + list.push(obj); + return ''; }, - 'str mid': function strMid(tmpl) { - var order = ['str', 'start', 'end']; - var obj = parse$3(tmpl, order); - var start = parseInt(obj.start, 10) - 1; - var end = parseInt(obj.end, 10); - return obj.str.substr(start, end); + 'spoken wikipedia': (tmpl, list) => { + let order = ['file', 'date']; + let obj = toJSON(tmpl, order); + obj.template = 'audio'; + list.push(obj); + return ''; }, - //grab the first, second or third pipe - p1: 0, - p2: 1, - p3: 2, - //formatting things - https://en.wikipedia.org/wiki/Template:Nobold - braces: function braces(tmpl) { - var obj = parse$3(tmpl, ['text']); - var attrs = ''; + //yellow card + yel: (tmpl, list) => { + let obj = toJSON(tmpl, ['min']); + list.push(obj); - if (obj.list) { - attrs = '|' + obj.list.join('|'); + if (obj.min) { + return `yellow: ${obj.min || ''}'`; //no yellow-card emoji } - return '{{' + (obj.text || '') + attrs + '}}'; - }, - nobold: 0, - noitalic: 0, - nocaps: 0, - syntaxhighlight: function syntaxhighlight(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return obj.code || ''; + return ''; }, - samp: function samp(tmpl, list) { - var obj = parse$3(tmpl, ['1']); + subon: (tmpl, list) => { + let obj = toJSON(tmpl, ['min']); list.push(obj); - return obj['1'] || ''; - }, - //https://en.wikipedia.org/wiki/Template:Visible_anchor - vanchor: 0, - //https://en.wikipedia.org/wiki/Template:Resize - resize: 1, - //https://en.wikipedia.org/wiki/Template:Ra - ra: function ra(tmpl) { - var obj = parse$3(tmpl, ['hours', 'minutes', 'seconds']); - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); - }, - //https://en.wikipedia.org/wiki/Template:Deg2HMS - deg2hms: function deg2hms(tmpl) { - //this template should do the conversion - var obj = parse$3(tmpl, ['degrees']); - return (obj.degrees || '') + '°'; - }, - hms2deg: function hms2deg(tmpl) { - //this template should do the conversion too - var obj = parse$3(tmpl, ['hours', 'minutes', 'seconds']); - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); - }, - decdeg: function decdeg(tmpl) { - //this template should do the conversion too - var obj = parse$3(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); - return (obj.deg || obj.degrees) + '°'; - }, - rnd: 0, - //https://en.wikipedia.org/wiki/Template:DEC - dec: function dec(tmpl) { - var obj = parse$3(tmpl, ['degrees', 'minutes', 'seconds']); - var str = (obj.degrees || 0) + '°'; - - if (obj.minutes) { - str += obj.minutes + "\u2032"; - } - if (obj.seconds) { - str += obj.seconds + '″'; + if (obj.min) { + return `sub on: ${obj.min || ''}'`; //no yellow-card emoji } - return str; + return ''; }, - //https://en.wikipedia.org/wiki/Template:Val - val: function val(tmpl) { - var obj = parse$3(tmpl, ['number', 'uncertainty']); - var num = obj.number; + suboff: (tmpl, list) => { + let obj = toJSON(tmpl, ['min']); + list.push(obj); - if (num && Number(num)) { - num = Number(num).toLocaleString(); + if (obj.min) { + return `sub off: ${obj.min || ''}'`; //no yellow-card emoji } - var str = num || ''; //prefix/suffix + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Sfn + sfn: (tmpl, list, parser, alias) => { + let order = ['author', 'year', 'location']; + let obj = toJSON(tmpl, order); - if (obj.p) { - str = obj.p + str; + if (alias) { + obj.name = obj.template; + obj.teplate = alias; } - if (obj.s) { - str = obj.s + str; - } //add units, too - + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Redirect + redirect: (tmpl, list) => { + let data = toJSON(tmpl, ['redirect']); + let lines = data.list || []; + let links = []; - if (obj.u || obj.ul || obj.upl) { - str = str + ' ' + (obj.u || obj.ul || obj.upl); + for (let i = 0; i < lines.length; i += 2) { + links.push({ + page: lines[i + 1], + desc: lines[i] + }); } - return str; + let obj = { + template: 'redirect', + redirect: data.redirect, + links: links + }; + list.push(obj); + return ''; }, - //https://en.wikipedia.org/wiki/Template:Sub - sub: function sub(tmpl, list) { - var obj = parse$3(tmpl, ['text']); + //https://en.wikipedia.org/wiki/Template:Sister_project_links + 'sister project links': (tmpl, list) => { + let data = toJSON(tmpl); //rename 'wd' to 'wikidata' + + let links = {}; + Object.keys(_lib$3.sisterProjects).forEach(k => { + if (data.hasOwnProperty(k) === true) { + links[_lib$3.sisterProjects[k]] = data[k]; //.text(); + } + }); + let obj = { + template: 'sister project links', + links: links + }; list.push(obj); - return obj.text || ''; + return ''; }, - //https://en.wikipedia.org/wiki/Template:Sup - sup: function sup(tmpl, list) { - var obj = parse$3(tmpl, ['text']); + //https://en.wikipedia.org/wiki/Template:Subject_bar + 'subject bar': (tmpl, list) => { + let data = toJSON(tmpl); + Object.keys(data).forEach(k => { + //rename 'voy' to 'wikivoyage' + if (_lib$3.sisterProjects.hasOwnProperty(k)) { + data[_lib$3.sisterProjects[k]] = data[k]; + delete data[k]; + } + }); + let obj = { + template: 'subject bar', + links: data + }; list.push(obj); - return obj.text || ''; - } -}; //aliases - -templates['rndfrac'] = templates.rnd; -templates['rndnear'] = templates.rnd; -templates['unité'] = templates.val; //templates that we simply grab their insides as plaintext + return ''; + }, + //amazingly, this one does not obey any known patterns + //https://en.wikipedia.org/wiki/Template:Gallery + gallery: (tmpl, list) => { + let obj = toJSON(tmpl); + let images = (obj.list || []).filter(line => /^ *File ?:/.test(line)); + images = images.map(file => { + let img = { + file: file + }; // todo: add lang and domain information -var inline = ['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', //https://en.wikipedia.org/wiki/Template:Delink -//half-supported -'pre', 'var', 'mvar', 'pre2', 'code']; -inline.forEach(function (k) { - templates[k] = function (tmpl) { - return parse$3(tmpl, ['text']).text || ''; - }; -}); -var format = templates; + return new Image_1(img).json(); + }); + obj = { + template: 'gallery', + images: images + }; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Sky + sky: (tmpl, list) => { + let obj = toJSON(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); + let template = { + template: 'sky', + ascension: { + hours: obj.asc_hours, + minutes: obj.asc_minutes, + seconds: obj.asc_seconds + }, + declination: { + sign: obj.dec_sign, + degrees: obj.dec_degrees, + minutes: obj.dec_minutes, + seconds: obj.dec_seconds + }, + distance: obj.distance + }; + list.push(template); + return ''; + }, + // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see + // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original + // parsing code. + 'medical cases chart': (tmpl, list) => { + let order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; + let obj = toJSON(tmpl); + obj.data = obj.data || ''; + let rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following + // line on: + // + // for parameter in mw.text.gsplit(line, ';') do -var tmpls = { - //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist - plainlist: function plainlist(tmpl) { - tmpl = _strip(tmpl); //remove the title + let dataArray = rows.map(row => { + let parameters = row.split(';'); + let rowObject = { + options: new Map() + }; + let positionalIndex = 0; - var arr = tmpl.split('|'); - arr = arr.slice(1); - tmpl = arr.join('|'); //split on newline + for (let i = 0; i < parameters.length; i++) { + let parameter = parameters[i].trim(); - arr = tmpl.split(/\n ?\* ?/); - arr = arr.filter(function (s) { - return s; - }); - return arr.join('\n\n'); - }, - //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list - 'collapsible list': function collapsibleList(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - var str = ''; + if (parameter.match(/^[a-zA-Z_]/)) { + // Named argument + let [key, value] = parameter.split('='); // At this point, the Lua code evaluates alttot1 and alttot2 values as + // #expr expressions, but we just pass them through. See also: + // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr - if (obj.title) { - str += "'''".concat(obj.title, "'''") + '\n\n'; - } + if (value === undefined) { + value = null; + } - if (!obj.list) { - obj.list = []; + rowObject.options.set(key, value); + } else { + // Positional argument + // Here again, the Lua code evaluates arguments at index 1 through 5 + // as #expr expressions, but we just pass them through. + if (positionalIndex < order.length) { + rowObject[order[positionalIndex]] = parameter; + } - for (var i = 1; i < 10; i += 1) { - if (obj[i]) { - obj.list.push(obj[i]); - delete obj[i]; + positionalIndex++; } } - } - obj.list = obj.list.filter(function (s) { - return s; + for (; positionalIndex < order.length; positionalIndex++) { + rowObject[order[positionalIndex]] = null; + } + + return rowObject; }); - str += obj.list.join('\n\n'); - return str; - }, - // https://en.wikipedia.org/wiki/Template:Ordered_list - 'ordered list': function orderedList(tmpl, list) { - var obj = parse$3(tmpl); + obj.data = dataArray; list.push(obj); - obj.list = obj.list || []; - var lines = obj.list.map(function (str, i) { - return "".concat(i + 1, ". ").concat(str); - }); - return lines.join('\n\n'); - }, - hlist: function hlist(tmpl) { - var obj = parse$3(tmpl); - obj.list = obj.list || []; - return obj.list.join(' · '); - }, - pagelist: function pagelist(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join(', '); - }, - //actually rendering these links removes the text. - //https://en.wikipedia.org/wiki/Template:Catlist - catlist: function catlist(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join(', '); - }, - //https://en.wikipedia.org/wiki/Template:Br_separated_entries - 'br separated entries': function brSeparatedEntries(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join('\n\n'); - }, - 'comma separated entries': function commaSeparatedEntries(tmpl) { - var arr = parse$3(tmpl).list || []; - return arr.join(', '); - }, - //https://en.wikipedia.org/wiki/Template:Bare_anchored_list - 'anchored list': function anchoredList(tmpl) { - var arr = parse$3(tmpl).list || []; - arr = arr.map(function (str, i) { - return "".concat(i + 1, ". ").concat(str); - }); - return arr.join('\n\n'); - }, - 'bulleted list': function bulletedList(tmpl) { - var arr = parse$3(tmpl).list || []; - arr = arr.filter(function (f) { - return f; - }); - arr = arr.map(function (str) { - return '• ' + str; - }); - return arr.join('\n\n'); + return ''; }, - //https://en.wikipedia.org/wiki/Template:Columns-list - 'columns-list': function columnsList(tmpl, list) { - var arr = parse$3(tmpl).list || []; - var str = arr[0] || ''; - var lines = str.split(/\n/); - lines = lines.filter(function (f) { - return f; - }); - lines = lines.map(function (s) { - return s.replace(/\*/, ''); - }); - list.push({ - template: 'columns-list', - list: lines - }); - lines = lines.map(function (s) { - return '• ' + s; - }); - return lines.join('\n\n'); - } // 'pagelist':(tmpl)=>{}, + graph: (tmpl, list) => { + let data = toJSON(tmpl); -}; //aliases + if (data.x) { + data.x = data.x.split(',').map(str => str.trim()); + } -tmpls.flatlist = tmpls.plainlist; -tmpls.ublist = tmpls.plainlist; -tmpls['unbulleted list'] = tmpls['collapsible list']; -tmpls['ubl'] = tmpls['collapsible list']; -tmpls['bare anchored list'] = tmpls['anchored list']; -tmpls['plain list'] = tmpls['plainlist']; -tmpls.cmn = tmpls['columns-list']; -tmpls.collist = tmpls['columns-list']; -tmpls['col-list'] = tmpls['columns-list']; -tmpls.columnslist = tmpls['columns-list']; -var lists = tmpls; - -var inline$1 = { - //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values - convert: function convert(tmpl) { - var order = ['num', 'two', 'three', 'four']; - var obj = parse$3(tmpl, order); //todo: support plural units + if (data.y) { + data.y = data.y.split(',').map(str => str.trim()); + } - if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { - if (obj.four) { - return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three, " ").concat(obj.four); - } + let y = 1; - return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three); + while (data['y' + y]) { + data['y' + y] = data['y' + y].split(',').map(str => str.trim()); + y += 1; } - return "".concat(obj.num, " ").concat(obj.two); - }, - //https://en.wikipedia.org/wiki/Template:Term - term: function term(tmpl) { - var obj = parse$3(tmpl, ['term']); - return "".concat(obj.term, ":"); + list.push(data); + return ''; }, - defn: 0, - //https://en.wikipedia.org/wiki/Template:Linum - lino: 0, - linum: function linum(tmpl) { - var obj = parse$3(tmpl, ['num', 'text']); - return "".concat(obj.num, ". ").concat(obj.text); - }, - //https://en.wikipedia.org/wiki/Template:Interlanguage_link - ill: function ill(tmpl) { - var order = ['text', 'lan1', 'text1', 'lan2', 'text2']; - var obj = parse$3(tmpl, order); - return obj.text; - }, - //https://en.wikipedia.org/wiki/Template:Frac - frac: function frac(tmpl) { - var order = ['a', 'b', 'c']; - var obj = parse$3(tmpl, order); - - if (obj.c) { - return "".concat(obj.a, " ").concat(obj.b, "/").concat(obj.c); - } + //https://en.wikipedia.org/wiki/Template:Historical_populations + 'historical populations': (tmpl, list) => { + let data = toJSON(tmpl); + data.list = data.list || []; + let years = []; - if (obj.b) { - return "".concat(obj.a, "/").concat(obj.b); + for (let i = 0; i < data.list.length; i += 2) { + let num = data.list[i + 1]; + years.push({ + year: data.list[i], + val: Number(num) || num + }); } - return "1/".concat(obj.b); + data.data = years; + delete data.list; + list.push(data); + return ''; }, - //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} - height: function height(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - var result = []; - var units = ['m', 'cm', 'ft', 'in']; //order matters + // this one is a handful! + //https://en.wikipedia.org/wiki/Template:Weather_box + 'weather box': (tmpl, list) => { + const hasMonth = /^jan /i; + const isYear = /^year /i; + let obj = toJSON(tmpl); + const monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; + let byMonth = {}; + 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 => { + let key = `${m} ${prop}`; - units.forEach(function (unit) { - if (obj.hasOwnProperty(unit) === true) { - result.push(obj[unit] + unit); + if (obj.hasOwnProperty(key)) { + let num = _lib$3.toNumber(obj[key]); + delete obj[key]; + byMonth[prop].push(num); + } + }); + }); //add these to original + + obj.byMonth = byMonth; //collect year-based data + + let byYear = {}; + Object.keys(obj).forEach(k => { + if (isYear.test(k)) { + let prop = k.replace(isYear, ''); + byYear[prop] = obj[k]; + delete obj[k]; } }); - return result.join(' '); + obj.byYear = byYear; + list.push(obj); + return ''; }, - 'block indent': function blockIndent(tmpl) { - var obj = parse$3(tmpl); - - if (obj['1']) { - return '\n' + obj['1'] + '\n'; - } - + //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation + //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C + 'weather box/concise c': (tmpl, list) => { + let obj = toJSON(tmpl); + obj.list = obj.list.map(s => _lib$3.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) + }; + delete obj.list; + obj.template = 'weather box'; + list.push(obj); return ''; }, - quote: function quote(tmpl, list) { - var order = ['text', 'author']; - var obj = parse$3(tmpl, order); - list.push(obj); //create plaintext version - - if (obj.text) { - var str = "\"".concat(obj.text, "\""); + 'weather box/concise f': (tmpl, list) => { + let obj = toJSON(tmpl); + obj.list = obj.list.map(s => _lib$3.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) + }; + delete obj.list; + obj.template = 'weather box'; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Climate_chart + 'climate chart': (tmpl, list) => { + let lines = toJSON(tmpl).list || []; + let title = lines[0]; + let source = lines[38]; + lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... - if (obj.author) { - str += '\n\n'; - str += " - ".concat(obj.author); + lines = lines.map(str => { + if (str && str[0] === '−') { + str = str.replace(/−/, '-'); } - return str + '\n'; + return str; + }); + let months = []; //groups of three, for 12 months + + for (let i = 0; i < 36; i += 3) { + months.push({ + low: _lib$3.toNumber(lines[i]), + high: _lib$3.toNumber(lines[i + 1]), + precip: _lib$3.toNumber(lines[i + 2]) + }); } + let obj = { + template: 'climate chart', + data: { + title: title, + source: source, + months: months + } + }; + list.push(obj); return ''; + } +}; + +let templates$4 = { + //https://en.wikipedia.org/wiki/Category:External_link_templates + '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'], + //https://en.wikipedia.org/wiki/Template:Taxon_info + 'portuguese name': ['first', 'second', 'suffix'], + // https://en.wikipedia.org/wiki/Template:Portuguese_name + geo: ['lat', 'lon', 'zoom'] //https://en.wikivoyage.org/wiki/Template:Geo + +}; +templates$4 = Object.assign(templates$4, idName_1, idTitle_1, functions$1); +var dataOnly = templates$4; + +var shorthand = { + mlbplayer: { + props: ['number', 'name', 'il'], + out: 'name' }, - //https://en.wikipedia.org/wiki/Template:Lbs - lbs: function lbs(tmpl) { - var obj = parse$3(tmpl, ['text']); - return "[[".concat(obj.text, " Lifeboat Station|").concat(obj.text, "]]"); + syntaxhighlight: { + props: [], + out: 'code' }, - //Foo-class - lbc: function lbc(tmpl) { - var obj = parse$3(tmpl, ['text']); - return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "-class]]"); + samp: { + props: ['1'], + out: '1' }, - lbb: function lbb(tmpl) { - var obj = parse$3(tmpl, ['text']); - return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "]]"); + //https://en.wikipedia.org/wiki/Template:Sub + sub: { + props: ['text'], + out: 'text' }, - // https://en.wikipedia.org/wiki/Template:Own - own: function own(tmpl) { - var obj = parse$3(tmpl, ['author']); - var str = 'Own work'; + //https://en.wikipedia.org/wiki/Template:Sup + sup: { + props: ['text'], + out: 'text' + }, + //https://en.wikipedia.org/wiki/Template:Chem2 + chem2: { + props: ['equation'], + out: 'equation' + }, + //https://en.wikipedia.org/wiki/Template:Interlanguage_link + ill: { + props: ['text', 'lan1', 'text1', 'lan2', 'text2'], + out: 'text' + }, + //https://en.wikipedia.org/wiki/Template:Abbr + abbr: { + props: ['abbr', 'meaning', 'ipa'], + out: 'abbr' + } // name: { + // props: [], + // out: '', + // }, - if (obj.author) { - str += ' by ' + obj.author; - } +}; - return str; +let templates$3 = { + // https://en.wikipedia.org/wiki/Template:Math + math: (tmpl, list) => { + let obj = toJSON(tmpl, ['formula']); + list.push(obj); + return '\n\n' + (obj.formula || '') + '\n\n'; }, - //https://en.wikipedia.org/wiki/Template:Sic - sic: function sic(tmpl, list) { - var obj = parse$3(tmpl, ['one', 'two', 'three']); - var word = (obj.one || '') + (obj.two || ''); //support '[sic?]' + isbn: (tmpl, list) => { + let order = ['id', 'id2', 'id3']; + let obj = toJSON(tmpl, order); + list.push(obj); + return 'ISBN: ' + (obj.id || ''); + }, + //https://en.wikipedia.org/wiki/Template:Based_on + 'based on': (tmpl, list) => { + let obj = toJSON(tmpl, ['title', 'author']); + list.push(obj); + return `${obj.title} by ${obj.author || ''}`; + }, + //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t + 'bbl to t': (tmpl, list) => { + let obj = toJSON(tmpl, ['barrels']); + list.push(obj); - if (obj.one === '?') { - word = (obj.two || '') + (obj.three || ''); + if (obj.barrels === '0') { + return obj.barrels + ' barrel'; } + return obj.barrels + ' barrels'; + }, + //minor planet - https://en.wikipedia.org/wiki/Template:MPC + mpc: (tmpl, list) => { + let obj = toJSON(tmpl, ['number', 'text']); + list.push(obj); + return `[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${obj.text || obj.number}]`; + }, + pengoal: (tmpl, list) => { list.push({ - template: 'sic', - word: word + template: 'pengoal' }); - - if (obj.nolink === 'y') { - return word; - } - - return "".concat(word, " [sic]"); - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - formatnum: function formatnum(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['number']); - var str = obj.number || ''; - str = str.replace(/,/g, ''); - var num = Number(str); - return num.toLocaleString() || ''; + return '✅'; }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - '#dateformat': function dateformat(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['date', 'format']); - return obj.date; + penmiss: (tmpl, list) => { + list.push({ + template: 'penmiss' + }); + return '❌'; }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - lc: function lc(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - return (obj.text || '').toLowerCase(); + // https://en.wikipedia.org/wiki/Template:Ordered_list + 'ordered list': (tmpl, list) => { + let obj = toJSON(tmpl); + list.push(obj); + obj.list = obj.list || []; + let lines = obj.list.map((str, i) => `${i + 1}. ${str}`); + return lines.join('\n\n'); }, - lcfirst: function lcfirst(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - var text = obj.text; + // https://en.wikipedia.org/wiki/Template:Title_year + 'title year': (tmpl, _list, _alias, _parse, doc) => { + let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); - if (!text) { - return ''; + 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 text[0].toLowerCase() + text.substr(1); - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - uc: function uc(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - return (obj.text || '').toUpperCase(); + return obj.nomatch || ''; //use default response }, - ucfirst: function ucfirst(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text']); - var text = obj.text; + // https://en.wikipedia.org/wiki/Template:Title_century + 'title century': (tmpl, _list, _alias, _parse, doc) => { + let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); - if (!text) { - return ''; + 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 text[0].toUpperCase() + text.substr(1); - }, - padleft: function padleft(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text', 'num']); - var text = obj.text || ''; - return text.padStart(obj.num, obj.str || '0'); - }, - padright: function padright(tmpl) { - tmpl = tmpl.replace(/:/, '|'); - var obj = parse$3(tmpl, ['text', 'num']); - var text = obj.text || ''; - return text.padEnd(obj.num, obj.str || '0'); - }, - //abbreviation/meaning - //https://en.wikipedia.org/wiki/Template:Abbr - abbr: function abbr(tmpl) { - var obj = parse$3(tmpl, ['abbr', 'meaning', 'ipa']); - return obj.abbr; + return obj.nomatch || ''; //use default response }, - //https://en.wikipedia.org/wiki/Template:Abbrlink - abbrlink: function abbrlink(tmpl) { - var obj = parse$3(tmpl, ['abbr', 'page']); + // https://en.wikipedia.org/wiki/Template:Title_decade + 'title decade': (tmpl, _list, _alias, _parse, doc) => { + let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); - if (obj.page) { - return "[[".concat(obj.page, "|").concat(obj.abbr, "]]"); + 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 "[[".concat(obj.abbr, "]]"); + return obj.nomatch || ''; //use default response }, - //https://en.wikipedia.org/wiki/Template:Hover_title - //technically 'h:title' - h: 1, - //https://en.wikipedia.org/wiki/Template:Finedetail - finedetail: 0, - //https://en.wikipedia.org/wiki/Template:Sort - sort: 1 -}; //aliases - -inline$1['str left'] = inline$1.trunc; -inline$1['str crop'] = inline$1.trunc; -inline$1['tooltip'] = inline$1.abbr; -inline$1['abbrv'] = inline$1.abbr; -inline$1['define'] = inline$1.abbr; -inline$1['cvt'] = inline$1.convert; -var misc$1 = inline$1; - -var formatting$1 = Object.assign({}, format, lists, misc$1); - -//converts DMS (decimal-minute-second) geo format to lat/lng format. -//major thank you to https://github.com/gmaclennan/parse-dms -//and https://github.com/WSDOT-GIS/dms-js 👏 -//accepts an array of descending Degree, Minute, Second values, with a hemisphere at the end -//must have N/S/E/W as last thing -function parseDms(arr) { - var hemisphere = arr.pop(); - var degrees = Number(arr[0] || 0); - var minutes = Number(arr[1] || 0); - var seconds = Number(arr[2] || 0); + //https://en.wikipedia.org/wiki/Template:Nihongo + nihongo: (tmpl, list) => { + let obj = toJSON(tmpl, ['english', 'kanji', 'romaji', 'extra']); + list.push(obj); + let str = obj.english || obj.romaji || ''; - if (typeof hemisphere !== 'string' || isNaN(degrees)) { - return null; - } + if (obj.kanji) { + str += ` (${obj.kanji})`; + } - var sign = 1; + return str; + }, + //https://en.wikipedia.org/wiki/Template:Marriage + //this one creates a template, and an inline response + marriage: (tmpl, list) => { + let data = toJSON(tmpl, ['spouse', 'from', 'to', 'end']); + list.push(data); + let str = data.spouse || ''; - if (/[SW]/i.test(hemisphere)) { - sign = -1; - } + if (data.from) { + if (data.to) { + str += ` (m. ${data.from}-${data.to})`; + } else { + str += ` (m. ${data.from})`; + } + } - var decDeg = sign * (degrees + minutes / 60 + seconds / 3600); - return decDeg; -} + return str; + }, + //'red' card - {{sent off|cards|min1|min2}} + 'sent off': (tmpl, list) => { + let obj = toJSON(tmpl, ['cards']); + let result = { + template: 'sent off', + cards: obj.cards, + minutes: obj.list || [] + }; + list.push(result); + let mins = result.minutes.map(m => m + "'").join(', '); + return 'sent off: ' + mins; + }, + transl: (tmpl, list) => { + let obj = toJSON(tmpl, ['lang', 'text', 'text2']); // support 3-param -var dmsFormat = parseDms; // console.log(parseDms([57, 18, 22, 'N'])); + if (obj.text2) { + obj.iso = obj.text; + obj.text = obj.text2; + delete obj.text2; + } -var round = function round(num) { - if (typeof num !== 'number') { - return num; - } + list.push(obj); + return obj.text || ''; + }, + //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list + 'collapsible list': (tmpl, list) => { + let obj = toJSON(tmpl); + list.push(obj); + let str = ''; - var places = 100000; - return Math.round(num * places) / places; -}; //these hemispheres mean negative decimals + if (obj.title) { + str += `'''${obj.title}'''` + '\n\n'; + } + if (!obj.list) { + obj.list = []; -var negative = { - s: true, - w: true -}; - -var findLatLng = function findLatLng(arr) { - var types = arr.map(function (s) { - return _typeof(s); - }).join('|'); //support {{lat|lng}} - - if (arr.length === 2 && types === 'number|number') { - return { - lat: arr[0], - lon: arr[1] - }; - } //support {{dd|N/S|dd|E/W}} + for (let i = 1; i < 10; i += 1) { + if (obj[i]) { + obj.list.push(obj[i]); + delete obj[i]; + } + } + } + obj.list = obj.list.filter(s => s); + str += obj.list.join('\n\n'); + return str; + }, + //https://en.wikipedia.org/wiki/Template:Columns-list + 'columns-list': (tmpl, list) => { + let arr = toJSON(tmpl).list || []; + let str = arr[0] || ''; + let lines = str.split(/\n/).filter(f => f); + lines = lines.map(s => s.replace(/\*/, '')); + list.push({ + template: 'columns-list', + list: lines + }); + lines = lines.map(s => '• ' + s); + return lines.join('\n\n'); + }, + //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} + height: (tmpl, list) => { + let obj = toJSON(tmpl); + list.push(obj); + let result = []; + let units = ['m', 'cm', 'ft', 'in']; //order matters - if (arr.length === 4 && types === 'number|string|number|string') { - if (negative[arr[1].toLowerCase()]) { - arr[0] *= -1; - } + units.forEach(unit => { + if (obj.hasOwnProperty(unit) === true) { + result.push(obj[unit] + unit); + } + }); + return result.join(' '); + }, + //https://en.wikipedia.org/wiki/Template:Sic + sic: (tmpl, list) => { + let obj = toJSON(tmpl, ['one', 'two', 'three']); + let word = (obj.one || '') + (obj.two || ''); //support '[sic?]' - if (arr[3].toLowerCase() === 'w') { - arr[2] *= -1; + if (obj.one === '?') { + word = (obj.two || '') + (obj.three || ''); } - return { - lat: arr[0], - lon: arr[2] - }; - } //support {{dd|mm|N/S|dd|mm|E/W}} + list.push({ + template: 'sic', + word: word + }); + if (obj.nolink === 'y') { + return word; + } - if (arr.length === 6) { - return { - lat: dmsFormat(arr.slice(0, 3)), - lon: dmsFormat(arr.slice(3)) + return `${word} [sic]`; + }, + // + inrconvert: (tmpl, list) => { + let o = toJSON(tmpl, ['rupee_value', 'currency_formatting']); + list.push(o); + const mults = { + k: 1000, + m: 1000000, + b: 1000000000, + t: 1000000000000, + l: 100000, + c: 10000000, + lc: 1000000000000 }; - } //support {{dd|mm|ss|N/S|dd|mm|ss|E/W}} + if (o.currency_formatting) { + let multiplier = mults[o.currency_formatting] || 1; + o.rupee_value = o.rupee_value * multiplier; + } - if (arr.length === 8) { - return { - lat: dmsFormat(arr.slice(0, 4)), - lon: dmsFormat(arr.slice(4)) + return `inr ${o.rupee_value || ''}`; + }, + //fraction - https://en.wikipedia.org/wiki/Template:Sfrac + frac: (tmpl, list) => { + let order = ['a', 'b', 'c']; + let obj = toJSON(tmpl, order); + let data = { + template: 'sfrac' }; - } - return {}; -}; - -var parseParams = function parseParams(obj) { - obj.list = obj.list || []; - obj.list = obj.list.map(function (str) { - var num = Number(str); - - if (!isNaN(num)) { - return num; - } //these are weird - - - var split = str.split(/:/); - - if (split.length > 1) { - obj.props = obj.props || {}; - obj.props[split[0]] = split.slice(1).join(':'); - return null; + if (obj.c) { + data.integer = obj.a; + data.numerator = obj.b; + data.denominator = obj.c; + } else if (obj.b) { + data.numerator = obj.a; + data.denominator = obj.b; + } else { + data.numerator = 1; + data.denominator = obj.a; } - return str; - }); - obj.list = obj.list.filter(function (s) { - return s !== null; - }); - return obj; -}; - -var parseCoor = function parseCoor(tmpl) { - var obj = parse$3(tmpl); - obj = parseParams(obj); - var tmp = findLatLng(obj.list); - obj.lat = round(tmp.lat); - obj.lon = round(tmp.lon); - obj.template = 'coord'; - delete obj.list; - return obj; -}; - -var coor = parseCoor; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} - -var templates$1 = { - coord: function coord(tmpl, list) { - var obj = coor(tmpl); - list.push(obj); //display inline, by default + list.push(data); - if (!obj.display || obj.display.indexOf('inline') !== -1) { - return "".concat(obj.lat || '', "\xB0N, ").concat(obj.lon || '', "\xB0W"); + if (data.integer) { + return `${data.integer} ${data.numerator}⁄${data.denominator}`; } - return ''; + return `${data.numerator}⁄${data.denominator}`; }, - //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}} - -templates$1['coor'] = templates$1.coord; // these are from the nl wiki - -templates$1['coor title dms'] = templates$1.coord; -templates$1['coor title dec'] = templates$1.coord; -templates$1['coor dms'] = templates$1.coord; -templates$1['coor dm'] = templates$1.coord; -templates$1['coor dec'] = templates$1.coord; -var geo = templates$1; - -var templates$2 = { - /* mostly wiktionary*/ - etyl: 1, - mention: 1, - link: 1, - 'la-verb-form': 0, - 'la-ipa': 0, - //https://en.wikipedia.org/wiki/Template:Sortname - sortname: function sortname(tmpl) { - var order = ['first', 'last', 'target', 'sort']; - var obj = parse$3(tmpl, order); - var name = "".concat(obj.first || '', " ").concat(obj.last || ''); - name = name.trim(); - - if (obj.nolink) { - return obj.target || name; - } - - if (obj.dab) { - name += " (".concat(obj.dab, ")"); + 'winning percentage': (tmpl, list) => { + let obj = toJSON(tmpl, ['wins', 'losses', 'ties']); + list.push(obj); + let wins = Number(obj.wins); + let losses = Number(obj.losses); + let ties = Number(obj.ties) || 0; + let games = wins + losses + ties; - if (obj.target) { - obj.target += " (".concat(obj.dab, ")"); - } + if (obj.ignore_ties === 'y') { + ties = 0; } - if (obj.target) { - return "[[".concat(obj.target, "|").concat(name, "]]"); + if (ties) { + wins += ties / 2; } - return "[[".concat(name, "]]"); - } -}; //these are insane -// https://en.wikipedia.org/wiki/Template:Tl - -var links = ['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' //https://en.wikipedia.org/wiki/Template:URL -]; //keyValues - -links.forEach(function (k) { - templates$2[k] = function (tmpl) { - var order = ['first', 'second']; - var obj = parse$3(tmpl, order); - return obj.second || obj.first; - }; -}); //aliases + let num = _lib$3.percentage({ + numerator: wins, + denominator: games, + decimals: 1 + }); -templates$2.m = templates$2.mention; -templates$2['m-self'] = templates$2.mention; -templates$2.l = templates$2.link; -templates$2.ll = templates$2.link; -templates$2['l-self'] = templates$2.link; -var links_1 = templates$2; + if (num === null) { + return ''; + } -var 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' -}; -var parsers$1 = { - // https://en.wikipedia.org/wiki/Template:About - about: function about(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Main - main: function main(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Main_list - 'main list': function mainList(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:See - see: function see(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:For - "for": function _for(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // https://en.wikipedia.org/wiki/Template:Further - further: function further(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; - }, - // same as "further" (but this name is still in use) - 'further information': function furtherInformation(tmpl, list) { - var obj = parse$3(tmpl); - list.push(obj); - return ''; + return `.${num * 10}`; }, - // https://en.wikipedia.org/wiki/Template:Listen - listen: function listen(tmpl, list) { - var obj = parse$3(tmpl); + winlosspct: (tmpl, list) => { + let obj = toJSON(tmpl, ['wins', 'losses']); list.push(obj); - return ''; - }, - 'wide image': ['file', 'width', 'caption'], - //https://en.wikipedia.org/wiki/Template:Redirect - redirect: function redirect(tmpl, list) { - var data = parse$3(tmpl, ['redirect']); - var lines = data.list || []; - var links = []; + let wins = Number(obj.wins); + let losses = Number(obj.losses); + let num = _lib$3.percentage({ + numerator: wins, + denominator: wins + losses, + decimals: 1 + }); - for (var i = 0; i < lines.length; i += 2) { - links.push({ - page: lines[i + 1], - desc: lines[i] - }); + if (num === null) { + return ''; } - var obj = { - template: 'redirect', - redirect: data.redirect, - links: links - }; - list.push(obj); - return ''; - }, - //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS - 'cite gnis': function citeGnis(tmpl, list) { - var order = ['id', 'name', 'type']; - var obj = parse$3(tmpl, order); - obj.type = 'gnis'; - obj.template = 'citation'; - list.push(obj); - return ''; + num = `.${num * 10}`; + return `${wins || 0} || ${losses || 0} || ${num || '-'}`; }, - //https://en.wikipedia.org/wiki/Template:Sfn - sfn: function sfn(tmpl, list, alias) { - var order = ['author', 'year', 'location']; - var obj = parse$3(tmpl, order); + //https://en.wikipedia.org/wiki/Template:Video_game_release + 'video game release': (tmpl, list) => { + let order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; + let obj = toJSON(tmpl, order); + let template = { + template: 'video game release', + releases: [] + }; - if (alias) { - obj.name = obj.template; - obj.teplate = alias; + 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]] + }); + } } - list.push(obj); - return ''; + list.push(template); + let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n'); + return '\n' + str + '\n'; }, - audio: ['file', 'text', 'type'], - rp: ['page'], - 'spoken wikipedia': function spokenWikipedia(tmpl, list) { - var order = ['file', 'date']; - var obj = parse$3(tmpl, order); - obj.template = 'audio'; + // https://en.m.wikipedia.org/wiki/Template:USS + uss: (tmpl, list) => { + let obj = toJSON(tmpl, ['name', 'id']); list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Sister_project_links - 'sister project links': function sisterProjectLinks(tmpl, list) { - var data = parse$3(tmpl); //rename 'wd' to 'wikidata' - var links = {}; - Object.keys(sisterProjects).forEach(function (k) { - if (data.hasOwnProperty(k) === true) { - links[sisterProjects[k]] = data[k]; //.text(); - } - }); - var obj = { - template: 'sister project links', - links: links - }; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Subject_bar - 'subject bar': function subjectBar(tmpl, list) { - var data = parse$3(tmpl); - Object.keys(data).forEach(function (k) { - //rename 'voy' to 'wikivoyage' - if (sisterProjects.hasOwnProperty(k)) { - data[sisterProjects[k]] = data[k]; - delete data[k]; - } - }); - var obj = { - template: 'subject bar', - links: data - }; - list.push(obj); - return ''; - }, - 'short description': ['description'], - 'coord missing': ['region'], - //amazingly, this one does not obey any known patterns - //https://en.wikipedia.org/wiki/Template:Gallery - gallery: function gallery(tmpl, list) { - var obj = parse$3(tmpl); - var images = (obj.list || []).filter(function (line) { - return /^ *File ?:/.test(line); - }); - images = images.map(function (file) { - var img = { - file: file - }; // TODO: add lang and domain information + if (obj.id) { + return `[[USS ${obj.name} (${obj.id})|USS ''${obj.name}'' (${obj.id})]]`; + } - return new Image_1(img).json(); - }); - obj = { - template: 'gallery', - images: images - }; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:See_also - 'see also': function seeAlso(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - unreferenced: ['date'] -}; //aliases - -parsers$1['cite'] = parsers$1.citation; -parsers$1['sfnref'] = parsers$1.sfn; -parsers$1['harvid'] = parsers$1.sfn; -parsers$1['harvnb'] = parsers$1.sfn; -parsers$1['unreferenced section'] = parsers$1.unreferenced; -parsers$1['redir'] = parsers$1.redirect; -parsers$1['sisterlinks'] = parsers$1['sister project links']; -parsers$1['main article'] = parsers$1['main']; -var page = parsers$1; - -var titlecase = function titlecase(str) { - return str.charAt(0).toUpperCase() + str.substring(1); -}; //https://en.wikipedia.org/wiki/Template:Yes - - -var templates$3 = {}; -var cells = ['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']; -cells.forEach(function (str) { - templates$3[str] = function (tmpl) { - var data = parse$3(tmpl, ['text']); - return data.text || titlecase(data.template); - }; -}); //these ones have a text result - -var moreCells = [['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', '']]; -moreCells.forEach(function (a) { - templates$3[a[0]] = function (tmpl) { - var data = parse$3(tmpl, ['text']); - return data.text || a[1]; - }; -}); //this one's a little different - -templates$3.won = function (tmpl) { - var data = parse$3(tmpl, ['text']); - return data.place || data.text || titlecase(data.template); -}; - -var tableCell = templates$3; - -var wikipedia = Object.assign({}, links_1, page, tableCell); - -var zeroPad = function zeroPad(num) { - num = String(num); - - if (num.length === 1) { - num = '0' + num; - } - - return num; -}; - -var parseTeam = function parseTeam(obj, round, team) { - if (obj["rd".concat(round, "-team").concat(zeroPad(team))]) { - team = zeroPad(team); - } - - var score = obj["rd".concat(round, "-score").concat(team)]; - var num = Number(score); - - if (isNaN(num) === false) { - score = num; - } - - return { - team: obj["rd".concat(round, "-team").concat(team)], - score: score, - seed: obj["rd".concat(round, "-seed").concat(team)] - }; -}; //these are weird. - - -var playoffBracket = function playoffBracket(tmpl) { - var rounds = []; - var obj = parse$3(tmpl); //try some rounds - - for (var i = 1; i < 7; i += 1) { - var round = []; - - for (var t = 1; t < 16; t += 2) { - var key = "rd".concat(i, "-team"); - - if (obj[key + t] || obj[key + zeroPad(t)]) { - var one = parseTeam(obj, i, t); - var two = parseTeam(obj, i, t + 1); - round.push([one, two]); - } else { - break; - } - } - - if (round.length > 0) { - rounds.push(round); - } + return `[[USS ${obj.name}|USS ''${obj.name}'']]`; } - - return { - template: 'playoffbracket', - rounds: rounds - }; }; +var functions = templates$3; -var all = { - //playoff brackets - '4teambracket': function teambracket(tmpl, list) { - var obj = playoffBracket(tmpl); - list.push(obj); - return ''; - } -}; //a bunch of aliases for these ones: -// https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates - -var brackets = ['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']; -brackets.forEach(function (key) { - all[key] = all['4teambracket']; -}); -var brackets_1 = all; - -var codes = { +const codes$1 = { '£': 'GB£', // https://en.wikipedia.org/wiki/Template:GBP '¥': '¥', @@ -6811,10 +6250,10 @@ var codes = { }; -var parseCurrency = function parseCurrency(tmpl, list) { - var o = parse$3(tmpl, ['amount', 'code']); +const parseCurrency = (tmpl, list) => { + let o = toJSON(tmpl, ['amount', 'code']); list.push(o); - var code = o.template || ''; + let code = o.template || ''; if (code === 'currency') { code = o.code; @@ -6828,936 +6267,902 @@ var parseCurrency = function parseCurrency(tmpl, list) { 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'; } - var out = codes[code] || ''; - var str = "".concat(out).concat(o.amount || ''); //support unknown currencies after the number - like '5 BTC' + let str = `${codes$1[code] || ''}${o.amount || ''}`; //support unknown currencies after the number - like '5 BTC' - if (o.code && !codes[o.code.toLowerCase()]) { + if (o.code && !codes$1[o.code.toLowerCase()]) { str += ' ' + o.code; } return str; }; -var inrConvert = function inrConvert(tmpl, list) { - var o = parse$3(tmpl, ['rupee_value', 'currency_formatting']); - list.push(o); - var formatting = o.currency_formatting; +let templates$2 = { + currency: parseCurrency +}; //and the others fit the same pattern - if (formatting) { - var multiplier = 1; +Object.keys(codes$1).forEach(k => { + templates$2[k] = parseCurrency; +}); +var currency = templates$2; - switch (formatting) { - case 'k': - multiplier = 1000; - break; +const toOrdinal = function (i) { + let j = i % 10; + let k = i % 100; - case 'm': - multiplier = 1000000; - break; + if (j === 1 && k !== 11) { + return i + 'st'; + } - case 'b': - multiplier = 1000000000; - break; + if (j === 2 && k !== 12) { + return i + 'nd'; + } - case 't': - multiplier = 1000000000000; - break; + if (j === 3 && k !== 13) { + return i + 'rd'; + } - case 'l': - multiplier = 100000; - break; + return i + 'th'; +}; //this is allowed to be rough - case 'c': - multiplier = 10000000; - break; - case 'lc': - multiplier = 1000000000000; - break; - } +const day = 1000 * 60 * 60 * 24; +const month = day * 30; +const year = day * 365; - o.rupee_value = o.rupee_value * multiplier; - } +const getEpoch = function (obj) { + return new Date(`${obj.year}-${obj.month || 0}-${obj.date || 1}`).getTime(); +}; //very rough! - var str = "inr ".concat(o.rupee_value || ''); - return str; -}; -var currencies = { - //this one is generic https://en.wikipedia.org/wiki/Template:Currency - currency: parseCurrency, - monnaie: parseCurrency, - unité: parseCurrency, - nombre: parseCurrency, - nb: parseCurrency, - iso4217: parseCurrency, - inrconvert: inrConvert -}; //the others fit the same pattern.. +const delta$1 = function (from, to) { + from = getEpoch(from); + to = getEpoch(to); + let diff = to - from; + let obj = {}; //get years -Object.keys(codes).forEach(function (k) { - currencies[k] = parseCurrency; -}); -var currency = currencies; + let years = Math.floor(diff / year, 10); -var templates$4 = { - //https://en.wikipedia.org/wiki/Template:Election_box - 'election box begin': function electionBoxBegin(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - 'election box candidate': function electionBoxCandidate(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - 'election box hold with party link': function electionBoxHoldWithPartyLink(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - }, - 'election box gain with party link': function electionBoxGainWithPartyLink(tmpl, list) { - var data = parse$3(tmpl); - list.push(data); - return ''; - } -}; //aliases + if (years > 0) { + obj.years = years; + diff -= obj.years * year; + } //get months -templates$4['election box begin no change'] = templates$4['election box begin']; -templates$4['election box begin no party'] = templates$4['election box begin']; -templates$4['election box begin no party no change'] = templates$4['election box begin']; -templates$4['election box inline begin'] = templates$4['election box begin']; -templates$4['election box inline begin no change'] = templates$4['election box begin']; -templates$4['election box candidate for alliance'] = templates$4['election box candidate']; -templates$4['election box candidate minor party'] = templates$4['election box candidate']; -templates$4['election box candidate no party link no change'] = templates$4['election box candidate']; -templates$4['election box candidate with party link'] = templates$4['election box candidate']; -templates$4['election box candidate with party link coalition 1918'] = templates$4['election box candidate']; -templates$4['election box candidate with party link no change'] = templates$4['election box candidate']; -templates$4['election box inline candidate'] = templates$4['election box candidate']; -templates$4['election box inline candidate no change'] = templates$4['election box candidate']; -templates$4['election box inline candidate with party link'] = templates$4['election box candidate']; -templates$4['election box inline candidate with party link no change'] = templates$4['election box candidate']; -templates$4['election box inline incumbent'] = templates$4['election box candidate']; -var elections = templates$4; - -var flags = [['🇦🇩', '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', //dupe -'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', //alias -'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'], // ['🇬🇪', 'geo', 'georgia'], -['🇬🇫', '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'], ['🇺🇸', 'usa', 'united states'], ['🇺🇸', 'us', //alias -'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'], ['', 'win', 'west indies'], ['🇼🇫', 'wlf', 'wallis and futuna'], ['🇼🇸', 'wsm', 'samoa'], ['🇾🇪', 'yem', 'yemen'], ['🇾🇹', 'myt', 'mayotte'], ['🇿🇦', 'zaf', 'south africa'], ['🇿🇲', 'zmb', 'zambia'], ['🇿🇼 ', 'zwe', 'zimbabwe'], //others (later unicode versions) -['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; -var templates$5 = { - //https://en.wikipedia.org/wiki/Template:Flag - // {{flag|USA}} → USA - flag: function flag(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - var name = obj.flag || ''; - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - var flag = found[0] || ''; - return "".concat(flag, " [[").concat(found[2], "|").concat(name, "]]"); - }, - // {{flagcountry|USA}} → United States - flagcountry: function flagcountry(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - var flag = found[0] || ''; - return "".concat(flag, " [[").concat(found[2], "]]"); - }, - // (unlinked flag-country) - flagcu: function flagcu(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - var flag = found[0] || ''; - return "".concat(flag, " ").concat(found[2]); - }, - //https://en.wikipedia.org/wiki/Template:Flagicon - // {{flagicon|USA}} → United States - flagicon: function flagicon(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); + let monthCount = Math.floor(diff / month, 10); - if (!found) { - return ''; - } + if (monthCount > 0) { + obj.months = monthCount; + diff -= obj.months * month; + } //get days - return "[[".concat(found[2], "|").concat(found[0], "]]"); - }, - //unlinked flagicon - flagdeco: function flagdeco(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }) || []; - return found[0] || ''; - }, - //same, but a soccer team - fb: function fb(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); - if (!found) { - return ''; - } + let days = Math.floor(diff / day, 10); - return "".concat(found[0], " [[").concat(found[2], " national football team|").concat(found[2], "]]"); - }, - fbicon: function fbicon(tmpl) { - var order = ['flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); + if (days > 0) { + obj.days = days; // diff -= (obj.days * day); + } - if (!found) { - return ''; - } + return obj; +}; //not all too fancy - used in {{timesince}} - return " [[".concat(found[2], " national football team|").concat(found[0], "]]"); - }, - flagathlete: function flagathlete(tmpl) { - var order = ['name', 'flag', 'variant']; - var obj = parse$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - var found = flags.find(function (a) { - return obj.flag === a[1] || obj.flag === a[2]; - }); - if (!found) { - return "[[".concat(obj.name || '', "]]"); - } +const timeSince = function (str) { + let d = new Date(str); - return "".concat(found[0], " [[").concat(obj.name || '', "]] (").concat(found[1].toUpperCase(), ")"); + if (isNaN(d.getTime())) { + return ''; } -}; //support {{can}} -flags.forEach(function (a) { - templates$5[a[1]] = function () { - return a[0]; - }; -}); //cricket + let now = new Date(); + let delt = now.getTime() - d.getTime(); + let predicate = 'ago'; -templates$5['cr'] = templates$5.flagcountry; -templates$5['cr-rt'] = templates$5.flagcountry; -templates$5['cricon'] = templates$5.flagicon; -var flags_1 = templates$5; + if (delt < 0) { + predicate = 'from now'; + delt = Math.abs(delt); + } //figure out units -var getLang = function getLang(name) { - //grab the language from the template name - 'ipa-de' - var lang = name.match(/ipac?-(.+)/); - if (lang !== null) { - if (languages.hasOwnProperty(lang[1]) === true) { - return languages[lang[1]].english_title; - } + let hours = delt / 1000 / 60 / 60; + let days = hours / 24; - return lang[1]; + if (days < 365) { + return parseInt(days, 10) + ' days ' + predicate; } - return null; -}; // pronounciation info - - -var templates$6 = { - // https://en.wikipedia.org/wiki/Template:IPA - ipa: function ipa(tmpl, list) { - var obj = parse$3(tmpl, ['transcription', 'lang', 'audio']); - obj.lang = getLang(obj.template); - obj.template = 'ipa'; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:IPAc-en - ipac: function ipac(tmpl, list) { - var obj = parse$3(tmpl); - obj.transcription = (obj.list || []).join(','); - delete obj.list; - obj.lang = getLang(obj.template); - obj.template = 'ipac'; - list.push(obj); - return ''; - }, - transl: function transl(tmpl, list) { - var obj = parse$3(tmpl, ['lang', 'text', 'text2']); // support 3-param + let years = days / 365; + return parseInt(years, 10) + ' years ' + predicate; +}; - if (obj.text2) { - obj.iso = obj.text; - obj.text = obj.text2; - delete obj.text2; - } +const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; +var _lib$2 = { + days: days, + timeSince: timeSince, + delta: delta$1, + toOrdinal: toOrdinal +}; - list.push(obj); - return obj.text || ''; +//assorted parsing methods for date/time templates +const months$1 = [undefined, //1-based months.. :/ +'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; +const monthName = months$1.reduce((h, str, i) => { + if (i === 0) { + return h; } -}; // - 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(function (lang) { - templates$6['ipa-' + lang] = templates$6.ipa; - templates$6['ipac-' + lang] = templates$6.ipac; -}); -var ipa = templates$6; + h[str.toLowerCase()] = i; + return h; +}, {}); //parse year|month|date numbers -var templates$7 = { - lang: 1, - //this one has a million variants - 'lang-de': 0, - 'rtl-lang': 1, - //german keyboard letterscn - taste: 0, - //https://en.wikipedia.org/wiki/Template:Nihongo - nihongo: function nihongo(tmpl, list) { - var obj = parse$3(tmpl, ['english', 'kanji', 'romaji', 'extra']); - list.push(obj); - var str = obj.english || obj.romaji || ''; +const ymd = function (arr) { + let obj = {}; + let units = ['year', 'month', 'date', 'hour', 'minute', 'second']; //parse each unit in sequence.. - if (obj.kanji) { - str += " (".concat(obj.kanji, ")"); + for (let i = 0; i < units.length; i += 1) { + //skip it + if (!arr[i] && arr[1] !== 0) { + continue; } - return str; - } -}; //https://en.wikipedia.org/wiki/Category:Lang-x_templates + let num = parseInt(arr[i], 10); -Object.keys(languages).forEach(function (k) { - templates$7['lang-' + k] = templates$7['lang-de']; -}); -templates$7['nihongo2'] = templates$7.nihongo; -templates$7['nihongo3'] = templates$7.nihongo; -templates$7['nihongo-s'] = templates$7.nihongo; -templates$7['nihongo foot'] = templates$7.nihongo; -var languages_1 = templates$7; + if (isNaN(num) === false) { + obj[units[i]] = num; //we good. + } else if (units[i] === 'month' && monthName.hasOwnProperty(arr[i])) { + //try for month-name, like 'january + let month = monthName[arr[i]]; + obj[units[i]] = month; + } else { + //we dead. so skip this unit + delete obj[units[i]]; + } + } //try for timezone,too ftw -//simply num/denom * 100 -var _percentage = function percentage(obj) { - if (!obj.numerator && !obj.denominator) { - return null; + let last = arr[arr.length - 1] || ''; + last = String(last); + + if (last.toLowerCase() === 'z') { + obj.tz = 'UTC'; + } else if (/[+-][0-9]+:[0-9]/.test(last)) { + obj.tz = arr[6]; } - var perc = Number(obj.numerator) / Number(obj.denominator); - perc *= 100; - var dec = Number(obj.decimals); + return obj; +}; //zero-pad a number - if (isNaN(dec)) { - dec = 1; + +const pad = function (num) { + if (num < 10) { + return '0' + num; } - perc = perc.toFixed(dec); - return Number(perc); + return String(num); }; -var templates$8 = { - // https://en.wikipedia.org/wiki/Template:Math - math: function math(tmpl, list) { - var obj = parse$3(tmpl, ['formula']); - list.push(obj); - return '\n\n' + (obj.formula || '') + '\n\n'; - }, - //fraction - https://en.wikipedia.org/wiki/Template:Sfrac - frac: function frac(tmpl, list) { - var order = ['a', 'b', 'c']; - var obj = parse$3(tmpl, order); - var data = { - template: 'sfrac' - }; +const toText$1 = function (date) { + //eg '1995' + let str = String(date.year || ''); - if (obj.c) { - data.integer = obj.a; - data.numerator = obj.b; - data.denominator = obj.c; - } else if (obj.b) { - data.numerator = obj.a; - data.denominator = obj.b; + if (date.month !== undefined && months$1.hasOwnProperty(date.month) === true) { + if (date.date === undefined) { + //January 1995 + str = `${months$1[date.month]} ${date.year}`; } else { - data.numerator = 1; - data.denominator = obj.a; + //January 5, 1995 + str = `${months$1[date.month]} ${date.date}, ${date.year}`; //add times, if available + + if (date.hour !== undefined && date.minute !== undefined) { + let time = `${pad(date.hour)}:${pad(date.minute)}`; + + if (date.second !== undefined) { + time = time + ':' + pad(date.second); + } + + str = time + ', ' + str; //add timezone, if there, at the end in brackets + } + + if (date.tz) { + str += ` (${date.tz})`; + } } + } - list.push(data); + return str; +}; - if (data.integer) { - return "".concat(data.integer, " ").concat(data.numerator, "\u2044").concat(data.denominator); +var _format = { + toText: toText$1, + ymd: ymd +}; // console.log(toText(ymd([2018, 3, 28]))); + +const delta = _lib$2.delta; //wrap it up as a template + +const template$1 = function (date) { + return { + template: 'date', + data: date + }; +}; + +const getBoth = function (tmpl) { + tmpl = _strip(tmpl); + let arr = tmpl.split('|'); + let from = _format.ymd(arr.slice(1, 4)); + let to = arr.slice(4, 7); //assume now, if 'to' is empty + + if (to.length === 0) { + let d = new Date(); + to = [d.getFullYear(), d.getMonth(), d.getDate()]; + } + + to = _format.ymd(to); + return { + from: from, + to: to + }; +}; + +const parsers = { + //generic {{date|year|month|date}} template + date: (tmpl, list) => { + let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; + let obj = toJSON(tmpl, order); + let data = _format.ymd([obj.year, obj.month, obj.date || obj.day]); + obj.text = _format.toText(data); //make the replacement string + + if (obj.timezone) { + if (obj.timezone === 'Z') { + obj.timezone = 'UTC'; + } + + obj.text += ` (${obj.timezone})`; } - return "".concat(data.numerator, "\u2044").concat(data.denominator); - }, - //https://en.wikipedia.org/wiki/Template:Radic - radic: function radic(tmpl) { - var order = ['after', 'before']; - var obj = parse$3(tmpl, order); - return "".concat(obj.before || '', "\u221A").concat(obj.after || ''); + if (obj.hour && obj.minute) { + if (obj.second) { + obj.text = `${obj.hour}:${obj.minute}:${obj.second}, ` + obj.text; + } else { + obj.text = `${obj.hour}:${obj.minute}, ` + obj.text; + } + } + + if (obj.text) { + list.push(template$1(obj)); + } + + return obj.text; }, - //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} - percentage: function percentage(tmpl) { - var obj = parse$3(tmpl, ['numerator', 'denominator', 'decimals']); + //support parsing of 'February 10, 1992' + natural_date: (tmpl, list) => { + let order = ['text']; + let obj = toJSON(tmpl, order); + let str = obj.text || ''; // - just a year - var num = _percentage(obj); + let date = {}; - if (num === null) { - return ''; + if (/^[0-9]{4}$/.test(str)) { + date.year = parseInt(str, 10); + } else { + //parse the date, using the js date object (for now?) + let txt = str.replace(/[a-z]+\/[a-z]+/i, ''); + txt = txt.replace(/[0-9]+:[0-9]+(am|pm)?/i, ''); + let d = new Date(txt); + + if (isNaN(d.getTime()) === false) { + date.year = d.getFullYear(); + date.month = d.getMonth() + 1; + date.date = d.getDate(); + } } - return num + '%'; + list.push(template$1(date)); + return str.trim(); }, - // {{Percent-done|done=N|total=N|digits=N}} - 'percent-done': function percentDone(tmpl) { - var obj = parse$3(tmpl, ['done', 'total', 'digits']); + //just grab the first value, and assume it's a year + one_year: (tmpl, list) => { + let order = ['year']; + let obj = toJSON(tmpl, order); + let year = Number(obj.year); + list.push(template$1({ + year: year + })); + return String(year); + }, + //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 obj = toJSON(tmpl, order); //'b' means show birth-date, otherwise show death-date - var num = _percentage({ - numerator: obj.done, - denominator: obj.total, - decimals: obj.digits - }); + if (obj.b && obj.b.toLowerCase() === 'b') { + let date = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_date]); + list.push(template$1(date)); + return _format.toText(date); + } - if (num === null) { - return ''; + let date = _format.ymd([obj.death_year, obj.death_month, obj.death_date]); + list.push(template$1(date)); + return _format.toText(date); + }, + age: tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + return diff.years || 0; + }, + 'diff-y': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + + if (diff.years === 1) { + return diff.years + ' year'; } - return "".concat(obj.done, " (").concat(num, "%) done"); + return (diff.years || 0) + ' years'; }, - 'winning percentage': function winningPercentage(tmpl, list) { - var obj = parse$3(tmpl, ['wins', 'losses', 'ties']); - list.push(obj); - var wins = Number(obj.wins); - var losses = Number(obj.losses); - var ties = Number(obj.ties) || 0; - var games = wins + losses + ties; + 'diff-ym': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; - if (obj.ignore_ties === 'y') { - ties = 0; + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); } - if (ties) { - wins += ties / 2; + if (diff.months === 1) { + arr.push('1 month'); + } else if (diff.months && diff.months !== 0) { + arr.push(diff.months + ' months'); } - var num = _percentage({ - numerator: wins, - denominator: games, - decimals: 1 - }); + return arr.join(', '); + }, + 'diff-ymd': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; - if (num === null) { - return ''; + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } + + if (diff.months === 1) { + arr.push('1 month'); + } else if (diff.months && diff.months !== 0) { + arr.push(diff.months + ' months'); + } + + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); } - return ".".concat(num * 10); + return arr.join(', '); }, - winlosspct: function winlosspct(tmpl, list) { - var obj = parse$3(tmpl, ['wins', 'losses']); - list.push(obj); - var wins = Number(obj.wins); - var losses = Number(obj.losses); + 'diff-yd': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; - var num = _percentage({ - numerator: wins, - denominator: wins + losses, - decimals: 1 - }); + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } //ergh... - if (num === null) { - return ''; + + diff.days += (diff.months || 0) * 30; + + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); } - num = ".".concat(num * 10); - return "".concat(wins || 0, " || ").concat(losses || 0, " || ").concat(num || '-'); - } -}; //aliases + return arr.join(', '); + }, + 'diff-d': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; //ergh... -templates$8['sfrac'] = templates$8.frac; -templates$8['sqrt'] = templates$8.radic; -templates$8['pct'] = templates$8.percentage; -templates$8['percent'] = templates$8.percentage; -templates$8['winpct'] = templates$8['winning percentage']; -templates$8['winperc'] = templates$8['winning percentage']; -var math = templates$8; + diff.days += (diff.years || 0) * 365; + diff.days += (diff.months || 0) * 30; -var generic = function generic(tmpl, list, alias) { - var obj = parse$3(tmpl); + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); + } - if (alias) { - obj.name = obj.template; - obj.template = alias; + return arr.join(', '); } - - list.push(obj); - return ''; }; +var _parsers = parsers; -var misc$2 = { - //i18n templates - persondata: generic, - taxobox: generic, - citation: generic, - portal: generic, - reflist: generic, - 'cite book': generic, - 'cite journal': generic, - 'cite web': generic, - 'commons cat': generic, - // https://en.wikipedia.org/wiki/Template:Portuguese_name - 'portuguese name': ['first', 'second', 'suffix'], - uss: ['ship', 'id'], - isbn: function isbn(tmpl, list) { - var order = ['id', 'id2', 'id3']; - var obj = parse$3(tmpl, order); - list.push(obj); - return 'ISBN: ' + (obj.id || ''); +const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; //date- templates we support + +var dates = { + currentday: () => { + let d = new Date(); + return String(d.getDate()); }, - //https://en.wikipedia.org/wiki/Template:Marriage - //this one creates a template, and an inline response - marriage: function marriage(tmpl, list) { - var data = parse$3(tmpl, ['spouse', 'from', 'to', 'end']); - list.push(data); - var str = "".concat(data.spouse || ''); + currentdayname: () => { + let d = new Date(); + return _lib$2.days[d.getDay()]; + }, + currentmonth: () => { + let d = new Date(); + return months[d.getMonth()]; + }, + currentyear: () => { + let d = new Date(); + return String(d.getFullYear()); + }, + monthyear: () => { + let d = new Date(); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'monthyear-1': () => { + let d = new Date(); + d.setMonth(d.getMonth() - 1); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'monthyear+1': () => { + let d = new Date(); + d.setMonth(d.getMonth() + 1); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'time ago': tmpl => { + let order = ['date', 'fmt']; + let time = toJSON(tmpl, order).date; + return _lib$2.timeSince(time); + }, + //https://en.wikipedia.org/wiki/Template:Birth_date_and_age + 'birth date and age': (tmpl, list) => { + let order = ['year', 'month', 'day']; + let obj = toJSON(tmpl, order); //support 'one property' version - if (data.from) { - if (data.to) { - str += " (m. ".concat(data.from, "-").concat(data.to, ")"); - } else { - str += " (m. ".concat(data.from, ")"); - } + if (obj.year && /[a-z]/i.test(obj.year)) { + return _parsers.natural_date(tmpl, list); } - return str; - }, - //https://en.wikipedia.org/wiki/Template:Based_on - 'based on': function basedOn(tmpl, list) { - var obj = parse$3(tmpl, ['title', 'author']); list.push(obj); - return "".concat(obj.title, " by ").concat(obj.author || ''); + obj = _format.ymd([obj.year, obj.month, obj.day]); + return _format.toText(obj); }, - //https://en.wikipedia.org/wiki/Template:Video_game_release - 'video game release': function videoGameRelease(tmpl, list) { - var order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; - var obj = parse$3(tmpl, order); - var template = { - template: 'video game release', - releases: [] - }; + 'birth year and age': (tmpl, list) => { + let order = ['birth_year', 'birth_month']; + let obj = toJSON(tmpl, order); //support 'one property' version - for (var i = 0; i < order.length; i += 2) { - if (obj[order[i]]) { - template.releases.push({ - region: obj[order[i]], - date: obj[order[i + 1]] - }); - } + if (obj.death_year && /[a-z]/i.test(obj.death_year)) { + return _parsers.natural_date(tmpl, list); } - list.push(template); - var str = template.releases.map(function (o) { - return "".concat(o.region, ": ").concat(o.date || ''); - }).join('\n\n'); - return '\n' + str + '\n'; - }, - //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t - 'bbl to t': function bblToT(tmpl, list) { - var obj = parse$3(tmpl, ['barrels']); list.push(obj); + let age = new Date().getFullYear() - parseInt(obj.birth_year, 10); + obj = _format.ymd([obj.birth_year, obj.birth_month]); + let str = _format.toText(obj); - if (obj.barrels === '0') { - return obj.barrels + ' barrel'; + if (age) { + str += ` (age ${age})`; } - return obj.barrels + ' barrels'; + return str; }, - //https://en.wikipedia.org/wiki/Template:Historical_populations - 'historical populations': function historicalPopulations(tmpl, list) { - var data = parse$3(tmpl); - data.list = data.list || []; - var years = []; + 'death year and age': (tmpl, list) => { + let order = ['death_year', 'birth_year', 'death_month']; + let obj = toJSON(tmpl, order); //support 'one property' version - for (var i = 0; i < data.list.length; i += 2) { - var num = data.list[i + 1]; - years.push({ - year: data.list[i], - val: Number(num) || num - }); + if (obj.death_year && /[a-z]/i.test(obj.death_year)) { + return _parsers.natural_date(tmpl, list); } - data.data = years; - delete data.list; - list.push(data); - return ''; - } -}; -var misc_1$1 = misc$2; - -// okay, these just hurts my feelings -// https://www.mediawiki.org/wiki/Help:Magic_words#Other -var punctuation = [// https://en.wikipedia.org/wiki/Template:%C2%B7 -['·', '·'], ['·', '·'], ['dot', '·'], ['middot', '·'], ['•', ' • '], //yup, oxford comma template -[',', ','], ['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', ' – '], // these '{{^}}' things are nuts, and used as some ilicit spacing thing. -['^', ' '], ['!', '|'], ['\\', ' /'], ['`', '`'], ['=', '='], ['bracket', '['], ['[', '['], ['*', '*'], ['asterisk', '*'], ['long dash', '———'], ['clear', '\n\n'], ['h.', 'ḥ']]; -var templates$9 = {}; -punctuation.forEach(function (a) { - templates$9[a[0]] = a[1]; -}); -var punctuation_1 = templates$9; - -var templates$a = { - //https://en.wikipedia.org/wiki/Template:Taxon_info - 'taxon info': ['taxon', 'item'], - //minor planet - https://en.wikipedia.org/wiki/Template:MPC - mpc: function mpc(tmpl, list) { - var obj = parse$3(tmpl, ['number', 'text']); list.push(obj); - return "[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ".concat(obj.text || obj.number, "]"); + obj = _format.ymd([obj.death_year, obj.death_month]); + return _format.toText(obj); }, - //https://en.wikipedia.org/wiki/Template:Chem2 - chem2: function chem2(tmpl, list) { - var obj = parse$3(tmpl, ['equation']); + //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 + 'birth date and age2': (tmpl, list) => { + let order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; + let obj = toJSON(tmpl, order); list.push(obj); - return obj.equation; - }, - //https://en.wikipedia.org/wiki/Template:Sky - sky: function sky(tmpl, list) { - var obj = parse$3(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); - var template = { - template: 'sky', - ascension: { - hours: obj.asc_hours, - minutes: obj.asc_minutes, - seconds: obj.asc_seconds - }, - declination: { - sign: obj.dec_sign, - degrees: obj.dec_degrees, - minutes: obj.dec_minutes, - seconds: obj.dec_seconds - }, - distance: obj.distance - }; - list.push(template); - return ''; + obj = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); + return _format.toText(obj); }, - // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see - // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original - // parsing code. - 'medical cases chart': function medicalCasesChart(tmpl, list) { - var order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; - var obj = parse$3(tmpl); - obj.data = obj.data || ''; - var rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following - // line on: - // - // for parameter in mw.text.gsplit(line, ';') do + //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date + 'birth based on age as of date': (tmpl, list) => { + let order = ['age', 'year', 'month', 'day']; + let obj = toJSON(tmpl, order); + list.push(obj); + let age = parseInt(obj.age, 10); + let year = parseInt(obj.year, 10); + let born = year - age; - var dataArray = rows.map(function (row) { - var parameters = row.split(';'); - var rowObject = { - options: new Map() - }; - var positionalIndex = 0; + if (born && age) { + return `${born} (age ${obj.age})`; + } + + return `(age ${obj.age})`; + }, + //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age + 'death date and given age': (tmpl, list) => { + let order = ['year', 'month', 'day', 'age']; + let obj = toJSON(tmpl, order); + list.push(obj); + obj = _format.ymd([obj.year, obj.month, obj.day]); + let str = _format.toText(obj); - for (var i = 0; i < parameters.length; i++) { - var parameter = parameters[i].trim(); + if (obj.age) { + str += ` (age ${obj.age})`; + } - if (parameter.match(/^[a-zA-Z_]/)) { - // Named argument - var _parameter$split = parameter.split('='), - _parameter$split2 = _slicedToArray(_parameter$split, 2), - key = _parameter$split2[0], - value = _parameter$split2[1]; // At this point, the Lua code evaluates alttot1 and alttot2 values as - // #expr expressions, but we just pass them through. See also: - // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr + return str; + }, + //sortable dates - + dts: tmpl => { + //remove formatting stuff, ewww + tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); + tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); + let order = ['year', 'month', 'date', 'bc']; + let obj = toJSON(tmpl, order); + if (obj.date && obj.month && obj.year) { + //render 'june 5 2018' + if (/[a-z]/.test(obj.month) === true) { + return [obj.month, obj.date, obj.year].join(' '); + } - if (value === undefined) { - value = null; - } + return [obj.year, obj.month, obj.date].join('-'); + } - rowObject.options.set(key, value); - } else { - // Positional argument - // Here again, the Lua code evaluates arguments at index 1 through 5 - // as #expr expressions, but we just pass them through. - if (positionalIndex < order.length) { - rowObject[order[positionalIndex]] = parameter; - } + if (obj.month && obj.year) { + return [obj.year, obj.month].join('-'); + } - positionalIndex++; - } + if (obj.year) { + if (obj.year < 0) { + obj.year = Math.abs(obj.year) + ' BC'; } - for (; positionalIndex < order.length; positionalIndex++) { - rowObject[order[positionalIndex]] = null; - } + return obj.year; + } - return rowObject; - }); - obj.data = dataArray; - list.push(obj); return ''; }, - 'medical cases chart/row': function medicalCasesChartRow(tmpl) { - // Deprecated template; we keep it. - return tmpl; + //we can't do timezones, so fake this one a little bit + //https://en.wikipedia.org/wiki/Template:Time + time: () => { + let d = new Date(); + let obj = _format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); + return _format.toText(obj); + }, + // https://en.wikipedia.org/wiki/Template:MILLENNIUM + millennium: tmpl => { + let obj = toJSON(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 1000, 10) + 1; + + if (obj.abbr && obj.abbr === 'y') { + if (year < 0) { + return `${_lib$2.toOrdinal(Math.abs(year))} BC`; + } + + return `${_lib$2.toOrdinal(year)}`; + } + + return `${_lib$2.toOrdinal(year)} millennium`; + }, + //date/age/time templates + start: _parsers.date, + 'start-date': _parsers.natural_date, + birthdeathage: _parsers.two_dates, + age: _parsers.age, + 'age nts': _parsers.age, + 'age in years': _parsers['diff-y'], + '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'] // 'birth date and age2': date, + // 'age in years, months, weeks and days': true, + // 'age as of date': true, + +}; + +/** + * converts DMS (decimal-minute-second) geo format to lat/lng format. + * major thank you to https://github.com/gmaclennan/parse-dms and https://github.com/WSDOT-GIS/dms-js 👏 + **/ + +function parseDMS(arr) { + let hemisphere = arr.pop(); + let degrees = Number(arr[0] || 0); + let minutes = Number(arr[1] || 0); + let seconds = Number(arr[2] || 0); + + if (typeof hemisphere !== 'string' || isNaN(degrees)) { + return null; + } + + let sign = 1; + + if (/[SW]/i.test(hemisphere)) { + sign = -1; + } + + return sign * (degrees + minutes / 60 + seconds / 3600); +} + +const round = function (num) { + if (typeof num !== 'number') { + return num; } + + let places = 100000; + return Math.round(num * places) / places; +}; //these hemispheres mean negative decimals + + +const negative = { + s: true, + w: true }; -var science = templates$a; -var sports = { - player: function player(tmpl, list) { - var res = parse$3(tmpl, ['number', 'country', 'name', 'dl']); - list.push(res); - var str = "[[".concat(res.name, "]]"); +const findLatLng = function (arr) { + const types = arr.map(s => typeof s).join('|'); //support {{lat|lng}} - if (res.country) { - var country = (res.country || '').toLowerCase(); - var flag = flags.find(function (a) { - return country === a[1] || country === a[2]; - }) || []; + if (arr.length === 2 && types === 'number|number') { + return { + lat: arr[0], + lon: arr[1] + }; + } //support {{dd|N/S|dd|E/W}} - if (flag && flag[0]) { - str = flag[0] + ' ' + str; - } + + if (arr.length === 4 && types === 'number|string|number|string') { + if (negative[arr[1].toLowerCase()]) { + arr[0] *= -1; } - if (res.number) { - str = res.number + ' ' + str; + if (arr[3].toLowerCase() === 'w') { + arr[2] *= -1; } - return str; - }, - //https://en.wikipedia.org/wiki/Template:Goal - goal: function goal(tmpl, list) { - var res = parse$3(tmpl); - var obj = { - template: 'goal', - data: [] + return { + lat: arr[0], + lon: arr[2] }; - var arr = res.list || []; + } //support {{dd|mm|N/S|dd|mm|E/W}} - for (var i = 0; i < arr.length; i += 2) { - obj.data.push({ - min: arr[i], - note: arr[i + 1] || '' - }); - } - list.push(obj); //generate a little text summary + if (arr.length === 6) { + return { + lat: parseDMS(arr.slice(0, 3)), + lon: parseDMS(arr.slice(3)) + }; + } //support {{dd|mm|ss|N/S|dd|mm|ss|E/W}} - var summary = '⚽ '; - summary += obj.data.map(function (o) { - var note = o.note; - if (note) { - note = " (".concat(note, ")"); - } + if (arr.length === 8) { + return { + lat: parseDMS(arr.slice(0, 4)), + lon: parseDMS(arr.slice(4)) + }; + } - return o.min + "'" + note; - }).join(', '); - return summary; - }, - //yellow card - yel: function yel(tmpl, list) { - var obj = parse$3(tmpl, ['min']); - list.push(obj); + return {}; +}; - if (obj.min) { - return "yellow: ".concat(obj.min || '', "'"); //no yellow-card emoji - } +const parseParams = function (obj) { + obj.list = obj.list || []; + obj.list = obj.list.map(str => { + let num = Number(str); - return ''; - }, - subon: function subon(tmpl, list) { - var obj = parse$3(tmpl, ['min']); - list.push(obj); + if (!isNaN(num)) { + return num; + } //these are weird - if (obj.min) { - return "sub on: ".concat(obj.min || '', "'"); //no yellow-card emoji + + let split = str.split(/:/); + + if (split.length > 1) { + obj.props = obj.props || {}; + obj.props[split[0]] = split.slice(1).join(':'); + return null; } - return ''; - }, - suboff: function suboff(tmpl, list) { - var obj = parse$3(tmpl, ['min']); - list.push(obj); + return str; + }); + obj.list = obj.list.filter(s => s !== null); + return obj; +}; - if (obj.min) { - return "sub off: ".concat(obj.min || '', "'"); //no yellow-card emoji +const parseCoor = function (tmpl) { + let obj = toJSON(tmpl); + obj = parseParams(obj); + let tmp = findLatLng(obj.list); + obj.lat = round(tmp.lat); + obj.lon = round(tmp.lon); + obj.template = 'coord'; + delete obj.list; + return obj; +}; //console.log(parseDms([57, 18, 22, 'N'])); +//console.log(parseDms([4, 27, 32, 'W'])); + + +var _lib$1 = parseCoor; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} + +const templates$1 = { + coord: (tmpl, list) => { + let obj = _lib$1(tmpl); + list.push(obj); //display inline, by default + + if (!obj.display || obj.display.indexOf('inline') !== -1) { + return `${obj.lat || ''}°N, ${obj.lon || ''}°W`; } return ''; - }, - pengoal: function pengoal(tmpl, list) { - list.push({ - template: 'pengoal' - }); - return '✅'; - }, - penmiss: function penmiss(tmpl, list) { - list.push({ - template: 'penmiss' - }); - return '❌'; - }, - //'red' card - {{sent off|cards|min1|min2}} - 'sent off': function sentOff(tmpl, list) { - var obj = parse$3(tmpl, ['cards']); - var result = { - template: 'sent off', - cards: obj.cards, - minutes: obj.list || [] - }; - list.push(result); - var mins = result.minutes.map(function (m) { - return m + "'"; - }).join(', '); - return 'sent off: ' + mins; } -}; -var soccer = sports; +}; //{{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}} -var misc$3 = { - 'baseball secondary style': 0, - mlbplayer: function mlbplayer(tmpl, list) { - var obj = parse$3(tmpl, ['number', 'name', 'dl']); - list.push(obj); - return obj.name; - } -}; -var sports$1 = Object.assign({}, misc$3, brackets_1, soccer); +var geo = templates$1; -var codes$1 = { +const generic = function (tmpl, list, _parser, alias) { + let obj = toJSON(tmpl); + + if (alias) { + obj.name = obj.template; + obj.template = alias; + } + + list.push(obj); + return ''; +}; // it may seem redundant, +// but we need these templates for our i18n mappings + + +const misc = { + persondata: generic, + taxobox: generic, + citation: generic, + portal: generic, + reflist: generic, + 'cite book': generic, + 'cite journal': generic, + 'cite web': generic, + 'commons cat': generic, + 'election box candidate': generic, + 'election box begin': generic, + main: generic +}; +var misc_1 = misc; + +const codes = { adx: 'adx', //https://en.wikipedia.org/wiki/Template:Abu_Dhabi_Securities_Exchange aim: 'aim', //https://en.wikipedia.org/wiki/Template:Alternative_Investment_Market - bvpasa: 'bvpasa', - //https://en.wikipedia.org/wiki/Template:BVPASA + amex: 'amex', + //https://en.wikipedia.org/wiki/Template:NYSE_American asx: 'asx', //https://en.wikipedia.org/wiki/Template:Australian_Securities_Exchange athex: 'athex', //https://en.wikipedia.org/wiki/Template:Athens_Exchange + b3: 'b3', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa (redirects to B3 (stock exchange)) + 'B3 (stock exchange)': 'B3 (stock exchange)', + //https://en.wikipedia.org/wiki/Template:B3_(stock_exchange) + barbadosse: 'barbadosse', + //https://en.wikipedia.org/wiki/Template:Barbados_Stock_Exchange + bbv: 'bbv', + //https://en.wikipedia.org/wiki/Template:La_Paz_Stock_Exchange + bcba: 'bcba', + //https://en.wikipedia.org/wiki/Template:Buenos_Aires_Stock_Exchange + bcs: 'bcs', + //https://en.wikipedia.org/wiki/Template:Santiago_Stock_Exchange bhse: 'bhse', //https://en.wikipedia.org/wiki/Template:Bahrain_Bourse - bvb: 'bvb', - //https://en.wikipedia.org/wiki/Template:Bucharest_Stock_Exchange - bbv: 'bbv', - //https://en.wikipedia.org/wiki/Template:BBV - bsx: 'bsx', - //https://en.wikipedia.org/wiki/Template:Bermuda_Stock_Exchange - b3: 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - 'bm&f': 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa + bist: 'bist', + //https://en.wikipedia.org/wiki/Template:Borsa_Istanbul + bit: 'bit', + //https://en.wikipedia.org/wiki/Template:Borsa_Italiana 'bm&f bovespa': 'b3', //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - bwse: 'bwse', - //https://en.wikipedia.org/wiki/Template:Botswana_Stock_Exchange - 'botswana stock exchange': 'botswana stock exchange', + 'bm&f': 'b3', //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - bse: 'bse', - //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + bmad: 'bmad', + //https://en.wikipedia.org/wiki/Template:Bolsa_de_Madrid + bmv: 'bmv', + //https://en.wikipedia.org/wiki/Template:Mexican_Stock_Exchange 'bombay stock exchange': 'bombay stock exchange', //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + 'botswana stock exchange': 'botswana stock exchange', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa bpse: 'bpse', //https://en.wikipedia.org/wiki/Template:Budapest_Stock_Exchange - bcba: 'bcba', - //https://en.wikipedia.org/wiki/Template:Buenos_Aires_Stock_Exchange - 'canadian securities exchange': 'canadian securities exchange', - //https://en.wikipedia.org/wiki/Template:Canadian_Securities_Exchange + bse: 'bse', + //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + bsx: 'bsx', + //https://en.wikipedia.org/wiki/Template:Bermuda_Stock_Exchange + bvb: 'bvb', + //https://en.wikipedia.org/wiki/Template:Bucharest_Stock_Exchange bvc: 'bvc', //https://en.wikipedia.org/wiki/Template:Colombian_Securities_Exchange + bvl: 'bvl', + //https://en.wikipedia.org/wiki/Template:Lima_Stock_Exchange + bvpasa: 'bvpasa', + //https://en.wikipedia.org/wiki/Template:BVPASA + bwse: 'bwse', + //https://en.wikipedia.org/wiki/Template:Botswana_Stock_Exchange + 'canadian securities exchange': 'canadian securities exchange', + //https://en.wikipedia.org/wiki/Template:Canadian_Securities_Exchange cse: 'cse', //https://en.wikipedia.org/wiki/Template:Chittagong_Stock_Exchange darse: 'darse', //https://en.wikipedia.org/wiki/Template:Dar_es_Salaam_Stock_Exchange - dse: 'dse', - //https://en.wikipedia.org/wiki/Template:Dhaka_Stock_Exchange dfm: 'dfm', //https://en.wikipedia.org/wiki/Template:Dubai_Financial_Market + dse: 'dse', + //https://en.wikipedia.org/wiki/Template:Dhaka_Stock_Exchange euronext: 'euronext', //https://en.wikipedia.org/wiki/Template:Euronext - fwb: 'fwb', - //https://en.wikipedia.org/wiki/Template:Frankfurt_Stock_Exchange + euronextparis: 'euronextparis', + //https://en.wikipedia.org/wiki/Template:EuronextParis fse: 'fse', //https://en.wikipedia.org/wiki/Template:Fukuoka_Stock_Exchange + fwb: 'fwb', + //https://en.wikipedia.org/wiki/Template:Frankfurt_Stock_Exchange gse: 'gse', //https://en.wikipedia.org/wiki/Template:Ghana_Stock_Exchange gtsm: 'gtsm', //https://en.wikipedia.org/wiki/Template:Gre_Tai_Securities_Market - sehk: 'sehk', - //https://en.wikipedia.org/wiki/Template:Hong_Kong_Stock_Exchange idx: 'idx', //https://en.wikipedia.org/wiki/Template:Indonesia_Stock_Exchange - nse: 'nse', - //https://en.wikipedia.org/wiki/Template:National_Stock_Exchange_of_India ise: 'ise', //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange + iseq: 'iseq', + //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange isin: 'isin', //https://en.wikipedia.org/wiki/Template:ISIN - bist: 'bist', - //https://en.wikipedia.org/wiki/Template:Borsa_Istanbul - bit: 'bit', - //https://en.wikipedia.org/wiki/Template:Borsa_Italiana jasdaq: 'jasdaq', //https://en.wikipedia.org/wiki/Template:JASDAQ jse: 'jse', //https://en.wikipedia.org/wiki/Template:Johannesburg_Stock_Exchange kase: 'kase', //https://en.wikipedia.org/wiki/Template:Kazakhstan_Stock_Exchange + kn: 'kn', + //https://en.wikipedia.org/wiki/Template:Nairobi_Securities_Exchange krx: 'krx', //https://en.wikipedia.org/wiki/Template:Korea_Exchange - bvl: 'bvl', - //https://en.wikipedia.org/wiki/Template:Lima_Stock_Exchange lse: 'lse', //https://en.wikipedia.org/wiki/Template:London_Stock_Exchange luxse: 'luxse', //https://en.wikipedia.org/wiki/Template:Luxembourg_Stock_Exchange - bmad: 'bmad', - //https://en.wikipedia.org/wiki/Template:Bolsa_de_Madrid - myx: 'myx', - //https://en.wikipedia.org/wiki/Template:Bursa_Malaysia - bmv: 'bmv', - //https://en.wikipedia.org/wiki/Template:Mexican_Stock_Exchange + 'malta stock exchange': 'malta stock exchange', + //https://en.wikipedia.org/wiki/Template:Malta_Stock_Exchange + mai: 'mai', + //https://en.wikipedia.org/wiki/Template:Market_for_Alternative_Investment mcx: 'mcx', //https://en.wikipedia.org/wiki/Template:Moscow_Exchange mutf: 'mutf', //https://en.wikipedia.org/wiki/Template:Mutual_fund + myx: 'myx', + //https://en.wikipedia.org/wiki/Template:Bursa_Malaysia nag: 'nag', //https://en.wikipedia.org/wiki/Template:Nagoya_Stock_Exchange - kn: 'kn', - //https://en.wikipedia.org/wiki/Template:Nairobi_Securities_Exchange 'nasdaq dubai': 'nasdaq dubai', //https://en.wikipedia.org/wiki/Template:NASDAQ_Dubai nasdaq: 'nasdaq', @@ -7766,952 +7171,2190 @@ var codes$1 = { //https://en.wikipedia.org/wiki/Template:NEEQ nepse: 'nepse', //https://en.wikipedia.org/wiki/Template:Nepal_Stock_Exchange + nex: 'nex', + //https://en.wikipedia.org/wiki/Template:TSXV_NEX + nse: 'nse', + //https://en.wikipedia.org/wiki/Template:National_Stock_Exchange_of_India + newconnect: 'newconnect', + //https://en.wikipedia.org/wiki/Template:NewConnect + 'nyse arca': 'nyse arca', + //https://en.wikipedia.org/wiki/Template:NYSE_Arca nyse: 'nyse', //https://en.wikipedia.org/wiki/Template:New_York_Stock_Exchange nzx: 'nzx', //https://en.wikipedia.org/wiki/Template:New_Zealand_Exchange - amex: 'amex', - //https://en.wikipedia.org/wiki/Template:NYSE_American - 'nyse arca': 'nyse arca', - //https://en.wikipedia.org/wiki/Template:NYSE_Arca - omx: 'omx', - //https://en.wikipedia.org/wiki/Template:OMX 'omx baltic': 'omx baltic', //https://en.wikipedia.org/wiki/Template:OMX_Baltic + omx: 'omx', + //https://en.wikipedia.org/wiki/Template:OMX ose: 'ose', //https://en.wikipedia.org/wiki/Template:Oslo_Stock_Exchange + 'otc expert': 'otc expert', + //https://en.wikipedia.org/wiki/Template:OTC_Expert + 'otc grey': 'otc grey', + //https://en.wikipedia.org/wiki/template:grey_market 'otc pink': 'otc pink', //https://en.wikipedia.org/wiki/Template:OTC_Pink otcqb: 'otcqb', //https://en.wikipedia.org/wiki/Template:OTCQB otcqx: 'otcqx', //https://en.wikipedia.org/wiki/Template:OTCQX + 'pfts ukraine stock exchange': 'pfts ukraine stock exchange', + //https://en.wikipedia.org/wiki/Template:PFTS_Ukraine_Stock_Exchange 'philippine stock exchange': 'philippine stock exchange', //https://en.wikipedia.org/wiki/Template:Philippine_Stock_Exchange prse: 'prse', //https://en.wikipedia.org/wiki/Template:Prague_Stock_Exchange + psx: 'psx', + //https://en.wikipedia.org/wiki/Template:Pakistan_Stock_Exchange + karse: 'karse', + //https://en.wikipedia.org/w/index.php?title=Template:Karse&redirect=no (redirects to psx) qe: 'qe', //https://en.wikipedia.org/wiki/Template:Qatar_Stock_Exchange - bcs: 'bcs', - //https://en.wikipedia.org/wiki/Template:Santiago_Stock_Exchange 'saudi stock exchange': 'saudi stock exchange', //https://en.wikipedia.org/wiki/Template:Saudi_Stock_Exchange + sehk: 'sehk', + //https://en.wikipedia.org/wiki/Template:Hong_Kong_Stock_Exchange + 'Stock Exchange of Thailand': 'Stock Exchange of Thailand', + //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand (alternative for SET) + set: 'set', + //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand sgx: 'sgx', //https://en.wikipedia.org/wiki/Template:Singapore_Exchange sse: 'sse', //https://en.wikipedia.org/wiki/Template:Shanghai_Stock_Exchange - szse: 'szse', - //https://en.wikipedia.org/wiki/Template:Shenzhen_Stock_Exchange swx: 'swx', //https://en.wikipedia.org/wiki/Template:SIX_Swiss_Exchange - set: 'set', - //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand + szse: 'szse', + //https://en.wikipedia.org/wiki/Template:Shenzhen_Stock_Exchange tase: 'tase', //https://en.wikipedia.org/wiki/Template:Tel_Aviv_Stock_Exchange - tyo: 'tyo', - //https://en.wikipedia.org/wiki/Template:Tokyo_Stock_Exchange - tsx: 'tsx', - //https://en.wikipedia.org/wiki/Template:Toronto_Stock_Exchange - twse: 'twse', - //https://en.wikipedia.org/wiki/Template:Taiwan_Stock_Exchange 'tsx-v': 'tsx-v', //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange + tsx: 'tsx', + //https://en.wikipedia.org/wiki/Template:Toronto_Stock_Exchange tsxv: 'tsxv', //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange - nex: 'nex', - //https://en.wikipedia.org/wiki/Template:TSXV_NEX ttse: 'ttse', //https://en.wikipedia.org/wiki/Template:Trinidad_and_Tobago_Stock_Exchange - 'pfts ukraine stock exchange': 'pfts ukraine stock exchange', - //https://en.wikipedia.org/wiki/Template:PFTS_Ukraine_Stock_Exchange - wse: 'wse', - //https://en.wikipedia.org/wiki/Template:Warsaw_Stock_Exchange + twse: 'twse', + //https://en.wikipedia.org/wiki/Template:Taiwan_Stock_Exchange + tyo: 'tyo', + //https://en.wikipedia.org/wiki/Template:Tokyo_Stock_Exchange wbag: 'wbag', //https://en.wikipedia.org/wiki/Template:Wiener_B%C3%B6rse - zse: 'zse', - //https://en.wikipedia.org/wiki/Template:Zagreb_Stock_Exchange + 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 + '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 }; -var parseStockExchange = function parseStockExchange(tmpl, list) { - var o = parse$3(tmpl, ['ticketnumber', 'code']); +const parseStockExchange = (tmpl, list) => { + let o = toJSON(tmpl, ['ticketnumber', 'code']); list.push(o); - var code = o.template || ''; + let code = o.template || ''; if (code === '') { code = o.code; } code = (code || '').toLowerCase(); - var out = codes$1[code] || ''; - var str = out; + let str = codes[code] || ''; if (o.ticketnumber) { - str = "".concat(str, ": ").concat(o.ticketnumber); + str = `${str}: ${o.ticketnumber}`; } - if (o.code && !codes$1[o.code.toLowerCase()]) { + if (o.code && !codes[o.code.toLowerCase()]) { str += ' ' + o.code; } return str; }; -var currencies$1 = {}; //the others fit the same pattern.. +const exchanges = {}; //the others fit the same pattern.. -Object.keys(codes$1).forEach(function (k) { - currencies$1[k] = parseStockExchange; +Object.keys(codes).forEach(k => { + exchanges[k] = parseStockExchange; }); -var stockExchanges = currencies$1; - -var hasMonth = /^jan /i; -var isYear = /^year /i; -var monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; +var stockExchanges = exchanges; -var toNumber = function toNumber(str) { - str = str.replace(/,/g, ''); - str = str.replace(/−/g, '-'); - var num = Number(str); +const zeroPad = function (num) { + num = String(num); - if (isNaN(num)) { - return str; + if (num.length === 1) { + num = '0' + num; } return num; }; -var templates$b = { - // this one is a handful! - //https://en.wikipedia.org/wiki/Template:Weather_box - 'weather box': function weatherBox(tmpl, list) { - var obj = parse$3(tmpl); //collect all month-based data +const parseTeam = function (obj, round, team) { + if (obj[`rd${round}-team${zeroPad(team)}`]) { + team = zeroPad(team); + } - var byMonth = {}; - var properties = Object.keys(obj).filter(function (k) { - return hasMonth.test(k); - }); - properties = properties.map(function (k) { - return k.replace(hasMonth, ''); - }); - properties.forEach(function (prop) { - byMonth[prop] = []; - monthList.forEach(function (m) { - var key = "".concat(m, " ").concat(prop); + let score = obj[`rd${round}-score${team}`]; + let num = Number(score); - if (obj.hasOwnProperty(key)) { - var num = toNumber(obj[key]); - delete obj[key]; - byMonth[prop].push(num); - } - }); - }); //add these to original + if (isNaN(num) === false) { + score = num; + } - obj.byMonth = byMonth; //collect year-based data + return { + team: obj[`rd${round}-team${team}`], + score: score, + seed: obj[`rd${round}-seed${team}`] + }; +}; // https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates +//these are weird. - var byYear = {}; - Object.keys(obj).forEach(function (k) { - if (isYear.test(k)) { - var prop = k.replace(isYear, ''); - byYear[prop] = obj[k]; - delete obj[k]; + +const playoffBracket = function (tmpl) { + let rounds = []; + let obj = toJSON(tmpl); //try some rounds + + for (let i = 1; i < 7; i += 1) { + let round = []; + + for (let t = 1; t < 16; t += 2) { + let key = `rd${i}-team`; + + if (obj[key + t] || obj[key + zeroPad(t)]) { + let one = parseTeam(obj, i, t); + let two = parseTeam(obj, i, t + 1); + round.push([one, two]); + } else { + break; } - }); - obj.byYear = byYear; + } + + if (round.length > 0) { + rounds.push(round); + } + } + + return { + template: 'playoffbracket', + rounds: rounds + }; +}; + +var _lib = playoffBracket; + +let sports = { + //playoff brackets + '4teambracket': function (tmpl, list) { + let obj = _lib(tmpl); list.push(obj); return ''; }, - //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation - //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C - 'weather box/concise c': function weatherBoxConciseC(tmpl, list) { - var obj = parse$3(tmpl); - obj.list = obj.list.map(function (s) { - return 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) - }; - delete obj.list; - obj.template = 'weather box'; - list.push(obj); - return ''; + player: (tmpl, list) => { + let res = toJSON(tmpl, ['number', 'country', 'name', 'dl']); + list.push(res); + let str = `[[${res.name}]]`; + + if (res.country) { + let country = (res.country || '').toLowerCase(); + let flag = flags.find(a => country === a[1] || country === a[2]) || []; + + if (flag && flag[0]) { + str = flag[0] + ' ' + str; + } + } + + if (res.number) { + str = res.number + ' ' + str; + } + + return str; }, - 'weather box/concise f': function weatherBoxConciseF(tmpl, list) { - var obj = parse$3(tmpl); - obj.list = obj.list.map(function (s) { - return 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) + //https://en.wikipedia.org/wiki/Template:Goal + goal: (tmpl, list) => { + let res = toJSON(tmpl); + let obj = { + template: 'goal', + data: [] }; - delete obj.list; - obj.template = 'weather box'; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Climate_chart - 'climate chart': function climateChart(tmpl, list) { - var lines = parse$3(tmpl).list || []; - var title = lines[0]; - var source = lines[38]; - lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... + let arr = res.list || []; + + for (let i = 0; i < arr.length; i += 2) { + obj.data.push({ + min: arr[i], + note: arr[i + 1] || '' + }); + } + + list.push(obj); //generate a little text summary + + let summary = '⚽ '; + summary += obj.data.map(o => { + let note = o.note; + + if (note) { + note = ` (${note})`; + } + + return o.min + "'" + note; + }).join(', '); + return summary; + }, + //a transcluded sports module - https://en.m.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Module:Sports_table + // https://en.wikipedia.org/wiki/Template:2020–21_NHL_North_Division_standings + 'sports table': (tmpl, list) => { + let obj = toJSON(tmpl); + let byTeam = {}; + let teams = Object.keys(obj).filter(k => /^team[0-9]/.test(k)).map(k => obj[k].toLowerCase()); + teams.forEach(team => { + byTeam[team] = { + name: obj[`name_${team}`], + win: Number(obj[`win_${team}`]) || 0, + loss: Number(obj[`loss_${team}`]) || 0, + tie: Number(obj[`tie_${team}`]) || 0, + otloss: Number(obj[`otloss_${team}`]) || 0, + goals_for: Number(obj[`gf_${team}`]) || 0, + goals_against: Number(obj[`ga_${team}`]) || 0 + }; + }); + let res = { + date: obj.update, + header: obj.table_header, + teams: byTeam + }; + list.push(res); + } +}; +var sports_1 = sports; + +var textAndData = Object.assign({}, shorthand, functions, currency, dates, geo, misc_1, stockExchanges, _lib, sports_1, _lib, sports_1); + +let templates = Object.assign({}, textOnly, dataOnly, textAndData); +Object.keys(aliases_1).forEach(k => { + // if (templates[aliases[k]] === undefined) { + // console.error(`Missing template: '${aliases[k]}'`) + // } + templates[k] = templates[aliases_1[k]]; +}); +var custom = templates; // console.log(Object.keys(templates).length) + +const { + isArray: isArray$1, + isObject +} = 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, doc) { + let name = tmpl.name; // dont bother with some junk templates + + if (_ignore.hasOwnProperty(name) === true) { + return ['']; + } //{{infobox settlement...}} + + + if (_infobox.isInfobox(name) === true) { + 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]; + } // ok, here we go! + //parse some known templates + + + if (custom.hasOwnProperty(name) === true) { + //handle number-syntax + if (typeof custom[name] === 'number') { + let obj = toJSON(tmpl.body, nums); + let key = String(custom[name]); + return [obj[key] || '']; + } //handle string-syntax + + + if (typeof custom[name] === 'string') { + return [custom[name]]; + } //handle array sytax + + + if (isArray$1(custom[name]) === true) { + 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], obj]; + } //handle function syntax + + + if (typeof custom[name] === 'function') { + // let json = toJSON(tmpl.body) + //(tmpl, list, alias, doc) + let arr = []; + let txt = custom[name](tmpl.body, arr, toJSON, null, doc); + return [txt, arr[0]]; + } + } //an unknown template with data, so just keep it. + + + let json = toJSON(tmpl.body); + + if (Object.keys(json).length === 0) { + // list.push(json) + json = null; + } //..then remove it + + + return ['', json]; +}; + +var parse$3 = parseTemplate; + +const toJson = function (infobox, options) { + let json = Object.keys(infobox.data).reduce((h, k) => { + if (infobox.data[k]) { + h[k] = infobox.data[k].json(); + } + + return h; + }, {}); //support mongo-encoding keys + + if (options.encode === true) { + json = encode.encodeObj(json); + } + + return json; +}; + +var toJson_1 = toJson; + +const { + isArray +} = helpers; + +const normalize = (str = '') => { + str = str.toLowerCase(); + str = str.replace(/[-_]/g, ' '); + return str.trim(); +}; //a formal key-value data table about a topic + + +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 = { + type: function () { + return this._type; + }, + links: function (n) { + let arr = []; + Object.keys(this.data).forEach(k => { + this.data[k].links().forEach(l => arr.push(l)); + }); + + 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); + return link === undefined ? [] : [link]; + } + + return arr; + }, + image: function () { + let s = this.data.image || this.data.image2 || this.data.logo || this.data.image_skyline || this.data.image_flag; + + if (!s) { + return null; + } + + let obj = s.json(); + obj.file = obj.text; + obj.text = ''; + obj.domain = this.domain; // add domain information for image + + return new Image_1(obj); + }, + get: function (keys) { + let allKeys = Object.keys(this.data); + + if (typeof keys === 'string') { + let key = normalize(keys); + + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]); + + if (key === tmp) { + return this.data[allKeys[i]]; + } + } + + return new Sentence_1(); + } + + if (isArray(keys)) { + // support array-input + keys = keys.map(normalize); + return keys.map(k => { + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]); + + if (k === tmp) { + return this.data[allKeys[i]]; + } + } + + return new Sentence_1(); + }); + } + + return new Sentence_1(); + }, + text: function () { + return ''; + }, + json: function (options) { + 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]) { + h[k] = this.data[k].text(); + } + + return h; + }, {}); + } +}; //aliases + +Object.keys(methods$1).forEach(k => { + Infobox.prototype[k] = methods$1[k]; +}); +Infobox.prototype.data = Infobox.prototype.keyValue; +Infobox.prototype.template = Infobox.prototype.type; +Infobox.prototype.images = Infobox.prototype.image; +var Infobox_1 = Infobox; + +const toText = _04Sentence.fromText; +const methods = { + text: function () { + let str = this._text || ''; + return toText(str).text(); + }, + json: function () { + return this.data || {}; + }, + wikitext: function () { + return this.wiki || ''; + } +}; + +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 => { + Template.prototype[k] = methods[k]; +}); +var Template_1 = Template; + +const isCitation = /^(cite |citation)/i; +const referenceTypes = { + citation: true, + refn: true, + harvnb: true, + source: true //wikinews + +}; // split Infoboxes from templates and references + +const sortOut = function (list, domain) { + let res = { + infoboxes: [], + templates: [], + references: [] + }; //remove references and infoboxes from our list + + 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(json, obj.wiki)); + return; + } // is it an Infobox? + + + 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_1(json, obj.wiki)); + return; + } // otherwise, it's just a template + + + res.templates.push(new Template_1(json, obj.text, obj.wiki)); + }); + return res; +}; + +var sortOut_1 = sortOut; + +const allTemplates = function (wiki, doc) { + let list = []; //nested data-structure of templates + + let nested = _01Nested(wiki); //recursive template-parser + + const parseNested = function (obj, parent) { + obj.parent = parent; //do tail-first recursion + + if (obj.children && obj.children.length > 0) { + obj.children.forEach(ch => parseNested(ch, obj)); + } //parse template into json, return replacement wikitext + + + 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) { + node.parent.body = node.parent.body.replace(body, out); + removeIt(node.parent, body, out); + } + }; + + removeIt(obj, obj.body, obj.wiki); + wiki = wiki.replace(obj.body, obj.wiki); + }; //kick it off + + + nested.forEach(node => parseNested(node, null)); //remove the templates from our wiki text + + nested.forEach(node => { + wiki = wiki.replace(node.body, node.wiki); + }); + return { + list: list, + wiki: wiki + }; +}; //find + parse all templates in the section + + +const process = function (section, doc) { + // find+parse them all + let { + list, + wiki + } = allTemplates(section._wiki, doc); // split-out references and infoboxes + + let domain = doc ? doc._domain : null; + let { + infoboxes, + references, + templates + } = sortOut_1(list, domain); //sort-out the templates we decide to keep + + section._infoboxes = section._infoboxes || []; + section._references = section._references || []; + section._templates = section._templates || []; + section._infoboxes = section._infoboxes.concat(infoboxes); + section._references = section._references.concat(references); + section._templates = section._templates.concat(templates); + section._wiki = wiki; +}; + +var template = process; + +const parseSentence$1 = _04Sentence.fromText; //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... + +/** + * + * @private + * @param {object} 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() + }; + let img = new Image_1(obj).json(); + let caption = arr.slice(1).join('|'); + + if (caption !== '') { + img.caption = parseSentence$1(caption); + } + + return img; + }); //add it to our templates list + + if (images.length > 0) { + catcher.templates.push({ + template: 'gallery', + images: images, + pos: section.title + }); + } //return empty string to remove the template from the wiki text + + + return ''; + }); +}; + +var gallery = parseGallery; + +/** + * 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 {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 => { + let data = { + _wiki: tmpl, + _templates: [] + }; //put it through our full template parser.. + + template(data); //okay, pull it apart into something sensible.. + + 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) { + catcher.templates.push({ + template: 'election box', + title: start.title, + candidates: candidates, + summary: summary.data + }); + } //return empty string to remove the template from the wiki text + + + return ''; + }); +}; + +var election = parseElection; + +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'] +}; +/** + * https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start + * + * @private + * @param {object} 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 = parse$5(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'NBA ' + name + ' statistics', + data: rows + }); //return empty string to remove the template from the wiki text + + return ''; + }); +}; + +var nba = parseNBA; + +//this is pretty nuts + +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 + } + + if (/\|time=y/i.test(tmpl) === true) { + headings.splice(7, 0, 'time'); //save, time, stadium, attendance + } + + if (/\|box=y/i.test(tmpl) === true) { + headings.push('box'); //record, box + } + + return headings; +}; +/** + * + * @private + * @param {object} 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 = parse$5(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'mlb game log section', + data: rows + }); //return empty string to remove the template from the wiki text + + return ''; + }); +}; + +var mlb = parseMlb; + +let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; +/** + * + * https://en.wikipedia.org/wiki/Template:MMA_record_start + * + * @private + * @param {object} 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 = parse$5(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'mma record start', + data: rows + }); //return empty string to remove the template from the wiki text + + return ''; + }); +}; + +var mma = parseMMA; + +const parseSentence = _04Sentence.fromText; +/** + * 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 {object} 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(); + catcher.templates.push({ + template: 'math', + formula: formula, + raw: inside + }); //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 + + catcher.text = catcher.text.replace(/]*?)>([\s\S]+?)<\/chem>/g, (_, attrs, inside) => { + catcher.templates.push({ + template: 'chem', + data: inside + }); //return empty string to remove the template from the wiki text + + return ''; + }); +}; + +var math = parseMath; + +/** + * 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 + * @returns {Object} wikitext + */ + +const xmlTemplates = function (section, doc) { + const res = { + templates: [], + text: section._wiki + }; + election(res); + gallery(res, doc, section); + math(res); + mlb(res); + mma(res); + nba(res); // turn them into Template objects + + res.templates = res.templates.map(obj => new Template_1(obj)); + return res; +}; + +var startToEnd = xmlTemplates; + +const parse$2 = { + heading: heading, + table: table, + paragraphs: _03Paragraph, + templates: template, + references: reference, + startEndTemplates: startToEnd +}; +const defaults$2 = { + tables: true, + references: true, + paragraphs: true, + templates: true, + infoboxes: true +}; +/** + * 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 { + /** + * 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) { + 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$2.startEndTemplates(this, doc); + this._wiki = startEndTemplates.text; + this._templates = this._templates.concat(startEndTemplates.templates); //parse-out the tags + + parse$2.references(this); //parse-out all {{templates}} + + parse$2.templates(this, doc); //parse the tables + + parse$2.table(this); //now parse all double-newlines + + parse$2.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; + } + + let index = this._doc.sections().indexOf(this); + + if (index === -1) { + return null; + } + + 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(); + } + /** + * returns all sentences in the section + * if an clue is provided then it returns the sentence at clue-th index + * + * @returns {object | object[]} all sentences in an array or the clue-th sentence + */ + + + sentences() { + return this.paragraphs().reduce((list, p) => { + return list.concat(p.sentences()); + }, []); + } + /** + * returns all paragraphs in the section + * if an clue is provided then it returns the paragraph at clue-th index + * + * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph + */ + + + paragraphs() { + return this._paragraphs || []; + } + /** + * 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 {object | object[]} 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 => { + arr.push(templ.links()); + }); + this.sentences().forEach(s => { + arr.push(s.links()); + }); + this.tables().forEach(t => { + arr.push(t.links()); + }); + this.lists().forEach(list => { + 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 clue === 'string') { + let link = arr.find(o => o.page().toLowerCase() === clue.toLowerCase()); + return link === undefined ? [] : [link]; + } + + return arr; + } + /** + * returns all tables in the section + * if an clue is provided then it returns the table at clue-th index + * + * @returns {object | object[]} all tables in an array or the clue-th infobox + */ + + + tables() { + return this._tables || []; + } + /** + * 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 {object | object[]} 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()) + + if (typeof clue === 'string') { + clue = clue.toLowerCase(); + return arr.filter(o => o.data.template === clue || o.data.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|string} [clue] the clue for selecting the infobox + * @returns {object | object[]} all infoboxes in an array or the clue-th infobox + */ + + + infoboxes(clue) { + let arr = this._infoboxes || []; + + if (typeof clue === 'string') { + clue = clue.replace(/^infobox /i, ''); + clue = clue.trim().toLowerCase(); + return arr.filter(info => info._type === clue); + } + + return arr; + } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + + + coordinates() { + let arr = [...this.templates('coord'), ...this.templates('coor')]; + return arr.map(tmpl => tmpl.json()); + } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + + + lists() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.lists()); + }); + return arr; + } + /** + * returns all interwiki links in the section + * if an clue is provided then it returns the interwiki link at clue-th index + * + * @returns {object | object[]} all interwiki links in an array or the clue-th interwiki link + */ + + + interwiki() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.interwiki()); + }); + return arr; + } + /** + * returns all images in the section + * if an clue is provided then it returns the image at clue-th index + * + * @returns {Image | Image[]} all images in an array or the clue-th image + */ + + + images() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.images()); + }); + return arr; + } + /** + * returns all references in the section + * if an clue is provided then it returns the reference at clue-th index + * + * @returns {object | object[]} all references in an array or the clue-th reference + */ + + + references() { + return this._references || []; + } //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 - lines = lines.map(function (str) { - if (str && str[0] === '−') { - str = str.replace(/−/, '-'); + /** + * 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) { + return null; + } //first we get the a list of sections and our own position in this list + + + let sections = this._doc.sections(); + + 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 + //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 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 str; - }); - var months = []; //groups of three, for 12 months - for (var i = 0; i < 36; i += 3) { - months.push({ - low: toNumber(lines[i]), - high: toNumber(lines[i + 1]), - precip: toNumber(lines[i + 2]) - }); + 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; } - var obj = { - template: 'climate chart', - data: { - title: title, - source: source, - months: months - } - }; - list.push(obj); - return ''; + let sections = this._doc.sections(); + + let index = this.index() || 0; + return sections[index - 1] || null; } -}; -var weather = templates$b; - -//this format seems to be a pattern for these -var generic$1 = ['id', 'title', 'description', 'section']; -var idName = ['id', 'name']; //https://en.wikipedia.org/wiki/Category:External_link_templates - -var externals = { - //https://en.wikipedia.org/wiki/Template:IMDb_title - 'imdb title': generic$1, - 'imdb name': generic$1, - 'imdb episode': generic$1, - 'imdb event': generic$1, - 'afi film': generic$1, - 'allmovie title': generic$1, - allgame: generic$1, - 'tcmdb title': generic$1, - 'discogs artist': generic$1, - 'discogs label': generic$1, - 'discogs release': generic$1, - 'discogs master': generic$1, - 'librivox author': generic$1, - 'musicbrainz artist': generic$1, - 'musicbrainz label': generic$1, - 'musicbrainz recording': generic$1, - 'musicbrainz release': generic$1, - 'musicbrainz work': generic$1, - youtube: generic$1, - 'goodreads author': idName, - 'goodreads book': generic$1, - twitter: idName, - facebook: idName, - instagram: idName, - tumblr: idName, - pinterest: idName, - 'espn nfl': idName, - 'espn nhl': idName, - 'espn fc': idName, - hockeydb: idName, - 'fifa player': idName, - worldcat: idName, - 'worldcat id': idName, - 'nfl player': idName, - 'ted speaker': idName, - playmate: idName, - //https://en.wikipedia.org/wiki/Template:DMOZ - dmoz: generic$1, - 'find a grave': ['id', 'name', 'work', 'last', 'first', 'date', 'accessdate'], - congbio: ['id', 'name', 'date'], - 'hollywood walk of fame': ['name'] -}; //alias + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ -externals.imdb = externals['imdb name']; -externals['imdb episodess'] = externals['imdb episode']; -var websites = externals; -//wiktionary... who knows. we should atleast try. + last() { + return this.lastSibling(); + } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ -var templates$c = { - //{{inflection of|avoir||3|p|pres|ind|lang=fr}} - //https://en.wiktionary.org/wiki/Template:inflection_of - inflection: function inflection(tmpl, list) { - var obj = parse$3(tmpl, ['lemma']); - obj.tags = obj.list; - delete obj.list; - obj.type = 'form-of'; - list.push(obj); - return obj.lemma || ''; - }, - //latin verbs - 'la-verb-form': function laVerbForm(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return obj.word || ''; - }, - 'feminine plural': function femininePlural(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return obj.word || ''; - }, - 'male plural': function malePlural(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return obj.word || ''; - }, - rhymes: function rhymes(tmpl, list) { - var obj = parse$3(tmpl, ['word']); - list.push(obj); - return 'Rhymes: -' + (obj.word || ''); + + previousSibling() { + return this.lastSibling(); } -}; //https://en.wiktionary.org/wiki/Category:Form-of_templates + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ -var conjugations = ['abbreviation', 'abessive plural', 'abessive singular', 'accusative plural', 'accusative singular', 'accusative', 'acronym', 'active participle', 'agent noun', 'alternative case form', 'alternative form', 'alternative plural', 'alternative reconstruction', 'alternative spelling', 'alternative typography', 'aphetic form', 'apocopic form', 'archaic form', 'archaic spelling', 'aspirate mutation', 'associative plural', 'associative singular', 'attributive form', 'attributive form', 'augmentative', 'benefactive plural', 'benefactive singular', 'causative plural', 'causative singular', 'causative', 'clipping', 'combining form', 'comitative plural', 'comitative singular', 'comparative plural', 'comparative singular', 'comparative', 'contraction', 'dated form', 'dated spelling', 'dative plural definite', 'dative plural indefinite', 'dative plural', 'dative singular', 'dative', 'definite', 'deliberate misspelling', 'diminutive', 'distributive plural', 'distributive singular', 'dual', 'early form', 'eclipsis', 'elative', 'ellipsis', 'equative', 'euphemistic form', 'euphemistic spelling', 'exclusive plural', 'exclusive singular', 'eye dialect', 'feminine noun', 'feminine plural past participle', 'feminine plural', 'feminine singular past participle', 'feminine singular', 'feminine', 'form', 'former name', 'frequentative', 'future participle', 'genitive plural definite', 'genitive plural indefinite', 'genitive plural', 'genitive singular definite', 'genitive singular indefinite', 'genitive singular', 'genitive', 'gerund', 'h-prothesis', 'hard mutation', 'harmonic variant', 'imperative', 'imperfective form', 'inflected form', 'inflection', 'informal form', 'informal spelling', 'initialism', 'ja-form', 'jyutping reading', 'late form', 'lenition', 'masculine plural past participle', 'masculine plural', 'medieval spelling', 'misconstruction', 'misromanization', 'misspelling', 'mixed mutation', 'monotonic form', 'mutation', 'nasal mutation', 'negative', 'neuter plural past participle', 'neuter plural', 'neuter singular past participle', 'neuter singular', 'nominalization', 'nominative plural', 'nominative singular', 'nonstandard form', 'nonstandard spelling', 'oblique plural', 'oblique singular', 'obsolete form', 'obsolete spelling', 'obsolete typography', 'official form', 'participle', 'passive participle', 'passive', 'past active participle', 'past participle', 'past passive participle', 'past tense', 'perfective form', 'plural definite', 'plural indefinite', 'plural', 'polytonic form', 'present active participle', 'present participle', 'present tense', 'pronunciation spelling', 'rare form', 'rare spelling', 'reflexive', 'second-person singular past', 'short for', 'singular definite', 'singular', 'singulative', 'soft mutation', 'spelling', 'standard form', 'standard spelling', 'substantivisation', 'superlative', 'superseded spelling', 'supine', 'syncopic form', 'synonym', 'terminative plural', 'terminative singular', 'uncommon form', 'uncommon spelling', 'verbal noun', 'vocative plural', 'vocative singular']; -conjugations.forEach(function (name) { - templates$c[name + ' of'] = function (tmpl, list) { - var obj = parse$3(tmpl, ['lemma']); - obj.tags = obj.list; - delete obj.list; - obj.type = 'form-of'; - list.push(obj); - return obj.lemma || ''; - }; -}); -var wiktionary = templates$c; -var templates$d = { - // https://en.wikivoyage.org/wiki/Template:Do - listing: function listing(tmpl, list) { - var obj = parse$3(tmpl, []); - list.push(obj); // flatten it all into one line of text + previous() { + return this.lastSibling(); + } + /** + * 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 + */ - var name = obj.name; - if (obj.url) { - name = "[".concat(obj.url, " ").concat(obj.name, "]"); + children(clue) { + if (!this._doc) { + return null; } - var phone = ''; + let sections = this._doc.sections(); - if (obj.phone) { - phone = "[tel:".concat(obj.phone, "]"); - } + let index = this.index() || 0; + let children = []; //(immediately preceding sections with higher depth) - var updated = ''; + 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()) { + children.push(sections[i]); + } else { + break; + } + } + } - if (obj.lastedit) { - updated = "(updated ".concat(obj.lastedit, ")"); + if (typeof clue === 'string') { + return children.find(s => s.title().toLowerCase() === clue.toLowerCase()); } - var out = "".concat(name, " ").concat(obj.address || '', " ").concat(obj.directions || '', " ").concat(phone, " ").concat(obj.hours || '', " ").concat(obj.content, " ").concat(obj.price, " ").concat(updated); - return out; + return children; } -}; // are these sorta the same? + /** + * 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 + */ -templates$d.see = templates$d.listing; -templates$d["do"] = templates$d.listing; -templates$d.buy = templates$d.listing; -templates$d.eat = templates$d.listing; -templates$d.drink = templates$d.listing; -templates$d.sleep = templates$d.listing; -templates$d.go = templates$d.listing; -var wikivoyage = templates$d; -var templates$e = Object.assign({}, dates, formatting$1, geo, wikipedia, brackets_1, currency, elections, flags_1, ipa, languages_1, math, misc_1$1, punctuation_1, science, soccer, sports$1, stockExchanges, weather, websites, wiktionary, wikivoyage); + 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 + */ -var generic$2 = parse$3; -var nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8']; -var isArray$2 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; -}; //this gets all the {{template}} strings and decides how to parse them + parent() { + if (!this._doc) { + return null; + } + let sections = this._doc.sections(); -var parseTemplate$1 = function parseTemplate(tmpl, list) { - var name = tmpl.name; + let index = this.index() || 0; - if (_ignore.hasOwnProperty(name) === true) { - return ''; - } // {{infobox settlement...}} + for (let i = index; i >= 0; i -= 1) { + if (sections[i] && sections[i].depth() < this.depth()) { + return sections[i]; + } + } + return null; + } //outputs - if (_infobox.isInfobox(name) === true) { - var obj = parse$3(tmpl.body, list, 'raw'); - var infobox = _infobox.format(obj); - list.push(infobox); - return ''; - } // //cite book, cite arxiv... + /** + * returns a plaintext version of the section + * + * @param {object} options options for the text transformation + * @returns {string} the section in text + */ - if (/^cite [a-z]/.test(name) === true) { - var _obj = parse$3(tmpl.body, list); + text(options) { + 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 + */ - _obj.type = _obj.template; - _obj.template = 'citation'; - list.push(_obj); - return ''; - } // known template + wikitext() { + return this._wiki; + } + /** + * returns a json version of the section + * + * @param {object} options keys to include in the resulting json + * @returns {object} the section in json + */ - if (templates$e.hasOwnProperty(name) === true) { - // handle number-syntax - if (typeof templates$e[name] === 'number') { - var _obj2 = generic$2(tmpl.body, nums); - var key = String(templates$e[name]); - return _obj2[key] || ''; - } // handle string-syntax + json(options) { + options = setDefaults_1(options, defaults$2); + return toJson$4(this, options); + } +} - if (typeof templates$e[name] === 'string') { - return templates$e[name]; - } // handle array sytax +Section.prototype.citations = Section.prototype.references; // aliases +const singular$1 = { + sentences: 'sentence', + paragraphs: 'paragraph', + links: 'link', + tables: 'table', + templates: 'template', + infoboxes: 'infobox', + coordinates: 'coordinate', + lists: 'list', + images: 'image', + references: 'reference', + citations: 'citation' +}; +Object.keys(singular$1).forEach(k => { + let sing = singular$1[k]; - if (isArray$2(templates$e[name]) === true) { - var _obj3 = generic$2(tmpl.body, templates$e[name]); + Section.prototype[sing] = function (clue) { + let arr = this[k](clue); - list.push(_obj3); - return ''; - } // handle function syntax + if (typeof clue === 'number') { + return arr[clue]; + } + return arr[0] || null; + }; +}); +var Section_1 = Section; - if (typeof templates$e[name] === 'function') { - return templates$e[name](tmpl.body, list); - } - } // unknown template, try to parse it +const isReference = new RegExp('^(' + i18n.references.join('|') + '):?', 'i'); +const section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines +const parse$1 = { + heading: 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) { + if (s.paragraphs().length > 0) { + return true; + } //does it have some wacky templates? - var parsed = parse$3(tmpl.body); - if (list && Object.keys(parsed).length > 0) { - list.push(parsed); - } // ..then remove it + if (s.templates().length > 0) { + return true; + } //what it has children? awkward - return ''; -}; + if (sections[i + 1] && sections[i + 1].depth() > s.depth()) { + sections[i + 1]._depth -= 1; //move it up a level?... + } -var parse_1 = parseTemplate$1; + return false; + } -var Template = function Template(data) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data + return true; }); }; +/** + * 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 + */ -var methods$a = { - text: function text() { - return ''; - }, - json: function json() { - return this.data; - } -}; -Object.keys(methods$a).forEach(function (k) { - Template.prototype[k] = methods$a[k]; -}); -var Template_1 = Template; -var isCitation = new RegExp('^(cite |citation)', 'i'); -var references$1 = { - citation: true, - refn: true, - harvnb: true -}; +const parseSections = function (doc) { + let sections = []; + + 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 data = { + title: '', + depth: null, + wiki: wiki + }; //figure-out title and depth + + parse$1.heading(data, heading); + sections.push(new Section_1(data, doc)); + } //remove empty references section -var isReference = function isReference(obj) { - return references$1[obj.template] === true || isCitation.test(obj.template) === true; -}; -var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; + return removeReferenceSection(sections); }; -var isInfobox$1 = function isInfobox(obj) { - return obj.template === 'infobox' && obj.data && isObject(obj.data); -}; //reduce the scary recursive situations +var _02Section = parseSections; + +const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'ig'); +const cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n.categories.join('|') + '):', 'ig'); +const parse_categories = function (wiki) { + const categories = []; + let tmp = wiki.match(cat_reg); //regular links -var allTemplates = function allTemplates(section, doc) { - var wiki = section.wiki; // nested data-structure of templates + if (tmp) { + tmp.forEach(function (c) { + c = c.replace(cat_remove_reg, ''); + c = c.replace(/\|?[ \*]?\]\]$/i, ''); //parse fancy ones.. - var list = find(wiki); - var keep = []; // recursive template-parser + c = c.replace(/\|.*/, ''); //everything after the '|' is metadata - var parseThem = function parseThem(obj, parent) { - obj.parent = parent; // do tail-first recurion + if (c && !c.match(/[\[\]]/)) { + categories.push(c.trim()); + } + }); + } - if (obj.children && obj.children.length > 0) { - obj.children.forEach(function (ch) { - return parseThem(ch, obj); + const newWiki = wiki.replace(cat_reg, ''); + return [categories, newWiki]; +}; + +var categories = parse_categories; + +const parse = { + section: _02Section, + categories: categories +}; +const defaults$1 = { + tables: true, + lists: true, + paragraphs: true +}; +/** + * The document class is the main entry point of wtf_wikipedia. + * this class represents an article of wikipedia. + * from here you can go to the infoboxes or paragraphs + * + * @class + */ + +class Document { + /** + * The constructor for the document class + * This function starts parsing the wiki text and sets the options in the class + * + * @param {string} [wiki] The wiki text + * @param {object} [options] The options for the parser + */ + 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, + wiki: wiki || '', + categories: [], + sections: [], + coordinates: [] + }; // this._missing_templates = {} //for stats+debugging purposes + + 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; + return; + } //give ourselves a little head-start - obj.out = parse_1(obj, keep); // remove the text from every parent - var removeIt = function removeIt(node, body, out) { - if (node.parent) { - node.parent.body = node.parent.body.replace(body, out); - removeIt(node.parent, body, out); - } - }; + this._wiki = preProcess_1(this._wiki); //pull-out [[category:whatevers]] - removeIt(obj, obj.body, obj.out); - wiki = wiki.replace(obj.body, obj.out); - }; //kick it off + const [categories, newWiki] = parse.categories(this._wiki); + this._categories = categories; + this._wiki = newWiki; //parse all the headings, and their texts/sentences + this._sections = parse.section(this); + } + /** + * 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 {string} [str] The title that will be set + * @returns {null|string} The title found or given + */ - list.forEach(function (node) { - return 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); // remove references and infoboxes from our list + title(str) { + //use like a setter + if (str !== undefined) { + this._title = str; + return str; + } //if we have it already - section.templates = section.templates.filter(function (obj) { - if (isReference(obj) === true) { - section.references.push(new Reference_1(obj)); - return false; - } - if (isInfobox$1(obj) === true) { - obj.domain = doc.domain; // + if (this._title) { + return this._title; + } //guess the title of this page from first sentence bolding - section.infoboxes.push(new Infobox_1(obj)); - return false; - } - return true; - }); - section.templates = section.templates.map(function (obj) { - return new Template_1(obj); - }); // remove the templates from our wiki text + let guess = null; + let sen = this.sentence(); - list.forEach(function (node) { - wiki = wiki.replace(node.body, node.out); - }); - section.wiki = wiki; -}; + if (sen) { + guess = sen.bold(); + } -var template$1 = allTemplates; + return guess; + } + /** + * 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 {number} [id] The pageID that will be set + * @returns {number|null} The given or found pageID + */ -var parseSentence$6 = _04Sentence.fromText; //okay, is a xml-tag, with newline-seperated 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... - -var parseGallery = function parseGallery(section, doc) { - var wiki = section.wiki; - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/gallery>/g, function (_, attrs, inside) { - var images = inside.split(/\n/g); - images = images.filter(function (str) { - return str && str.trim() !== ''; - }); //parse the line, which has an image and sometimes a caption - - images = images.map(function (str) { - var arr = str.split(/\|/); - var obj = { - file: arr[0].trim(), - lang: doc.language, - domain: doc.domain - }; - var img = new Image_1(obj).json(); - var caption = arr.slice(1).join('|'); - if (caption !== '') { - img.caption = parseSentence$6(caption); - } + pageID(id) { + if (id !== undefined) { + this._pageID = id; + } - return img; - }); //add it to our templates list + return this._pageID || 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 {string} [id] The WikidataID that will be set + * @returns {string|null} The given or found WikidataID + */ - if (images.length > 0) { - section.templates.push({ - template: 'gallery', - images: images, - pos: section.title - }); + + wikidata(id) { + if (id !== undefined) { + this._wikidata = id; } - return ''; - }); - section.wiki = wiki; -}; + return this._wikidata || 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 {string} [str] The domain that will be set + * @returns {string|null} The given or found domain + */ -var gallery = parseGallery; -//https://en.wikipedia.org/wiki/Template:Election_box + domain(str) { + if (str !== undefined) { + this._domain = str; + } -var parseElection = function parseElection(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, function (tmpl) { - var data = { - wiki: tmpl, - templates: [] - }; //put it through our full template parser.. + return this._domain || 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 {string} [lang] The language that will be set + * @returns {string|null} The given or found language + */ - template$1(data); //okay, pull it apart into something sensible.. - var templates = data.templates.map(function (t) { - return t.json(); - }); - var start = templates.find(function (t) { - return t.template === 'election box'; - }) || {}; - var candidates = templates.filter(function (t) { - return t.template === 'election box candidate'; - }); - var summary = templates.find(function (t) { - return t.template === 'election box gain' || t.template === 'election box hold'; - }) || {}; + language(lang) { + if (lang !== undefined) { + this._lang = lang; + } - if (candidates.length > 0 || summary) { - section.templates.push({ - template: 'election box', - title: start.title, - candidates: candidates, - summary: summary.data - }); - } //remove it all + return this._lang || 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 {string|null} The url of the page + */ - return ''; - }); - section.wiki = wiki; -}; + url() { + let title = this.title(); -var election = parseElection; + if (!title) { + return null; + } -var 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'] -}; //https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start + let lang = this.language() || 'en'; + let domain = this.domain() || 'wikipedia.org'; //replace blank to underscore -var parseNBA = function parseNBA(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, function (tmpl, name) { - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{s-end\}\}/, ''); - name = name.toLowerCase().trim(); - var headers = '! ' + keys[name].join(' !! '); - var table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - var rows = parse$4(table); - rows = rows.map(function (row) { - Object.keys(row).forEach(function (k) { - row[k] = row[k].text(); - }); - return row; - }); - section.templates.push({ - template: 'NBA ' + name + ' statistics', - data: rows - }); - return ''; - }); - section.wiki = wiki; -}; + title = title.replace(/ /g, '_'); + title = encodeURIComponent(title); + return `https://${lang}.${domain}/wiki/${title}`; + } + /** + * 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 + */ -var nba = parseNBA; -//this is pretty nuts + namespace(ns) { + if (ns !== undefined) { + this._namespace = ns; + } -var whichHeadings = function whichHeadings(tmpl) { - var headings = ['#', 'date', 'opponent', 'score', 'win', 'loss', 'save', 'attendance', 'record']; + return this._namespace || null; + } + /** + * Returns if the page is a redirect + * + * @returns {boolean} Is the page a redirect + */ - if (/\|stadium=y/i.test(tmpl) === true) { - headings.splice(7, 0, 'stadium'); //save, stadium, attendance + + isRedirect() { + return this._type === 'redirect'; } + /** + * Returns information about the page this page redirects to + * + * @returns {null|object} The redirected page + */ - if (/\|time=y/i.test(tmpl) === true) { - headings.splice(7, 0, 'time'); //save, time, stadium, attendance + + redirectTo() { + return this._redirectTo; } + /** + * This function finds out if a page is a disambiguation page + * + * @returns {boolean} Whether the page is a disambiguation page + */ - if (/\|box=y/i.test(tmpl) === true) { - headings.push('box'); //record, box + + isDisambiguation() { + return isDisambig_1(this); } + /** + * If a clue is available return the category at that index + * Else return all categories + * + * @returns {string | string[]} The category at the provided index or all categories + */ - return headings; -}; -var parseMlb = function parseMlb(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, function (tmpl) { - var headings = whichHeadings(tmpl); - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, ''); - var headers = '! ' + headings.join(' !! '); - var table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - var rows = parse$4(table); - rows = rows.map(function (row) { - Object.keys(row).forEach(function (k) { - row[k] = row[k].text(); - }); - return row; - }); - section.templates.push({ - template: 'mlb game log section', - data: rows - }); - return ''; - }); - section.wiki = wiki; -}; + categories(clue) { + let arr = this._categories || []; -var mlb = parseMlb; + if (typeof clue === 'number') { + return [arr[clue]]; + } -var headings$1 = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; //https://en.wikipedia.org/wiki/Template:MMA_record_start + return arr; + } + /** + * 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 {number | string} [clue] A title of a section or a index of a wanted section + * @returns {object | object[]} A section or a array of sections + */ + + + sections(clue) { + let arr = this._sections || []; + arr.forEach(sec => { + // link-up parent and child + sec._doc = this; + }); //grab a specific section, by its title -var parseMMA = function parseMMA(section) { - var wiki = section.wiki; - wiki = wiki.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, function (tmpl) { - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{end\}\}/i, ''); - var headers = '! ' + headings$1.join(' !! '); - var table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - var rows = parse$4(table); - rows = rows.map(function (row) { - Object.keys(row).forEach(function (k) { - row[k] = row[k].text(); + if (typeof clue === 'string') { + let str = clue.toLowerCase().trim(); + return arr.filter(s => { + return s.title().toLowerCase() === str; }); - return row; - }); - section.templates.push({ - template: 'mma record start', - data: rows - }); - return ''; - }); - section.wiki = wiki; -}; + } else if (typeof clue === 'number') { + return [arr[clue]]; + } -var mma = parseMMA; + return arr; + } + /** + * 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 {number | string} [clue] given index of a paragraph + * @returns {object | object[]} the selected paragraph or an array of all paragraphs + */ -var parseSentence$7 = _04Sentence.fromText; //xml y=mx+b support -//https://en.wikipedia.org/wiki/Help:Displaying_a_formula -var parseMath = function parseMath(section) { - var wiki = section.wiki; - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/math>/g, function (_, attrs, inside) { - //clean it up a little? - var formula = parseSentence$7(inside).text(); - section.templates.push({ - template: 'math', - formula: formula, - raw: inside - }); //should we atleast try to render it in plaintext? :/ + paragraphs(clue) { + let arr = []; + this.sections().forEach(s => { + arr = arr.concat(s.paragraphs()); + }); - if (formula && formula.length < 12) { - return formula; + if (typeof clue === 'number') { + return [arr[clue]]; } - return ''; - }); //try chemistry version too + 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 + */ - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/chem>/g, function (_, attrs, inside) { - section.templates.push({ - template: 'chem', - data: inside + + sentences(clue) { + let arr = []; + this.sections().forEach(sec => { + arr = arr.concat(sec.sentences()); }); - return ''; - }); - section.wiki = wiki; -}; -var math$1 = parseMath; + if (typeof clue === 'number') { + return [arr[clue]]; + } -// ... others are {{start}}...{{end}} -// -> these are those ones. + return arr; + } + /** + * 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 + * + * @returns {Image[]|Image} a single image or an array of images + */ -var xmlTemplates = function xmlTemplates(section, doc) { - election(section); - gallery(section, doc); - math$1(section); - mlb(section); - mma(section); - nba(section); -}; -var startToEnd = xmlTemplates; + images(clue) { + let arr = _sectionMap(this, 'images', null); //grab image from infobox, first -var isReference$1 = new RegExp('^(' + i18n$1.references.join('|') + '):?', 'i'); -var section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines + this.infoboxes().forEach(info => { + let img = info.image(); -var parse$6 = { - heading: heading, - table: table, - paragraphs: _03Paragraph, - templates: template$1, - references: reference, - startEndTemplates: startToEnd -}; + if (img) { + arr.unshift(img); //put it at the top + } + }); //look for 'gallery' templates, too -var oneSection = function oneSection(section, doc) { - parse$6.startEndTemplates(section, doc); //parse-out the tags + this.templates().forEach(obj => { + 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(); + img = new Image_1(img); + } - parse$6.references(section); //parse-out all {{templates}} + arr.push(img); + }); + } + }); - parse$6.templates(section, doc); // //parse the tables + if (typeof clue === 'number') { + return [arr[clue]]; + } - parse$6.table(section); //now parse all double-newlines + return arr; + } + /** + * Return all links or if a clue is provided only the link at that index + * + * @param {number} [clue] the index of the wanted link + * @returns {string[]|string} all the links or the selected link + */ - parse$6.paragraphs(section, doc); - section = new Section_1(section); - return section; -}; -var removeReferenceSection = function removeReferenceSection(sections) { - return sections.filter(function (s, i) { - if (isReference$1.test(s.title()) === true) { - if (s.paragraphs().length > 0) { - return true; - } //does it have some wacky templates? + links(clue) { + return _sectionMap(this, 'links', clue); + } + /** + * Return all inter wiki links or if a clue is provided only the inter wiki link at that index + * + * @param {number} [clue] the index of the wanted inter wiki link + * @returns {string[]|string} all the inter wiki links or the selected inter wiki link + */ - if (s.templates().length > 0) { - return true; - } //what it has children? awkward + interwiki(clue) { + return _sectionMap(this, 'interwiki', clue); + } + /** + * If a clue is available return the list at that index + * Else return all lists + * + * @param {number} [clue] The index of the wanted list + * @returns {object | object[]} The list at the provided index or all lists + */ - if (sections[i + 1] && sections[i + 1].depth > s.depth) { - sections[i + 1].depth -= 1; //move it up a level?... - } + lists(clue) { + return _sectionMap(this, 'lists', 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 {object | object[]} The table at the provided index or all tables + */ - return false; - } - return true; - }); -}; + tables(clue) { + return _sectionMap(this, 'tables', 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 {object | object[]} The category at the provided index or all categories + */ -var parseSections = function parseSections(doc) { - var sections = []; - var split = doc.wiki.split(section_reg); - for (var i = 0; i < split.length; i += 2) { - var heading = split[i - 1] || ''; - var wiki = split[i] || ''; + templates(clue) { + return _sectionMap(this, 'templates', 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 {object | object[]} The category at the provided index or all references + */ - if (wiki === '' && heading === '') { - //usually an empty 'intro' section - continue; - } - var section = { - title: '', - depth: null, - wiki: wiki, - templates: [], - tables: [], - infoboxes: [], - references: [] - }; //figure-out title/depth + 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 + */ - parse$6.heading(section, heading); //parse it up - var s = oneSection(section, doc); - sections.push(s); - } //remove empty references section + citations(clue) { + return this.references(clue); + } + /** + * finds and returns all coordinates + * 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 + */ - doc.sections = removeReferenceSection(sections); -}; + coordinates(clue) { + return _sectionMap(this, 'coordinates', 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 {object | object[]} the selected infobox or an array of infoboxes + */ -var _02Section = parseSections; -var cat_reg = new RegExp('\\[\\[:?(' + i18n$1.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'ig'); -var cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n$1.categories.join('|') + '):', 'ig'); + infoboxes(clue) { + let arr = _sectionMap(this, 'infoboxes', clue); //sort them by biggest-first -var parse_categories = function parse_categories(doc) { - var wiki = doc.wiki; - var tmp = wiki.match(cat_reg); //regular links + arr = arr.sort((a, b) => { + if (Object.keys(a.data).length > Object.keys(b.data).length) { + return -1; + } - if (tmp) { - tmp.forEach(function (c) { - c = c.replace(cat_remove_reg, ''); - c = c.replace(/\|?[ \*]?\]\]$/i, ''); //parse fancy onces.. + return 1; + }); + return arr; + } + /** + * 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 + */ - c = c.replace(/\|.*/, ''); //everything after the '|' is metadata - if (c && !c.match(/[\[\]]/)) { - doc.categories.push(c.trim()); - } - }); + text(options) { + options = setDefaults_1(options, defaults$1); //nah, skip these. + + if (this.isRedirect() === true) { + return ''; + } + + let arr = this.sections().map(sec => sec.text(options)); + return arr.join('\n\n'); } + /** + * return a json version of the Document class + * + * @param {object} [options] options for the rendering + * @returns {object} this document as json + */ - wiki = wiki.replace(cat_reg, ''); - doc.wiki = wiki; -}; -var categories$1 = parse_categories; + json(options) { + options = setDefaults_1(options, defaults$1); + return toJson$6(this, options); + } + /** + * return original wiki markup + * + * @returns {string} markup text + */ + -var parse$7 = { - section: _02Section, - categories: categories$1 -}; //convert wikiscript markup lang to json + wikitext() { + return this._wiki || ''; + } + /** + * prints the title of every section + * + * @returns {Document} the document itself + */ -var main = function main(wiki, options) { - options = options || {}; - var data = Object.assign(options, { - title: options.title || null, - pageID: options.pageID || options.id || null, - namespace: options.namespace || options.ns || null, - type: 'page', - wiki: wiki || '', - categories: [], - sections: [], - coordinates: [] - }); //detect if page is just redirect, and return it - if (redirects$1.isRedirect(wiki) === true) { - data.type = 'redirect'; - data.redirectTo = redirects$1.parse(wiki); - parse$7.categories(data); - return new Document_1(data); - } //give ourselves a little head-start + debug() { + console.log('\n'); + this.sections().forEach(sec => { + let indent = ' - '; + for (let i = 0; i < sec.depth(); i += 1) { + indent = ' -' + indent; + } - preProcess_1(data); //pull-out [[category:whatevers]] + console.log(indent + (sec.title() || '(Intro)')); + }); + return this; + } - parse$7.categories(data); //parse all the headings, and their texts/sentences +} // aliases - parse$7.section(data); //all together now - return new Document_1(data); +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); + return arr[0] || null; + }; +}); +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; +var Document_1 = Document; -var _01Document = main; +/** + * 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 + */ -var parseDoc = function parseDoc(res) { - res = res.filter(function (o) { - return o; - }); - var docs = res.map(function (o) { - return _01Document(o.wiki, o.meta); - }); +const parseDoc = function (res) { + // filter out undefined + res = res.filter(o => o); // put all the responses into Document formats + + let docs = res.map(o => { + return new Document_1(o.wiki, o.meta); + }); // if the list is empty than there are no results if (docs.length === 0) { return null; - } + } // if there is only one response then we can get it out of the array + if (docs.length === 1) { return docs[0]; @@ -8720,37 +9363,18 @@ var parseDoc = function parseDoc(res) { return docs; }; -var _03ParseDoc = parseDoc; - -var request = function request(url) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return new Promise(function (resolve, reject) { - https.get(url, opts, function (resp) { - var data = ''; // A chunk of data has been recieved. - - resp.on('data', function (chunk) { - data += chunk; - }); // The whole response has been received. Print out the result. - - resp.on('end', function () { - try { - var json = JSON.parse(data); - resolve(json); - } catch (e) { - reject(e); - } - }); - }).on('error', function (err) { - reject(err); - }); - }); -}; - -var server$1 = request; +var parseDoc_1 = parseDoc; -var makeHeaders = function makeHeaders(options) { - var agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library'; - var origin; +/** + * factory for header options + * + * @private + * @param {object} options + * @returns {object} 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 origin; if (options.noOrigin) { origin = ''; @@ -8758,76 +9382,91 @@ var makeHeaders = function makeHeaders(options) { origin = options.origin || options.Origin || '*'; } - var opts = { + return { method: 'GET', headers: { 'Content-Type': 'application/json', 'Api-User-Agent': agent, 'User-Agent': agent, - Origin: origin + Origin: origin, + 'Accept-Encoding': 'gzip' }, redirect: 'follow' }; - return opts; }; var _headers = makeHeaders; -var isUrl = /^https?:\/\//; -var defaults$c = { +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 | number | Array | 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 }; +/** + * @callback fetchCallback + * @param {Object} error + * @param {(null | Document | Document[])} response + */ -var fetch = function fetch(title, options, c) { - var callback = null; - - if (typeof options === 'function') { - callback = options; - options = {}; - } - - if (typeof c === 'function') { - callback = c; - c = {}; - } //support lang 2nd param - +/** + * fetches the page from the wiki and returns a Promise with the parsed wiki text + * + * @param {string | number | Array | Array} title the title, PageID, URL or an array of all three of the page(s) you want to fetch + * @param {fetchDefaults} [options] the options for the fetch or the language of the wiki for the article + * @param {fetchCallback} [callback] the callback function for the call + * @returns {Promise} either null if the pages is not found, Document if you asked for one result, and a array of Documents if you asked for multiple pages + */ +const fetch$1 = function (title, options, callback) { + // support lang as 2nd param if (typeof options === 'string') { - c = c || {}; - options = Object.assign({}, { + options = { lang: options - }, c); + }; } - options = options || {}; - options = Object.assign({}, defaults$c, options); - options.title = title; // parse url input + options = { ...defaults, + ...options + }; + options.title = title; //parse url input - if (isUrl.test(title)) { - options = Object.assign(options, _00ParseUrl(title)); + if (typeof title === 'string' && isUrl.test(title)) { + options = { ...options, + ...parseUrl_1(title) + }; } - var url = _01MakeUrl(options); - var headers = _headers(options); - return server$1(url, headers).then(function (res) { - try { - var data = _02GetResult(res, options); - data = _03ParseDoc(data); - - if (callback) { - callback(null, data); - } + const url = makeUrl_1(options); + const headers = _headers(options); + return isomorphicUnfetch(url, headers).then(res => res.json()).then(res => { + let data = getResult_1(res, options); + data = parseDoc_1(data); - return data; - } catch (e) { - throw e; + if (callback) { + callback(null, data); } - })["catch"](function (e) { + + return data; + }).catch(e => { console.error(e); if (callback) { @@ -8838,159 +9477,33 @@ var fetch = function fetch(title, options, c) { }); }; -var _fetch = fetch; - -var defaults$d = { - lang: 'en', - wiki: 'wikipedia', - domain: null, - path: 'w/api.php' //some 3rd party sites use a weird path - -}; - -var isObject$1 = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; -}; - -var fetchRandom = function fetchRandom(lang, options) { - options = options || {}; - options = Object.assign({}, defaults$d, options); //support lang 2nd param - - if (typeof lang === 'string') { - options.lang = lang; - } else if (isObject$1(lang)) { - options = Object.assign(options, lang); - } - - var url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); - - if (options.domain) { - url = "https://".concat(options.domain, "/").concat(options.path, "?"); - } - - url += "format=json&action=query&generator=random&grnnamespace=0&prop=revisions|pageprops&rvprop=content&grnlimit=1&rvslots=main&origin=*"; - var headers = _headers(options); - return server$1(url, headers).then(function (res) { - try { - var data = _02GetResult(res); - return _03ParseDoc(data); - } catch (e) { - throw e; - } - })["catch"](function (e) { - console.error(e); - return null; - }); -}; - -var random = fetchRandom; - -var defaults$e = { - lang: 'en', - wiki: 'wikipedia', - domain: null, - path: 'w/api.php' //some 3rd party sites use a weird path - -}; - -var normalizeCategory = function normalizeCategory() { - var cat = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - if (/^Category/i.test(cat) === false) { - cat = 'Category:' + cat; - } - - cat = cat.replace(/ /g, '_'); - return cat; -}; - -var isObject$2 = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; -}; - -var getResult$1 = function getResult(body) { - var list = body.query.categorymembers || []; - var res = { - pages: [], - categories: [] - }; - list.forEach(function (p) { - if (p.ns === 14) { - delete p.ns; - res.categories.push(p); - } else { - delete p.ns; - res.pages.push(p); - } - }); - return res; -}; - -var makeUrl$1 = function makeUrl(category, options, cm) { - category = normalizeCategory(category); - category = encodeURIComponent(category); - var url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); - - if (options.domain) { - url = "https://".concat(options.domain, "/").concat(options.path, "?"); - } - - url += "action=query&list=categorymembers&cmtitle=".concat(category, "&cmlimit=500&format=json&origin=*&redirects=true&cmtype=page|subcat"); - - if (cm) { - url += '&cmcontinue=' + cm; - } - - return url; -}; - -var fetchCategory = function fetchCategory(category, lang, options) { - options = options || {}; - options = Object.assign({}, defaults$e, options); //support lang 2nd param +var _fetch = fetch$1; - if (typeof lang === 'string') { - options.lang = lang; - } else if (isObject$2(lang)) { - options = Object.assign(options, lang); - } - - var res = { - pages: [], - categories: [] - }; // wrap a promise around potentially-many requests +var _version = '9.0.0'; - return new Promise(function (resolve, reject) { - var doit = function doit(cm) { - var url = makeUrl$1(category, options, cm); - var headers = _headers(options); - return server$1(url, headers).then(function (body) { - res = getResult$1(body); - - if (body["continue"] && body["continue"].cmcontinue) { - doit(body["continue"].cmcontinue); - } else { - resolve(res); - } - })["catch"](function (e) { - console.error(e); - reject(e); - }); - }; +/** + * 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 + */ - doit(null); +const request = function (url, opts) { + return isomorphicUnfetch(url, opts).then(function (res) { + return res.json(); }); }; -var category = fetchCategory; - -var _version = '8.5.1'; +var fetch = request; -var wtf = function wtf(wiki, options) { - return _01Document(wiki, options); -}; // export classes for plugin development +const wtf = function (wiki, options) { + return new Document_1(wiki, options); +}; //export classes for plugin development -var models = { +const models = { Doc: Document_1, Section: Section_1, Paragraph: Paragraph_1, @@ -9002,7 +9515,7 @@ var models = { Reference: Reference_1, Table: Table_1, Template: Template_1, - http: server$1, + http: fetch, wtf: wtf }; @@ -9010,19 +9523,12 @@ wtf.fetch = function (title, lang, options, cb) { return _fetch(title, lang, options); }; -wtf.random = function (lang, options, cb) { - return random(lang, options); -}; - -wtf.category = function (cat, lang, options, cb) { - return category(cat, lang, options); -}; - wtf.extend = function (fn) { - fn(models, templates$e, this); + fn(models, custom, _infoboxes); return this; }; +wtf.plugin = wtf.extend; wtf.version = _version; var src = wtf; diff --git a/changelog.md b/changelog.md index 2d5bb2fc..00c85ed0 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,49 @@ ---- - -#### [unreleased] + + +#### 9.0.0 + +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 (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 +- **[possibly-breaking]** - remove .dates() method (prev deprecated) +- **[possibly-breaking]** - require node 10, ie > 11 +- **[change]** - normalize table rows +- **[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() + +- 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 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/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' 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/basic.html similarity index 75% rename from demo/index.html rename to demo/basic.html index b261ab6b..833acbc8 100644 --- a/demo/index.html +++ b/demo/basic.html @@ -30,14 +30,5 @@ document.querySelector('#result').innerHTML = members.join(', ') }) - - 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/package-lock.json b/package-lock.json index 2e180186..ae26f46c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,834 +1,6409 @@ { "name": "wtf_wikipedia", "version": "8.5.1", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "8.5.1", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "isomorphic-unfetch": "^3.1.0", + "path-exists-cli": "1.0.0", + "recursive-install": "1.4.0" + }, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "devDependencies": { + "@babel/core": "7.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "amble": "1.3.0", + "codecov": "3.8.1", + "cross-env": "7.0.3", + "eslint": "7.23.0", + "eslint-plugin-compat": "3.9.0", + "eslint-plugin-regexp": "^0.7.5", + "nyc": "^15.1.0", + "rollup": "2.44.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.1", + "tape": "5.2.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-polyfill-provider/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@mdn/browser-compat-data": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-2.0.7.tgz", + "integrity": "sha512-GeeM827DlzFFidn1eKkMBiqXFD2oLsnZbaiGhByPl0vcapsRzUL+t9hDoov1swc9rB2jw64R+ihtzC8qOE9wXw==", + "dev": true, + "dependencies": { + "extend": "3.0.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@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.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/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==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.6.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz", + "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/amble": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/amble/-/amble-1.3.0.tgz", + "integrity": "sha512-CODkx6oHXpvGTkPechpe9JoZycsQ6xmLrnx4wudkW+gro6HrtAFSThWO5/Nlr0D7UPQolshty9zFVx0890FVbA==", + "dev": true, + "dependencies": { + "chokidar": "3.5.1", + "colorette": "1.2.1" + }, + "bin": { + "amble": "bin/amble.js" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true, + "engines": { + "node": ">=0.6.10" + } + }, + "node_modules/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 + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-metadata-inferer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.4.0.tgz", + "integrity": "sha512-tKHdBe8N/Vq2nLAm4YPBVREVZjMux6KrqyPfNQgIbDl0t7HaNSmy8w4OyVHYg/cvyn5BW7o7pVwpjPte89Zhcg==", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dependencies": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001203", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", + "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codecov": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.1.tgz", + "integrity": "sha512-Qm7ltx1pzLPsliZY81jyaQ80dcNR4/JpcX0IHCIWrHBXgseySqbdbYfkdiXd7o/xmzQpGRVCKGYeTrHUpn6Dcw==", + "dev": true, + "dependencies": { + "argv": "0.0.2", + "ignore-walk": "3.0.3", + "js-yaml": "3.14.0", + "teeny-request": "6.0.1", + "urlgrey": "0.4.4" + }, + "bin": { + "codecov": "bin/codecov" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/codecov/node_modules/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, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "dependencies": { + "color-name": "^1.1.1" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/comment-parser": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.4.tgz", + "integrity": "sha512-MrWw1IrmmeCMLJKA8SvMw0tImTd4BHBFQ4WCNxzZoNeWaDL7OAXugF3BIKY042wNsNzGqD5liCgpQS99cuY1qA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.23.0.tgz", + "integrity": "sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-compat": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-3.9.0.tgz", + "integrity": "sha512-lt3l5PHFHVEYSZ5zijcoYvtQJPsBifRiH5N0Et57KwVu7l/yxmHhSG6VJiLMa/lXrg93Qu8049RNQOMn0+yJBg==", + "dev": true, + "dependencies": { + "@mdn/browser-compat-data": "^2.0.7", + "ast-metadata-inferer": "^0.4.0", + "browserslist": "^4.12.2", + "caniuse-lite": "^1.0.30001166", + "core-js": "^3.6.5", + "find-up": "^4.1.0", + "lodash.memoize": "4.1.2", + "semver": "7.3.2" + }, + "engines": { + "node": ">=9.x" + }, + "peerDependencies": { + "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/eslint-plugin-compat/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-regexp": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.7.5.tgz", + "integrity": "sha512-0/5/O8P0JldGy4MGAIDGj4B14o8mPMKvJE0p4PPVG9dHzhsz6s0MJSIdRBWEyHbl5F3sAK3oHbALHw3mI/d1FA==", + "dev": true, + "dependencies": { + "comment-parser": "^1.1.2", + "eslint-utils": "^2.1.0", + "jsdoctypeparser": "^9.0.0", + "regexpp": "^3.1.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-utils/node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "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, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/fromentries": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.1.tgz", + "integrity": "sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "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/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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/hasha": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.1.tgz", + "integrity": "sha512-x15jnRSHTi3VmH+oHtVb9kgU/HuKOK8mjK8iCL3dPQXh4YJlUb9YSI8ZLiiqLAIvY2wuDIlZYZppy8vB2XISkQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "agent-base": "5", + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/https-proxy-agent/node_modules/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, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "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-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-bigint": { + "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-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "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.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.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" + } + }, + "node_modules/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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-reference/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/is-regex": { + "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.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-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "node_modules/is-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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "dependencies": { + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", + "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true, + "bin": { + "jsdoctypeparser": "bin/jsdoctypeparser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "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/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz", + "integrity": "sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dependencies": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "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/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-exists-cli": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-exists-cli/-/path-exists-cli-1.0.0.tgz", + "integrity": "sha1-tQtxJtB54khi4JKg0GDrHIL2S8M=", + "dependencies": { + "meow": "^3.7.0", + "path-exists": "^3.0.0" + }, + "bin": { + "path-exists": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists-cli/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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 + }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-install": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/recursive-install/-/recursive-install-1.4.0.tgz", + "integrity": "sha512-pK7bU5PUe5UVHxHJseTQaAmSD7qTtIyhNVhM4u6yru9rkicbxLYhPwXsHhPSxwWLyxmEHx8Fba59BhlHWSGwDA==", + "dependencies": { + "shelljs": "^0.7.0", + "yargs": "^5.0.0" + }, + "bin": { + "npm-recursive-install": "recursive-install.js" + } + }, + "node_modules/recursive-install/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-install/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-install/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/recursive-install/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/recursive-install/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-install/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "node_modules/recursive-install/node_modules/shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "iojs": "*", + "node": ">=0.11.0" + } + }, + "node_modules/recursive-install/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-install/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-install/node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "node_modules/recursive-install/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-install/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "node_modules/recursive-install/node_modules/yargs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-5.0.0.tgz", + "integrity": "sha1-M1UUSXfQV1fbuG1uOOwFYSOzpm4=", + "dependencies": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.2.0", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^3.2.0" + } + }, + "node_modules/recursive-install/node_modules/yargs-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-3.2.0.tgz", + "integrity": "sha1-UIE1XRnZ0MjF2BrakIy05tGGZk8=", + "dependencies": { + "camelcase": "^3.0.0", + "lodash.assign": "^4.1.0" + } + }, + "node_modules/redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dependencies": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/redent/node_modules/indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-commonjs/node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/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 + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", + "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==" + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz", + "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "lodash.clonedeep": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.3.tgz", + "integrity": "sha512-Df6NAivu9KpZw+q8ySijAgLvr1mUA5ihkRvCLCxpdYR21ann5yIuN+PpFxmweSj7i3yjJ0x5LN5KVs0RRzskAQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/teeny-request": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.1.tgz", + "integrity": "sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^4.0.0", + "node-fetch": "^2.2.0", + "stream-events": "^1.0.5", + "uuid": "^3.3.2" + } + }, + "node_modules/terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.1.tgz", + "integrity": "sha512-yD80f4hdwCWTH5mojzxe1q8bN1oJbsK/vfJGLcPZM/fl+/jItIVNKhFIHqqR71OipFWMLgj3Kc+GIp6CeIqfnA==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "node_modules/trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "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/unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" + }, + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "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 + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/which-typed-array": { + "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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + } + }, "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.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" } }, "@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.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.11.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", - "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", - "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/template": "^7.10.4", - "@babel/traverse": "^7.11.5", - "@babel/types": "^7.11.5", + "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/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/highlight": "^7.12.13" } }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@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.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.11.5", + "@babel/types": "^7.13.0", "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==", - "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/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "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.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "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 + } } }, "@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.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.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@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.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.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", - "regexpu-core": "^4.7.0" + "@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" + "@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" }, "dependencies": { - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@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.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.10.4" - }, - "dependencies": { - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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.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.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.11.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==", - "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.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.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.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "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==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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==", - "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.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==", - "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" - }, - "dependencies": { - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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 - } + "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-remap-async-to-generator": { + "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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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.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.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/template": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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": { - "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" - }, - "dependencies": { - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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.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==", + "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/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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.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==", + "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.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.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.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/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.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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/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" } }, "@babel/parser": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "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.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.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.10.4", - "@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.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.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.10.4", - "@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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.10.4" + "@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.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.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.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.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-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@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.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.10.4", - "@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.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.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.10.4", - "@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": { @@ -841,12 +6416,12 @@ } }, "@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.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": { @@ -931,457 +6506,407 @@ } }, "@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.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.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.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.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.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.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" - }, - "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==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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.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.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.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.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.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "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.10.4", - "@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.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.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.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "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.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.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.10.4", - "@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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.10.5", - "@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.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.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.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@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.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.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.10.5", - "@babel/helper-plugin-utils": "^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" } }, "@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.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.10.4", - "@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.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.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.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.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.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.10.4" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "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.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.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.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.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.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.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-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-plugin-utils": "^7.13.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.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.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.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-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.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.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.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.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.10.4", - "@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.11.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", - "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@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/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@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.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/preset-modules": "^0.1.3", - "@babel/types": "^7.11.5", - "browserslist": "^4.12.0", - "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==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "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==", + "@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" + }, + "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 } } @@ -1400,95 +6925,78 @@ } }, "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "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" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" }, "dependencies": { - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/highlight": "^7.12.13" } - }, - "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.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.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.11.5", - "@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/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" + "globals": "^11.1.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==", + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/highlight": "^7.12.13" } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true } } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, "@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.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -1498,7 +7006,6 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.19", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -1511,12 +7018,6 @@ "requires": { "type-fest": "^0.8.1" } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true } } }, @@ -1539,13 +7040,58 @@ "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, - "@rollup/plugin-alias": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.1.tgz", - "integrity": "sha512-hNcQY4bpBUIvxekd26DBPgF7BT4mKVNDF5tBG4Zi+3IgwLxGYRY0itHs9D0oLVwXM5pvJDWJlBQro+au8WaUWw==", + "@mdn/browser-compat-data": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-2.0.7.tgz", + "integrity": "sha512-GeeM827DlzFFidn1eKkMBiqXFD2oLsnZbaiGhByPl0vcapsRzUL+t9hDoov1swc9rB2jw64R+ihtzC8qOE9wXw==", + "dev": true, + "requires": { + "extend": "3.0.2" + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "requires": { + "@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.19.0" + }, + "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" + } + } + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { - "slash": "^3.0.0" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } } }, "@tootallnate/once": { @@ -1560,12 +7106,27 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "@types/node": { "version": "14.6.4", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz", "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", "dev": true }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -1576,12 +7137,13 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true + "dev": true, + "requires": {} }, "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 +7160,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", @@ -1610,13 +7172,13 @@ } }, "amble": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/amble/-/amble-1.1.0.tgz", - "integrity": "sha512-ughbDptkU0lCFV/pJwUHjEYJJNY3/63wPbvvK2SZQoiYm70nZeHugs8yrli3xnK3P8LhoaGI62/ZfHgraJkKEg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/amble/-/amble-1.3.0.tgz", + "integrity": "sha512-CODkx6oHXpvGTkPechpe9JoZycsQ6xmLrnx4wudkW+gro6HrtAFSThWO5/Nlr0D7UPQolshty9zFVx0890FVbA==", "dev": true, "requires": { - "chokidar": "^3.3.1", - "colorette": "^1.1.0" + "chokidar": "3.5.1", + "colorette": "1.2.1" } }, "ansi-colors": { @@ -1686,6 +7248,11 @@ "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", "dev": true }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, "ast-metadata-inferer": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.4.0.tgz", @@ -1693,9 +7260,9 @@ "dev": true }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "available-typed-arrays": { @@ -1716,29 +7283,59 @@ "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" + }, + "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 + } + } + }, + "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", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1754,15 +7351,16 @@ } }, "browserslist": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", - "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", + "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.30001125", - "electron-to-chromium": "^1.3.564", - "escalade": "^3.0.2", - "node-releases": "^1.1.61" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1777,6 +7375,12 @@ "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", "dev": true }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, "caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -1789,6 +7393,16 @@ "write-file-atomic": "^3.0.0" } }, + "call-bind": { + "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.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1801,27 +7415,28 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "caniuse-db": { - "version": "1.0.30001144", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001144.tgz", - "integrity": "sha512-kTOwln0YrcSzFUltSOTwp7VDc3ubCEKe2ubUbnQCyvIfxNnx+HQ8tbd0vEswU86pb0cw1aNk8XTuyD7+VSU+Mg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001125", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001125.tgz", - "integrity": "sha512-9f+r7BW8Qli917mU3j0fUaTweT3f3vnX/Lcs+1C73V+RADmFme+Ih0Br8vONQi3X0lseOe6ZHfsZLCA8MSjxUA==", - "dev": true - }, - "catharsis": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.11.tgz", - "integrity": "sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==", - "dev": true, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "requires": { - "lodash": "^4.17.14" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } } }, + "caniuse-lite": { + "version": "1.0.30001203", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", + "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -1834,19 +7449,19 @@ } }, "chokidar": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", - "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" + "readdirp": "~3.5.0" } }, "clean-stack": { @@ -1869,20 +7484,31 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "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.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.13.1", + "js-yaml": "3.14.0", "teeny-request": "6.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": { @@ -1895,9 +7521,9 @@ } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "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 }, "colorette": { @@ -1913,9 +7539,9 @@ "dev": true }, "comment-parser": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.6.tgz", - "integrity": "sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.4.tgz", + "integrity": "sha512-MrWw1IrmmeCMLJKA8SvMw0tImTd4BHBFQ4WCNxzZoNeWaDL7OAXugF3BIKY042wNsNzGqD5liCgpQS99cuY1qA==", "dev": true }, "commondir": { @@ -1927,8 +7553,7 @@ "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 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "convert-source-map": { "version": "1.7.0", @@ -1946,12 +7571,12 @@ "dev": true }, "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.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.8.5", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1970,12 +7595,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.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0" + "cross-spawn": "^7.0.1" } }, "cross-spawn": { @@ -1989,6 +7614,14 @@ "which": "^2.0.1" } }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -2001,26 +7634,26 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "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.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.17.5", - "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.0.5", + "is-regex": "^1.1.1", "isarray": "^2.0.5", - "object-is": "^1.1.2", + "object-is": "^1.1.4", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", + "object.assign": "^4.1.2", "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" @@ -2040,6 +7673,12 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "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 + }, "default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", @@ -2083,9 +7722,9 @@ } }, "electron-to-chromium": { - "version": "1.3.564", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.564.tgz", - "integrity": "sha512-fNaYN3EtKQWLQsrKXui8mzcryJXuA0LbCLoizeX6oayG2emBaS5MauKjCPAvc29NEY4FpLHIUWiP+Y0Bfrs5dg==", + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "dev": true }, "emoji-regex": { @@ -2103,51 +7742,50 @@ "ansi-colors": "^4.1.1" } }, - "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "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.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.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.0", - "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.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "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": { - "es-abstract": "^1.17.4", + "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" }, @@ -2178,9 +7816,9 @@ "dev": true }, "escalade": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", - "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-string-regexp": { @@ -2190,13 +7828,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.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.23.0.tgz", + "integrity": "sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.1.3", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -2205,14 +7843,14 @@ "enquirer": "^2.3.5", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", - "espree": "^7.3.0", - "esquery": "^1.2.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -2220,7 +7858,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -2229,7 +7867,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -2262,19 +7900,13 @@ "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 - }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "has-flag": { @@ -2283,17 +7915,14 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "supports-color": { "version": "7.2.0", @@ -2303,22 +7932,28 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true } } }, "eslint-plugin-compat": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-3.8.0.tgz", - "integrity": "sha512-5CuWUSZXZkXLCQJBriEpndn/YWrvggDSHTpRJq++kR8GVcsWbTdp8Eh+nBA7JlrNi7ZJ/+kniOVXmn3bpnxuRA==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-3.9.0.tgz", + "integrity": "sha512-lt3l5PHFHVEYSZ5zijcoYvtQJPsBifRiH5N0Et57KwVu7l/yxmHhSG6VJiLMa/lXrg93Qu8049RNQOMn0+yJBg==", "dev": true, "requires": { + "@mdn/browser-compat-data": "^2.0.7", "ast-metadata-inferer": "^0.4.0", "browserslist": "^4.12.2", - "caniuse-db": "^1.0.30001090", + "caniuse-lite": "^1.0.30001166", "core-js": "^3.6.5", "find-up": "^4.1.0", "lodash.memoize": "4.1.2", - "mdn-browser-compat-data": "^1.0.28", "semver": "7.3.2" }, "dependencies": { @@ -2330,42 +7965,16 @@ } } }, - "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==", + "eslint-plugin-regexp": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.7.5.tgz", + "integrity": "sha512-0/5/O8P0JldGy4MGAIDGj4B14o8mPMKvJE0p4PPVG9dHzhsz6s0MJSIdRBWEyHbl5F3sAK3oHbALHw3mI/d1FA==", "dev": true, "requires": { - "comment-parser": "^0.7.6", - "debug": "^4.2.0", + "comment-parser": "^1.1.2", + "eslint-utils": "^2.1.0", "jsdoctypeparser": "^9.0.0", - "lodash": "^4.17.20", - "regextras": "^0.7.1", - "semver": "^7.3.2", - "spdx-expression-parse": "^3.0.1" - }, - "dependencies": { - "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" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } + "regexpp": "^3.1.0" } }, "eslint-scope": { @@ -2385,23 +7994,39 @@ "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": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", - "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { "acorn": "^7.4.0", - "acorn-jsx": "^5.2.0", + "acorn-jsx": "^5.3.1", "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": { @@ -2411,9 +8036,9 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -2487,12 +8112,12 @@ "dev": true }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "fill-range": { @@ -2526,31 +8151,19 @@ } }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "for-each": { @@ -2587,13 +8200,12 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "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 }, @@ -2610,9 +8222,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": { @@ -2621,17 +8233,32 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "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", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, "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", @@ -2659,8 +8286,7 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "has": { "version": "1.0.3", @@ -2671,6 +8297,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", @@ -2678,9 +8310,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 }, "hasha": { @@ -2696,8 +8328,7 @@ "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" }, "html-escaper": { "version": "2.0.2", @@ -2750,9 +8381,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.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -2783,7 +8414,6 @@ "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" @@ -2792,46 +8422,36 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "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" - } + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, "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-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "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-binary-path": { @@ -2844,17 +8464,29 @@ } }, "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.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", @@ -2867,6 +8499,11 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -2883,9 +8520,21 @@ } }, "is-map": { + "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": { + "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.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true }, "is-number": { @@ -2918,18 +8567,19 @@ } }, "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "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-stream": { @@ -2954,13 +8604,14 @@ } }, "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" } @@ -2974,8 +8625,7 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, "is-weakmap": { "version": "2.0.1", @@ -3007,6 +8657,15 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "requires": { + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" + } + }, "istanbul-lib-coverage": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", @@ -3158,51 +8817,6 @@ "esprima": "^4.0.0" } }, - "js2xmlparser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", - "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", - "dev": true, - "requires": { - "xmlcreate": "^2.0.3" - } - }, - "jsdoc": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.6.tgz", - "integrity": "sha512-znR99e1BHeyEkSvgDDpX0sTiTu+8aQyDl9DawrkOGZTTW8hv0deIFXx87114zJ7gRaDZKVQD/4tr1ifmJp9xhQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.9.4", - "bluebird": "^3.7.2", - "catharsis": "^0.8.11", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.1", - "klaw": "^3.0.0", - "markdown-it": "^10.0.0", - "markdown-it-anchor": "^5.2.7", - "marked": "^0.8.2", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", - "underscore": "~1.10.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, "jsdoctypeparser": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", @@ -3236,39 +8850,14 @@ "minimist": "^1.2.5" } }, - "klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, "requires": { "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", @@ -3279,20 +8868,10 @@ "type-check": "~0.4.0" } }, - "linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -3305,7 +8884,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, "requires": { "is-utf8": "^0.2.0" } @@ -3322,15 +8900,32 @@ } }, "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.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "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 + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", "dev": true }, "lodash.flattendeep": { @@ -3345,13 +8940,28 @@ "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==", + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "yallist": "^4.0.0" } }, "magic-string": { @@ -3380,45 +8990,27 @@ } } }, - "markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "markdown-it-anchor": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", - "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", - "dev": true - }, - "marked": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", - "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", - "dev": true - }, - "mdn-browser-compat-data": { - "version": "1.0.40", - "resolved": "https://registry.npmjs.org/mdn-browser-compat-data/-/mdn-browser-compat-data-1.0.40.tgz", - "integrity": "sha512-yjM/OG0krZIgi+XrhJWS3CJ9UQuGM4FfjIUIt2f65er6qczkM+WjtNEv/9ZF9DxDs/2GR3SO6hDaZLplTRrrfw==", - "dev": true, - "requires": { - "extend": "3.0.2" - } - }, - "mdurl": { + "map-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } }, "merge-stream": { "version": "2.0.0", @@ -3430,7 +9022,6 @@ "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" } @@ -3438,17 +9029,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 - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "ms": { "version": "2.1.2", @@ -3465,8 +9046,7 @@ "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "node-preload": { "version": "0.2.1", @@ -3478,16 +9058,15 @@ } }, "node-releases": { - "version": "1.1.61", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", - "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, "requires": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -3495,17 +9074,10 @@ "validate-npm-package-license": "^3.0.1" }, "dependencies": { - "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 - }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -3520,9 +9092,8 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { "version": "15.1.0", @@ -3559,20 +9130,25 @@ "yargs": "^15.0.2" } }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "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.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "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.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -3582,22 +9158,21 @@ "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": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -3620,7 +9195,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, "requires": { "lcid": "^1.0.0" } @@ -3683,7 +9257,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, "requires": { "error-ex": "^1.2.0" } @@ -3694,11 +9267,26 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, + "path-exists-cli": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-exists-cli/-/path-exists-cli-1.0.0.tgz", + "integrity": "sha1-tQtxJtB54khi4JKg0GDrHIL2S8M=", + "requires": { + "meow": "^3.7.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, "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 + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { "version": "3.1.1", @@ -3707,16 +9295,14 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -3732,20 +9318,17 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, "requires": { "pinkie": "^2.0.0" } @@ -3811,7 +9394,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -3822,7 +9404,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -3832,7 +9413,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -3842,17 +9422,31 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, "requires": { "pinkie-promise": "^2.0.0" } } } }, + "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", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { "picomatch": "^2.2.1" @@ -3862,7 +9456,6 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, "requires": { "resolve": "^1.1.6" } @@ -3871,7 +9464,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/recursive-install/-/recursive-install-1.4.0.tgz", "integrity": "sha512-pK7bU5PUe5UVHxHJseTQaAmSD7qTtIyhNVhM4u6yru9rkicbxLYhPwXsHhPSxwWLyxmEHx8Fba59BhlHWSGwDA==", - "dev": true, "requires": { "shelljs": "^0.7.0", "yargs": "^5.0.0" @@ -3880,20 +9472,17 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", @@ -3903,14 +9492,12 @@ "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3918,14 +9505,12 @@ "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, "shelljs": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -3936,7 +9521,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3947,7 +9531,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3955,30 +9538,26 @@ "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" } }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" }, "yargs": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-5.0.0.tgz", "integrity": "sha1-M1UUSXfQV1fbuG1uOOwFYSOzpm4=", - "dev": true, "requires": { "cliui": "^3.2.0", "decamelize": "^1.1.1", @@ -4000,7 +9579,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-3.2.0.tgz", "integrity": "sha1-UIE1XRnZ0MjF2BrakIy05tGGZk8=", - "dev": true, "requires": { "camelcase": "^3.0.0", "lodash.assign": "^4.1.0" @@ -4008,10 +9586,29 @@ } } }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + } + } + }, "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==", + "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": { @@ -4039,13 +9636,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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "regexpp": { @@ -4055,9 +9652,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", @@ -4068,12 +9665,6 @@ "unicode-match-property-value-ecmascript": "^1.2.0" } }, - "regextras": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", - "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", - "dev": true - }, "regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", @@ -4081,9 +9672,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" @@ -4106,10 +9697,23 @@ "es6-error": "^4.0.1" } }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, "require-main-filename": { @@ -4118,20 +9722,10 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "requizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", - "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, "resolve": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", - "dev": true, "requires": { "path-parse": "^1.0.5" } @@ -4161,12 +9755,12 @@ } }, "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.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": { @@ -4192,12 +9786,6 @@ "rollup-pluginutils": "^2.8.1" }, "dependencies": { - "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 - }, "resolve": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", @@ -4245,8 +9833,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "serialize-javascript": { "version": "4.0.0", @@ -4260,8 +9847,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "shebang-command": { "version": "2.0.0", @@ -4290,43 +9876,49 @@ } }, "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "requires": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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" + } } } }, @@ -4378,7 +9970,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -4387,14 +9978,12 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -4403,8 +9992,7 @@ "spdx-license-ids": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", - "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", - "dev": true + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==" }, "split": { "version": "1.0.0", @@ -4430,6 +10018,15 @@ "stubs": "^3.0.0" } }, + "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" + } + }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -4442,43 +10039,34 @@ } }, "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.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.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.2" } }, "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==", + "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.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "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==", + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "strip-ansi": { @@ -4496,6 +10084,14 @@ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4518,100 +10114,93 @@ } }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz", + "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^8.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "lodash.clonedeep": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "ajv": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.3.tgz", + "integrity": "sha512-Df6NAivu9KpZw+q8ySijAgLvr1mUA5ihkRvCLCxpdYR21ann5yIuN+PpFxmweSj7i3yjJ0x5LN5KVs0RRzskAQ==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true } } }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "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.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": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "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": "^1.9.0" + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "color-name": "~1.1.4" } }, + "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": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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" } } } @@ -4626,47 +10215,30 @@ "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": { - "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": { @@ -4676,18 +10248,13 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "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 - }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "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.2.0", "path-parse": "^1.0.6" } } @@ -4769,14 +10336,10 @@ "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" - } + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" }, "type-check": { "version": "0.4.0", @@ -4802,23 +10365,22 @@ "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", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "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" + } }, - "underscore": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", - "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==", - "dev": true + "unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", @@ -4849,9 +10411,9 @@ "dev": true }, "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -4876,16 +10438,15 @@ "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": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -4901,16 +10462,16 @@ } }, "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": { @@ -4932,13 +10493,14 @@ "dev": true }, "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", @@ -4948,8 +10510,7 @@ "window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", - "dev": true + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" }, "word-wrap": { "version": "1.2.3", @@ -4986,29 +10547,13 @@ "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 } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "3.0.3", @@ -5022,16 +10567,16 @@ "typedarray-to-buffer": "^3.1.5" } }, - "xmlcreate": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", - "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==", + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, - "y18n": { + "yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index 448f2f05..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", @@ -18,35 +18,38 @@ "sideEffects": false, "types": "types/index.d.ts", "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", - "coverage": "nyc -r lcov -n 'src/**/*' -n 'plugins/**/*' npm run coverage:tests", - "coverage:tests": "npm run test && npm run test:fetch", + "build": "node ./scripts/version.js && rollup -c", "codecov": "npm run coverage && codecov -t 62d2cc94-1c1f-4e21-a9af-42cc0cf39c51", + "coverage:tests": "npm run test && npm run test:fetch", + "coverage": "nyc -r lcov -n 'src/**/*' -n 'plugins/**/*' npm run coverage:tests", "lint": "eslint ./src/ ./plugins ./tests", - "postinstall": "npm-recursive-install --rootDir=plugins", + "postinstall": "path-exists ./plugins && npm-recursive-install --rootDir=plugins || echo 'nothing to install'", "start": "node ./scripts/demo.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:build": "cross-env TESTENV=prod && npm run test", + "test:fetch": "tape ./tests/fetch/*.test.js | tap-dancer", + "test:integration": "tape ./tests/integration/*.test.js | tap-dancer", + "test:plugins": "node ./scripts/test.js", "test:types": "ts-node ./tests/types/index.ts", - "testb": "cross-env TESTENV=prod && node ./scripts/test.js", + "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": { "wtf_wikipedia": "./cli.js" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.0.0" }, "browserslist": [ "defaults", "not ie <= 11", "not op_mini all", - "node 7", - "node 8", - "node 9", + "node 10", + "node 11", + "node 12", + "node 13", "maintained node versions" ], "files": [ @@ -67,29 +70,30 @@ "singleQuote": true, "printWidth": 120 }, - "dependencies": {}, + "dependencies": { + "isomorphic-unfetch": "^3.1.0", + "path-exists-cli": "1.0.0", + "recursive-install": "1.4.0" + }, "devDependencies": { - "@babel/core": "7.11.6", - "@babel/preset-env": "7.11.5", - "@rollup/plugin-alias": "3.1.1", - "amble": "1.1.0", - "codecov": "3.7.2", - "cross-env": "6.0.3", - "eslint": "^7.10.0", - "eslint-plugin-compat": "^3.8.0", - "eslint-plugin-jsdoc": "^30.6.4", - "jsdoc": "^3.6.6", + "@babel/core": "7.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "amble": "1.3.0", + "codecov": "3.8.1", + "cross-env": "7.0.3", + "eslint": "7.23.0", + "eslint-plugin-compat": "3.9.0", + "eslint-plugin-regexp": "^0.7.5", "nyc": "^15.1.0", - "recursive-install": "1.4.0", - "rollup": "2.26.11", + "rollup": "2.44.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.2.0", - "tape": "5.0.1", - "tsd-jsdoc": "^2.5.0" + "tap-dancer": "0.3.1", + "tape": "5.2.2" }, "eslintIgnore": [ "builds/*.js" diff --git a/plugins/api/README.md b/plugins/api/README.md new file mode 100644 index 00000000..979911be --- /dev/null +++ b/plugins/api/README.md @@ -0,0 +1,170 @@ +
+ + +
a plugin for wtf_wikipedia
+ + + + + + + + + + +
+
+ +
+ npm install wtf-plugin-api +
+ +Some helper methods for getting additional data from the wikimedia api. + +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()`. + +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. + +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 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.getRedirects() +console.log(redirects) +/* +[ + { title: 'the raptors' }, + { title: 'We The North' }, + ... +] +*/ + +``` + +## Incoming links +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.getIncoming() +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 +let doc = await wtf.fetch('Toronto Raptors') +let byDay = await doc.getPageViews() +console.log(byDay) +/* +{ + '2020-08-30': 4464, + '2020-08-31': 2739, + '2020-09-01': 3774, + '2020-09-02': 3347, + '2020-09-03': 3569, + ... +} +*/ +``` + +## Random Category +get the name of a random wikipedia category, from a given wiki +```js +wtf.getRandomCategory({lang:'fr'}).then(cat=>{ + console.log(cat) + // 'Catégorie:Édifice religieux à Paris' +}) +``` + +## Category Pages +fetch+parse all documents in a given category, to a specific depth. +```js +// get the first sentence of all MLB stadiums: +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...', + // 'Rogers Center is a entertainment venue ...' + //] +}) +``` + + +## 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) + +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.getTemplatePages('Template:Switzerland-badminton-bio-stub').then(docs => { + docs.forEach(doc => { + let height=doc.infobox(0).get('height') + console.log(doc.title(), height) + }) +}) +``` + +## 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 + +* **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/builds/wtf-plugin-api.js b/plugins/api/builds/wtf-plugin-api.js new file mode 100644 index 00000000..5d8f4729 --- /dev/null +++ b/plugins/api/builds/wtf-plugin-api.js @@ -0,0 +1,633 @@ +/* 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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfImage = factory()); +}(this, (function () { 'use strict'; + + var normalize$5 = function (title = '') { + title = title.replace(/ /g, '_'); + title = title.trim(); + title = encodeURIComponent(title); + return title; + }; + + var defaults$7 = { + lang: 'en', + path: 'w/api.php' + }; + + var toUrlParams$7 = function (obj) { + let arr = Object.entries(obj).map(([key, value]) => { + return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; + }); + return arr.join('&'); + }; + + var fetchOne$3 = 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 + }; + }); + }; + + var _fns = { + normalize: normalize$5, + defaults: defaults$7, + toUrlParams: toUrlParams$7, + fetchOne: fetchOne$3 + }; + + const { + normalize: normalize$4, + defaults: defaults$6, + toUrlParams: toUrlParams$6, + fetchOne: fetchOne$2 + } = _fns; + const params$6 = { + action: 'query', + rdnamespace: 0, + prop: 'redirects', + rdlimit: 500, + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$5 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$6(params$6); + url += `&titles=${normalize$4(title)}`; + + if (append) { + url += append; + } + + return url; + }; + + const getRedirects = async function (title, http) { + let list = []; + let getMore = true; + let append = ''; + + while (getMore) { + let url = makeUrl$5(title, defaults$6, append); + let { + pages, + cursor + } = await fetchOne$2(url, http, 'redirects'); + list = list.concat(pages); + + if (cursor && cursor.rdcontinue) { + append = '&rdcontinue=' + cursor.lhcontinue; + } else { + getMore = false; + } + } + + return list; + }; + + var getRedirects_1 = getRedirects; + + const { + normalize: normalize$3, + defaults: defaults$5, + toUrlParams: toUrlParams$5, + fetchOne: fetchOne$1 + } = _fns; + const params$5 = { + action: 'query', + lhnamespace: 0, + prop: 'linkshere', + lhshow: '!redirect', + lhlimit: 500, + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$4 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$5(params$5); + url += `&titles=${normalize$3(title)}`; + + if (append) { + url += append; + } + + return url; + }; + + const getIncoming = async function (title, http) { + let list = []; + let getMore = true; + let append = ''; + + while (getMore) { + let url = makeUrl$4(title, defaults$5, append); + let { + pages, + cursor + } = await fetchOne$1(url, http, 'linkshere'); + list = list.concat(pages); + + if (cursor && cursor.lhcontinue) { + append = '&lhcontinue=' + cursor.lhcontinue; + } else { + getMore = false; + } + } + + return list; + }; + + var getIncoming_1 = getIncoming; + + const { + normalize: normalize$2, + defaults: defaults$4, + toUrlParams: toUrlParams$4 + } = _fns; + const params$4 = { + action: 'query', + prop: 'pageviews', + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$3 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$4(params$4); + url += `&titles=${normalize$2(title)}`; + + if (append) { + url += append; + } + + return url; + }; + + const getPageViews = function (doc, http) { + let url = makeUrl$3(doc.title(), 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]].pageviews || []; + }); + }; + + var getPageViews_1 = getPageViews; + + const { + normalize: normalize$1, + defaults: defaults$3, + toUrlParams: toUrlParams$3, + fetchOne + } = _fns; + const params$3 = { + action: 'query', + tinamespace: 0, + prop: 'transcludedin', + tilimit: 500, + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$2 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$3(params$3); + url += `&titles=${normalize$1(title)}`; // support custom cursor params + + if (append) { + url += append; + } + + return url; + }; // 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$2(template, defaults$3, append); + let { + pages, + cursor + } = await fetchOne(url, http, 'transcludedin'); + list = list.concat(pages); + + if (cursor && cursor.ticontinue) { + append = '&ticontinue=' + cursor.ticontinue; + } else { + getMore = false; + } + } + + return list; + }; + + var getTransclusions_1 = getTransclusions; + + const { + normalize, + defaults: defaults$2, + toUrlParams: toUrlParams$2 + } = _fns; + const params$2 = { + action: 'query', + list: 'categorymembers', + cmlimit: 500, + cmtype: 'page|subcat', + cmnamespace: 0, + format: 'json', + origin: '*', + redirects: true + }; + + const fetchIt$1 = 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 + }; + }); + }; + + const makeUrl$1 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$2(params$2); + + 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$1(title, defaults$2, append); + let { + pages, + cursor + } = await fetchIt$1(url, http, 'categorymembers'); + list = list.concat(pages); + + if (cursor && cursor.cmcontinue) { + append = '&cmcontinue=' + cursor.lhcontinue; + } else { + getMore = false; + } + } + + return list; + }; + + var getCategory_1 = getCategory; + + const { + defaults: defaults$1, + toUrlParams: toUrlParams$1 + } = _fns; + const params$1 = { + 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$1(params$1); + return url; + }; + + const getRandom = async function (_options, http) { + let url = makeUrl(defaults$1); + let page = await fetchIt(url, http); + return page; + }; + + var getRandom_1 = getRandom; + + const { + defaults, + toUrlParams + } = _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; + }); + }; + + var getRandomCategory = randomCategory; + + /* 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$1 = methods; + + var slow$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': src$1 + }); + + function getCjsExportFromNamespace (n) { + return n && n['default'] || n; + } + + var slow = getCjsExportFromNamespace(slow$1); + + 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; + }); + }); + }; + + var fetchList_1 = fetchList; + + const addMethod = function (models) { + // doc methods + models.Doc.prototype.getRedirects = function () { + return getRedirects_1(this.title(), models.http); + }; + + models.Doc.prototype.getIncoming = function () { + return getIncoming_1(this.title(), models.http); + }; + + models.Doc.prototype.getPageViews = function () { + return getPageViews_1(this, models.http); + }; // constructor methods + + + models.wtf.getRandomPage = function (options) { + return getRandom_1(options, models.http); + }; + + 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_1(category, options, models.http); + }; + + models.wtf.fetchList = function (list, options) { + return fetchList_1(list, options, models.wtf); + }; + + models.wtf.getIncoming = function (title) { + return getIncoming_1(title, models.http); + }; + + models.wtf.getRedirects = function (title) { + return getRedirects_1(title, models.http); + }; + }; + + var src = addMethod; + + return src; + +}))); +//# 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..73a4a27c --- /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","../src/getCategory.js","../src/getRandom.js","../src/getRandomCategory.js","../node_modules/slow/builds/slow.mjs","../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\nexports.fetchOne = function (url, http, prop) {\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return { pages: [], cursor: null }\n }\n return {\n pages: res.query.pages[pages[0]][prop] || [],\n cursor: res.continue\n }\n })\n}\n","const { normalize, defaults, toUrlParams, fetchOne } = 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, append) {\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 (append) {\n url += append\n }\n return url\n}\n\nconst getRedirects = async function (title, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(title, defaults, append)\n let { pages, cursor } = await fetchOne(url, http, 'redirects')\n list = list.concat(pages)\n if (cursor && cursor.rdcontinue) {\n append = '&rdcontinue=' + cursor.lhcontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getRedirects\n","const { normalize, defaults, toUrlParams, fetchOne } = 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, append) {\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 (append) {\n url += append\n }\n return url\n}\n\nconst getIncoming = async function (title, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(title, defaults, append)\n let { pages, cursor } = await fetchOne(url, http, 'linkshere')\n list = list.concat(pages)\n if (cursor && cursor.lhcontinue) {\n append = '&lhcontinue=' + cursor.lhcontinue\n } else {\n getMore = false\n }\n }\n return list\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, append) {\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 (append) {\n url += append\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, fetchOne } = 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, append) {\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 // support custom cursor params\n if (append) {\n url += append\n }\n return url\n}\n\n// fetch all the pages that use a specific template\nconst getTransclusions = async function (template, _options, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(template, defaults, append)\n let { pages, cursor } = await fetchOne(url, http, 'transcludedin')\n list = list.concat(pages)\n if (cursor && cursor.ticontinue) {\n append = '&ticontinue=' + cursor.ticontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getTransclusions\n","const { normalize, defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n list: 'categorymembers',\n cmlimit: 500,\n cmtype: 'page|subcat',\n cmnamespace: 0,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst fetchIt = function (url, http, prop) {\n return http(url).then((res) => {\n let pages = Object.keys(res.query[prop] || {})\n if (pages.length === 0) {\n return { pages: [], cursor: null }\n }\n let arr = pages.map((k) => res.query[prop][k])\n return {\n pages: arr,\n cursor: res.continue\n }\n })\n}\n\nconst makeUrl = function (title, options, append) {\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 if (/^Category/i.test(title) === false) {\n title = 'Category:' + title\n }\n url += `&cmtitle=${normalize(title)}`\n if (append) {\n url += append\n }\n return url\n}\n\nconst getCategory = async function (title, options, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(title, defaults, append)\n let { pages, cursor } = await fetchIt(url, http, 'categorymembers')\n list = list.concat(pages)\n if (cursor && cursor.cmcontinue) {\n append = '&cmcontinue=' + cursor.lhcontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getCategory\n","const { defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n generator: 'random',\n grnnamespace: '0',\n prop: 'pageprops',\n grnlimit: '1',\n rvslots: 'main',\n format: 'json',\n origin: '*',\n redirects: 'true'\n}\n\nconst fetchIt = function (url, http) {\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return { pages: [], cursor: null }\n }\n return res.query.pages[pages[0]]\n })\n}\n\nconst makeUrl = function (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 url\n}\n\nconst getRandom = async function (_options, http) {\n let url = makeUrl(defaults)\n let page = await fetchIt(url, http)\n return page\n}\nmodule.exports = getRandom\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","/* 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')\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 getRandomPage = require('./getRandom')\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.title(), models.http)\n }\n models.Doc.prototype.getIncoming = function () {\n return getIncoming(this.title(), models.http)\n }\n models.Doc.prototype.getPageViews = function () {\n return getPageViews(this, models.http)\n }\n\n // constructor methods\n models.wtf.getRandomPage = function (options) {\n return getRandomPage(options, models.http)\n }\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.http)\n }\n models.wtf.fetchList = function (list, options) {\n return fetchList(list, options, models.wtf)\n }\n models.wtf.getIncoming = function (title) {\n return getIncoming(title, models.http)\n }\n models.wtf.getRedirects = function (title) {\n return getRedirects(title, models.http)\n }\n}\nmodule.exports = addMethod\n"],"names":["title","replace","trim","encodeURIComponent","lang","path","obj","arr","Object","entries","map","key","value","join","url","http","prop","then","res","pages","keys","query","length","cursor","continue","normalize","defaults","toUrlParams","fetchOne","require$$0","params","action","rdnamespace","rdlimit","format","origin","redirects","makeUrl","options","append","domain","getRedirects","list","getMore","concat","rdcontinue","lhcontinue","lhnamespace","lhshow","lhlimit","getIncoming","getPageViews","doc","pageviews","tinamespace","tilimit","getTransclusions","template","_options","ticontinue","cmlimit","cmtype","cmnamespace","fetchIt","k","test","getCategory","cmcontinue","generator","grnnamespace","grnlimit","rvslots","getRandom","page","randomCategory","assign","o","e","catch","console","error","rateLimit","fn","limit","arguments","undefined","Promise","resolve","reject","results","n","pending","go","i","p","r","init","rateLimit_1","methods","one","two","three","four","five","ten","fifteen","serial","linear","crawl","walk","run","sprint","src","isObject","prototype","toString","call","chunkBy","chunkSize","groups","push","slice","fetchList","wtf","doit","group","fetch","slow","reduce","a","addMethod","models","Doc","getRandomPage","getRandomCategory","getTemplatePages","getCategoryPages","category"],"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..02695a68 --- /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="undefined"!=typeof globalThis?globalThis: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("&")},fetchOne:function(t,e,n){return e(t).then((t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?{pages:[],cursor:null}:{pages:t.query.pages[e[0]][n]||[],cursor:t.continue}}))}};const{normalize:e,defaults:n,toUrlParams:r,fetchOne:o}=t,i={action:"query",rdnamespace:0,prop:"redirects",rdlimit:500,format:"json",origin:"*",redirects:!0},a=function(t,n,o){let a=`https://${n.lang}.wikipedia.org/${n.path}?`;return n.domain&&(a=`https://${n.domain}/${n.path}?`),a+=r(i),a+="&titles="+e(t),o&&(a+=o),a};var c=async function(t,e){let r=[],i=!0,c="";for(;i;){let u=a(t,n,c),{pages:s,cursor:l}=await o(u,e,"redirects");r=r.concat(s),l&&l.rdcontinue?c="&rdcontinue="+l.lhcontinue:i=!1}return r};const{normalize:u,defaults:s,toUrlParams:l,fetchOne:p}=t,f={action:"query",lhnamespace:0,prop:"linkshere",lhshow:"!redirect",lhlimit:500,format:"json",origin:"*",redirects:!0},h=function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=l(f),r+="&titles="+u(t),n&&(r+=n),r};var g=async function(t,e){let n=[],r=!0,o="";for(;r;){let i=h(t,s,o),{pages:a,cursor:c}=await p(i,e,"linkshere");n=n.concat(a),c&&c.lhcontinue?o="&lhcontinue="+c.lhcontinue:r=!1}return n};const{normalize:m,defaults:d,toUrlParams:y}=t,w={action:"query",prop:"pageviews",format:"json",origin:"*",redirects:!0};var $=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+=y(w),r+="&titles="+m(t),n&&(r+=n),r}(t.title(),d)).then((t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?[]:t.query.pages[e[0]].pageviews||[]}))};const{normalize:v,defaults:j,toUrlParams:b,fetchOne:q}=t,k={action:"query",tinamespace:0,prop:"transcludedin",tilimit:500,format:"json",origin:"*",redirects:!0},O=function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=b(k),r+="&titles="+v(t),n&&(r+=n),r};var P=async function(t,e,n){let r=[],o=!0,i="";for(;o;){let e=O(t,j,i),{pages:a,cursor:c}=await q(e,n,"transcludedin");r=r.concat(a),c&&c.ticontinue?i="&ticontinue="+c.ticontinue:o=!1}return r};const{normalize:U,defaults:z,toUrlParams:C}=t,R={action:"query",list:"categorymembers",cmlimit:500,cmtype:"page|subcat",cmnamespace:0,format:"json",origin:"*",redirects:!0},I=function(t,e,n){return e(t).then((t=>{let e=Object.keys(t.query[n]||{});return 0===e.length?{pages:[],cursor:null}:{pages:e.map((e=>t.query[n][e])),cursor:t.continue}}))},_=function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=C(R),!1===/^Category/i.test(t)&&(t="Category:"+t),r+="&cmtitle="+U(t),n&&(r+=n),r};var D=async function(t,e,n){let r=[],o=!0,i="";for(;o;){let e=_(t,z,i),{pages:a,cursor:c}=await I(e,n,"categorymembers");r=r.concat(a),c&&c.cmcontinue?i="&cmcontinue="+c.lhcontinue:o=!1}return r};const{defaults:T,toUrlParams:x}=t,E={action:"query",generator:"random",grnnamespace:"0",prop:"pageprops",grnlimit:"1",rvslots:"main",format:"json",origin:"*",redirects:"true"};var L=async function(t,e){let n=function(t){let e=`https://${t.lang}.wikipedia.org/${t.path}?`;return t.domain&&(e=`https://${t.domain}/${t.path}?`),e+=x(E),e}(T);return await function(t,e){return e(t).then((t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?{pages:[],cursor:null}:t.query.pages[e[0]]}))}(n,e)};const{defaults:S,toUrlParams:V}=t,A={format:"json",action:"query",generator:"random",grnnamespace:14,prop:"revisions",grnlimit:1,origin:"*"};var B=function(t={},e){let n=`https://${(t=Object.assign({},S,t)).lang}.wikipedia.org/${t.path}?`;return t.domain&&(n=`https://${t.domain}/${t.path}?`),n+=V(A),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)))},F=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,c=0,u=function n(u){c+=1;var s=e(t[u]);s.then?(s.then((function(t){i[u]=t})),s.catch((function(t){console.error(t),i[u]=null})),s.finally((function(){c-=1,a+=1,t.length>=a+1?n(a):c<=0&&r(i)}))):o("Error: function must return a promise")},s=t.lengtht.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 c(this.title(),t.http)},t.Doc.prototype.getIncoming=function(){return g(this.title(),t.http)},t.Doc.prototype.getPageViews=function(){return $(this,t.http)},t.wtf.getRandomPage=function(e){return L(e,t.http)},t.wtf.getRandomCategory=function(e){return B(e,t.http)},t.wtf.getTemplatePages=function(e,n){return P(e,n,t.http)},t.wtf.getCategoryPages=function(e,n){return D(e,n,t.http)},t.wtf.fetchList=function(e,n){return M(e,n,t.wtf)},t.wtf.getIncoming=function(e){return g(e,t.http)},t.wtf.getRedirects=function(e){return c(e,t.http)}}})); diff --git a/plugins/api/builds/wtf-plugin-api.mjs b/plugins/api/builds/wtf-plugin-api.mjs new file mode 100644 index 00000000..c1e5fe20 --- /dev/null +++ b/plugins/api/builds/wtf-plugin-api.mjs @@ -0,0 +1,624 @@ +/* wtf-plugin-api 0.0.1 MIT */ +var normalize$5 = function (title = '') { + title = title.replace(/ /g, '_'); + title = title.trim(); + title = encodeURIComponent(title); + return title; +}; + +var defaults$7 = { + lang: 'en', + path: 'w/api.php' +}; + +var toUrlParams$7 = function (obj) { + let arr = Object.entries(obj).map(([key, value]) => { + return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; + }); + return arr.join('&'); +}; + +var fetchOne$3 = 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 + }; + }); +}; + +var _fns = { + normalize: normalize$5, + defaults: defaults$7, + toUrlParams: toUrlParams$7, + fetchOne: fetchOne$3 +}; + +const { + normalize: normalize$4, + defaults: defaults$6, + toUrlParams: toUrlParams$6, + fetchOne: fetchOne$2 +} = _fns; +const params$6 = { + action: 'query', + rdnamespace: 0, + prop: 'redirects', + rdlimit: 500, + format: 'json', + origin: '*', + redirects: true +}; + +const makeUrl$5 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$6(params$6); + url += `&titles=${normalize$4(title)}`; + + if (append) { + url += append; + } + + return url; +}; + +const getRedirects = async function (title, http) { + let list = []; + let getMore = true; + let append = ''; + + while (getMore) { + let url = makeUrl$5(title, defaults$6, append); + let { + pages, + cursor + } = await fetchOne$2(url, http, 'redirects'); + list = list.concat(pages); + + if (cursor && cursor.rdcontinue) { + append = '&rdcontinue=' + cursor.lhcontinue; + } else { + getMore = false; + } + } + + return list; +}; + +var getRedirects_1 = getRedirects; + +const { + normalize: normalize$3, + defaults: defaults$5, + toUrlParams: toUrlParams$5, + fetchOne: fetchOne$1 +} = _fns; +const params$5 = { + action: 'query', + lhnamespace: 0, + prop: 'linkshere', + lhshow: '!redirect', + lhlimit: 500, + format: 'json', + origin: '*', + redirects: true +}; + +const makeUrl$4 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$5(params$5); + url += `&titles=${normalize$3(title)}`; + + if (append) { + url += append; + } + + return url; +}; + +const getIncoming = async function (title, http) { + let list = []; + let getMore = true; + let append = ''; + + while (getMore) { + let url = makeUrl$4(title, defaults$5, append); + let { + pages, + cursor + } = await fetchOne$1(url, http, 'linkshere'); + list = list.concat(pages); + + if (cursor && cursor.lhcontinue) { + append = '&lhcontinue=' + cursor.lhcontinue; + } else { + getMore = false; + } + } + + return list; +}; + +var getIncoming_1 = getIncoming; + +const { + normalize: normalize$2, + defaults: defaults$4, + toUrlParams: toUrlParams$4 +} = _fns; +const params$4 = { + action: 'query', + prop: 'pageviews', + format: 'json', + origin: '*', + redirects: true +}; + +const makeUrl$3 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$4(params$4); + url += `&titles=${normalize$2(title)}`; + + if (append) { + url += append; + } + + return url; +}; + +const getPageViews = function (doc, http) { + let url = makeUrl$3(doc.title(), 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]].pageviews || []; + }); +}; + +var getPageViews_1 = getPageViews; + +const { + normalize: normalize$1, + defaults: defaults$3, + toUrlParams: toUrlParams$3, + fetchOne +} = _fns; +const params$3 = { + action: 'query', + tinamespace: 0, + prop: 'transcludedin', + tilimit: 500, + format: 'json', + origin: '*', + redirects: true +}; + +const makeUrl$2 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$3(params$3); + url += `&titles=${normalize$1(title)}`; // support custom cursor params + + if (append) { + url += append; + } + + return url; +}; // 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$2(template, defaults$3, append); + let { + pages, + cursor + } = await fetchOne(url, http, 'transcludedin'); + list = list.concat(pages); + + if (cursor && cursor.ticontinue) { + append = '&ticontinue=' + cursor.ticontinue; + } else { + getMore = false; + } + } + + return list; +}; + +var getTransclusions_1 = getTransclusions; + +const { + normalize, + defaults: defaults$2, + toUrlParams: toUrlParams$2 +} = _fns; +const params$2 = { + action: 'query', + list: 'categorymembers', + cmlimit: 500, + cmtype: 'page|subcat', + cmnamespace: 0, + format: 'json', + origin: '*', + redirects: true +}; + +const fetchIt$1 = 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 + }; + }); +}; + +const makeUrl$1 = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$2(params$2); + + 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$1(title, defaults$2, append); + let { + pages, + cursor + } = await fetchIt$1(url, http, 'categorymembers'); + list = list.concat(pages); + + if (cursor && cursor.cmcontinue) { + append = '&cmcontinue=' + cursor.lhcontinue; + } else { + getMore = false; + } + } + + return list; +}; + +var getCategory_1 = getCategory; + +const { + defaults: defaults$1, + toUrlParams: toUrlParams$1 +} = _fns; +const params$1 = { + 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$1(params$1); + return url; +}; + +const getRandom = async function (_options, http) { + let url = makeUrl(defaults$1); + let page = await fetchIt(url, http); + return page; +}; + +var getRandom_1 = getRandom; + +const { + defaults, + toUrlParams +} = _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; + }); +}; + +var getRandomCategory = randomCategory; + +/* 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$1 = methods; + +var slow$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': src$1 +}); + +function getCjsExportFromNamespace (n) { + return n && n['default'] || n; +} + +var slow = getCjsExportFromNamespace(slow$1); + +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; + }); + }); +}; + +var fetchList_1 = fetchList; + +const addMethod = function (models) { + // doc methods + models.Doc.prototype.getRedirects = function () { + return getRedirects_1(this.title(), models.http); + }; + + models.Doc.prototype.getIncoming = function () { + return getIncoming_1(this.title(), models.http); + }; + + models.Doc.prototype.getPageViews = function () { + return getPageViews_1(this, models.http); + }; // constructor methods + + + models.wtf.getRandomPage = function (options) { + return getRandom_1(options, models.http); + }; + + 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_1(category, options, models.http); + }; + + models.wtf.fetchList = function (list, options) { + return fetchList_1(list, options, models.wtf); + }; + + models.wtf.getIncoming = function (title) { + return getIncoming_1(title, models.http); + }; + + models.wtf.getRedirects = function (title) { + return getRedirects_1(title, models.http); + }; +}; + +var src = addMethod; + +export default src; diff --git a/plugins/api/package-lock.json b/plugins/api/package-lock.json new file mode 100644 index 00000000..d1424c14 --- /dev/null +++ b/plugins/api/package-lock.json @@ -0,0 +1,5352 @@ +{ + "name": "wtf-plugin-api", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "wtf-plugin-api", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "slow": "^1.1.0" + }, + "devDependencies": { + "@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", + "rollup-plugin-json": "4.0.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@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 + }, + "node_modules/@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 + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "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/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/slow/-/slow-1.1.0.tgz", + "integrity": "sha512-NEPfKulZIDhCsEccS23VXE7nfhBhAAPMcYmbry3YZTk50buXGLNm1vsfeIWy+EdOyU/fk+6usnf1zCxPCNJ4Rg==" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@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-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.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.13.0" + } + }, + "@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "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.12.13" + } + }, + "@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "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.13.12" + } + }, + "@babel/helper-module-imports": { + "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.13.12" + } + }, + "@babel/helper-module-transforms": { + "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.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.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.12.13" + } + }, + "@babel/helper-plugin-utils": { + "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-remap-async-to-generator": { + "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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-replace-supers": { + "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.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.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.13.12" + } + }, + "@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.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.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/helper-validator-option": { + "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.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/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.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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "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.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.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.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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "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.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "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.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "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/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.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.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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.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.12.13" + } + }, + "@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.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.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "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.13.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "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.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.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.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "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.12.13" + } + }, + "@babel/plugin-transform-classes": { + "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.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.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.13.0" + } + }, + "@babel/plugin-transform-destructuring": { + "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.13.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "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.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "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.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "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.13.0" + } + }, + "@babel/plugin-transform-function-name": { + "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.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "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.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "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.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "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.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.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.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" + } + }, + "@babel/plugin-transform-modules-umd": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "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.13" + } + }, + "@babel/plugin-transform-new-target": { + "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.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "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.13.0" + } + }, + "@babel/plugin-transform-property-literals": { + "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.12.13" + } + }, + "@babel/plugin-transform-regenerator": { + "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.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.12.13" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "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.12.13" + } + }, + "@babel/plugin-transform-spread": { + "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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "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.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "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.13.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "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.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { + "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.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.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.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "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.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" + } + }, + "@babel/types": { + "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.12.11", + "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" + } + }, + "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", + "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.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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + } + }, + "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 + }, + "call-bind": { + "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.2" + } + }, + "caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "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 + }, + "colorette": { + "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": { + "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.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.16.3", + "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", + "dev": true, + "requires": { + "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.4", + "object-keys": "^1.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" + }, + "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "es-abstract": { + "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.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.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "es-get-iterator": { + "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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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": { + "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.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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 + }, + "get-intrinsic": { + "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", + "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", + "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-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "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": { + "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.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.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.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.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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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.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.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "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.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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 + }, + "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": { + "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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true + }, + "object-inspect": { + "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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "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.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": { + "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.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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "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.44.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", + "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.1" + } + }, + "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": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.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_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" + } + }, + "string.prototype.trim": { + "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.2" + } + }, + "string.prototype.trimend": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "requires": { + "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": { + "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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "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 + }, + "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", + "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.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.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": { + "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.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", + "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" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true + } + } +} diff --git a/plugins/api/package.json b/plugins/api/package.json new file mode 100644 index 00000000..6e711b74 --- /dev/null +++ b/plugins/api/package.json @@ -0,0 +1,50 @@ +{ + "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": { + "slow": "^1.1.0" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + }, + "devDependencies": { + "@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", + "rollup-plugin-json": "4.0.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "license": "MIT" +} diff --git a/plugins/api/rollup.config.js b/plugins/api/rollup.config.js new file mode 100644 index 00000000..ba56fba6 --- /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-api' +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/_fns.js b/plugins/api/src/_fns.js new file mode 100644 index 00000000..a9a2b0b7 --- /dev/null +++ b/plugins/api/src/_fns.js @@ -0,0 +1,31 @@ +exports.normalize = function (title = '') { + title = title.replace(/ /g, '_') + title = title.trim() + title = encodeURIComponent(title) + return title +} + +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('&') +} + +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/src/_fetch/category.js b/plugins/api/src/category.js similarity index 75% rename from src/_fetch/category.js rename to plugins/api/src/category.js index 08c83bd1..d24a8130 100644 --- a/src/_fetch/category.js +++ b/plugins/api/src/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,17 +17,13 @@ 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 => { + list.forEach((p) => { if (p.ns === 14) { delete p.ns res.categories.push(p) @@ -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,15 +60,15 @@ 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) - .then(body => { + .then((body) => { res = getResult(body, res) if (body.continue && body.continue.cmcontinue) { doit(body.continue.cmcontinue) @@ -79,7 +76,7 @@ const fetchCategory = function(category, lang, options) { resolve(res) } }) - .catch(e => { + .catch((e) => { console.error(e) reject(e) }) 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/getCategory.js b/plugins/api/src/getCategory.js new file mode 100644 index 00000000..981da269 --- /dev/null +++ b/plugins/api/src/getCategory.js @@ -0,0 +1,60 @@ +const { normalize, defaults, toUrlParams } = require('./_fns') + +const params = { + action: 'query', + list: 'categorymembers', + cmlimit: 500, + cmtype: 'page|subcat', + cmnamespace: 0, + format: 'json', + origin: '*', + redirects: true +} + +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 + } + }) +} + +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/getIncoming.js b/plugins/api/src/getIncoming.js new file mode 100644 index 00000000..085d781c --- /dev/null +++ b/plugins/api/src/getIncoming.js @@ -0,0 +1,43 @@ +const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns') + +const params = { + action: 'query', + lhnamespace: 0, + prop: 'linkshere', + lhshow: '!redirect', + lhlimit: 500, + format: 'json', + origin: '*', + redirects: true +} + +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 (append) { + url += append + } + return url +} + +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 list +} +module.exports = getIncoming diff --git a/plugins/api/src/getPageViews.js b/plugins/api/src/getPageViews.js new file mode 100644 index 00000000..31c33322 --- /dev/null +++ b/plugins/api/src/getPageViews.js @@ -0,0 +1,34 @@ +const { normalize, defaults, toUrlParams } = require('./_fns') + +const params = { + action: 'query', + prop: 'pageviews', + format: 'json', + origin: '*', + redirects: true +} + +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 (append) { + url += append + } + 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/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/getRandomCategory.js b/plugins/api/src/getRandomCategory.js new file mode 100644 index 00000000..332436b7 --- /dev/null +++ b/plugins/api/src/getRandomCategory.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/getRedirects.js b/plugins/api/src/getRedirects.js new file mode 100644 index 00000000..eb1e5907 --- /dev/null +++ b/plugins/api/src/getRedirects.js @@ -0,0 +1,42 @@ +const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns') + +const params = { + action: 'query', + rdnamespace: 0, + prop: 'redirects', + rdlimit: 500, + format: 'json', + origin: '*', + redirects: true +} + +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 (append) { + url += append + } + return url +} + +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 list +} +module.exports = getRedirects diff --git a/plugins/api/src/getTransclusions.js b/plugins/api/src/getTransclusions.js new file mode 100644 index 00000000..0cc1a0cf --- /dev/null +++ b/plugins/api/src/getTransclusions.js @@ -0,0 +1,44 @@ +const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns') + +const params = { + action: 'query', + tinamespace: 0, + prop: 'transcludedin', + tilimit: 500, + format: 'json', + origin: '*', + redirects: true +} + +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)}` + // support custom cursor params + if (append) { + url += append + } + return url +} + +// 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 fetchOne(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/plugins/api/src/index.js b/plugins/api/src/index.js new file mode 100644 index 00000000..bc068541 --- /dev/null +++ b/plugins/api/src/index.js @@ -0,0 +1,45 @@ +const getRedirects = require('./getRedirects') +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') + +const addMethod = function (models) { + // doc methods + models.Doc.prototype.getRedirects = function () { + return getRedirects(this.title(), models.http) + } + models.Doc.prototype.getIncoming = function () { + return getIncoming(this.title(), models.http) + } + models.Doc.prototype.getPageViews = function () { + return getPageViews(this, models.http) + } + + // constructor methods + models.wtf.getRandomPage = function (options) { + return getRandomPage(options, models.http) + } + models.wtf.getRandomCategory = function (options) { + return getRandomCategory(options, models.http) + } + models.wtf.getTemplatePages = function (template, options) { + return getTransclusions(template, options, models.http) + } + models.wtf.getCategoryPages = function (category, options) { + return getCategory(category, options, models.http) + } + 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/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/category.test.js b/plugins/api/tests/category.test.js new file mode 100644 index 00000000..8e9d82da --- /dev/null +++ b/plugins/api/tests/category.test.js @@ -0,0 +1,15 @@ +const test = require('tape') +const wtf = require('./_lib') + +test('category', (t) => { + t.plan(1) + const p = wtf.getCategoryPages('Category:Basketball teams in Toronto', { + 'Api-User-Agent': 'wtf_wikipedia test script - ' + }) + 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 new file mode 100644 index 00000000..5ec65b44 --- /dev/null +++ b/plugins/api/tests/constructor.test.js @@ -0,0 +1,44 @@ +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.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.getRandomCategory('en', opts).then(function (cat) { + t.ok(cat, "got randomCategory: '" + cat + "'") + }) +}) + +test('getCategory', (t) => { + t.plan(1) + wtf.getCategoryPages('Swiss female skeleton racers', opts).then(function (docs) { + t.ok(docs.length > 0, `got ${docs.length} pages for category`) + }) +}) + +test('getTemplate', (t) => { + t.plan(1) + 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.sentence().text(), `got ${doc.title()}`) + }) + }) +}) diff --git a/plugins/api/tests/fns.test.js b/plugins/api/tests/fns.test.js new file mode 100644 index 00000000..761b2c53 --- /dev/null +++ b/plugins/api/tests/fns.test.js @@ -0,0 +1,45 @@ +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.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('getPageViews', (t) => { + t.plan(1) + let doc = wtf('') + doc.title('Toronto Raptors') + doc.lang('en') + doc.getPageViews(opts).then(function (byDate) { + let dates = Object.keys(byDate) + t.ok(dates.length > 5, `got pageViews for ${dates.length} days`) + }) +}) + +test('getRedirects', (t) => { + t.plan(1) + let doc = wtf('') + doc.title('Toronto Raptors') + doc.lang('en') + doc.getRedirects(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.getIncoming(opts).then(function (links) { + t.ok(links.length > 3, `got ${links.length} links for Marty Embry`) + }) +}) diff --git a/plugins/api/tests/random.test.js b/plugins/api/tests/random.test.js new file mode 100644 index 00000000..aa2b2ac0 --- /dev/null +++ b/plugins/api/tests/random.test.js @@ -0,0 +1,16 @@ +const test = require('tape') +const wtf = require('./_lib') + +test('random', (t) => { + t.plan(1) + let p = wtf.getRandomPage('simple', 'simple', { + follow_redirects: false, + 'Api-User-Agent': 'wtf_wikipedia test script - ' + }) + p.then(function (page) { + t.ok(page.title, 'got random page ' + page.title) + }) + 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/plugins/category/builds/wtf-plugin-category.js b/plugins/category/builds/wtf-plugin-category.js index 4ae52ebe..bfde7cee 100644 --- a/plugins/category/builds/wtf-plugin-category.js +++ b/plugins/category/builds/wtf-plugin-category.js @@ -2,7 +2,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.wtfCategory = factory()); + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfCategory = factory()); }(this, (function () { 'use strict'; /* slow 1.1.0 MIT */ @@ -93,14 +93,14 @@ methods.walk = methods.five; methods.run = methods.ten; methods.sprint = methods.fifteen; - var src = methods; + var src$1 = methods; - var slow = /*#__PURE__*/Object.freeze({ + var slow$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - 'default': src + 'default': src$1 }); - var defaults = { + const defaults = { lang: 'en', wiki: 'wikipedia', domain: null, @@ -108,11 +108,11 @@ }; - var isObject = function isObject(obj) { + const isObject = function (obj) { return obj && Object.prototype.toString.call(obj) === '[object Object]'; }; - var fetchRandom = function fetchRandom(lang, options, http) { + const fetchRandom = function (lang, options, http) { options = options || {}; options = Object.assign({}, defaults, options); //support lang 2nd param @@ -122,22 +122,22 @@ options = Object.assign(options, lang); } - var url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; if (options.domain) { - url = "https://".concat(options.domain, "/").concat(options.path, "?"); + url = `https://${options.domain}/${options.path}?`; } - url += "format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*"; - return http(url).then(function (res) { + url += `format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*`; + return http(url).then(res => { try { - var o = res.query.pages; - var key = Object.keys(o)[0]; + let o = res.query.pages; + let key = Object.keys(o)[0]; return o[key].title; } catch (e) { throw e; } - })["catch"](function (e) { + }).catch(e => { console.error(e); return null; }); @@ -149,21 +149,19 @@ return n && n['default'] || n; } - var slow$1 = getCjsExportFromNamespace(slow); + var slow = getCjsExportFromNamespace(slow$1); - var chunkBy = function chunkBy(arr) { - var chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; - var groups = [], - i; + const chunkBy = function (arr, chunkSize = 5) { + let groups = []; - for (i = 0; i < arr.length; i += chunkSize) { + for (let i = 0; i < arr.length; i += chunkSize) { groups.push(arr.slice(i, i + chunkSize)); } return groups; }; - var fetchCat = function fetchCat(wtf, cat, lang, opts) { + const fetchCat = function (wtf, cat, lang, opts) { if (!cat) { return { docs: [], @@ -171,20 +169,18 @@ }; } - return wtf.category(cat, lang).then(function (resp) { - var pages = resp.pages.map(function (o) { - return o.title; - }); - var groups = chunkBy(pages); + return wtf.category(cat, lang).then(resp => { + let pages = resp.pages.map(o => o.title); + let groups = chunkBy(pages); - var doit = function doit(group) { + const doit = function (group) { return wtf.fetch(group, opts); //returns a promise }; //only allow three requests at a time - return slow$1.three(groups, doit).then(function (responses) { + return slow.three(groups, doit).then(responses => { //flatten the results - var docs = [].concat.apply([], responses); + let docs = [].concat.apply([], responses); return { docs: docs, categories: resp.categories @@ -193,7 +189,7 @@ }); }; - var plugin = function plugin(models) { + const plugin = function (models) { models.wtf.parseCategory = function (cat, lang, opts) { return fetchCat(models.wtf, cat, lang, opts); }; @@ -205,9 +201,9 @@ models.wtf.fetchCategory = models.wtf.parseCategory; }; - var src$1 = plugin; + var src = plugin; - return src$1; + return src; }))); //# sourceMappingURL=wtf-plugin-category.js.map diff --git a/plugins/category/builds/wtf-plugin-category.js.map b/plugins/category/builds/wtf-plugin-category.js.map index 5d82b937..72067ac9 100644 --- a/plugins/category/builds/wtf-plugin-category.js.map +++ b/plugins/category/builds/wtf-plugin-category.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-category.js","sources":["../node_modules/slow/builds/slow.mjs","../src/random.js","../src/index.js"],"sourcesContent":["/* 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 defaults = {\r\n lang: 'en',\r\n wiki: 'wikipedia',\r\n domain: null,\r\n path: 'w/api.php' //some 3rd party sites use a weird path\r\n}\r\nconst isObject = function (obj) {\r\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\r\n}\r\n\r\nconst fetchRandom = function (lang, options, http) {\r\n options = options || {}\r\n options = Object.assign({}, defaults, options)\r\n //support lang 2nd param\r\n if (typeof lang === 'string') {\r\n options.lang = lang\r\n } else if (isObject(lang)) {\r\n options = Object.assign(options, lang)\r\n }\r\n\r\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\r\n if (options.domain) {\r\n url = `https://${options.domain}/${options.path}?`\r\n }\r\n url += `format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*`\r\n\r\n return http(url)\r\n .then((res) => {\r\n try {\r\n let o = res.query.pages\r\n let key = Object.keys(o)[0]\r\n return o[key].title\r\n } catch (e) {\r\n throw e\r\n }\r\n })\r\n .catch((e) => {\r\n console.error(e)\r\n return null\r\n })\r\n}\r\nmodule.exports = fetchRandom\r\n","const slow = require('slow')\r\nconst random = require('./random')\r\n\r\nconst chunkBy = function (arr, chunkSize = 5) {\r\n var groups = [],\r\n i\r\n for (i = 0; i < arr.length; i += chunkSize) {\r\n groups.push(arr.slice(i, i + chunkSize))\r\n }\r\n return groups\r\n}\r\n\r\nconst fetchCat = function (wtf, cat, lang, opts) {\r\n if (!cat) {\r\n return { docs: [], categories: [] }\r\n }\r\n return wtf.category(cat, lang).then((resp) => {\r\n let pages = resp.pages.map((o) => o.title)\r\n let groups = chunkBy(pages)\r\n\r\n const doit = function (group) {\r\n return wtf.fetch(group, opts) //returns a promise\r\n }\r\n //only allow three requests at a time\r\n return slow.three(groups, doit).then((responses) => {\r\n //flatten the results\r\n let docs = [].concat.apply([], responses)\r\n return {\r\n docs: docs,\r\n categories: resp.categories\r\n }\r\n })\r\n })\r\n}\r\n\r\nconst plugin = function (models) {\r\n models.wtf.parseCategory = function (cat, lang, opts) {\r\n return fetchCat(models.wtf, cat, lang, opts)\r\n }\r\n models.wtf.randomCategory = function (lang, opts) {\r\n return random(lang, opts, models.http)\r\n }\r\n models.wtf.fetchCategory = models.wtf.parseCategory\r\n}\r\nmodule.exports = plugin\r\n"],"names":["rateLimit","arr","fn","limit","arguments","length","undefined","Promise","resolve","reject","results","n","pending","go","i","p","then","r","e","console","error","init","rateLimit_1","methods","one","two","three","four","five","ten","fifteen","serial","linear","crawl","walk","run","sprint","src","defaults","lang","wiki","domain","path","isObject","obj","Object","prototype","toString","call","fetchRandom","options","http","assign","url","res","o","query","pages","key","keys","title","chunkBy","chunkSize","groups","push","slice","fetchCat","wtf","cat","opts","docs","categories","category","resp","map","doit","group","fetch","slow","responses","concat","apply","plugin","models","parseCategory","randomCategory","random","fetchCategory"],"mappings":";;;;;;;EAAA;EACA;EACA,IAAIA,SAAS,GAAG,SAASA,SAAT,CAAmBC,GAAnB,EAAwBC,EAAxB,EAA4B;EAC1C,MAAIC,KAAK,GAAGC,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,CAAhF;EACA,SAAO,IAAIG,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;EAC5C;EACA,QAAI,CAACR,GAAD,IAAQ,CAACC,EAAb,EAAiB;EACfO,MAAAA,MAAM,CAAC,2DAAD,CAAN;EACA;EACD;;EAED,QAAIR,GAAG,CAACI,MAAJ,KAAe,CAAnB,EAAsB;EACpBG,MAAAA,OAAO,CAAC,EAAD,CAAP;EACA;EACD;;EAED,QAAIE,OAAO,GAAG,EAAd;EACA,QAAIC,CAAC,GAAGR,KAAK,GAAG,CAAhB;EACA,QAAIS,OAAO,GAAG,CAAd,CAd4C;;EAgB5C,QAAIC,EAAE,GAAG,SAASA,EAAT,CAAYC,CAAZ,EAAe;EACtBF,MAAAA,OAAO,IAAI,CAAX;EACA,UAAIG,CAAC,GAAGb,EAAE,CAACD,GAAG,CAACa,CAAD,CAAJ,CAAV;;EAEA,UAAI,CAACC,CAAC,CAACC,IAAP,EAAa;EACXP,QAAAA,MAAM,CAAC,uCAAD,CAAN;EACA;EACD;;EAEDM,MAAAA,CAAC,CAACC,IAAF,CAAO,UAAUC,CAAV,EAAa;EAClBP,QAAAA,OAAO,CAACI,CAAD,CAAP,GAAaG,CAAb;EACD,OAFD;EAGAF,MAAAA,CAAC,CAAC,OAAD,CAAD,CAAW,UAAUG,CAAV,EAAa;EACtBC,QAAAA,OAAO,CAACC,KAAR,CAAcF,CAAd;EACAR,QAAAA,OAAO,CAACI,CAAD,CAAP,GAAa,IAAb;EACD,OAHD;EAIAC,MAAAA,CAAC,CAAC,SAAD,CAAD,CAAa,YAAY;EACvBH,QAAAA,OAAO,IAAI,CAAX;EACAD,QAAAA,CAAC,IAAI,CAAL,CAFuB;;EAIvB,YAAIV,GAAG,CAACI,MAAJ,IAAcM,CAAC,GAAG,CAAtB,EAAyB;EACvBE,UAAAA,EAAE,CAACF,CAAD,CAAF;EACD,SAFD,MAEO,IAAIC,OAAO,IAAI,CAAf,EAAkB;EACvB;EACAJ,UAAAA,OAAO,CAACE,OAAD,CAAP;EACD;EACF,OAVD;EAWD,KA3BD,CAhB4C;;;EA8C5C,QAAIW,IAAI,GAAGpB,GAAG,CAACI,MAAJ,GAAaF,KAAb,GAAqBF,GAAG,CAACI,MAAzB,GAAkCF,KAA7C;;EAEA,SAAK,IAAIW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGO,IAApB,EAA0BP,CAAC,IAAI,CAA/B,EAAkC;EAChCD,MAAAA,EAAE,CAACC,CAAD,CAAF;EACD;EACF,GAnDM,CAAP;EAoDD,CAtDD;;EAwDA,IAAIQ,WAAW,GAAGtB,SAAlB;EAEA,IAAIuB,OAAO,GAAG;EACZC,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavB,GAAb,EAAkBC,EAAlB,EAAsB;EACzB,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GAHW;EAIZuB,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAaxB,GAAb,EAAkBC,EAAlB,EAAsB;EACzB,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GANW;EAOZwB,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAezB,GAAf,EAAoBC,EAApB,EAAwB;EAC7B,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GATW;EAUZyB,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1B,GAAd,EAAmBC,EAAnB,EAAuB;EAC3B,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GAZW;EAaZ0B,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc3B,GAAd,EAAmBC,EAAnB,EAAuB;EAC3B,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GAfW;EAgBZ2B,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa5B,GAAb,EAAkBC,EAAlB,EAAsB;EACzB,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,EAAV,CAAlB;EACD,GAlBW;EAmBZ4B,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB7B,GAAjB,EAAsBC,EAAtB,EAA0B;EACjC,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,EAAV,CAAlB;EACD;EArBW,CAAd;EAuBAqB,OAAO,CAACQ,MAAR,GAAiBR,OAAO,CAACC,GAAzB;EACAD,OAAO,CAACS,MAAR,GAAiBT,OAAO,CAACC,GAAzB;EACAD,OAAO,CAACU,KAAR,GAAgBV,OAAO,CAACG,KAAxB;EACAH,OAAO,CAACW,IAAR,GAAeX,OAAO,CAACK,IAAvB;EACAL,OAAO,CAACY,GAAR,GAAcZ,OAAO,CAACM,GAAtB;EACAN,OAAO,CAACa,MAAR,GAAiBb,OAAO,CAACO,OAAzB;EACA,IAAIO,GAAG,GAAGd,OAAV;;;;;;;ECzFA,IAAMe,QAAQ,GAAG;EACfC,EAAAA,IAAI,EAAE,IADS;EAEfC,EAAAA,IAAI,EAAE,WAFS;EAGfC,EAAAA,MAAM,EAAE,IAHO;EAIfC,EAAAA,IAAI,EAAE,WAJS;;EAAA,CAAjB;;EAMA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAUC,GAAV,EAAe;EAC9B,SAAOA,GAAG,IAAIC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BJ,GAA/B,MAAwC,iBAAtD;EACD,CAFD;;EAIA,IAAMK,WAAW,GAAG,SAAdA,WAAc,CAAUV,IAAV,EAAgBW,OAAhB,EAAyBC,IAAzB,EAA+B;EACjDD,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACAA,EAAAA,OAAO,GAAGL,MAAM,CAACO,MAAP,CAAc,EAAd,EAAkBd,QAAlB,EAA4BY,OAA5B,CAAV,CAFiD;;EAIjD,MAAI,OAAOX,IAAP,KAAgB,QAApB,EAA8B;EAC5BW,IAAAA,OAAO,CAACX,IAAR,GAAeA,IAAf;EACD,GAFD,MAEO,IAAII,QAAQ,CAACJ,IAAD,CAAZ,EAAoB;EACzBW,IAAAA,OAAO,GAAGL,MAAM,CAACO,MAAP,CAAcF,OAAd,EAAuBX,IAAvB,CAAV;EACD;;EAED,MAAIc,GAAG,qBAAcH,OAAO,CAACX,IAAtB,4BAA4CW,OAAO,CAACR,IAApD,MAAP;;EACA,MAAIQ,OAAO,CAACT,MAAZ,EAAoB;EAClBY,IAAAA,GAAG,qBAAcH,OAAO,CAACT,MAAtB,cAAgCS,OAAO,CAACR,IAAxC,MAAH;EACD;;EACDW,EAAAA,GAAG,kGAAH;EAEA,SAAOF,IAAI,CAACE,GAAD,CAAJ,CACJrC,IADI,CACC,UAACsC,GAAD,EAAS;EACb,QAAI;EACF,UAAIC,CAAC,GAAGD,GAAG,CAACE,KAAJ,CAAUC,KAAlB;EACA,UAAIC,GAAG,GAAGb,MAAM,CAACc,IAAP,CAAYJ,CAAZ,EAAe,CAAf,CAAV;EACA,aAAOA,CAAC,CAACG,GAAD,CAAD,CAAOE,KAAd;EACD,KAJD,CAIE,OAAO1C,CAAP,EAAU;EACV,YAAMA,CAAN;EACD;EACF,GATI,WAUE,UAACA,CAAD,EAAO;EACZC,IAAAA,OAAO,CAACC,KAAR,CAAcF,CAAd;EACA,WAAO,IAAP;EACD,GAbI,CAAP;EAcD,CA9BD;;EA+BA,UAAc,GAAG+B,WAAjB;;;;;;;;ECtCA,IAAMY,OAAO,GAAG,SAAVA,OAAU,CAAU5D,GAAV,EAA8B;EAAA,MAAf6D,SAAe,uEAAH,CAAG;EAC5C,MAAIC,MAAM,GAAG,EAAb;EAAA,MACEjD,CADF;;EAEA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGb,GAAG,CAACI,MAApB,EAA4BS,CAAC,IAAIgD,SAAjC,EAA4C;EAC1CC,IAAAA,MAAM,CAACC,IAAP,CAAY/D,GAAG,CAACgE,KAAJ,CAAUnD,CAAV,EAAaA,CAAC,GAAGgD,SAAjB,CAAZ;EACD;;EACD,SAAOC,MAAP;EACD,CAPD;;EASA,IAAMG,QAAQ,GAAG,SAAXA,QAAW,CAAUC,GAAV,EAAeC,GAAf,EAAoB7B,IAApB,EAA0B8B,IAA1B,EAAgC;EAC/C,MAAI,CAACD,GAAL,EAAU;EACR,WAAO;EAAEE,MAAAA,IAAI,EAAE,EAAR;EAAYC,MAAAA,UAAU,EAAE;EAAxB,KAAP;EACD;;EACD,SAAOJ,GAAG,CAACK,QAAJ,CAAaJ,GAAb,EAAkB7B,IAAlB,EAAwBvB,IAAxB,CAA6B,UAACyD,IAAD,EAAU;EAC5C,QAAIhB,KAAK,GAAGgB,IAAI,CAAChB,KAAL,CAAWiB,GAAX,CAAe,UAACnB,CAAD;EAAA,aAAOA,CAAC,CAACK,KAAT;EAAA,KAAf,CAAZ;EACA,QAAIG,MAAM,GAAGF,OAAO,CAACJ,KAAD,CAApB;;EAEA,QAAMkB,IAAI,GAAG,SAAPA,IAAO,CAAUC,KAAV,EAAiB;EAC5B,aAAOT,GAAG,CAACU,KAAJ,CAAUD,KAAV,EAAiBP,IAAjB,CAAP,CAD4B;EAE7B,KAFD,CAJ4C;;;EAQ5C,WAAOS,MAAI,CAACpD,KAAL,CAAWqC,MAAX,EAAmBY,IAAnB,EAAyB3D,IAAzB,CAA8B,UAAC+D,SAAD,EAAe;;EAElD,UAAIT,IAAI,GAAG,GAAGU,MAAH,CAAUC,KAAV,CAAgB,EAAhB,EAAoBF,SAApB,CAAX;EACA,aAAO;EACLT,QAAAA,IAAI,EAAEA,IADD;EAELC,QAAAA,UAAU,EAAEE,IAAI,CAACF;EAFZ,OAAP;EAID,KAPM,CAAP;EAQD,GAhBM,CAAP;EAiBD,CArBD;;EAuBA,IAAMW,MAAM,GAAG,SAATA,MAAS,CAAUC,MAAV,EAAkB;EAC/BA,EAAAA,MAAM,CAAChB,GAAP,CAAWiB,aAAX,GAA2B,UAAUhB,GAAV,EAAe7B,IAAf,EAAqB8B,IAArB,EAA2B;EACpD,WAAOH,QAAQ,CAACiB,MAAM,CAAChB,GAAR,EAAaC,GAAb,EAAkB7B,IAAlB,EAAwB8B,IAAxB,CAAf;EACD,GAFD;;EAGAc,EAAAA,MAAM,CAAChB,GAAP,CAAWkB,cAAX,GAA4B,UAAU9C,IAAV,EAAgB8B,IAAhB,EAAsB;EAChD,WAAOiB,MAAM,CAAC/C,IAAD,EAAO8B,IAAP,EAAac,MAAM,CAAChC,IAApB,CAAb;EACD,GAFD;;EAGAgC,EAAAA,MAAM,CAAChB,GAAP,CAAWoB,aAAX,GAA2BJ,MAAM,CAAChB,GAAP,CAAWiB,aAAtC;EACD,CARD;;WASc,GAAGF;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-category.js","sources":["../node_modules/slow/builds/slow.mjs","../src/random.js","../src/index.js"],"sourcesContent":["/* 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 defaults = {\n lang: 'en',\n wiki: 'wikipedia',\n domain: null,\n path: 'w/api.php' //some 3rd party sites use a weird path\n}\nconst isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\n}\n\nconst fetchRandom = function (lang, options, http) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n //support lang 2nd param\n if (typeof lang === 'string') {\n options.lang = lang\n } else if (isObject(lang)) {\n options = Object.assign(options, lang)\n }\n\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += `format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*`\n\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 = fetchRandom\n","const slow = require('slow')\nconst random = require('./random')\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 (wtf, cat, lang, opts) {\n if (!cat) {\n return { docs: [], categories: [] }\n }\n return wtf.category(cat, 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, opts) //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\nconst plugin = function (models) {\n models.wtf.parseCategory = function (cat, lang, opts) {\n return fetchCat(models.wtf, cat, lang, opts)\n }\n models.wtf.randomCategory = function (lang, opts) {\n return random(lang, opts, models.http)\n }\n models.wtf.fetchCategory = models.wtf.parseCategory\n}\nmodule.exports = plugin\n"],"names":["rateLimit","arr","fn","limit","arguments","length","undefined","Promise","resolve","reject","results","n","pending","go","i","p","then","r","e","console","error","init","rateLimit_1","methods","one","two","three","four","five","ten","fifteen","serial","linear","crawl","walk","run","sprint","src","defaults","lang","wiki","domain","path","isObject","obj","Object","prototype","toString","call","fetchRandom","options","http","assign","url","res","o","query","pages","key","keys","title","catch","chunkBy","chunkSize","groups","push","slice","fetchCat","wtf","cat","opts","docs","categories","category","resp","map","doit","group","fetch","slow","responses","concat","apply","plugin","models","parseCategory","randomCategory","random","fetchCategory"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/category/builds/wtf-plugin-category.min.js b/plugins/category/builds/wtf-plugin-category.min.js index 16d2001e..607363f2 100644 --- a/plugins/category/builds/wtf-plugin-category.min.js +++ b/plugins/category/builds/wtf-plugin-category.min.js @@ -1 +1 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).wtfCategory=n()}(this,(function(){"use strict";var t=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;return new Promise((function(r,o){if(t&&n)if(0!==t.length)for(var i=[],c=e-1,a=0,u=function e(u){a+=1;var f=n(t[u]);f.then?(f.then((function(t){i[u]=t})),f.catch((function(t){console.error(t),i[u]=null})),f.finally((function(){a-=1,c+=1,t.length>=c+1?e(c):a<=0&&r(i)}))):o("Error: function must return a promise")},f=t.length1&&void 0!==arguments[1]?arguments[1]:5,r=[];for(n=0;n2&&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,f=function n(f){u+=1;var c=e(t[f]);c.then?(c.then((function(t){i[f]=t})),c.catch((function(t){console.error(t),i[f]=null})),c.finally((function(){u-=1,a+=1,t.length>=a+1?n(a):u<=0&&r(i)}))):o("Error: function must return a promise")},c=t.length{try{let e=t.query.pages;return e[Object.keys(e)[0]].title}catch(t){throw t}})).catch((t=>(console.error(t),null)))};var i,a=(i=Object.freeze({__proto__:null,default:n}))&&i.default||i;return function(t){t.wtf.parseCategory=function(e,n,r){return function(t,e,n,r){return e?t.category(e,n).then((e=>{let n=function(t,e=5){let n=[];for(let r=0;rt.title)));return a.three(n,(function(e){return t.fetch(e,r)})).then((t=>({docs:[].concat.apply([],t),categories:e.categories})))})):{docs:[],categories:[]}}(t.wtf,e,n,r)},t.wtf.randomCategory=function(e,n){return o(e,n,t.http)},t.wtf.fetchCategory=t.wtf.parseCategory}})); diff --git a/plugins/category/builds/wtf-plugin-category.mjs b/plugins/category/builds/wtf-plugin-category.mjs index 8606589d..e4d8e7dd 100644 --- a/plugins/category/builds/wtf-plugin-category.mjs +++ b/plugins/category/builds/wtf-plugin-category.mjs @@ -87,14 +87,14 @@ methods.crawl = methods.three; methods.walk = methods.five; methods.run = methods.ten; methods.sprint = methods.fifteen; -var src = methods; +var src$1 = methods; -var slow = /*#__PURE__*/Object.freeze({ +var slow$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - 'default': src + 'default': src$1 }); -var defaults = { +const defaults = { lang: 'en', wiki: 'wikipedia', domain: null, @@ -102,11 +102,11 @@ var defaults = { }; -var isObject = function isObject(obj) { +const isObject = function (obj) { return obj && Object.prototype.toString.call(obj) === '[object Object]'; }; -var fetchRandom = function fetchRandom(lang, options, http) { +const fetchRandom = function (lang, options, http) { options = options || {}; options = Object.assign({}, defaults, options); //support lang 2nd param @@ -116,22 +116,22 @@ var fetchRandom = function fetchRandom(lang, options, http) { options = Object.assign(options, lang); } - var url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; if (options.domain) { - url = "https://".concat(options.domain, "/").concat(options.path, "?"); + url = `https://${options.domain}/${options.path}?`; } - url += "format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*"; - return http(url).then(function (res) { + url += `format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*`; + return http(url).then(res => { try { - var o = res.query.pages; - var key = Object.keys(o)[0]; + let o = res.query.pages; + let key = Object.keys(o)[0]; return o[key].title; } catch (e) { throw e; } - })["catch"](function (e) { + }).catch(e => { console.error(e); return null; }); @@ -143,21 +143,19 @@ function getCjsExportFromNamespace (n) { return n && n['default'] || n; } -var slow$1 = getCjsExportFromNamespace(slow); +var slow = getCjsExportFromNamespace(slow$1); -var chunkBy = function chunkBy(arr) { - var chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; - var groups = [], - i; +const chunkBy = function (arr, chunkSize = 5) { + let groups = []; - for (i = 0; i < arr.length; i += chunkSize) { + for (let i = 0; i < arr.length; i += chunkSize) { groups.push(arr.slice(i, i + chunkSize)); } return groups; }; -var fetchCat = function fetchCat(wtf, cat, lang, opts) { +const fetchCat = function (wtf, cat, lang, opts) { if (!cat) { return { docs: [], @@ -165,20 +163,18 @@ var fetchCat = function fetchCat(wtf, cat, lang, opts) { }; } - return wtf.category(cat, lang).then(function (resp) { - var pages = resp.pages.map(function (o) { - return o.title; - }); - var groups = chunkBy(pages); + return wtf.category(cat, lang).then(resp => { + let pages = resp.pages.map(o => o.title); + let groups = chunkBy(pages); - var doit = function doit(group) { + const doit = function (group) { return wtf.fetch(group, opts); //returns a promise }; //only allow three requests at a time - return slow$1.three(groups, doit).then(function (responses) { + return slow.three(groups, doit).then(responses => { //flatten the results - var docs = [].concat.apply([], responses); + let docs = [].concat.apply([], responses); return { docs: docs, categories: resp.categories @@ -187,7 +183,7 @@ var fetchCat = function fetchCat(wtf, cat, lang, opts) { }); }; -var plugin = function plugin(models) { +const plugin = function (models) { models.wtf.parseCategory = function (cat, lang, opts) { return fetchCat(models.wtf, cat, lang, opts); }; @@ -199,6 +195,6 @@ var plugin = function plugin(models) { models.wtf.fetchCategory = models.wtf.parseCategory; }; -var src$1 = plugin; +var src = plugin; -export default src$1; +export default src; diff --git a/plugins/category/package-lock.json b/plugins/category/package-lock.json index c7849ec2..695dee92 100644 --- a/plugins/category/package-lock.json +++ b/plugins/category/package-lock.json @@ -1,395 +1,3499 @@ { "name": "wtf-plugin-category", "version": "0.3.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-category", + "version": "0.3.0", + "license": "MIT", + "dependencies": { + "slow": "^1.1.0" + }, + "devDependencies": { + "@babel/core": "7.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "rollup": "2.44.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": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@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.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@rollup/plugin-node-resolve/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==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "12.12.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.31.tgz", + "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/slow/-/slow-1.1.0.tgz", + "integrity": "sha512-NEPfKulZIDhCsEccS23VXE7nfhBhAAPMcYmbry3YZTk50buXGLNm1vsfeIWy+EdOyU/fk+6usnf1zCxPCNJ4Rg==" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" } }, "@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.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.9.0", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "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.9.0", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "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.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.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.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.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.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-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.9.5" + "@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.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.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.8.3", - "@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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -401,6 +3505,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3523,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 +3541,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 +3560,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 +3596,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.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", + "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.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" - }, - "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==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.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==", - "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.5", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - }, - "dependencies": { - "@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==", - "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,75 +4007,96 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" + "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" } }, "@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": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", "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.19.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": { @@ -1043,6 +4161,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", @@ -1059,25 +4207,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.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.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1098,10 +4238,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { @@ -1130,6 +4280,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1152,12 +4308,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.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.8.5", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1176,31 +4332,32 @@ "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.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.17.5", - "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.0.5", + "is-regex": "^1.1.1", "isarray": "^2.0.5", - "object-is": "^1.1.2", + "object-is": "^1.1.4", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", + "object.assign": "^4.1.2", "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 +4371,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,41 +4402,47 @@ } }, "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "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": { - "es-abstract": "^1.17.4", + "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" }, @@ -1297,6 +4466,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 +4490,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", @@ -1355,9 +4512,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 }, @@ -1368,11 +4525,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.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", + "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", @@ -1402,6 +4570,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", @@ -1409,9 +4583,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": { @@ -1430,39 +4604,45 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", @@ -1470,9 +4650,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": { @@ -1481,10 +4661,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.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": { @@ -1503,18 +4683,19 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "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": { @@ -1533,13 +4714,14 @@ } }, "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" } @@ -1563,22 +4745,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,53 +4785,25 @@ "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==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "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" - } + "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": { "version": "0.25.7", @@ -1659,16 +4820,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 +4842,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "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.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.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "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.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -1719,15 +4870,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 +4890,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 +4908,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 +4945,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,35 +4960,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +4999,15 @@ } }, "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": { - "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" @@ -1926,12 +5040,12 @@ } }, "rollup": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.7.2.tgz", - "integrity": "sha512-SdtTZVMMVSPe7SNv4exUyPXARe5v/p3TeeG3LRA5WabLPJt4Usi3wVrvVlyAUTG40JJmqS6zbIHt2vWTss2prw==", + "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": { @@ -1986,16 +5100,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": { @@ -2014,25 +5127,29 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "requires": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, "slow": { @@ -2047,9 +5164,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", @@ -2079,66 +5196,44 @@ "through": "2" } }, - "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" - } - }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "safe-buffer": "~5.1.0" } }, - "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==", + "string.prototype.trim": { + "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.17.5", - "string.prototype.trimstart": "^1.0.0" + "es-abstract": "^1.18.0-next.2" } }, - "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==", + "string.prototype.trimend": { + "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.17.5", - "string.prototype.trimend": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "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==", + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -2151,13 +5246,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,56 +5319,57 @@ } }, "tape": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.0.tgz", - "integrity": "sha512-+fi4WiHuvxpKL6GpcvnG5PXfzopgw9h1JM9CJdpEPAbyU3r3VjRgt059fD6Up2/u6BQXmmxKmUMm6mXQP+HS3w==", + "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.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "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.2.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,21 +5386,24 @@ "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", "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", @@ -2289,16 +5439,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": { @@ -2314,13 +5464,14 @@ } }, "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", @@ -2332,6 +5483,12 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/category/package.json b/plugins/category/package.json index 9de5bd87..f6d8410c 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", @@ -30,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.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "rollup": "2.44.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": "5.0.0" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" }, - "licence": "MIT" + "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/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/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/classify/README.md b/plugins/classify/README.md index 9df618ab..435d77df 100644 --- a/plugins/classify/README.md +++ b/plugins/classify/README.md @@ -62,41 +62,46 @@ This library tries to do this sort of work, to determine if a page is about Pers ```yaml Person: - Athlete: true - Artist: true - Politician: true - Actor: true - Academic: true - ReligiousFigure: true + Athlete: + AmericanFootballPlayer : true + BaseballPlayer : true + FootballPlayer : true + BasketballPlayer : true + HockeyPlayer : true + Actor : true + Politician : true + Musician : true + Author : true Place: - Country: true - City: true - Structure: true - BodyOfWater: true - SpaceLocation: true + Jurisdiction: + City : true + Country : true + Structure: + Bridge : true + Airport : true + BodyOfWater : true Organization: - Company: true - SportsTeam: true - MusicalGroup: true - PoliticalParty: true -CreativeWork: - Film: true - TVShow: true - Book: true - Play: true - Album: true - VideoGame: true + MusicalGroup : true + Company : true + SportsTeam : true + PoliticalParty : true Event: - Election: true - Disaster: true - SportsEvent: true - MilitaryConflict: true - SpaceMission: true -Product: true -Organism: true -MedicalCondition: true -Concept: true -FictionalCharacter: true + Disaster : true + Election : true + MilitaryConflict : true + SportsEvent : true +Creation: + CreativeWork: + Album : true + Book : true + Film : true + TVShow : true + Play : true + Song : true + VideoGame : true + MedicalCondition : true + Organism : true + Product : true ``` as of March 2020, it can classify ~65% of english wikipedia articles: diff --git a/plugins/classify/_pivot.js b/plugins/classify/_pivot.js new file mode 100644 index 00000000..1015e566 --- /dev/null +++ b/plugins/classify/_pivot.js @@ -0,0 +1,8 @@ +let obj = require('/Users/spencer/mountain/wtf_wikipedia/plugins/classify/src/byInfobox/mapping.js') + +let res = {} +Object.keys(obj).forEach((k) => { + res[obj[k]] = res[obj[k]] || [] + res[obj[k]].push(k) +}) +console.log(JSON.stringify(res, null, 2)) diff --git a/plugins/classify/builds/wtf-plugin-classify.js b/plugins/classify/builds/wtf-plugin-classify.js index 4ef684cc..b504b3f8 100644 --- a/plugins/classify/builds/wtf-plugin-classify.js +++ b/plugins/classify/builds/wtf-plugin-classify.js @@ -1,1066 +1,1683 @@ -/* 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) : - (global = global || self, global.wtfClassify = factory()); + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfClassify = factory()); }(this, (function () { 'use strict'; - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); + var AmericanFootballPlayer = { + name: 'AmericanFootballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } + }; + + var BaseballPlayer = { + name: 'BaseballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: ['baseball year'], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } + }; + + var FootballPlayer = { + name: 'FootballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } + }; + + var BasketballPlayer = { + name: 'BasketballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } + }; + + var HockeyPlayer = { + name: 'HockeyPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } + }; + + var Athlete = { + name: 'Athlete', + // + properties: { + leagues: () => {} + }, + children: { + AmericanFootballPlayer: AmericanFootballPlayer, + BaseballPlayer: BaseballPlayer, + FootballPlayer: FootballPlayer, + BasketballPlayer: BasketballPlayer, + HockeyPlayer: HockeyPlayer + }, + // + 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var Person = { + name: 'Person', + children: { + Athlete: Athlete, + Actor: Actor, + Politician: Politician, + Musician: Musician, + Author: Author + }, + 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', //religious person + 'archbishop', 'minister', 'saint', 'bishop', 'christian leader', 'religious biography', // artist + 'artist', 'comics creator', // academic + '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: [] + } + }; + + var 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: [] + } + }; + + var Country = { + name: 'Country', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: ['international relations'], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: ['country'], + patterns: [] + } + }; + + var Jurisdiction = { + name: 'Jurisdiction', + children: { + City: City, + Country: Country + }, + 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: [] + } + }; + + var Bridge = { + name: 'Bridge', + // + children: {}, + properties: { + length: () => {} + }, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } + }; + + var Airport = { + name: 'Airport', + // + children: {}, + properties: { + airlines: () => {}, + runways: () => {} + }, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } + }; + + var Structure = { + name: 'Structure', + // + children: { + Bridge: Bridge, + Airport: Airport + }, + 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: [] + } + }; + + var 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: [] + } + }; + + var Place = { + name: 'Place', + children: { + Jurisdiction: Jurisdiction, + Structure: Structure, + BodyOfWater: BodyOfWater + }, + 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var Organization = { + name: 'Organization', + // + children: { + MusicalGroup: MusicalGroup, + Company: Company, + SportsTeam: SportsTeam, + PoliticalParty: PoliticalParty + }, + 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var Event = { + name: 'Event', + properties: { + dates: () => {}, + places: () => {} + }, + children: { + Disaster: Disaster, + Election: Election, + MilitaryConflict: MilitaryConflict, + SportsEvent: SportsEvent + }, + // + 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}\)$/] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var 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\)$/] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var 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: [] + } + }; + + var CreativeWork = { + name: 'CreativeWork', + children: { + Album: Album, + Book: Book, + Film: Film, + TVShow: TVShow, + Play: Play, + Song: Song, + VideoGame: VideoGame + }, + // + 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\)$/] + } + }; + + var 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: [] + } + }; + + var Organism = { + name: 'Organism', + // + children: {}, + properties: {// taxonomy: () => {}, + // members: () => {}, + }, + // + 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: [] + } + }; + + var 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: [] + } + }; + + var Creation = { + name: 'Creation', + children: { + CreativeWork: CreativeWork, + MedicalCondition: MedicalCondition, + Organism: Organism, + Product: Product + }, + // + properties: { + creators: () => {}, + date: () => {} + }, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } + }; + + let schema = { + children: { + Person: Person, + Place: Place, + Organization: Organization, + Event: Event, + Creation: Creation + } + }; // generate slash-based ids by descending recursively + + const setId = function (root, id) { + if (root.name) { + root.id = id + '/' + root.name; } else { - obj[key] = value; + root.id = ''; + } + + if (root.children) { + Object.keys(root.children).forEach(k => { + setId(root.children[k], root.id); + }); + } + + return root; + }; + + schema = setId(schema, ''); + var schema_1 = schema; + + let mappings$5 = { + categories: {}, + descriptions: {}, + infoboxes: {}, + sections: {}, + templates: {}, + titles: {} + }; + let patterns$4 = { + categories: [], + descriptions: [], + infoboxes: [], + sections: [], + templates: [], + titles: [] + }; + + const doNode = function (node) { + if (node.id) { + // collect mappings + node.categories.mapping.forEach(str => { + mappings$5.categories[str] = node.id; + }); + node.descriptions.mapping = node.descriptions.mapping || []; + node.descriptions.mapping.forEach(str => { + mappings$5.descriptions[str] = node.id; + }); + node.infoboxes.mapping.forEach(str => { + mappings$5.infoboxes[str] = node.id; + }); + node.sections.mapping.forEach(str => { + mappings$5.sections[str] = node.id; + }); + node.templates.mapping.forEach(str => { + mappings$5.templates[str] = node.id; + }); + node.titles.mapping.forEach(str => { + mappings$5.titles[str] = node.id; + }); // collect patterns + + node.categories.patterns.forEach(reg => { + patterns$4.categories.push([reg, node.id]); + }); + node.descriptions.patterns.forEach(reg => { + patterns$4.descriptions.push([reg, node.id]); + }); + node.infoboxes.patterns.forEach(reg => { + patterns$4.infoboxes.push([reg, node.id]); + }); + node.sections.patterns.forEach(reg => { + patterns$4.sections.push([reg, node.id]); + }); + node.templates.patterns.forEach(reg => { + patterns$4.templates.push([reg, node.id]); + }); + node.titles.patterns.forEach(reg => { + patterns$4.titles.push([reg, node.id]); + }); + } + + if (node.children) { + Object.keys(node.children).forEach(k => { + doNode(node.children[k]); + }); } + }; + + doNode(schema_1); + var _dataFns = { + patterns: patterns$4, + mappings: mappings$5 + }; + + const { + mappings: mappings$4 + } = _dataFns; - return obj; - } - - var _mapping; - - var mapping = (_mapping = { - actor: 'Person/Actor', - //1 - adult_biography: 'Person', - //2 - afl_biography: 'Person/Athlete', - //7 - aircraft_accident: 'Event/Disaster', - //2 - //aircraft_begin: 'Thing', //24 - //aircraft_engine: 'Thing', //2 - //aircraft_type: 'Thing', //21 - airline: 'Organization', - //9 - airliner_accident: 'Event/Disaster', - //3 - airport: 'Place/Structure', - //20 - album: 'CreativeWork/Album', - //466 - alpine_ski_racer: 'Person/Athlete', - //2 - amusement_park: 'Place', - //4 - ancient_site: 'Place', - //14 - archbishop: 'Person/ReligiousFigure', - //1 - architect: 'Person', - //9 - // artifact: 'Thing', //1 - artist: 'Person/Artist', - //42 - artwork: 'CreativeWork', - //14 - athlete: 'Person/Athlete', - //6 - athletics_championships: 'Event/SportsEvent', - //6 - australian_place: 'Place', - //18 - automobile: 'Product', - //8 - badminton_event: 'Event/SportsEvent', - //2 - baseball_biography: 'Person/Athlete', - //64 - basketball_biography: 'Person/Athlete', - //17 - basketball_club: 'Organization/SportsTeam', - //17 - pro_hockey_team: 'Organization/SportsTeam', - // - beauty_pageant: 'Event', - //4 - beverage: 'Product', - //7 - body_of_water: 'Place/BodyOfWater', - //7 - book: 'CreativeWork/Book', - //130 - book_series: 'CreativeWork', - //4 - boxer: 'Person/Athlete', - //5 - boxingmatch: 'Event/SportsEvent', - //2 - bridge: 'Place/Structure', - //5 - broadcast: 'CreativeWork', - //10 - broadcasting_network: 'Organization', - //4 - building: 'Place/Structure', - //29 - canadianmp: 'Person/Politician', - //18 - casino: 'Place', - //1 - cbb_team: 'Organization', - //1 - cemetery: 'Place', - //3 - cfl_player: 'Person/Athlete', - //2 - character: 'FictionalCharacter', - //12 - chef: 'Person', - //6 - chess_player: 'Person', - //2 - choir: 'Organization', - //1 - christian_leader: 'Person', - //17 - church: 'Place', - //10 - civil_conflict: 'Event', - //3 - college: 'Organization', - //2 - college_coach: 'Person', - //18 - college_football_player: 'Person', - //7 - college_ice_hockey_team: 'Organization/SportsTeam', - //1 - college_soccer_team: 'Organization/SportsTeam', - //3 - comedian: 'Person', - //3 - comic_book_title: 'CreativeWork', - //9 - comic_strip: 'CreativeWork', - //1 - comics_character: 'FictionalCharacter', - //13 - comics_creator: 'Person', - //10 - company: 'Organization', - //150 - // computer_hardware_bus: 'Thing', //1 - // computer_virus: 'Thing/Software', //1 - concert_tour: 'Event', - //8 - court_case: 'Event', - //8 - cpu: 'Product', - //1 - cricket_ground: 'Place', - //2 - cricket_team: 'Organization/SportsTeam', - //1 - cricketer: 'Person/Athlete', - //43 - criminal: 'Person', - //8 - cyclist: 'Person/Athlete', - //8 - dam: 'Place', - //4 - doctor_who_episode: 'CreativeWork', - //3 - 'dot-com_company': 'Organization', - //3 - earthquake: 'Event/Disaster', - //2 - economist: 'Person/Academic', - //4 - election: 'Event/Election', - //19 - electric_vehicle: 'Product', - //1 - engineer: 'Person', - //2 - // enzyme: 'Thing', //19 - event: 'Event', - //2 - fashion_designer: 'Person', - //2 - feature_on_mars: 'Place', - //1 - field_hockey_player: 'Person/Athlete', - //8 - figure_skater: 'Person/Athlete', - //3 - fila_wrestling_event: 'Event/SportsEvent', - //1 - // file_format: 'Thing', //3 - film: 'CreativeWork/Film', - //183 - film_awards: 'Organization', - //1 - film_festival: 'Organization', - //2 - //// food: 'Thing', //3 - football_biography: 'Person', - //324 - football_club: 'Organization/SportsTeam', - //42 - football_club_season: 'Event/SportsEvent', - //13 - football_country_season: 'Event/SportsEvent', - //5 - football_league: 'Organization', - //4 - football_league_season: 'Event/SportsEvent', - //17 - football_match: 'Event/SportsEvent', - //10 - football_tournament_season: 'Event/SportsEvent', - //4 - former_country: 'Place', - //14 - former_subdivision: 'Place', - //3 - french_commune: 'Place', - //6 - gaa_club: 'Organization', - //2 - gaa_player: 'Person/Athlete', - //15 - // game: 'Thing', //3 - // gene: 'Thing', //3 - german_location: 'Place', - //6 - golf_facility: 'Place', - //2 - golfer: 'Person/Athlete', - //9 - government_agency: 'Organization', - //7 - government_cabinet: 'Organization', - //7 - governor: 'Person/Politician', - //5 - gpu: 'Product', - //1 - gridiron_football_person: 'Person', - //11 - gymnast: 'Person/Athlete', - //2 - handball_biography: 'Person', - //8 - hindu_leader: 'Person', - //1 - historic_site: 'Place', - //3 - historical_era: 'Event', - //1 - holiday: 'Event', - //5 - hollywood_cartoon: 'CreativeWork', - //4 - horseraces: 'Event', - //8 - horseracing_personality: 'Person', - //2 - hospital: 'Place', - //14 - hotel: 'Place', - //3 - hurricane: 'Event/Disaster', - //1 - ice_hockey_player: 'Person/Athlete', - //15 - indian_politician: 'Person/Politician', - //1 - individual_snooker_tournament: 'Event', - //6 - // information_appliance: 'Thing', //6 - // instrument: 'Thing', //3 - islands: 'Place', - //32 - israel_village: 'Place', - //2 - italian_comune: 'Place', - //1 - journal: 'Organization', - //23 - judge: 'Person', - //8 - // judo_technique: 'Thing', //2 - laboratory: 'Organization', - //1 - lacrosse_player: 'Person/Athlete', - //6 - lake: 'Place/BodyOfWater', - //10 - launch_pad: 'Place', - //1 - law_enforcement_agency: 'Organization', - //1 - legislative_term: 'Event', - //1 - legislature: 'Organization', - //3 - library: 'Organization', - //9 - // ligament: 'Thing', //1 - little_league_world_series: 'Event/SportsEvent', - //5 - magazine: 'CreativeWork', - //15 - // martial_art: 'Thing', //2 - martial_artist: 'Person/Athlete', - //13 - mass_murderer: 'Person', - //1 - // medical_condition: 'Thing', //31 - medical_person: 'Person', - //5 - military_conflict: 'Event/MilitaryConflict', - //27 - military_memorial: 'Place', - //2 - military_person: 'Person', - //60 - military_structure: 'Place', - //15 - military_unit: 'Organization', - //33 - // mineral: 'Thing', //5 - minister: 'Person/ReligiousFigure', - //3 - mlb_player: 'Person/Athlete', - //8 - mobile_phone: 'Product', - //3 - model: 'Person', - //2 - monarch: 'Person', - //23 - monument: 'Place', - //1 - motorcycle: 'Product', - //5 - mountain: 'Place', - //59 - mountain_pass: 'Place', - //1 - mountain_range: 'Place', - //13 - mp: 'Person/Politician', - //13 - museum: 'Place', - //13 - music_festival: 'Event', - //5 - // music_genre: 'Thing', //5 - musical: 'CreativeWork', - //3 - musical_artist: 'Organization/MusicalGroup', - //226 - musical_composition: 'CreativeWork', - //7 - nascar_driver: 'Person', - //3 - national_military: 'Organization', - //4 - nba_biography: 'Person/Athlete', - //4 - nba_season: 'Event/SportsEvent', - //6 - ncaa_baseball_conference_tournament: 'Event/SportsEvent', - //6 - ncaa_football_school: 'Organization', - //4 - ncaa_football_single_game: 'Event/SportsEvent', - //1 - ncaa_team_season: 'Event/SportsEvent', - //17 - neighborhood_portland_or: 'Place', - //3 - // network: 'Thing', //3 - // networking_protocol: 'Thing', //1 - newspaper: 'Organization', - //18 - nfl_biography: 'Person/Athlete', - //7 - nfl_draft: 'Event', - //2 - nfl_player: 'Person/Athlete', - //36 - nfl_season: 'Event/SportsEvent', - //27 - nfl_single_game: 'Event/SportsEvent', - //1 - nobility: 'Organization', - //5 - non_test_cricket_team: 'Organization/SportsTeam', - //4 - 'non-profit': 'Organization/SportsTeam', - //6 - officeholder: 'Person/Politician', - //133 - oil_field: 'Place', - //1 - opera: 'CreativeWork', - //3 - organization: 'Organization', - //41 - // os: 'Thing', //1 - painting: 'CreativeWork', - //2 - pandemic: 'Event/Disaster', - //2 - park: 'Place', - //15 - pba_draft: 'Event', - //3 - person: 'Person', - //441 - philosopher: 'Person', - //16 - police_officer: 'Person', - //2 - political_party: 'Organization/PoliticalParty', - //25 - politician: 'Person/Politician', - //34 - 'politician_(general)': 'Person/Politician', - //2 - power_station: 'Place/Structure', - //3 - // prepared_food: 'Thing', //12 - presenter: 'Person', - //4 - president: 'Person/Politician', - //1 - prison: 'Place', - //4 - professional_wrestler: 'Person/Athlete', - //9 - // programming_language: 'Thing', //6 - // protein_family: 'Thing', //2 - province_or_territory_of_canada: 'Place', - //1 - public_transit: 'Organization', - //1 - publisher: 'Organization', - //3 - racing_driver: 'Person', - //4 - radio_show: 'CreativeWork', - //3 - radio_station: 'Organization', - //25 - rail_line: 'Organization', - //7 - rail_service: 'Organization', - //6 - reality_music_competition: 'Event', - //1 - record_label: 'Organization', - //7 - recurring_event: 'Event', - //3 - religious_biography: 'Person', - //9 - religious_building: 'Place/Structure', - //9 - // religious_text: 'Thing', //1 - river: 'Place/BodyOfWater', - //16 - road: 'Place', - //41 - road_small: 'Place', - //14 - // rocket: 'Thing', //3 - roman_emperor: 'Person/Politician', - //2 - royalty: 'Person', - //77 - rugby_biography: 'Person/Athlete', - //12 - rugby_league_biography: 'Person/Athlete', - //24 - rugby_league_club: 'Organization/SportsTeam', - //5 - rugby_league_representative_team: 'Organization/SportsTeam', - //1 - rugby_team: 'Organization/SportsTeam', - //11 - russian_inhabited_locality: 'Place', - //1 - russian_town: 'Place', - //4 - 'russian_urban-type_settlement': 'Place', - //2 - saint: 'Person/ReligiousFigure', - //14 - scholar: 'Person/Academic', - //2 - school: 'Place', - //95 - school_district: 'Organization', - //10 - scientist: 'Person/Academic', - //84 - scotland_council_area: 'Place', - //2 - sea: 'Place/BodyOfWater', - //3 - settlement: 'Place', - //642 - // sheep_breed: 'Thing', //1 - // ship_begin: 'Thing', //84 - // ship_career: 'Thing', //141 - // ship_characteristics: 'Thing', //86 - // ship_class_overview: 'Thing', //25 - // ship_image: 'Thing', //84 - shopping_mall: 'Place', - //9 - skier: 'Person/Athlete', - //14 - soap_character: 'FictionalCharacter', - //126 - // software: 'Thing/Software', //25 - // software_license: 'Thing', //1 - song: 'CreativeWork', - //30 - song_contest: 'Event', - //3 - song_contest_entry: 'CreativeWork', - //12 - south_african_subplace_2011: 'Place', - //1 - spaceflight: 'Event/SpaceMission', - //17 - 'spaceflight/dock': 'Event/SpaceMission', - //17 - 'spaceflight/ip': 'Event/SpaceMission', - //19 - // sport: 'Thing', //2 - sport_governing_body: 'Organization', - //3 - sports_league: 'Organization', - //7 - sports_season: 'Event/SportsEvent', - //3 - sportsperson: 'Person', - //45 - squash_player: 'Person/Athlete', - //1 - stadium: 'Place/Structure', - //14 - state: 'Place', - //1 - state_representative: 'Person/Politician', - //10 - state_senator: 'Person/Politician', - //5 - station: 'Place', - //40 - street: 'Place', - //1 - // subdivision_type: 'Thing', //1 - summit: 'Event', - //2 - swimmer: 'Person/Athlete', - //14 - swiss_town: 'Place', - //36 - // symptom: 'Thing', //2 - synthesizer: 'Product', - //1 - television: 'Product', - //94 - television_channel: 'Organization', - //1 - television_episode: 'CreativeWork', - //26 - television_season: 'CreativeWork', - //18 - temple: 'Place', - //2 - tennis_biography: 'Person/Athlete', - //5 - tennis_event: 'Event/SportsEvent', - //3 - tennis_grand_slam_events: 'Event/SportsEvent', - //2 - // thoroughbred_racehorse: 'Thing', //7 - town_at: 'Place', - //1 - // train: 'Thing', //2 - treaty: 'CreativeWork', - //2 - tv_channel: 'Organization', - //12 - 'u.s._cabinet': 'Organization', - //3 - 'u.s._legislation': 'Organization', - //3 - 'u.s._metropolitan_area': 'Place', - //1 - 'u.s._state': 'Place', - //3 - uk_constituency: 'Place', - //1 - uk_disused_station: 'Place', - //8 - uk_legislation: 'Organization', - //6 - uk_place: 'Place', - //22 - uk_school: 'Place', - //26 - unesco_world_heritage_site: 'Place', - //3 - // united_states_federal_proposed_legislation: 'Thing', //1 - university: 'Organization', - //44 - university_of_notre_dame_residence_hall: 'Place', - //1 - v8_supercar_team: 'Organization', - //3 - venue: 'Place', - //6 - video_game: 'CreativeWork', - //81 - volleyball_biography: 'Person/Athlete', - //1 - volleyball_player: 'Person/Athlete', - //4 - waterfall: 'Place', - //4 - // weapon: 'Thing', //15 - // website: 'Thing/Software', //5 - windmill: 'Place', - //1 - wrc_driver: 'Person', - //1 - wrestling_event: 'Event/SportsEvent', - //8 - writer: 'Person', - //69 - // writing_system: 'Thing', //4 - zoo: 'Place', - //3 - speciesbox: 'Organism', - 'automatic taxobox': 'Organism', - 'medical condition (new)': 'MedicalCondition', - 'medical condition': 'MedicalCondition', - constellation: 'Place/SpaceLocation', - planet: 'Place/SpaceLocation', - 'mythical creature': 'FictionalCharacter', - dogbreed: 'Organism', - 'dog breed': 'Organism', - 'cat breed': 'Organism', - 'grape variety': 'Organism', - anthem: 'CreativeWork', - 'football tournament': 'Event/SportsEvent', - 'former monarchy': 'Organization', - 'criminal organization': 'Organization', - 'card game': 'Product', - computer: 'Product', - 'laboratory equipment': 'Product', - 'baseball team': 'Organization/SportsTeam', - // march 29th - 'video game': 'CreativeWork/VideoGame', - 'television episode': 'CreativeWork', - 'comic book title': 'CreativeWork', - 'song contest entry': 'CreativeWork', - 'short story': 'CreativeWork', - play: 'CreativeWork/Play', - 'hollywood cartoon': 'CreativeWork', - 'radio show': 'CreativeWork', - 'simpsons episode': 'CreativeWork', - 'musical composition': 'CreativeWork', - 'book series': 'CreativeWork', - 'comic strip': 'CreativeWork', - 'd&d creature': 'FictionalCharacter', - 'television season': 'CreativeWork', - 'comics organization': 'CreativeWork', - 'doctor who episode': 'CreativeWork', - 'animanga/other': 'CreativeWork', - 'graphic novel': 'CreativeWork', - rpg: 'CreativeWork', - 'vg character': 'FictionalCharacter', - 'big finish': 'CreativeWork', - 'vg series': 'CreativeWork', - 'name module': 'CreativeWork', - 'comics story arc': 'CreativeWork', - 'animanga character': 'FictionalCharacter', - 'video game series': 'CreativeWork', - // 'fictional location': 'Thing', - 'futurama episode': 'CreativeWork', - 'video game character': 'FictionalCharacter', - 'comics character and title': 'CreativeWork', - 'comics meta series': 'CreativeWork', - webcomic: 'CreativeWork', - 'the goodies episode': 'CreativeWork', - 'audio drama': 'CreativeWork', - // 'comics species': 'Thing', - 'sw comics': 'CreativeWork', - 'media franchise': 'CreativeWork', - 'folk tale': 'CreativeWork', - 'doctor who character': 'FictionalCharacter', - 'tolkien character': 'FictionalCharacter', - // learned events - 'military conflict': 'Event/MilitaryConflict', - 'olympic event': 'Event/SportsEvent', - 'grand prix race report': 'Event', - 'recurring event': 'Event', - 'music festival': 'Event', - 'international football competition': 'Event/SportsEvent', - 'football league season': 'Event', - 'scotus case': 'Event', - 'wrestling event': 'Event/SportsEvent', - 'court case': 'Event', - 'hockey team player': 'Person/Athlete', - 'sports season': 'Event/SportsEvent', - 'civil conflict': 'Event/MilitaryConflict', - 'concert tour': 'Event', - 'cycling race report': 'Event/SportsEvent', - 'ncaa team season': 'Event/SportsEvent', - 'cricket tournament': 'Event/SportsEvent', - 'international labour organization convention': 'Event', - 'song contest': 'Event', - 'football match': 'Event/SportsEvent', - 'australian year': 'Event', - 'world series expanded': 'Event/SportsEvent', - 'civilian attack': 'Event/MilitaryConflict', - 'mma event': 'Event/SportsEvent', - 'snooker player': 'Person', - 'airliner accident': 'Event/Disaster' - }, _defineProperty(_mapping, "football tournament", 'Event/SportsEvent'), _defineProperty(_mapping, 'individual darts tournament', 'Event'), _defineProperty(_mapping, 'nfl season', 'Event/SportsEvent'), _defineProperty(_mapping, 'beauty pageant', 'Event'), _defineProperty(_mapping, 'nfl draft', 'Event/SportsEvent'), _defineProperty(_mapping, 'athletics championships', 'Event/SportsEvent'), _defineProperty(_mapping, 'historical event', 'Event'), _defineProperty(_mapping, 'grand prix motorcycle race report', 'Event'), _defineProperty(_mapping, 'football club season', 'Event/SportsEvent'), _defineProperty(_mapping, 'international handball competition', 'Event'), _defineProperty(_mapping, 'coa case', 'Event'), _defineProperty(_mapping, 'individual snooker tournament', 'Event'), _defineProperty(_mapping, 'canadian football game', 'Event/SportsEvent'), _defineProperty(_mapping, 'australian rules football season', 'Event/SportsEvent'), _defineProperty(_mapping, 'football tournament season', 'Event/SportsEvent'), _defineProperty(_mapping, 'esc national year', 'Event'), _defineProperty(_mapping, "indy500", 'Event'), _defineProperty(_mapping, 'international ice hockey competition', 'Event/SportsEvent'), _defineProperty(_mapping, 'cricket tour', 'Event/SportsEvent'), _defineProperty(_mapping, 'national political convention', 'Event'), _defineProperty(_mapping, "referendum", 'Event'), _defineProperty(_mapping, 'football club', 'Organization/SportsTeam'), _defineProperty(_mapping, 'radio station', 'Organization'), _defineProperty(_mapping, 'military unit', 'Organization'), _defineProperty(_mapping, 'political party', 'Organization/PoliticalParty'), _defineProperty(_mapping, 'government agency', 'Organization'), _defineProperty(_mapping, 'rail line', 'Organization'), _defineProperty(_mapping, 'record label', 'Organization'), _defineProperty(_mapping, 'school district', 'Organization'), _defineProperty(_mapping, 'tv channel', 'Organization'), _defineProperty(_mapping, 'sports league', 'Organization'), _defineProperty(_mapping, 'football league', 'Organization'), _defineProperty(_mapping, "worldscouting", 'Organization'), _defineProperty(_mapping, 'rugby team', 'Organization/SportsTeam'), _defineProperty(_mapping, 'sg rail', 'Organization'), _defineProperty(_mapping, 'law enforcement agency', 'Organization'), _defineProperty(_mapping, 'uk legislation', 'Organization'), _defineProperty(_mapping, 'public transit', 'Organization'), _defineProperty(_mapping, 'us university ranking', 'Organization'), _defineProperty(_mapping, 'television channel', 'Organization'), _defineProperty(_mapping, 'national football team', 'Organization/SportsTeam'), _defineProperty(_mapping, 'bus transit', 'Organization'), _defineProperty(_mapping, "union", 'Organization'), _defineProperty(_mapping, 'broadcasting network', 'Organization'), _defineProperty(_mapping, 'christian denomination', 'Organization'), _defineProperty(_mapping, 'film awards', 'Organization'), _defineProperty(_mapping, 'gaa club', 'Organization'), _defineProperty(_mapping, "fraternity", 'Organization'), _defineProperty(_mapping, "rail", 'Organization'), _defineProperty(_mapping, 'rail service', 'Organization'), _defineProperty(_mapping, 'national military', 'Organization'), _defineProperty(_mapping, 'sport governing body', 'Organization'), _defineProperty(_mapping, 'basketball club', 'Organization/SportsTeam'), _defineProperty(_mapping, 'hockey team', 'Organization/SportsTeam'), _defineProperty(_mapping, 'political party/seats', 'Organization'), _defineProperty(_mapping, 'rugby league club', 'Organization/SportsTeam'), _defineProperty(_mapping, 'athletic conference', 'Organization'), _defineProperty(_mapping, 'football club infobox', 'Organization/SportsTeam'), _defineProperty(_mapping, 'film festival', 'Organization'), _defineProperty(_mapping, "medical condition (new)", 'Organization'), _defineProperty(_mapping, "brand", 'Organization/MusicalGroup'), _defineProperty(_mapping, 'cricket team', 'Organization/SportsTeam'), _defineProperty(_mapping, 'dot-com company', 'Organization'), _defineProperty(_mapping, 'india university ranking', 'Organization'), _defineProperty(_mapping, 'uk university rankings', 'Organization'), _defineProperty(_mapping, 'government cabinet', 'Organization'), _defineProperty(_mapping, "taxobox", 'Organism'), _defineProperty(_mapping, "subspeciesbox", 'Organism'), _defineProperty(_mapping, "mycomorphbox", 'Organism'), _defineProperty(_mapping, 'paraphyletic group', 'Organism'), _defineProperty(_mapping, 'nutritional value', 'Organism'), _defineProperty(_mapping, "infraspeciesbox", 'Organism'), _defineProperty(_mapping, "disease", 'MedicalCondition'), _defineProperty(_mapping, "ecoregion", 'Place'), _defineProperty(_mapping, "horse", 'Organism'), _defineProperty(_mapping, "haplogroup", 'Organism'), _defineProperty(_mapping, "bird", 'Organism'), _defineProperty(_mapping, 'bird/population', 'Organism'), _defineProperty(_mapping, 'medical resources', 'Organism'), _defineProperty(_mapping, "galaxy", 'Place/SpaceLocation'), _defineProperty(_mapping, 'nc name', 'Organism'), _defineProperty(_mapping, 'pig breed', 'Organism'), _defineProperty(_mapping, 'botanical product', 'Organism'), _defineProperty(_mapping, 'cattle breed', 'Organism'), _defineProperty(_mapping, "bishop", 'Person/ReligiousFigure'), _defineProperty(_mapping, 'horse breed', 'Organism'), _defineProperty(_mapping, 'poultry breed', 'Organism'), _defineProperty(_mapping, 'football biography', 'Person/Athlete'), _defineProperty(_mapping, 'military person', 'Person'), _defineProperty(_mapping, 'baseball biography', 'Person/Athlete'), _defineProperty(_mapping, 'ice hockey player', 'Person/Athlete'), _defineProperty(_mapping, 'nfl player', 'Person/Athlete'), _defineProperty(_mapping, 'christian leader', 'Person/ReligiousFigure'), _defineProperty(_mapping, "congressman", 'Person/Politician'), _defineProperty(_mapping, 'basketball biography', 'Person/Athlete'), _defineProperty(_mapping, 'comics creator', 'Person/Artist'), _defineProperty(_mapping, 'professional wrestler', 'Person/Athlete'), _defineProperty(_mapping, 'college coach', 'Person'), _defineProperty(_mapping, 'tennis biography', 'Person/Athlete'), _defineProperty(_mapping, 'afl biography', 'Person/Athlete'), _defineProperty(_mapping, 'nfl biography', 'Person/Athlete'), _defineProperty(_mapping, 'rugby biography', 'Person/Athlete'), _defineProperty(_mapping, 'rugby league biography', 'Person/Athlete'), _defineProperty(_mapping, 'prime minister', 'Person/Politician'), _defineProperty(_mapping, 'nba biography', 'Person/Athlete'), _defineProperty(_mapping, 'figure skater', 'Person/Athlete'), _defineProperty(_mapping, 'f1 driver', 'Person'), _defineProperty(_mapping, 'gridiron football person', 'Person'), _defineProperty(_mapping, 'indian politician', 'Person/Politician'), _defineProperty(_mapping, 'racing driver', 'Person'), _defineProperty(_mapping, 'martial artist', 'Person'), _defineProperty(_mapping, 'chinese-language singer and actor', 'Person'), _defineProperty(_mapping, "astronaut", 'Person'), _defineProperty(_mapping, "senator", 'Person/Politician'), _defineProperty(_mapping, 'nascar driver', 'Person'), _defineProperty(_mapping, 'adult biography', 'Person'), _defineProperty(_mapping, 'state representative', 'Person/Politician'), _defineProperty(_mapping, 'state senator', 'Person/Politician'), _defineProperty(_mapping, 'coa wide', 'Person'), _defineProperty(_mapping, 'religious biography', 'Person/ReligiousFigure'), _defineProperty(_mapping, 'chess player', 'Person'), _defineProperty(_mapping, 'pageant titleholder', 'Person'), _defineProperty(_mapping, 'gaa player', 'Person/Athlete'), _defineProperty(_mapping, 'us cabinet official', 'Person/Politician'), _defineProperty(_mapping, 'uk place', 'Place'), _defineProperty(_mapping, 'italian comune', 'Place'), _defineProperty(_mapping, "geobox", 'Place'), _defineProperty(_mapping, 'australian place', 'Place'), _defineProperty(_mapping, 'french commune', 'Place'), _defineProperty(_mapping, 'german location', 'Place'), _defineProperty(_mapping, 'u.s. county', 'Place'), _defineProperty(_mapping, 'swiss town', 'Place/City'), _defineProperty(_mapping, 'former country', 'Place'), _defineProperty(_mapping, 'uk school', 'Place/Structure'), _defineProperty(_mapping, 'road small', 'Place'), _defineProperty(_mapping, 'lunar crater', 'Place'), _defineProperty(_mapping, 'gb station', 'Place'), _defineProperty(_mapping, 'greek dimos', 'Place'), _defineProperty(_mapping, 'military structure', 'Place/Structure'), _defineProperty(_mapping, 'uk constituency main', 'Place'), _defineProperty(_mapping, 'city japan', 'Place/City'), _defineProperty(_mapping, 'religious building', 'Place/Structure'), _defineProperty(_mapping, 'shopping mall', 'Place/Structure'), _defineProperty(_mapping, 'municipality br', 'Place/City'), _defineProperty(_mapping, 'finnish municipality/population count', 'Place'), _defineProperty(_mapping, 'ancient site', 'Place'), _defineProperty(_mapping, 'mountain range', 'Place'), _defineProperty(_mapping, 'london station', 'Place'), _defineProperty(_mapping, 'russian town', 'Place/City'), _defineProperty(_mapping, 'former subdivision', 'Place'), _defineProperty(_mapping, "lighthouse", 'Place/Structure'), _defineProperty(_mapping, 'uk station', 'Place'), _defineProperty(_mapping, 'historic site', 'Place'), _defineProperty(_mapping, 'world heritage site', 'Place'), _defineProperty(_mapping, "diocese", 'Place'), _defineProperty(_mapping, 'south african town 2011', 'Place/City'), _defineProperty(_mapping, 'uk disused station', 'Place'), _defineProperty(_mapping, 'belgium municipality', 'Place'), _defineProperty(_mapping, 'uk constituency', 'Place'), _defineProperty(_mapping, "theatre", 'Place'), _defineProperty(_mapping, 'canada electoral district', 'Place'), _defineProperty(_mapping, "nycs", 'Place'), _defineProperty(_mapping, 'body of water', 'Place/BodyOfWater'), _defineProperty(_mapping, 'mountain pass', 'Place'), _defineProperty(_mapping, "kommune", 'Place'), _defineProperty(_mapping, 'historic subdivision', 'Place'), _defineProperty(_mapping, 'u.s. congressional district', 'Place'), _defineProperty(_mapping, 'power station', 'Place/Structure'), _mapping); - var mapping_1 = mapping.actor; - var mapping_2 = mapping.adult_biography; - var mapping_3 = mapping.afl_biography; - var mapping_4 = mapping.aircraft_accident; - var mapping_5 = mapping.airline; - var mapping_6 = mapping.airliner_accident; - var mapping_7 = mapping.airport; - var mapping_8 = mapping.album; - var mapping_9 = mapping.alpine_ski_racer; - var mapping_10 = mapping.amusement_park; - var mapping_11 = mapping.ancient_site; - var mapping_12 = mapping.archbishop; - var mapping_13 = mapping.architect; - var mapping_14 = mapping.artist; - var mapping_15 = mapping.artwork; - var mapping_16 = mapping.athlete; - var mapping_17 = mapping.athletics_championships; - var mapping_18 = mapping.australian_place; - var mapping_19 = mapping.automobile; - var mapping_20 = mapping.badminton_event; - var mapping_21 = mapping.baseball_biography; - var mapping_22 = mapping.basketball_biography; - var mapping_23 = mapping.basketball_club; - var mapping_24 = mapping.pro_hockey_team; - var mapping_25 = mapping.beauty_pageant; - var mapping_26 = mapping.beverage; - var mapping_27 = mapping.body_of_water; - var mapping_28 = mapping.book; - var mapping_29 = mapping.book_series; - var mapping_30 = mapping.boxer; - var mapping_31 = mapping.boxingmatch; - var mapping_32 = mapping.bridge; - var mapping_33 = mapping.broadcast; - var mapping_34 = mapping.broadcasting_network; - var mapping_35 = mapping.building; - var mapping_36 = mapping.canadianmp; - var mapping_37 = mapping.casino; - var mapping_38 = mapping.cbb_team; - var mapping_39 = mapping.cemetery; - var mapping_40 = mapping.cfl_player; - var mapping_41 = mapping.character; - var mapping_42 = mapping.chef; - var mapping_43 = mapping.chess_player; - var mapping_44 = mapping.choir; - var mapping_45 = mapping.christian_leader; - var mapping_46 = mapping.church; - var mapping_47 = mapping.civil_conflict; - var mapping_48 = mapping.college; - var mapping_49 = mapping.college_coach; - var mapping_50 = mapping.college_football_player; - var mapping_51 = mapping.college_ice_hockey_team; - var mapping_52 = mapping.college_soccer_team; - var mapping_53 = mapping.comedian; - var mapping_54 = mapping.comic_book_title; - var mapping_55 = mapping.comic_strip; - var mapping_56 = mapping.comics_character; - var mapping_57 = mapping.comics_creator; - var mapping_58 = mapping.company; - var mapping_59 = mapping.concert_tour; - var mapping_60 = mapping.court_case; - var mapping_61 = mapping.cpu; - var mapping_62 = mapping.cricket_ground; - var mapping_63 = mapping.cricket_team; - var mapping_64 = mapping.cricketer; - var mapping_65 = mapping.criminal; - var mapping_66 = mapping.cyclist; - var mapping_67 = mapping.dam; - var mapping_68 = mapping.doctor_who_episode; - var mapping_69 = mapping.earthquake; - var mapping_70 = mapping.economist; - var mapping_71 = mapping.election; - var mapping_72 = mapping.electric_vehicle; - var mapping_73 = mapping.engineer; - var mapping_74 = mapping.event; - var mapping_75 = mapping.fashion_designer; - var mapping_76 = mapping.feature_on_mars; - var mapping_77 = mapping.field_hockey_player; - var mapping_78 = mapping.figure_skater; - var mapping_79 = mapping.fila_wrestling_event; - var mapping_80 = mapping.film; - var mapping_81 = mapping.film_awards; - var mapping_82 = mapping.film_festival; - var mapping_83 = mapping.football_biography; - var mapping_84 = mapping.football_club; - var mapping_85 = mapping.football_club_season; - var mapping_86 = mapping.football_country_season; - var mapping_87 = mapping.football_league; - var mapping_88 = mapping.football_league_season; - var mapping_89 = mapping.football_match; - var mapping_90 = mapping.football_tournament_season; - var mapping_91 = mapping.former_country; - var mapping_92 = mapping.former_subdivision; - var mapping_93 = mapping.french_commune; - var mapping_94 = mapping.gaa_club; - var mapping_95 = mapping.gaa_player; - var mapping_96 = mapping.german_location; - var mapping_97 = mapping.golf_facility; - var mapping_98 = mapping.golfer; - var mapping_99 = mapping.government_agency; - var mapping_100 = mapping.government_cabinet; - var mapping_101 = mapping.governor; - var mapping_102 = mapping.gpu; - var mapping_103 = mapping.gridiron_football_person; - var mapping_104 = mapping.gymnast; - var mapping_105 = mapping.handball_biography; - var mapping_106 = mapping.hindu_leader; - var mapping_107 = mapping.historic_site; - var mapping_108 = mapping.historical_era; - var mapping_109 = mapping.holiday; - var mapping_110 = mapping.hollywood_cartoon; - var mapping_111 = mapping.horseraces; - var mapping_112 = mapping.horseracing_personality; - var mapping_113 = mapping.hospital; - var mapping_114 = mapping.hotel; - var mapping_115 = mapping.hurricane; - var mapping_116 = mapping.ice_hockey_player; - var mapping_117 = mapping.indian_politician; - var mapping_118 = mapping.individual_snooker_tournament; - var mapping_119 = mapping.islands; - var mapping_120 = mapping.israel_village; - var mapping_121 = mapping.italian_comune; - var mapping_122 = mapping.journal; - var mapping_123 = mapping.judge; - var mapping_124 = mapping.laboratory; - var mapping_125 = mapping.lacrosse_player; - var mapping_126 = mapping.lake; - var mapping_127 = mapping.launch_pad; - var mapping_128 = mapping.law_enforcement_agency; - var mapping_129 = mapping.legislative_term; - var mapping_130 = mapping.legislature; - var mapping_131 = mapping.library; - var mapping_132 = mapping.little_league_world_series; - var mapping_133 = mapping.magazine; - var mapping_134 = mapping.martial_artist; - var mapping_135 = mapping.mass_murderer; - var mapping_136 = mapping.medical_person; - var mapping_137 = mapping.military_conflict; - var mapping_138 = mapping.military_memorial; - var mapping_139 = mapping.military_person; - var mapping_140 = mapping.military_structure; - var mapping_141 = mapping.military_unit; - var mapping_142 = mapping.minister; - var mapping_143 = mapping.mlb_player; - var mapping_144 = mapping.mobile_phone; - var mapping_145 = mapping.model; - var mapping_146 = mapping.monarch; - var mapping_147 = mapping.monument; - var mapping_148 = mapping.motorcycle; - var mapping_149 = mapping.mountain; - var mapping_150 = mapping.mountain_pass; - var mapping_151 = mapping.mountain_range; - var mapping_152 = mapping.mp; - var mapping_153 = mapping.museum; - var mapping_154 = mapping.music_festival; - var mapping_155 = mapping.musical; - var mapping_156 = mapping.musical_artist; - var mapping_157 = mapping.musical_composition; - var mapping_158 = mapping.nascar_driver; - var mapping_159 = mapping.national_military; - var mapping_160 = mapping.nba_biography; - var mapping_161 = mapping.nba_season; - var mapping_162 = mapping.ncaa_baseball_conference_tournament; - var mapping_163 = mapping.ncaa_football_school; - var mapping_164 = mapping.ncaa_football_single_game; - var mapping_165 = mapping.ncaa_team_season; - var mapping_166 = mapping.neighborhood_portland_or; - var mapping_167 = mapping.newspaper; - var mapping_168 = mapping.nfl_biography; - var mapping_169 = mapping.nfl_draft; - var mapping_170 = mapping.nfl_player; - var mapping_171 = mapping.nfl_season; - var mapping_172 = mapping.nfl_single_game; - var mapping_173 = mapping.nobility; - var mapping_174 = mapping.non_test_cricket_team; - var mapping_175 = mapping.officeholder; - var mapping_176 = mapping.oil_field; - var mapping_177 = mapping.opera; - var mapping_178 = mapping.organization; - var mapping_179 = mapping.painting; - var mapping_180 = mapping.pandemic; - var mapping_181 = mapping.park; - var mapping_182 = mapping.pba_draft; - var mapping_183 = mapping.person; - var mapping_184 = mapping.philosopher; - var mapping_185 = mapping.police_officer; - var mapping_186 = mapping.political_party; - var mapping_187 = mapping.politician; - var mapping_188 = mapping.power_station; - var mapping_189 = mapping.presenter; - var mapping_190 = mapping.president; - var mapping_191 = mapping.prison; - var mapping_192 = mapping.professional_wrestler; - var mapping_193 = mapping.province_or_territory_of_canada; - var mapping_194 = mapping.public_transit; - var mapping_195 = mapping.publisher; - var mapping_196 = mapping.racing_driver; - var mapping_197 = mapping.radio_show; - var mapping_198 = mapping.radio_station; - var mapping_199 = mapping.rail_line; - var mapping_200 = mapping.rail_service; - var mapping_201 = mapping.reality_music_competition; - var mapping_202 = mapping.record_label; - var mapping_203 = mapping.recurring_event; - var mapping_204 = mapping.religious_biography; - var mapping_205 = mapping.religious_building; - var mapping_206 = mapping.river; - var mapping_207 = mapping.road; - var mapping_208 = mapping.road_small; - var mapping_209 = mapping.roman_emperor; - var mapping_210 = mapping.royalty; - var mapping_211 = mapping.rugby_biography; - var mapping_212 = mapping.rugby_league_biography; - var mapping_213 = mapping.rugby_league_club; - var mapping_214 = mapping.rugby_league_representative_team; - var mapping_215 = mapping.rugby_team; - var mapping_216 = mapping.russian_inhabited_locality; - var mapping_217 = mapping.russian_town; - var mapping_218 = mapping.saint; - var mapping_219 = mapping.scholar; - var mapping_220 = mapping.school; - var mapping_221 = mapping.school_district; - var mapping_222 = mapping.scientist; - var mapping_223 = mapping.scotland_council_area; - var mapping_224 = mapping.sea; - var mapping_225 = mapping.settlement; - var mapping_226 = mapping.shopping_mall; - var mapping_227 = mapping.skier; - var mapping_228 = mapping.soap_character; - var mapping_229 = mapping.song; - var mapping_230 = mapping.song_contest; - var mapping_231 = mapping.song_contest_entry; - var mapping_232 = mapping.south_african_subplace_2011; - var mapping_233 = mapping.spaceflight; - var mapping_234 = mapping.sport_governing_body; - var mapping_235 = mapping.sports_league; - var mapping_236 = mapping.sports_season; - var mapping_237 = mapping.sportsperson; - var mapping_238 = mapping.squash_player; - var mapping_239 = mapping.stadium; - var mapping_240 = mapping.state; - var mapping_241 = mapping.state_representative; - var mapping_242 = mapping.state_senator; - var mapping_243 = mapping.station; - var mapping_244 = mapping.street; - var mapping_245 = mapping.summit; - var mapping_246 = mapping.swimmer; - var mapping_247 = mapping.swiss_town; - var mapping_248 = mapping.synthesizer; - var mapping_249 = mapping.television; - var mapping_250 = mapping.television_channel; - var mapping_251 = mapping.television_episode; - var mapping_252 = mapping.television_season; - var mapping_253 = mapping.temple; - var mapping_254 = mapping.tennis_biography; - var mapping_255 = mapping.tennis_event; - var mapping_256 = mapping.tennis_grand_slam_events; - var mapping_257 = mapping.town_at; - var mapping_258 = mapping.treaty; - var mapping_259 = mapping.tv_channel; - var mapping_260 = mapping.uk_constituency; - var mapping_261 = mapping.uk_disused_station; - var mapping_262 = mapping.uk_legislation; - var mapping_263 = mapping.uk_place; - var mapping_264 = mapping.uk_school; - var mapping_265 = mapping.unesco_world_heritage_site; - var mapping_266 = mapping.university; - var mapping_267 = mapping.university_of_notre_dame_residence_hall; - var mapping_268 = mapping.v8_supercar_team; - var mapping_269 = mapping.venue; - var mapping_270 = mapping.video_game; - var mapping_271 = mapping.volleyball_biography; - var mapping_272 = mapping.volleyball_player; - var mapping_273 = mapping.waterfall; - var mapping_274 = mapping.windmill; - var mapping_275 = mapping.wrc_driver; - var mapping_276 = mapping.wrestling_event; - var mapping_277 = mapping.writer; - var mapping_278 = mapping.zoo; - var mapping_279 = mapping.speciesbox; - var mapping_280 = mapping.constellation; - var mapping_281 = mapping.planet; - var mapping_282 = mapping.dogbreed; - var mapping_283 = mapping.anthem; - var mapping_284 = mapping.computer; - var mapping_285 = mapping.play; - var mapping_286 = mapping.rpg; - var mapping_287 = mapping.webcomic; - var mapping_288 = mapping.indy500; - var mapping_289 = mapping.referendum; - var mapping_290 = mapping.worldscouting; - var mapping_291 = mapping.union; - var mapping_292 = mapping.fraternity; - var mapping_293 = mapping.rail; - var mapping_294 = mapping.brand; - var mapping_295 = mapping.taxobox; - var mapping_296 = mapping.subspeciesbox; - var mapping_297 = mapping.mycomorphbox; - var mapping_298 = mapping.infraspeciesbox; - var mapping_299 = mapping.disease; - var mapping_300 = mapping.ecoregion; - var mapping_301 = mapping.horse; - var mapping_302 = mapping.haplogroup; - var mapping_303 = mapping.bird; - var mapping_304 = mapping.galaxy; - var mapping_305 = mapping.bishop; - var mapping_306 = mapping.congressman; - var mapping_307 = mapping.astronaut; - var mapping_308 = mapping.senator; - var mapping_309 = mapping.geobox; - var mapping_310 = mapping.lighthouse; - var mapping_311 = mapping.diocese; - var mapping_312 = mapping.theatre; - var mapping_313 = mapping.nycs; - var mapping_314 = mapping.kommune; - - var byInfobox = function byInfobox(doc) { - var infoboxes = doc.infoboxes(); - var found = []; - - for (var i = 0; i < infoboxes.length; i++) { - var inf = infoboxes[i]; - var type = inf.type(); + const byInfobox = function (doc) { + let infoboxes = doc.infoboxes(); + let found = []; + + for (let i = 0; i < infoboxes.length; i++) { + let inf = infoboxes[i]; + let type = inf.type(); type = type.toLowerCase(); // type = type.replace(/^(category|categorie|kategori): ?/i, '') type = type.replace(/ /g, '_'); type = type.trim(); - if (mapping.hasOwnProperty(type)) { + if (mappings$4.infoboxes.hasOwnProperty(type)) { found.push({ - cat: mapping[type], + type: mappings$4.infoboxes[type], reason: type }); } @@ -1071,482 +1688,12 @@ var byInfobox_1 = byInfobox; - var patterns = { - FictionalCharacter: [/(fictional|television) characters/], - Product: [/products introduced in ./, /musical instruments/], - Organism: [/(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)$/], - // ==Person== - 'Person/Politician': [/politicians from ./, /politician stubs$/, /. (democrats|republicans|politicians)$/, /mayors of ./], - 'Person/Athlete': [/sportspeople from ./, /(footballers|cricketers|defencemen|cyclists)/], - 'Person/Actor': [/actresses/, /actors from ./, /actor stubs$/, / (actors|actresses)$/], - 'Person/Artist': [/musicians from ./, /(singers|songwriters|painters|poets)/, /novelists from ./], - // 'Person/Scientist': [(astronomers|physicists|biologists|chemists)], - Person: [/[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)/], - // ==Place== - 'Place/Structure': [/(buildings|bridges) completed in /, /airports established in ./, /(airports|bridges) in ./, /buildings and structures in ./], - 'Place/BodyOfWater': [/(rivers|lakes|tributaries) of ./], - 'Place/City': [/^cities and towns in ./, /(municipalities|settlements|villages|localities|townships) in ./], - Place: [/populated places/, /landforms of ./, /railway stations/, /parks in ./, / district$/, /geography stubs$/, /sports venue stubs$/], - // ==Creative Work== - 'CreativeWork/Album': [/[0-9]{4}.*? albums/, /^albums /, / albums$/], - 'CreativeWork/Film': [/[0-9]{4}.*? films/, / films$/, /^films /], - 'CreativeWork/TVShow': [/television series/], - 'CreativeWork/VideoGame': [/video games/], - CreativeWork: [/(film|novel|album) stubs$/, /[0-9]{4}.*? (poems|novels)/, / (poems|novels)$/], - // ==Event== - 'Event/SportsEvent': [/. league seasons$/, /^(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) ./], - Event: [/^(19|20)[0-9]{2} in /, /^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./], - // ==Orgs== - 'Organization/MusicalGroup': [/musical groups from /, /musical groups (dis)?established in [0-9]{4}/, /musical group stubs/, /. music(al)? (groups|duos|trios|quartets|quintets)$/], - 'Organization/SportsTeam': [/football clubs in ./, /(basketball|hockey|baseball|football) teams (in|established) ./], - 'Organization/Company': [/companies (established|based) in ./], - Organization: [/(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$/] - }; - var patterns_1 = patterns; - - var mapping$1 = { - 'living people': 'Person', - 'possibly living people': 'Person', - 'musical quartets': 'Organization/MusicalGroup', - 'musical duos': 'Organization/MusicalGroup', - 'musical trios': 'Organization/MusicalGroup', - // learned march 30 - 'dos games': 'CreativeWork/VideoGame', - 'virtual console games': 'CreativeWork/VideoGame', - 'mac os games': 'CreativeWork/VideoGame', - operas: 'CreativeWork', - 'american science fiction novels': 'CreativeWork', - 'amiga games': 'CreativeWork/VideoGame', - 'broadway musicals': 'CreativeWork', - 'debut novels': 'CreativeWork', - 'the twilight zone (1959 tv series) episodes': 'CreativeWork', - 'arcade games': 'CreativeWork/VideoGame', - 'united states national recording registry recordings': 'CreativeWork', - 'commodore 64 games': 'CreativeWork/VideoGame', - 'nintendo entertainment system games': 'CreativeWork/VideoGame', - 'macos games': 'CreativeWork', - 'playstation (console) games': 'CreativeWork/VideoGame', - 'virtual console games for wii u': 'CreativeWork', - 'ios games': 'CreativeWork/VideoGame', - 'super nintendo entertainment system games': 'CreativeWork/VideoGame', - 'video game sequels': 'CreativeWork/VideoGame', - 'american monthly magazines': 'CreativeWork', - 'broadway plays': 'CreativeWork', - 'game boy advance games': 'CreativeWork/VideoGame', - 'first-person shooters': 'CreativeWork/VideoGame', - 'playstation network games': 'CreativeWork/VideoGame', - 'interactive achievement award winners': 'CreativeWork', - 'linux games': 'CreativeWork/VideoGame', - 'atari st games': 'CreativeWork/VideoGame', - 'doubleday (publisher) books': 'CreativeWork', - '19th-century classical composers': 'CreativeWork', - 'film soundtracks': 'CreativeWork', - 'universal deluxe editions': 'CreativeWork', - 'playstation 2 games': 'CreativeWork/VideoGame', - 'best picture academy award winners': 'CreativeWork', - 'game boy games': 'CreativeWork/VideoGame', - 'shōnen manga': 'CreativeWork', - 'zx spectrum games': 'CreativeWork/VideoGame', - 'west end musicals': 'CreativeWork', - 'sequel novels': 'CreativeWork', - 'dystopian novels': 'CreativeWork', - 'american comic strips': 'CreativeWork', - 'american road movies': 'CreativeWork', - 'chemical elements': 'CreativeWork', - 'amstrad cpc games': 'CreativeWork', - 'mario universe games': 'CreativeWork/VideoGame', - 'neo-noir': 'CreativeWork', - 'multiplayer online games': 'CreativeWork/VideoGame', - 'mobile games': 'CreativeWork/VideoGame', - 'android (operating system) games': 'CreativeWork/VideoGame', - 'platform games': 'CreativeWork/VideoGame', - 'fiction with unreliable narrators': 'CreativeWork', - 'best drama picture golden globe winners': 'CreativeWork', - 'adventure anime and manga': 'CreativeWork', - 'albums recorded at abbey road studios': 'CreativeWork/Album', - 'xbox 360 live arcade games': 'CreativeWork/VideoGame', - 'sega genesis games': 'CreativeWork/VideoGame', - //learned events - 'years in literature': 'Event', - 'years in music': 'Event', - 'years in film': 'Event', - 'united states supreme court cases': 'Event', - 'leap years in the gregorian calendar': 'Event', - "governor general's awards": 'Event', - 'eurovision song contest by year': 'Event', - 'grammy awards ceremonies': 'Event', - 'united kingdom in the eurovision song contest': 'Event', - 'manned soyuz missions': 'Event', - 'american civil liberties union litigation': 'Event', - may: 'Event', - october: 'Event', - 'missions to the moon': 'Event', - 'nasa space probes': 'Event/SpaceMission', - 'world war ii british commando raids': 'Event', - july: 'Event', - december: 'Event', - 'wars involving the united kingdom': 'Event/MilitaryConflict', - september: 'Event', - november: 'Event', - january: 'Event', - june: 'Event', - august: 'Event', - april: 'Event', - february: 'Event', - march: 'Event', - 'conflicts in 1944': 'Event', - 'human spaceflights': 'Event/SpaceMission', - 'missions to mars': 'Event', - 'derelict space probes': 'Event/SpaceMission', - 'luna program': 'Event', - 'proxy wars': 'Event/MilitaryConflict', - 'conflicts in 1942': 'Event', - 'special air service': 'Event', - 'spacecraft launched by delta ii rockets': 'Event/SpaceMission', - 'soft landings on the moon': 'Event', - 'may observances': 'Event', - '1904 summer olympics events': 'Event/SportsEvent', - '1900 summer olympics events': 'Event/SportsEvent', - 'space shuttle missions': 'Event/SpaceMission', - 'apollo program missions': 'Event/SpaceMission', - 'spacecraft launched in 1962': 'Event/SpaceMission', - 'spacecraft launched by titan rockets': 'Event/SpaceMission', - 'first events': 'Event', - 'recent years': 'Event', - 'elections not won by the popular vote winner': 'Event', - 'conflicts in 1864': 'Event', - '1862 in the american civil war': 'Event', - 'new zealand wars': 'Event/MilitaryConflict', - 'battles between england and scotland': 'Event/MilitaryConflict', - '2002 winter olympics events': 'Event/SportsEvent', - 'spacecraft launched by atlas-centaur rockets': 'Event/SpaceMission', - 'space observatories': 'Event/SpaceMission', - 'new york (state) in the american revolution': 'Event', - 'march observances': 'Event', - 'public holidays in the united states': 'Event', - 'conflicts in 1943': 'Event/MilitaryConflict', - 'spacecraft launched in 1966': 'Event/SpaceMission', - 'last stand battles': 'Event/MilitaryConflict', - '1944 in france': 'Event', - 'battles and conflicts without fatalities': 'Event/MilitaryConflict', - 'manned missions to the moon': 'Event/SpaceMission', - 'sample return missions': 'Event/SpaceMission', - '1973 in spaceflight': 'Event/SpaceMission', - 'guerrilla wars': 'Event/MilitaryConflict', - 'retired atlantic hurricanes': 'Event/Disaster', - 'december observances': 'Event', - '20th century american trials': 'Event', - 'african-american civil rights movement (1954–68)': 'Event', - '20th-century conflicts': 'Event/MilitaryConflict', - 'presidential elections in ireland': 'Event/Election', - 'spacecraft launched in 1973': 'Event/SpaceMission', - 'october observances': 'Event', - 'spring holidays': 'Event', - 'years in aviation': 'Event', - 'national days': 'Event', - 'project gemini missions': 'Event/SpaceMission', - 'spacecraft launched in 1965': 'Event/SpaceMission', - '20th-century revolutions': 'Event/MilitaryConflict', - 'spacecraft launched in 1971': 'Event/SpaceMission', - 'fifa world cup tournaments': 'Event/SpaceMission', - 'summer holidays': 'Event', - 'sieges involving japan': 'Event/MilitaryConflict', - 'lunar flybys': 'Event/SpaceMission', - 'apollo program': 'Event', - 'revolution-based civil wars': 'Event/MilitaryConflict', - // learned organisms - 'taxa named by carl linnaeus': 'Organism', - 'ornamental trees': 'Organism', - 'birds by common name': 'Organism', - 'living fossils': 'Organism', - 'taxa named by john edward gray': 'Organism', - phelsuma: 'Organism', - multituberculates: 'Organism', - 'angiosperm orders': 'Organism', - cimolodonts: 'Organism', - 'urban animals': 'Organism', - flowers: 'Organism', - geckos: 'Organism', - herbs: 'Organism', - spices: 'Organism', - skinks: 'Organism', - 'cretaceous mammals': 'Organism', - 'commercial fish': 'Organism', - 'paleocene mammals': 'Organism', - 'bird families': 'Organism', - 'edible nuts and seeds': 'Organism', - 'invasive plant species': 'Organism', - 'leaf vegetables': 'Organism', - 'root vegetables': 'Organism', - 'corvus (genus)': 'Organism', - 'insects in culture': 'Organism', - ducks: 'Organism', - agamidae: 'Organism', - 'edge species': 'Organism', - 'tropical fruit': 'Organism', - pinus: 'Organism', - 'tropical agriculture': 'Organism', - 'indian spices': 'Organism', - 'paleocene genus extinctions': 'Organism', - 'epiphytic orchids': 'Organism', - crops: 'Organism', - 'fruits originating in asia': 'Organism', - calidris: 'Organism', - ptilodontoids: 'Organism', - 'plants and pollinators': 'Organism', - 'mammal families': 'Organism', - 'marine edible fish': 'Organism', - 'taxa named by leopold fitzinger': 'Organism', - setophaga: 'Organism', - shorebirds: 'Organism', - berries: 'Organism', - megafauna: 'Organism', - 'animal dance': 'Organism', - 'animal phyla': 'Organism', - 'american inventions': 'Organism', - entheogens: 'Organism', - 'crops originating from the americas': 'Organism', - 'non-timber forest products': 'Organism', - geese: 'Organism', - // person-musician - 'american male guitarists': 'Person/Artist', - 'american singer-songwriters': 'Person/Artist', - 'american male singers': 'Person/Artist', - 'american rock singers': 'Person/Artist', - 'american rock guitarists': 'Person/Artist', - '21st-century american singers': 'Person/Artist', - 'lead guitarists': 'Person/Artist', - 'african-american musicians': 'Person/Artist', - 'english male singers': 'Person/Artist', - 'american male singer-songwriters': 'Person/Artist', - 'american rock songwriters': 'Person/Artist', - 'american record producers': 'Person/Artist', - 'american country singer-songwriters': 'Person/Artist', - '20th-century american guitarists': 'Person/Artist', - 'english songwriters': 'Person/Artist', - '20th-century american pianists': 'Person/Artist', - 'songwriters from new york (state)': 'Person/Artist', - 'african-american singers': 'Person/Artist', - 'american blues singers': 'Person/Artist', - 'american pop singers': 'Person/Artist', - 'male guitarists': 'Person/Artist', - 'american country singers': 'Person/Artist', - 'blues hall of fame inductees': 'Person/Artist', - 'american male songwriters': 'Person/Artist', - 'songwriters from california': 'Person/Artist', - 'english rock guitarists': 'Person/Artist', - 'american folk singers': 'Person/Artist', - 'english rock singers': 'Person/Artist', - 'english singer-songwriters': 'Person/Artist', - 'african-american male rappers': 'Person/Artist', - 'african-american jazz musicians': 'Person/Artist', - '20th-century english singers': 'Person/Artist', - 'american female singer-songwriters': 'Person/Artist', - 'jewish american musicians': 'Person/Artist', - 'american blues guitarists': 'Person/Artist', - '20th-century conductors (music)': 'Person/Artist', - 'american female singers': 'Person/Artist', - 'american jazz bandleaders': 'Person/Artist', - 'american jazz pianists': 'Person/Artist', - 'american soul singers': 'Person/Artist', - 'american female guitarists': 'Person/Artist', - 'american multi-instrumentalists': 'Person/Artist', - 'american country guitarists': 'Person/Artist', - 'english record producers': 'Person/Artist', - 'songwriters from texas': 'Person/Artist', - 'american composers': 'Person/Artist', - 'singers from california': 'Person/Artist', - 'american folk guitarists': 'Person/Artist', - 'lgbt singers': 'Person/Artist', - 'american buskers': 'Person/Artist', - 'guitarists from california': 'Person/Artist', - 'feminist musicians': 'Person/Artist', - 'big band bandleaders': 'Person/Artist', - '20th-century composers': 'Person/Artist', - 'african-american songwriters': 'Person/Artist', - 'british rhythm and blues boom musicians': 'Person/Artist', - 'alternative rock singers': 'Person/Artist', - '21st-century american guitarists': 'Person/Artist', - 'american alternative rock musicians': 'Person/Artist', - 'musicians from los angeles': 'Person/Artist', - 'rhythm guitarists': 'Person/Artist', - 'american session musicians': 'Person/Artist', - 'jazz musicians from new orleans': 'Person/Artist', - 'alternative rock guitarists': 'Person/Artist', - '20th-century women musicians': 'Person/Artist', - 'male film score composers': 'Person/Artist', - 'african-american singer-songwriters': 'Person/Artist', - 'american jazz singers': 'Person/Artist', - '21st-century english singers': 'Person/Artist', - 'singers from new york city': 'Person/Artist', - 'american acoustic guitarists': 'Person/Artist', - 'musicians from new york city': 'Person/Artist', - 'slide guitarists': 'Person/Artist', - 'guitarists from texas': 'Person/Artist', - // org - 'companies listed on the new york stock exchange': 'Organization/Company', - 'football clubs in england': 'Organization/SportsTeam', - 'musical quintets': 'Organization/MusicalGroup', - 'english rock music groups': 'Organization/MusicalGroup', - 'english new wave musical groups': 'Organization/MusicalGroup', - 'jazz record labels': 'Organization/Company', - 'video game development companies': 'Organization/Company', - 'american record labels': 'Organization/Company', - 'english football league clubs': 'Organization/SportsTeam', - 'companies listed on nasdaq': 'Organization/Company', - 'african-american musical groups': 'Organization/MusicalGroup', - 'japanese brands': 'Organization', - 'video game companies of the united states': 'Organization/Company', - 'american jazz composers': 'Organization', - '21st-century american musicians': 'Organization/MusicalGroup', - 'companies formerly listed on the london stock exchange': 'Organization/Company', - 'southern football league clubs': 'Organization/SportsTeam', - 'multinational companies headquartered in the united states': 'Organization/Company', - 'scouting in the united states': 'Organization', - 'car brands': 'Organization', - 'american alternative metal musical groups': 'Organization/MusicalGroup', - 'government-owned airlines': 'Organization', - 'football clubs in scotland': 'Organization/SportsTeam', - 'baptist denominations in north america': 'Organization', - 'baptist denominations established in the 20th century': 'Organization', - 'land-grant universities and colleges': 'Organization', - 'companies listed on the tokyo stock exchange': 'Organization/Company', - 'organizations based in washington, d.c.': 'Organization', - 'premier league clubs': 'Organization/SportsTeam', - 'national basketball association teams': 'Organization/SportsTeam', - 'social democratic parties': 'Organization/PoliticalParty', - 're-established companies': 'Organization/Company', - 'video game publishers': 'Organization', - 'companies based in new york city': 'Organization/Company', - 'defunct video game companies': 'Organization/Company', - 'companies formed by merger': 'Organization/Company', - 'english pop music groups': 'Organization/MusicalGroup', - 'defunct motor vehicle manufacturers of the united states': 'Organization', - 'alternative rock groups from california': 'Organization', - 'entertainment companies based in california': 'Organization/Company', - 'art rock musical groups': 'Organization/MusicalGroup', - 'english post-punk music groups': 'Organization/MusicalGroup', - // learned people - 'year of birth unknown': 'Person', - 'fellows of the royal society': 'Person', - 'members of the privy council of the united kingdom': 'Person', - 'uk mps 2001–05': 'Person/Politician', - 'uk mps 1997–2001': 'Person/Politician', - '20th-century american novelists': 'Person/Artist', - 'american people of english descent': 'Person', - 'american male novelists': 'Person/Artist', - 'uk mps 2005–10': 'Person/Politician', - 'guggenheim fellows': 'Person', - '20th-century american writers': 'Person', - 'harvard university alumni': 'Person', - 'fellows of the american academy of arts and sciences': 'Person/Academic', - 'american military personnel of world war ii': 'Person', - '19th-century male writers': 'Person', - 'knights bachelor': 'Person', - 'american roman catholics': 'Person', - 'uk mps 1992–97': 'Person/Politician', - 'american male writers': 'Person', - 'roman catholic monarchs': 'Person/ReligiousFigure', - '20th-century women writers': 'Person', - 'labour party (uk) mps for english constituencies': 'Person/Politician', - '20th-century male writers': 'Person', - 'german male writers': 'Person', - 'knights of the garter': 'Person', - 'conservative party (uk) mps for english constituencies': 'Person/Politician', - 'presidential medal of freedom recipients': 'Person', - 'uk mps 1987–92': 'Person/Politician', - 'american film directors': 'Person/Artist', - '21st-century american novelists': 'Person/Artist', - 'uk mps 2010–15': 'Person/Politician', - 'american film producers': 'Person/Artist', - 'members of the united states national academy of sciences': 'Person/Academic', - 'commanders of the order of the british empire': 'Person', - 'democratic party members of the united states house of representatives': 'Person/Politician', - 'people educated at eton college': 'Person', - 'american male screenwriters': 'Person/Artist', - '21st-century american writers': 'Person', - 'republican party members of the united states house of representatives': 'Person/Politician', - popes: 'Person/ReligiousFigure', - 'alumni of trinity college, cambridge': 'Person', - 'french male writers': 'Person', - 'foreign members of the royal society': 'Person', - 'american science fiction writers': 'Person/Artist', - 'american people of scottish descent': 'Person', - 'american memoirists': 'Person', - 'members of the french academy of sciences': 'Person', - 'jewish american writers': 'Person', - '20th-century english novelists': 'Person/Artist', - 'uk mps 1983–87': 'Person/Politician', - 'united states army soldiers': 'Person', - 'officers of the order of the british empire': 'Person', - 'deaths from pneumonia': 'Person', - 'burials at père lachaise cemetery': 'Person', - 'deaths from cancer in california': 'Person', - 'year of birth missing (living people)': 'Person', - 'democratic party state governors of the united states': 'Person/Politician', - 'english male poets': 'Person/Artist', - 'knights of the golden fleece': 'Person', - 'american male short story writers': 'Person/Artist', - 'columbia university alumni': 'Person', - 'alumni of the university of edinburgh': 'Person', - 'american political writers': 'Person/Artist', - 'california republicans': 'Person/Politician', - 'members of the royal swedish academy of sciences': 'Person/Academic', - 'american people of russian-jewish descent': 'Person', - '20th-century american short story writers': 'Person/Academic', - 'yale university alumni': 'Person', - 'italian popes': 'Person/ReligiousFigure', - 'american atheists': 'Person', - 'people of the tudor period': 'Person', - 'tony award winners': 'Person', - 'male actors from new york city': 'Person/Actor', - 'british secretaries of state': 'Person/Politician', - 'democratic party united states senators': 'Person/Politician', - 'members of the académie française': 'Person', - 'united states army officers': 'Person', - 'persons of national historic significance (canada)': 'Person', - 'uk mps 2015–17': 'Person/Politician', - '20th-century american businesspeople': 'Person', - 'american journalists': 'Person', - 'american television producers': 'Person', - 'writers from new york city': 'Person', - 'republican party united states senators': 'Person/Politician', - 'american male journalists': 'Person', - '21st-century women writers': 'Person', - 'american male comedians': 'Person', - 'american nobel laureates': 'Person/Academic', - 'republican party state governors of the united states': 'Person/Politician', - 'princeton university alumni': 'Person', - 'university of paris alumni': 'Person', - 'american episcopalians': 'Person', - 'american women novelists': 'Person', - 'phi beta kappa members': 'Person', - '20th-century american poets': 'Person', - 'harvard university faculty': 'Person/Academic', - 'english male novelists': 'Person/Artist', - 'california democrats': 'Person/Politician', - 'uk mps 1979–83': 'Person/Politician', - 'bafta winners (people)': 'Person', - 'english male writers': 'Person', - 'uk mps 2017–': 'Person/Politician', - "members of the queen's privy council for canada": 'Person', - 'vaudeville performers': 'Person/Artist', - 'american presbyterians': 'Person' - }; - - var byPattern = function byPattern(str, patterns) { - var types = Object.keys(patterns); - - for (var i = 0; i < types.length; i++) { - var key = types[i]; - - for (var o = 0; o < patterns[key].length; o++) { - var reg = patterns[key][o]; + const byPattern = function (str, patterns) { + for (let i = 0; i < patterns.length; i += 1) { + let reg = patterns[i][0]; - if (reg.test(str) === true) { - return key; - } + if (reg.test(str) === true) { + return patterns[i][1]; } } @@ -1555,35 +1702,40 @@ var _byPattern = byPattern; - var byCategory = function byCategory(doc) { - var found = []; - var cats = doc.categories(); // clean them up a bit + const { + patterns: patterns$3, + mappings: mappings$3 + } = _dataFns; + + const byCategory = function (doc) { + let found = []; + let cats = doc.categories(); // clean them up a bit - cats = cats.map(function (cat) { + cats = cats.map(cat => { cat = cat.toLowerCase(); cat = cat.replace(/^(category|categorie|kategori): ?/i, ''); cat = cat.replace(/_/g, ' '); return cat.trim(); }); // loop through each - for (var i = 0; i < cats.length; i++) { - var cat = cats[i]; // try our 1-to-1 mapping + for (let i = 0; i < cats.length; i++) { + const category = cats[i]; // try our 1-to-1 mapping - if (mapping$1.hasOwnProperty(cat)) { + if (mappings$3.categories.hasOwnProperty(category)) { found.push({ - cat: mapping$1[cat], - reason: cat + type: mappings$3.categories[category], + reason: category }); continue; } // loop through our patterns - var match = _byPattern(cat, patterns_1); + let match = _byPattern(category, patterns$3.categories); if (match) { found.push({ - cat: match, - reason: cat + type: match, + reason: category }); } } @@ -1593,163 +1745,30 @@ var byCategory_1 = byCategory; - var patterns$1 = { - 'Person/Actor': [/actor-stub$/], - 'Person/Politician': [/(politician|mayor)-stub$/], - 'Person/Artist': [/(artist|musician|singer)-stub$/], - 'Person/Athlete': [/sport-bio-stub$/], - Person: [/-bio-stub$/], - 'CreativeWork/Book': [/-novel-stub$/], - 'CreativeWork/Film': [/-film-stub$/], - 'CreativeWork/Album': [/-album-stub$/], - 'CreativeWork/Play': [/-play-stub$/], - CreativeWork: [/-song-stub$/], - 'Event/Election': [/-election-stub$/], - 'Organization/SportsTeam': [/-sport-team-stub$/], - 'Organization/Company': [/-company-stub$/], - 'Place/BodyOfWater': [/-river-stub$/], - Place: [/-geo-stub$/] - }; - - var mapping$2 = { - //place - coord: 'Place', - 'weather box': 'Place', - //person - persondata: 'Person', - writer: 'Person', - 'ted speaker': 'Person', - taxonbar: 'Organism', - wikispecies: 'Organism', - animalia: 'Organism', - chordata: 'Organism', - cnidaria: 'Organism', - porifera: 'Organism', - epicaridea: 'Organism', - mammals: 'Organism', - phlyctaeniidae: 'Organism', - carnivora: 'Organism', - clade: 'Organism', - 'life on earth': 'Organism', - 'orders of insects': 'Organism', - coleoptera: 'Organism', - 'insects in culture': 'Organism', - 'living things in culture': 'Organism', - 'eukaryota classification': 'Organism', - // creative work - rating: 'CreativeWork', - 'certification table entry': 'CreativeWork', - 'imdb title': 'CreativeWork/Film', - 'track listing': 'CreativeWork/Album', - albumchart: 'CreativeWork', - 'film date': 'CreativeWork/Film', - music: 'CreativeWork', - // vgrelease: 'CreativeWork', - // chem: 'CreativeWork', - 'album ratings': 'CreativeWork', - tracklist: 'CreativeWork/Album', - 'episode list': 'CreativeWork/TVShow', - 'album chart': 'CreativeWork', - 'rotten-tomatoes': 'CreativeWork/Film', - singles: 'CreativeWork', - isbnt: 'CreativeWork', - singlechart: 'CreativeWork', - 'tcmdb title': 'CreativeWork', - 'mojo title': 'CreativeWork', - 'based on': 'CreativeWork', - 'amg movie': 'CreativeWork', - duration: 'CreativeWork', - // learned events - esc: 'Event', - 'year nav': 'Event', - 'year dab': 'Event', - goal: 'Event', - flagiocmedalist: 'Event', - 'm1 year in topic': 'Event', - 'year nav topic5': 'Event', - 'bc year in topic': 'Event', - flagiocathlete: 'Event', - 'election summary party with leaders': 'Event/Election', - 'year article header': 'Event', - //learned organisms - 'iucn status': 'Organism', - extinct: 'Organism', - 'fossil range': 'Organism', - internetbirdcollection: 'Organism', - vireo: 'Organism', - 'angle bracket': 'Organism', - 'wikispecies-inline': 'Organism', - 'iucn map': 'Organism', - 'xeno-canto species': 'Organism', - avibase: 'Organism', - cladex: 'Organism', - birdlife: 'Organism', - fossilrange: 'Organism', - //leaned orgs - 'composition bar': 'Organization', - 'fs player': 'Organization', - y: 'Organization', - n: 'Organization', - rws: 'Organization', - allmusic: 'Organization/MusicalGroup', - // learned people - 's-aft': 'Person', - 's-bef': 'Person', - 's-start': 'Person', - marriage: 'Person', - 'list of united states senators congress': 'Person/Politician', - 's-off': 'Person', - 's-par': 'Person', - 'internet archive author': 'Person', - 'ribbon devices': 'Person', - 's-reg': 'Person', - 'find a grave': 'Person', - 'gutenberg author': 'Person', - 's-new': 'Person', - 'other people': 'Person', - medalgold: 'Person', - 'baseball year': 'Person/Athlete', - medal: 'Person', - // 'post-nominals': 'Person', - mlby: 'Person', - 's-vac': 'Person', - 's-hou': 'Person', - 'librivox author': 'Person', - 'blp sources': 'Person', - 's-ppo': 'Person', - nbay: 'Person', - //learned places - 'us census population': 'Place', - jct: 'Place', - 'geographic location': 'Place', - // wikivoyage: 'Place', - representative: 'Place', - 'historical populations': 'Place', - 'wikivoyage-inline': 'Place', - 'election box': 'Place', - zh: 'Place', - 'wide image': 'Place' - }; + const { + patterns: patterns$2, + mappings: mappings$2 + } = _dataFns; - var byTemplate = function byTemplate(doc) { - var templates = doc.templates(); - var found = []; + const byTemplate = function (doc) { + let templates = doc.templates().map(tmpl => tmpl.json()); + let found = []; - for (var i = 0; i < templates.length; i++) { - var title = templates[i].template; + for (let i = 0; i < templates.length; i++) { + const title = templates[i].template; - if (mapping$2.hasOwnProperty(title)) { + if (mappings$2.templates.hasOwnProperty(title)) { found.push({ - cat: mapping$2[title], + type: mappings$2.templates[title], reason: title }); } else { // try regex-list on it - var type = _byPattern(title, patterns$1); + let type = _byPattern(title, patterns$2.templates); if (type) { found.push({ - cat: type, + type: type, reason: title }); } @@ -1761,220 +1780,24 @@ var byTemplate_1 = byTemplate; - var mapping$3 = { - // person - 'early life': 'Person', - 'personal life': 'Person', - career: 'Person', - 'career statistics': 'Person', - 'playing career': 'Person', - 'life and career': 'Person', - 'early life and education': 'Person', - 'film and television credits': 'Person', - filmography: 'Person', - 'selected filmography': 'Person', - // place - demographics: 'Place', - neighbourhoods: 'Place', - climate: 'Place', - 'sister cities': 'Place/City', - 'notable people': 'Place', - // creative-work - cast: 'CreativeWork/Film', - plot: 'CreativeWork', - reception: 'CreativeWork', - // 'critical reception': 'CreativeWork', - // 'critical response': 'CreativeWork', - 'track listing': 'CreativeWork/Album', - // org - founding: 'Organization', - founders: 'Organization', - 'coaching staff': 'Organization/SportsTeam', - 'head coaches': 'Organization/SportsTeam', - 'team records': 'Organization/SportsTeam', - 'band members': 'Organization/MusicalGroup', - habitat: 'Organism', - morphology: 'Organism', - phylogeny: 'Organism', - 'distribution and diversity': 'Organism', - 'distribution and habitat': 'Organism', - 'reproduction and development': 'Organism', - 'taxonomy and phylogeny': 'Organism', - // march 29th - //learned works - // production: 'CreativeWork', - charts: 'CreativeWork', - release: 'CreativeWork', - 'plot summary': 'CreativeWork', - gameplay: 'CreativeWork', - characters: 'CreativeWork', - 'box office': 'CreativeWork', - accolades: 'CreativeWork', - soundtrack: 'CreativeWork', - adaptations: 'CreativeWork', - synopsis: 'CreativeWork', - 'home media': 'CreativeWork', - 'weekly charts': 'CreativeWork', - themes: 'CreativeWork', - 'publication history': 'CreativeWork', - filming: 'CreativeWork', - 'year-end charts': 'CreativeWork', - casting: 'CreativeWork', - 'release and reception': 'CreativeWork', - 'commercial performance': 'CreativeWork', - composition: 'CreativeWork', - album: 'CreativeWork', - setting: 'CreativeWork', - 'chart positions': 'CreativeWork', - 'release history': 'CreativeWork', - 'charts and certifications': 'CreativeWork', - sequels: 'CreativeWork', - 'chart performance': 'CreativeWork', - sequel: 'CreativeWork', - recordings: 'CreativeWork', - story: 'CreativeWork', - editions: 'CreativeWork', - 'in other media': 'CreativeWork', - // learned events - aftermath: 'Event', - births: 'Event', - deaths: 'Event', - battle: 'Event', - results: 'Event', - prelude: 'Event', - may: 'Event', - june: 'Event', - march: 'Event', - december: 'Event', - october: 'Event', - july: 'Event', - august: 'Event', - april: 'Event', - november: 'Event', - february: 'Event', - september: 'Event', - january: 'Event', - incumbents: 'Event', - casualties: 'Event', - 'july to december': 'Event', - 'january to june': 'Event', - 'medal table': 'Event', - 'mission highlights': 'Event/SpaceMission', - campaign: 'Event', - // learned orgs - albums: 'Organization/MusicalGroup', - 'studio albums': 'Organization/MusicalGroup', - members: 'Organization', - athletics: 'Organization', - 'notable alumni': 'Organization', - academics: 'Organization', - campus: 'Organization', - organization: 'Organization', - 'student life': 'Organization', - rankings: 'Organization', - 'compilation albums': 'Organization/MusicalGroup', - // origins: 'Organization', - 'live albums': 'Organization/MusicalGroup', - products: 'Organization/Company', - fleet: 'Organization', - compilations: 'Organization/MusicalGroup', - research: 'Organization', - formation: 'Organization', - operations: 'Organization', - 'current squad': 'Organization/SportsTeam', - players: 'Organization', - alumni: 'Organization', - eps: 'Organization/MusicalGroup', - 'former members': 'Organization', - presidents: 'Organization', - membership: 'Organization', - 'current members': 'Organization', - // learned people - works: 'Person', - life: 'Person', - family: 'Person', - 'political career': 'Person', - 'early career': 'Person', - // ancestry: 'Person', - 'later life': 'Person', - 'early life and career': 'Person', - 'later years': 'Person', - 'death and legacy': 'Person', - work: 'Person', - novels: 'Person', - 'later career': 'Person', - international: 'Person', - 'selected works': 'Person', - writings: 'Person', - 'professional career': 'Person', - retirement: 'Person', - poetry: 'Person', - marriage: 'Person', - // films: 'Person', - 'electoral history': 'Person', - 'military career': 'Person', - 'international career': 'Person', - 'parliamentary career': 'Person', - // learned places - geography: 'Place', - '2010 census': 'Place', - '2000 census': 'Place', - economy: 'Place', - transportation: 'Place', - government: 'Place', - communities: 'Place', - transport: 'Place', - culture: 'Place', - sports: 'Place', - 'adjacent counties': 'Place', - 'major highways': 'Place', - 'notable residents': 'Place', - tourism: 'Place', - cities: 'Place', - population: 'Place', - 'unincorporated communities': 'Place', - 'international relations': 'Place', - infrastructure: 'Place', - schools: 'Place', - rail: 'Place', - 'census-designated places': 'Place', - towns: 'Place', - 'local government': 'Place', - 'points of interest': 'Place', - attractions: 'Place', - geology: 'Place', - townships: 'Place', - recreation: 'Place', - location: 'Place', - 'arts and culture': 'Place', - governance: 'Place', - 'administrative divisions': 'Place', - landmarks: 'Place', - demography: 'Place', - 'parks and recreation': 'Place', - 'public transportation': 'Place', - 'coat of arms': 'Place', - churches: 'Place' // learned things - //compatibility: 'Thing', - //compliance: 'Thing', - //'key features': 'Thing' - - }; + const { + mappings: mappings$1 + } = _dataFns; - var fromSection = function fromSection(doc) { - var found = []; - var titles = doc.sections().map(function (s) { - var str = s.title(); + const fromSection = function (doc) { + let found = []; + let titles = doc.sections().map(s => { + let str = s.title(); str = str.toLowerCase().trim(); return str; }); - for (var i = 0; i < titles.length; i++) { - var title = titles[i]; + for (let i = 0; i < titles.length; i++) { + const title = titles[i]; - if (mapping$3.hasOwnProperty(title)) { + if (mappings$1.sections.hasOwnProperty(title)) { found.push({ - cat: mapping$3[title], + type: mappings$1.sections[title], reason: title }); } @@ -1985,293 +1808,44 @@ var bySection = fromSection; - var mapping$4 = { - 'american football player': 'Person/Athlete', - 'australian politician': 'Person/Politician', - 'canadian politician': 'Person/Politician', - 'cape verde': 'Place', - 'cedar busway station': 'Place', - 'computer game': 'Product', - 'delhi metro': 'Place', - 'erie county, new york': 'Place', - 'football player': 'Person/Athlete', - 'gaelic footballer': 'Person/Athlete', - 'murder victim': 'Person', - 'new jersey': 'Place', - 'new orleans': 'Place', - 'new york City Subway': 'Place', - 'new york': 'Place', - 'new zealand': 'Place', - 'north carolina': 'Place', - 'northern ireland': 'Place', - 'season 2': 'CreativeWork', - 'season 3': 'CreativeWork', - 'season 4': 'CreativeWork', - 'season 5': 'CreativeWork', - 'sri lanka': 'Place', - 'the twilight zone': 'CreativeWork', - 'tv series': 'CreativeWork/TVShow', - 'uk parliament constituency': 'Place', - 'united kingdom': 'Place', - 'united states': 'Place', - 'video game': 'CreativeWork/VideoGame', - academic: 'Person', - actor: 'Person/Actor', - actress: 'Person/Actor', - alaska: 'Place', - album: 'CreativeWork/Album', - argentina: 'Place', - arkansas: 'Place', - artist: 'Person/Artist', - athlete: 'Person/Athlete', - australia: 'Place', - author: 'Person', - ballet: 'CreativeWork', - band: 'Organization/MusicalGroup', - barbados: 'Place', - bishop: 'Person/ReligiousFigure', - book: 'CreativeWork/Book', - boxer: 'Person/Athlete', - brazil: 'Place', - businessman: 'Person', - california: 'Place', - canada: 'Place', - candy: 'Product', - chad: 'Place', - character: 'FictionalCharacter', - chicago: 'Place', - // cocktail: 'Thing', - colombia: 'Place', - company: 'Organization/Company', - composer: 'Person/Artist', - connecticut: 'Place', - cricketer: 'Person/Athlete', - cyclist: 'Person', - diplomat: 'Person', - director: 'Person', - dominica: 'Place', - // drink: 'Thing', - drummer: 'Person', - edmonton: 'Place', - footballer: 'Person/Athlete', - france: 'Place', - // game: 'Thing', - georgia: 'Place', - group: 'Organization', - // horse: 'Thing', - india: 'Place', - israel: 'Place', - japan: 'Place', - journal: 'Organization', - journalist: 'Person', - judge: 'Person', - magazine: 'CreativeWork', - manhattan: 'Place', - michigan: 'Place', - miniseries: 'CreativeWork', - minister: 'Person', - movie: 'CreativeWork/Film', - music: 'CreativeWork', - musician: 'Person/Artist', - newspaper: 'Organization/Company', - nigeria: 'Place', - novel: 'CreativeWork/Book', - oklahoma: 'Place', - ontario: 'Place', - opera: 'CreativeWork', - painter: 'Person/Artist', - painting: 'CreativeWork', - pennsylvania: 'Place', - plant: 'Organism', - play: 'CreativeWork/Play', - poet: 'Person', - politician: 'Person/Politician', - portugal: 'Place', - priest: 'Person', - province: 'Place', - rapper: 'Person/Artist', - river: 'Place/BodyOfWater', - series: 'CreativeWork', - // ship: 'Thing', - singer: 'Person/Artist', - single: 'CreativeWork', - // software: 'Thing/Software', - song: 'CreativeWork', - soundtrack: 'CreativeWork', - spain: 'Place', - sudan: 'Place', - texas: 'Place', - // train: 'Thing', - uk: 'Place', - va: 'Place', - Virginia: 'Place', - volcano: 'Place', - washington: 'Place', - wrestler: 'Person/Athlete', - //March 29 - //learned works - ep: 'CreativeWork', - comics: 'CreativeWork', - musical: 'CreativeWork', - manga: 'CreativeWork', - 'star trek: the next generation': 'CreativeWork', - 'star trek: deep space nine': 'CreativeWork', - 'buffy the vampire slayer': 'CreativeWork', - angel: 'CreativeWork', - 'the outer limits': 'CreativeWork', - 'star trek: voyager': 'CreativeWork', - 'short story': 'CreativeWork', - seinfeld: 'CreativeWork', - 'star trek: enterprise': 'CreativeWork', - poem: 'CreativeWork', - tv: 'CreativeWork', - 'uk series': 'CreativeWork', - 'doctor who': 'CreativeWork', - 'david bowie song': 'CreativeWork', - caravaggio: 'CreativeWork', - 'the beach boys song': 'CreativeWork', - video: 'CreativeWork', - 'audio drama': 'CreativeWork', - 'babylon 5': 'CreativeWork', - 'madonna song': 'CreativeWork', - 'game show': 'CreativeWork/TVShow', - 'u.s. tv series': 'CreativeWork/TVShow', - 'uk tv series': 'CreativeWork/TVShow', - 'australian tv series': 'CreativeWork/TVShow', - 'u.s. game show': 'CreativeWork/TVShow', - //learned events - festival: 'Event', - '25 m': 'Event', - 'world war ii': 'Event', - conmebol: 'Event', - 'music festival': 'Event', - 'world war i': 'Event', - //learned orgs - am: 'Organization', - fm: 'Organization', - 'american band': 'Organization/MusicalGroup', - wehrmacht: 'Organization', - 'tv channel': 'Organization', - 'british band': 'Organization', - organization: 'Organization', - airline: 'Organization', - publisher: 'Organization', - 'australian band': 'Organization/MusicalGroup', - 'canadian band': 'Organization/MusicalGroup', - restaurant: 'Organization/Company', - brand: 'Organization', - 'uk band': 'Organization/MusicalGroup', - 'record label': 'Organization', - retailer: 'Organization/Company', - 'union army': 'Organization', - store: 'Organization/Company', - defunct: 'Organization', - 'tv network': 'Organization', - 'political party': 'Organization/PoliticalParty', - 'japanese band': 'Organization/MusicalGroup', - 'department store': 'Organization', - 'swedish band': 'Organization/MusicalGroup', - //learned people - 'american football': 'Person', - 'ice hockey': 'Person', - soccer: 'Person', - 'rugby league': 'Person', - 'rugby union': 'Person', - 'field hockey': 'Person', - tennis: 'Person', - writer: 'Person', - vc: 'Person', - 'racing driver': 'Person', - 'british politician': 'Person/Politician', - golfer: 'Person/Athlete', - historian: 'Person/Academic', - architect: 'Person', - comedian: 'Person', - cartoonist: 'Person/Artist', - governor: 'Person/Politician', - 'british army officer': 'Person', - general: 'Person', - broadcaster: 'Person', - engineer: 'Person', - philosopher: 'Person/Academic', - mathematician: 'Person/Academic', - novelist: 'Person/Artist', - physician: 'Person', - swimmer: 'Person/Athlete', - soldier: 'Person', - photographer: 'Person/Artist', - 'royal navy officer': 'Person', - producer: 'Person', - theologian: 'Person/ReligiousFigure', - lawyer: 'Person', - playwright: 'Person/Artist', - activist: 'Person', - inventor: 'Person', - astronomer: 'Person/Academic', - 'irish politician': 'Person/Politician', - economist: 'Person/Academic', - mayor: 'Person/Politician', - moon: 'Place/SpaceLocation', - country: 'Place/Country', - // learned things - // 'programming language': 'Thing/Software', - genus: 'Organism', - // missile: 'Thing', - 'board game': 'Product', - // 'new york city subway car': 'Thing', - // instrument: 'Thing', - // food: 'Thing', - fish: 'Organism', - bird: 'Organism', - // 'operating system': 'Thing/Software', - // 'file format': 'Thing', - // 'computer virus': 'Thing/Software', - 'card game': 'Product', - automobile: 'Product' // rocket: 'Thing' - // website: 'Thing/Software' - - }; - - var patterns$2 = { - 'CreativeWork/Film': [/ \([0-9]{4} film\)$/], - CreativeWork: [/ \((.*? )song\)$/], - Event: [/ \((19|20)[0-9]{2}\)$/] - }; - - var paren = /\((.*)\)$/; + const { + patterns: patterns$1, + mappings + } = _dataFns; + const paren$1 = /\((.*)\)$/; - var byTitle = function byTitle(doc) { - var title = doc.title(); + const byTitle = function (doc) { + let title = doc.title(); if (!title) { return []; } //look at parentheses like 'Tornado (film)' - var m = title.match(paren); + let m = title.match(paren$1); if (!m) { return []; } - var inside = m[1] || ''; + let inside = m[1] || ''; inside = inside.toLowerCase(); inside = inside.replace(/_/g, ' '); inside = inside.trim(); //look at known parentheses - if (mapping$4.hasOwnProperty(inside)) { + if (mappings.titles.hasOwnProperty(inside)) { return [{ - cat: mapping$4[inside], + type: mappings.titles[inside], reason: inside }]; } // look at regex - var match = _byPattern(title, patterns$2); + let match = _byPattern(title, patterns$1.titles); if (match) { return [{ - cat: match, + type: match, reason: title }]; } @@ -2281,99 +1855,25 @@ var byTitle_1 = byTitle; - var byDescription = function byDescription(doc) { - var tmpl = doc.template('short description'); - - if (tmpl && tmpl.description) { - var desc = tmpl.description; // person - - if (desc.match(/(actor|actress)/)) { - return [{ - cat: 'Person/Actor', - reason: desc - }]; - } - - if (desc.match(/(artist|singer|musician|painter|poet|rapper|drummer)/)) { - return [{ - cat: 'Person/Artist', - reason: desc - }]; - } - - if (desc.match(/(keyboard|guitar|bass) player/)) { - return [{ - cat: 'Person/Artist', - reason: desc - }]; - } - - if (desc.match(/(politician|member of parliament)/)) { - return [{ - cat: 'Person/Politician', - reason: desc - }]; - } - - if (desc.match(/(hockey|soccer|backetball|football) player/)) { - return [{ - cat: 'Person/Athlete', - reason: desc - }]; - } - - if (desc.match(/(writer|celebrity|activist)/)) { - return [{ - cat: 'Person', - reason: desc - }]; - } // organizations - - - if (desc.match(/(basketball|hockey|soccer|football|sports) team/)) { - return [{ - cat: 'Organization/SportsTeam', - reason: desc - }]; - } - - if (desc.match(/(company|subsidary)/)) { - return [{ - cat: 'Organization/Company', - reason: desc - }]; - } - - if (desc.match(/political party/)) { - return [{ - cat: 'Organization/PoliticalParty', - reason: desc - }]; - } + const { + patterns + } = _dataFns; - if (desc.match(/(charity|organization|ngo)/)) { - return [{ - cat: 'Organization', - reason: desc - }]; - } // creativeworks + const byDescription = function (doc) { + let tmpl = doc.template('short description'); + if (tmpl && tmpl.description) { + let desc = tmpl.description || ''; + desc = desc.toLowerCase(); // loop through our patterns - if (desc.match(/television series/)) { - return [{ - cat: 'CreativeWork/TVShow', - reason: desc - }]; - } + let match = _byPattern(desc, patterns.descriptions); - if (desc.match(/[0-9]{4} film/)) { + if (match) { return [{ - cat: 'CreativeWork/Film', + type: match, reason: desc }]; } - - console.log(desc); } return []; @@ -2381,26 +1881,26 @@ var byDescription_1 = byDescription; - var skip = { + const skip = { disambiguation: true, surname: true, name: true, 'given name': true }; - var paren$1 = /\((.*)\)$/; - var listOf = /^list of ./; - var disambig = /\(disambiguation\)/; + const paren = /\((.*)\)$/; + const listOf = /^list of ./; + const disambig = /\(disambiguation\)/; - var skipPage = function skipPage(doc) { - var title = doc.title() || ''; //look at parentheses like 'Tornado (film)' + const skipPage = function (doc) { + let title = doc.title() || ''; //look at parentheses like 'Tornado (film)' - var m = title.match(paren$1); + let m = title.match(paren); if (!m) { return null; } - var inside = m[1] || ''; + let inside = m[1] || ''; inside = inside.toLowerCase(); inside = inside.replace(/_/g, ' '); inside = inside.trim(); //look at known parentheses @@ -2423,85 +1923,14 @@ var _skip = skipPage; - var tree = { - Person: { - Athlete: true, - Artist: true, - Politician: true, - Actor: true, - Academic: true, - ReligiousFigure: true - }, - Place: { - Country: true, - City: true, - Structure: true, - BodyOfWater: true, - SpaceLocation: true - }, - Organization: { - Company: true, - SportsTeam: true, - MusicalGroup: true, - PoliticalParty: true - }, - CreativeWork: { - Film: true, - TVShow: true, - Play: true, - Book: true, - Album: true, - VideoGame: true - }, - Event: { - Election: true, - Disaster: true, - SportsEvent: true, - MilitaryConflict: true, - SpaceMission: true - }, - Product: true, - Organism: true, - MedicalCondition: true, - Concept: true, - FictionalCharacter: true - }; - - var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - - var types = {}; - - var doit = function doit(type, obj) { - Object.keys(obj).forEach(function (k) { - var tmp = k; - - if (type) { - tmp = type + '/' + k; - } - - types[tmp] = true; - - if (isObject(tree[k])) { - doit(tmp, tree[k]); - } - }); - }; - - doit('', tree); - var _types = types; - - var topk = function topk(arr) { - var obj = {}; - arr.forEach(function (a) { + const topk = function (arr) { + let obj = {}; + arr.forEach(a => { obj[a] = obj[a] || 0; obj[a] += 1; }); - var res = Object.keys(obj).map(function (k) { - return [k, obj[k]]; - }); - res = res.sort(function (a, b) { + let res = Object.keys(obj).map(k => [k, obj[k]]); + res = res.sort((a, b) => { if (a[1] > b[1]) { return -1; } else if (a[1] < b[1]) { @@ -2513,45 +1942,37 @@ return res; }; - var parse = function parse(cat) { - var split = cat.split(/\//); + const parse = function (cat) { + let split = cat.split(/\//); return { - root: split[0], - child: split[1] + root: split[1], + child: split[2] }; }; - var getScore = function getScore(detail) { - var cats = []; - Object.keys(detail).forEach(function (k) { - detail[k].forEach(function (obj) { - if (!_types[obj.cat]) { - console.error('Missing: ' + obj.cat); - } - - cats.push(parse(obj.cat)); + const getScore = function (detail) { + let types = []; + Object.keys(detail).forEach(k => { + detail[k].forEach(obj => { + types.push(parse(obj.type)); }); }); // find top parent - var roots = cats.map(function (obj) { - return obj.root; - }).filter(function (s) { - return s; - }); - var tops = topk(roots); - var top = tops[0]; + let roots = types.map(obj => obj.root).filter(s => s); + let tops = topk(roots); + let top = tops[0]; if (!top) { return { detail: detail, - category: null, + type: null, score: 0 }; } - var root = top[0]; // score as % of results + let root = top[0]; // score as % of results - var score = top[1] / cats.length; // punish low counts + let score = top[1] / types.length; // punish low counts if (top[1] === 1) { score *= 0.75; @@ -2575,17 +1996,13 @@ } // find 2nd level - var children = cats.filter(function (o) { - return o.root === root && o.child; - }).map(function (obj) { - return obj.child; - }); - var topKids = topk(children); + let children = types.filter(o => o.root === root && o.child).map(obj => obj.child); + let topKids = topk(children); top = topKids[0]; - var category = root; + let type = root; if (top) { - category = "".concat(root, "/").concat(top[0]); // punish for any conflicting children + type = `${root}/${top[0]}`; // punish for any conflicting children if (topKids.length > 1) { score *= 0.7; @@ -2599,19 +2016,19 @@ return { root: root, - category: category, + type: type, score: score, - detail: detail + details: detail }; }; var score = getScore; - var plugin = function plugin(models) { - // add a new method to main class + const plugin = function (models) { + //add a new method to main class models.Doc.prototype.classify = function (options) { - var doc = this; - var res = {}; // dont classify these + let doc = this; + let res = {}; //dont classify these if (_skip(doc)) { return score(res); diff --git a/plugins/classify/builds/wtf-plugin-classify.js.map b/plugins/classify/builds/wtf-plugin-classify.js.map index 52e88710..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":["../src/byInfobox/mapping.js","../src/byInfobox/index.js","../src/byCategory/patterns.js","../src/byCategory/mapping.js","../src/_byPattern.js","../src/byCategory/index.js","../src/byTemplate/patterns.js","../src/byTemplate/mapping.js","../src/byTemplate/index.js","../src/bySection/mapping.js","../src/bySection/index.js","../src/byTitle/mapping.js","../src/byTitle/patterns.js","../src/byTitle/index.js","../src/byDescription/index.js","../src/_skip/index.js","../src/_types.js","../src/score.js","../src/index.js"],"sourcesContent":["module.exports = {\r\n actor: 'Person/Actor', //1\r\n adult_biography: 'Person', //2\r\n afl_biography: 'Person/Athlete', //7\r\n aircraft_accident: 'Event/Disaster', //2\r\n //aircraft_begin: 'Thing', //24\r\n //aircraft_engine: 'Thing', //2\r\n //aircraft_type: 'Thing', //21\r\n airline: 'Organization', //9\r\n airliner_accident: 'Event/Disaster', //3\r\n airport: 'Place/Structure', //20\r\n album: 'CreativeWork/Album', //466\r\n alpine_ski_racer: 'Person/Athlete', //2\r\n amusement_park: 'Place', //4\r\n ancient_site: 'Place', //14\r\n archbishop: 'Person/ReligiousFigure', //1\r\n architect: 'Person', //9\r\n // artifact: 'Thing', //1\r\n artist: 'Person/Artist', //42\r\n artwork: 'CreativeWork', //14\r\n athlete: 'Person/Athlete', //6\r\n athletics_championships: 'Event/SportsEvent', //6\r\n australian_place: 'Place', //18\r\n automobile: 'Product', //8\r\n badminton_event: 'Event/SportsEvent', //2\r\n baseball_biography: 'Person/Athlete', //64\r\n basketball_biography: 'Person/Athlete', //17\r\n basketball_club: 'Organization/SportsTeam', //17\r\n pro_hockey_team: 'Organization/SportsTeam', //\r\n beauty_pageant: 'Event', //4\r\n beverage: 'Product', //7\r\n body_of_water: 'Place/BodyOfWater', //7\r\n book: 'CreativeWork/Book', //130\r\n book_series: 'CreativeWork', //4\r\n boxer: 'Person/Athlete', //5\r\n boxingmatch: 'Event/SportsEvent', //2\r\n bridge: 'Place/Structure', //5\r\n broadcast: 'CreativeWork', //10\r\n broadcasting_network: 'Organization', //4\r\n building: 'Place/Structure', //29\r\n canadianmp: 'Person/Politician', //18\r\n casino: 'Place', //1\r\n cbb_team: 'Organization', //1\r\n cemetery: 'Place', //3\r\n cfl_player: 'Person/Athlete', //2\r\n character: 'FictionalCharacter', //12\r\n chef: 'Person', //6\r\n chess_player: 'Person', //2\r\n choir: 'Organization', //1\r\n christian_leader: 'Person', //17\r\n church: 'Place', //10\r\n civil_conflict: 'Event', //3\r\n college: 'Organization', //2\r\n college_coach: 'Person', //18\r\n college_football_player: 'Person', //7\r\n college_ice_hockey_team: 'Organization/SportsTeam', //1\r\n college_soccer_team: 'Organization/SportsTeam', //3\r\n comedian: 'Person', //3\r\n comic_book_title: 'CreativeWork', //9\r\n comic_strip: 'CreativeWork', //1\r\n comics_character: 'FictionalCharacter', //13\r\n comics_creator: 'Person', //10\r\n company: 'Organization', //150\r\n // computer_hardware_bus: 'Thing', //1\r\n // computer_virus: 'Thing/Software', //1\r\n concert_tour: 'Event', //8\r\n court_case: 'Event', //8\r\n cpu: 'Product', //1\r\n cricket_ground: 'Place', //2\r\n cricket_team: 'Organization/SportsTeam', //1\r\n cricketer: 'Person/Athlete', //43\r\n criminal: 'Person', //8\r\n cyclist: 'Person/Athlete', //8\r\n dam: 'Place', //4\r\n doctor_who_episode: 'CreativeWork', //3\r\n 'dot-com_company': 'Organization', //3\r\n earthquake: 'Event/Disaster', //2\r\n economist: 'Person/Academic', //4\r\n election: 'Event/Election', //19\r\n electric_vehicle: 'Product', //1\r\n engineer: 'Person', //2\r\n // enzyme: 'Thing', //19\r\n event: 'Event', //2\r\n fashion_designer: 'Person', //2\r\n feature_on_mars: 'Place', //1\r\n field_hockey_player: 'Person/Athlete', //8\r\n figure_skater: 'Person/Athlete', //3\r\n fila_wrestling_event: 'Event/SportsEvent', //1\r\n // file_format: 'Thing', //3\r\n film: 'CreativeWork/Film', //183\r\n film_awards: 'Organization', //1\r\n film_festival: 'Organization', //2\r\n //// food: 'Thing', //3\r\n football_biography: 'Person', //324\r\n football_club: 'Organization/SportsTeam', //42\r\n football_club_season: 'Event/SportsEvent', //13\r\n football_country_season: 'Event/SportsEvent', //5\r\n football_league: 'Organization', //4\r\n football_league_season: 'Event/SportsEvent', //17\r\n football_match: 'Event/SportsEvent', //10\r\n football_tournament_season: 'Event/SportsEvent', //4\r\n former_country: 'Place', //14\r\n former_subdivision: 'Place', //3\r\n french_commune: 'Place', //6\r\n gaa_club: 'Organization', //2\r\n gaa_player: 'Person/Athlete', //15\r\n // game: 'Thing', //3\r\n // gene: 'Thing', //3\r\n german_location: 'Place', //6\r\n golf_facility: 'Place', //2\r\n golfer: 'Person/Athlete', //9\r\n government_agency: 'Organization', //7\r\n government_cabinet: 'Organization', //7\r\n governor: 'Person/Politician', //5\r\n gpu: 'Product', //1\r\n gridiron_football_person: 'Person', //11\r\n gymnast: 'Person/Athlete', //2\r\n handball_biography: 'Person', //8\r\n hindu_leader: 'Person', //1\r\n historic_site: 'Place', //3\r\n historical_era: 'Event', //1\r\n holiday: 'Event', //5\r\n hollywood_cartoon: 'CreativeWork', //4\r\n horseraces: 'Event', //8\r\n horseracing_personality: 'Person', //2\r\n hospital: 'Place', //14\r\n hotel: 'Place', //3\r\n hurricane: 'Event/Disaster', //1\r\n ice_hockey_player: 'Person/Athlete', //15\r\n indian_politician: 'Person/Politician', //1\r\n individual_snooker_tournament: 'Event', //6\r\n // information_appliance: 'Thing', //6\r\n // instrument: 'Thing', //3\r\n islands: 'Place', //32\r\n israel_village: 'Place', //2\r\n italian_comune: 'Place', //1\r\n journal: 'Organization', //23\r\n judge: 'Person', //8\r\n // judo_technique: 'Thing', //2\r\n laboratory: 'Organization', //1\r\n lacrosse_player: 'Person/Athlete', //6\r\n lake: 'Place/BodyOfWater', //10\r\n launch_pad: 'Place', //1\r\n law_enforcement_agency: 'Organization', //1\r\n legislative_term: 'Event', //1\r\n legislature: 'Organization', //3\r\n library: 'Organization', //9\r\n // ligament: 'Thing', //1\r\n little_league_world_series: 'Event/SportsEvent', //5\r\n magazine: 'CreativeWork', //15\r\n // martial_art: 'Thing', //2\r\n martial_artist: 'Person/Athlete', //13\r\n mass_murderer: 'Person', //1\r\n // medical_condition: 'Thing', //31\r\n medical_person: 'Person', //5\r\n military_conflict: 'Event/MilitaryConflict', //27\r\n military_memorial: 'Place', //2\r\n military_person: 'Person', //60\r\n military_structure: 'Place', //15\r\n military_unit: 'Organization', //33\r\n // mineral: 'Thing', //5\r\n minister: 'Person/ReligiousFigure', //3\r\n mlb_player: 'Person/Athlete', //8\r\n mobile_phone: 'Product', //3\r\n model: 'Person', //2\r\n monarch: 'Person', //23\r\n monument: 'Place', //1\r\n motorcycle: 'Product', //5\r\n mountain: 'Place', //59\r\n mountain_pass: 'Place', //1\r\n mountain_range: 'Place', //13\r\n mp: 'Person/Politician', //13\r\n museum: 'Place', //13\r\n music_festival: 'Event', //5\r\n // music_genre: 'Thing', //5\r\n musical: 'CreativeWork', //3\r\n musical_artist: 'Organization/MusicalGroup', //226\r\n musical_composition: 'CreativeWork', //7\r\n nascar_driver: 'Person', //3\r\n national_military: 'Organization', //4\r\n nba_biography: 'Person/Athlete', //4\r\n nba_season: 'Event/SportsEvent', //6\r\n ncaa_baseball_conference_tournament: 'Event/SportsEvent', //6\r\n ncaa_football_school: 'Organization', //4\r\n ncaa_football_single_game: 'Event/SportsEvent', //1\r\n ncaa_team_season: 'Event/SportsEvent', //17\r\n neighborhood_portland_or: 'Place', //3\r\n // network: 'Thing', //3\r\n // networking_protocol: 'Thing', //1\r\n newspaper: 'Organization', //18\r\n nfl_biography: 'Person/Athlete', //7\r\n nfl_draft: 'Event', //2\r\n nfl_player: 'Person/Athlete', //36\r\n nfl_season: 'Event/SportsEvent', //27\r\n nfl_single_game: 'Event/SportsEvent', //1\r\n nobility: 'Organization', //5\r\n non_test_cricket_team: 'Organization/SportsTeam', //4\r\n 'non-profit': 'Organization/SportsTeam', //6\r\n officeholder: 'Person/Politician', //133\r\n oil_field: 'Place', //1\r\n opera: 'CreativeWork', //3\r\n organization: 'Organization', //41\r\n // os: 'Thing', //1\r\n painting: 'CreativeWork', //2\r\n pandemic: 'Event/Disaster', //2\r\n park: 'Place', //15\r\n pba_draft: 'Event', //3\r\n person: 'Person', //441\r\n philosopher: 'Person', //16\r\n police_officer: 'Person', //2\r\n political_party: 'Organization/PoliticalParty', //25\r\n politician: 'Person/Politician', //34\r\n 'politician_(general)': 'Person/Politician', //2\r\n power_station: 'Place/Structure', //3\r\n // prepared_food: 'Thing', //12\r\n presenter: 'Person', //4\r\n president: 'Person/Politician', //1\r\n prison: 'Place', //4\r\n professional_wrestler: 'Person/Athlete', //9\r\n // programming_language: 'Thing', //6\r\n // protein_family: 'Thing', //2\r\n province_or_territory_of_canada: 'Place', //1\r\n public_transit: 'Organization', //1\r\n publisher: 'Organization', //3\r\n racing_driver: 'Person', //4\r\n radio_show: 'CreativeWork', //3\r\n radio_station: 'Organization', //25\r\n rail_line: 'Organization', //7\r\n rail_service: 'Organization', //6\r\n reality_music_competition: 'Event', //1\r\n record_label: 'Organization', //7\r\n recurring_event: 'Event', //3\r\n religious_biography: 'Person', //9\r\n religious_building: 'Place/Structure', //9\r\n // religious_text: 'Thing', //1\r\n river: 'Place/BodyOfWater', //16\r\n road: 'Place', //41\r\n road_small: 'Place', //14\r\n // rocket: 'Thing', //3\r\n roman_emperor: 'Person/Politician', //2\r\n royalty: 'Person', //77\r\n rugby_biography: 'Person/Athlete', //12\r\n rugby_league_biography: 'Person/Athlete', //24\r\n rugby_league_club: 'Organization/SportsTeam', //5\r\n rugby_league_representative_team: 'Organization/SportsTeam', //1\r\n rugby_team: 'Organization/SportsTeam', //11\r\n russian_inhabited_locality: 'Place', //1\r\n russian_town: 'Place', //4\r\n 'russian_urban-type_settlement': 'Place', //2\r\n saint: 'Person/ReligiousFigure', //14\r\n scholar: 'Person/Academic', //2\r\n school: 'Place', //95\r\n school_district: 'Organization', //10\r\n scientist: 'Person/Academic', //84\r\n scotland_council_area: 'Place', //2\r\n sea: 'Place/BodyOfWater', //3\r\n settlement: 'Place', //642\r\n // sheep_breed: 'Thing', //1\r\n // ship_begin: 'Thing', //84\r\n // ship_career: 'Thing', //141\r\n // ship_characteristics: 'Thing', //86\r\n // ship_class_overview: 'Thing', //25\r\n // ship_image: 'Thing', //84\r\n shopping_mall: 'Place', //9\r\n skier: 'Person/Athlete', //14\r\n soap_character: 'FictionalCharacter', //126\r\n // software: 'Thing/Software', //25\r\n // software_license: 'Thing', //1\r\n song: 'CreativeWork', //30\r\n song_contest: 'Event', //3\r\n song_contest_entry: 'CreativeWork', //12\r\n south_african_subplace_2011: 'Place', //1\r\n spaceflight: 'Event/SpaceMission', //17\r\n 'spaceflight/dock': 'Event/SpaceMission', //17\r\n 'spaceflight/ip': 'Event/SpaceMission', //19\r\n // sport: 'Thing', //2\r\n sport_governing_body: 'Organization', //3\r\n sports_league: 'Organization', //7\r\n sports_season: 'Event/SportsEvent', //3\r\n sportsperson: 'Person', //45\r\n squash_player: 'Person/Athlete', //1\r\n stadium: 'Place/Structure', //14\r\n state: 'Place', //1\r\n state_representative: 'Person/Politician', //10\r\n state_senator: 'Person/Politician', //5\r\n station: 'Place', //40\r\n street: 'Place', //1\r\n // subdivision_type: 'Thing', //1\r\n summit: 'Event', //2\r\n swimmer: 'Person/Athlete', //14\r\n swiss_town: 'Place', //36\r\n // symptom: 'Thing', //2\r\n synthesizer: 'Product', //1\r\n television: 'Product', //94\r\n television_channel: 'Organization', //1\r\n television_episode: 'CreativeWork', //26\r\n television_season: 'CreativeWork', //18\r\n temple: 'Place', //2\r\n tennis_biography: 'Person/Athlete', //5\r\n tennis_event: 'Event/SportsEvent', //3\r\n tennis_grand_slam_events: 'Event/SportsEvent', //2\r\n // thoroughbred_racehorse: 'Thing', //7\r\n town_at: 'Place', //1\r\n // train: 'Thing', //2\r\n treaty: 'CreativeWork', //2\r\n tv_channel: 'Organization', //12\r\n 'u.s._cabinet': 'Organization', //3\r\n 'u.s._legislation': 'Organization', //3\r\n 'u.s._metropolitan_area': 'Place', //1\r\n 'u.s._state': 'Place', //3\r\n uk_constituency: 'Place', //1\r\n uk_disused_station: 'Place', //8\r\n uk_legislation: 'Organization', //6\r\n uk_place: 'Place', //22\r\n uk_school: 'Place', //26\r\n unesco_world_heritage_site: 'Place', //3\r\n // united_states_federal_proposed_legislation: 'Thing', //1\r\n university: 'Organization', //44\r\n university_of_notre_dame_residence_hall: 'Place', //1\r\n v8_supercar_team: 'Organization', //3\r\n venue: 'Place', //6\r\n video_game: 'CreativeWork', //81\r\n volleyball_biography: 'Person/Athlete', //1\r\n volleyball_player: 'Person/Athlete', //4\r\n waterfall: 'Place', //4\r\n // weapon: 'Thing', //15\r\n // website: 'Thing/Software', //5\r\n windmill: 'Place', //1\r\n wrc_driver: 'Person', //1\r\n wrestling_event: 'Event/SportsEvent', //8\r\n writer: 'Person', //69\r\n // writing_system: 'Thing', //4\r\n zoo: 'Place', //3\r\n speciesbox: 'Organism',\r\n 'automatic taxobox': 'Organism',\r\n 'medical condition (new)': 'MedicalCondition',\r\n 'medical condition': 'MedicalCondition',\r\n constellation: 'Place/SpaceLocation',\r\n planet: 'Place/SpaceLocation',\r\n 'mythical creature': 'FictionalCharacter',\r\n dogbreed: 'Organism',\r\n 'dog breed': 'Organism',\r\n 'cat breed': 'Organism',\r\n 'grape variety': 'Organism',\r\n anthem: 'CreativeWork',\r\n 'football tournament': 'Event/SportsEvent',\r\n 'former monarchy': 'Organization',\r\n 'criminal organization': 'Organization',\r\n 'card game': 'Product',\r\n computer: 'Product',\r\n 'laboratory equipment': 'Product',\r\n 'baseball team': 'Organization/SportsTeam',\r\n\r\n // march 29th\r\n 'video game': 'CreativeWork/VideoGame',\r\n 'television episode': 'CreativeWork',\r\n 'comic book title': 'CreativeWork',\r\n 'song contest entry': 'CreativeWork',\r\n 'short story': 'CreativeWork',\r\n play: 'CreativeWork/Play',\r\n 'hollywood cartoon': 'CreativeWork',\r\n 'radio show': 'CreativeWork',\r\n 'simpsons episode': 'CreativeWork',\r\n 'musical composition': 'CreativeWork',\r\n 'book series': 'CreativeWork',\r\n 'comic strip': 'CreativeWork',\r\n 'd&d creature': 'FictionalCharacter',\r\n 'television season': 'CreativeWork',\r\n 'comics organization': 'CreativeWork',\r\n 'doctor who episode': 'CreativeWork',\r\n 'animanga/other': 'CreativeWork',\r\n 'graphic novel': 'CreativeWork',\r\n rpg: 'CreativeWork',\r\n 'vg character': 'FictionalCharacter',\r\n 'big finish': 'CreativeWork',\r\n 'vg series': 'CreativeWork',\r\n 'name module': 'CreativeWork',\r\n 'comics story arc': 'CreativeWork',\r\n 'animanga character': 'FictionalCharacter',\r\n 'video game series': 'CreativeWork',\r\n // 'fictional location': 'Thing',\r\n 'futurama episode': 'CreativeWork',\r\n 'video game character': 'FictionalCharacter',\r\n 'comics character and title': 'CreativeWork',\r\n 'comics meta series': 'CreativeWork',\r\n webcomic: 'CreativeWork',\r\n 'the goodies episode': 'CreativeWork',\r\n 'audio drama': 'CreativeWork',\r\n // 'comics species': 'Thing',\r\n 'sw comics': 'CreativeWork',\r\n 'media franchise': 'CreativeWork',\r\n 'folk tale': 'CreativeWork',\r\n 'doctor who character': 'FictionalCharacter',\r\n 'tolkien character': 'FictionalCharacter',\r\n\r\n // learned events\r\n 'military conflict': 'Event/MilitaryConflict',\r\n 'olympic event': 'Event/SportsEvent',\r\n 'grand prix race report': 'Event',\r\n 'recurring event': 'Event',\r\n 'music festival': 'Event',\r\n 'international football competition': 'Event/SportsEvent',\r\n 'football league season': 'Event',\r\n 'scotus case': 'Event',\r\n 'wrestling event': 'Event/SportsEvent',\r\n 'court case': 'Event',\r\n 'hockey team player': 'Person/Athlete',\r\n 'sports season': 'Event/SportsEvent',\r\n 'civil conflict': 'Event/MilitaryConflict',\r\n 'concert tour': 'Event',\r\n 'cycling race report': 'Event/SportsEvent',\r\n 'ncaa team season': 'Event/SportsEvent',\r\n 'cricket tournament': 'Event/SportsEvent',\r\n 'international labour organization convention': 'Event',\r\n 'song contest': 'Event',\r\n 'football match': 'Event/SportsEvent',\r\n 'australian year': 'Event',\r\n 'world series expanded': 'Event/SportsEvent',\r\n 'civilian attack': 'Event/MilitaryConflict',\r\n 'mma event': 'Event/SportsEvent',\r\n 'snooker player': 'Person',\r\n 'airliner accident': 'Event/Disaster',\r\n 'football tournament': 'Event/SportsEvent',\r\n 'individual darts tournament': 'Event',\r\n 'nfl season': 'Event/SportsEvent',\r\n 'beauty pageant': 'Event',\r\n 'nfl draft': 'Event/SportsEvent',\r\n 'athletics championships': 'Event/SportsEvent',\r\n 'historical event': 'Event',\r\n 'grand prix motorcycle race report': 'Event',\r\n 'football club season': 'Event/SportsEvent',\r\n 'international handball competition': 'Event',\r\n 'coa case': 'Event',\r\n 'individual snooker tournament': 'Event',\r\n 'canadian football game': 'Event/SportsEvent',\r\n 'australian rules football season': 'Event/SportsEvent',\r\n 'football tournament season': 'Event/SportsEvent',\r\n 'esc national year': 'Event',\r\n indy500: 'Event',\r\n 'international ice hockey competition': 'Event/SportsEvent',\r\n 'cricket tour': 'Event/SportsEvent',\r\n 'national political convention': 'Event',\r\n referendum: 'Event',\r\n\r\n // learned organization\r\n 'football club': 'Organization/SportsTeam',\r\n 'radio station': 'Organization',\r\n 'military unit': 'Organization',\r\n 'political party': 'Organization/PoliticalParty',\r\n 'government agency': 'Organization',\r\n 'rail line': 'Organization',\r\n 'record label': 'Organization',\r\n 'school district': 'Organization',\r\n 'tv channel': 'Organization',\r\n 'sports league': 'Organization',\r\n 'football league': 'Organization',\r\n worldscouting: 'Organization',\r\n 'rugby team': 'Organization/SportsTeam',\r\n 'sg rail': 'Organization',\r\n 'law enforcement agency': 'Organization',\r\n 'uk legislation': 'Organization',\r\n 'public transit': 'Organization',\r\n 'us university ranking': 'Organization',\r\n 'television channel': 'Organization',\r\n 'national football team': 'Organization/SportsTeam',\r\n 'bus transit': 'Organization',\r\n union: 'Organization',\r\n 'broadcasting network': 'Organization',\r\n 'christian denomination': 'Organization',\r\n 'film awards': 'Organization',\r\n 'gaa club': 'Organization',\r\n fraternity: 'Organization',\r\n rail: 'Organization',\r\n 'rail service': 'Organization',\r\n 'national military': 'Organization',\r\n 'sport governing body': 'Organization',\r\n 'basketball club': 'Organization/SportsTeam',\r\n 'hockey team': 'Organization/SportsTeam',\r\n 'political party/seats': 'Organization',\r\n 'rugby league club': 'Organization/SportsTeam',\r\n 'athletic conference': 'Organization',\r\n 'football club infobox': 'Organization/SportsTeam',\r\n 'film festival': 'Organization',\r\n 'medical condition (new)': 'Organization',\r\n brand: 'Organization/MusicalGroup',\r\n 'cricket team': 'Organization/SportsTeam',\r\n 'dot-com company': 'Organization',\r\n 'india university ranking': 'Organization',\r\n 'uk university rankings': 'Organization',\r\n 'government cabinet': 'Organization',\r\n\r\n //learned organisms\r\n taxobox: 'Organism',\r\n subspeciesbox: 'Organism',\r\n mycomorphbox: 'Organism',\r\n 'paraphyletic group': 'Organism',\r\n 'nutritional value': 'Organism',\r\n infraspeciesbox: 'Organism',\r\n disease: 'MedicalCondition',\r\n ecoregion: 'Place',\r\n horse: 'Organism',\r\n haplogroup: 'Organism',\r\n bird: 'Organism',\r\n 'bird/population': 'Organism',\r\n 'medical resources': 'Organism',\r\n // 'college mascot': 'Thing',\r\n galaxy: 'Place/SpaceLocation',\r\n 'nc name': 'Organism',\r\n 'pig breed': 'Organism',\r\n 'botanical product': 'Organism',\r\n 'cattle breed': 'Organism',\r\n bishop: 'Person/ReligiousFigure',\r\n 'horse breed': 'Organism',\r\n 'poultry breed': 'Organism',\r\n\r\n // learned people\r\n 'football biography': 'Person/Athlete',\r\n 'military person': 'Person',\r\n 'baseball biography': 'Person/Athlete',\r\n 'ice hockey player': 'Person/Athlete',\r\n 'nfl player': 'Person/Athlete',\r\n 'christian leader': 'Person/ReligiousFigure',\r\n congressman: 'Person/Politician',\r\n 'basketball biography': 'Person/Athlete',\r\n 'comics creator': 'Person/Artist',\r\n 'professional wrestler': 'Person/Athlete',\r\n 'college coach': 'Person',\r\n 'tennis biography': 'Person/Athlete',\r\n 'afl biography': 'Person/Athlete',\r\n 'nfl biography': 'Person/Athlete',\r\n 'rugby biography': 'Person/Athlete',\r\n 'rugby league biography': 'Person/Athlete',\r\n 'prime minister': 'Person/Politician',\r\n 'nba biography': 'Person/Athlete',\r\n 'figure skater': 'Person/Athlete',\r\n 'f1 driver': 'Person',\r\n 'gridiron football person': 'Person',\r\n 'indian politician': 'Person/Politician',\r\n 'racing driver': 'Person',\r\n 'martial artist': 'Person',\r\n 'chinese-language singer and actor': 'Person',\r\n astronaut: 'Person',\r\n senator: 'Person/Politician',\r\n 'nascar driver': 'Person',\r\n 'adult biography': 'Person',\r\n 'state representative': 'Person/Politician',\r\n 'state senator': 'Person/Politician',\r\n 'coa wide': 'Person',\r\n 'religious biography': 'Person/ReligiousFigure',\r\n 'chess player': 'Person',\r\n 'pageant titleholder': 'Person',\r\n 'gaa player': 'Person/Athlete',\r\n 'us cabinet official': 'Person/Politician',\r\n\r\n // learned places\r\n 'uk place': 'Place',\r\n 'italian comune': 'Place',\r\n geobox: 'Place',\r\n 'australian place': 'Place',\r\n 'french commune': 'Place',\r\n 'german location': 'Place',\r\n 'u.s. county': 'Place',\r\n 'swiss town': 'Place/City',\r\n 'former country': 'Place',\r\n 'uk school': 'Place/Structure',\r\n 'road small': 'Place',\r\n 'lunar crater': 'Place',\r\n 'gb station': 'Place',\r\n 'greek dimos': 'Place',\r\n 'military structure': 'Place/Structure',\r\n 'uk constituency main': 'Place',\r\n 'city japan': 'Place/City',\r\n 'religious building': 'Place/Structure',\r\n 'shopping mall': 'Place/Structure',\r\n 'municipality br': 'Place/City',\r\n 'finnish municipality/population count': 'Place',\r\n 'ancient site': 'Place',\r\n 'mountain range': 'Place',\r\n 'london station': 'Place',\r\n 'russian town': 'Place/City',\r\n 'former subdivision': 'Place',\r\n lighthouse: 'Place/Structure',\r\n 'uk station': 'Place',\r\n 'historic site': 'Place',\r\n 'world heritage site': 'Place',\r\n diocese: 'Place',\r\n 'south african town 2011': 'Place/City',\r\n 'uk disused station': 'Place',\r\n 'belgium municipality': 'Place',\r\n 'uk constituency': 'Place',\r\n theatre: 'Place',\r\n 'canada electoral district': 'Place',\r\n nycs: 'Place',\r\n 'body of water': 'Place/BodyOfWater',\r\n 'mountain pass': 'Place',\r\n kommune: 'Place',\r\n 'historic subdivision': 'Place',\r\n 'u.s. congressional district': 'Place',\r\n 'power station': 'Place/Structure',\r\n}\r\n","const mapping = require('./mapping')\r\n\r\nconst byInfobox = function (doc) {\r\n let infoboxes = doc.infoboxes()\r\n let found = []\r\n for (let i = 0; i < infoboxes.length; i++) {\r\n let inf = infoboxes[i]\r\n let type = inf.type()\r\n\r\n type = type.toLowerCase()\r\n // type = type.replace(/^(category|categorie|kategori): ?/i, '')\r\n type = type.replace(/ /g, '_')\r\n type = type.trim()\r\n\r\n if (mapping.hasOwnProperty(type)) {\r\n found.push({ cat: mapping[type], reason: type })\r\n }\r\n }\r\n return found\r\n}\r\nmodule.exports = byInfobox\r\n","const patterns = {\r\n FictionalCharacter: [/(fictional|television) characters/],\r\n Product: [/products introduced in ./, /musical instruments/],\r\n Organism: [\r\n /(funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants) of ./,\r\n / first appearances/,\r\n / . described in [0-9]{4}/,\r\n /. (phyla|genera)$/,\r\n /. taxonomic families$/,\r\n /plants used in ./,\r\n / (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/\r\n ],\r\n\r\n // ==Person==\r\n 'Person/Politician': [\r\n /politicians from ./,\r\n /politician stubs$/,\r\n /. (democrats|republicans|politicians)$/,\r\n /mayors of ./\r\n ],\r\n 'Person/Athlete': [/sportspeople from ./, /(footballers|cricketers|defencemen|cyclists)/],\r\n 'Person/Actor': [/actresses/, /actors from ./, /actor stubs$/, / (actors|actresses)$/],\r\n 'Person/Artist': [/musicians from ./, /(singers|songwriters|painters|poets)/, /novelists from ./],\r\n // 'Person/Scientist': [(astronomers|physicists|biologists|chemists)],\r\n Person: [\r\n /[0-9]{4} births/,\r\n /[0-9]{4} deaths/,\r\n /people of .* descent/,\r\n /^deaths from /,\r\n /^(people|philanthropists|writers) from ./,\r\n / (players|alumni)$/,\r\n /(alumni|fellows) of .$/,\r\n /(people|writer) stubs$/,\r\n /(american|english) (fe)?male ./,\r\n /(american|english) (architects|people)/\r\n ],\r\n\r\n // ==Place==\r\n 'Place/Structure': [\r\n /(buildings|bridges) completed in /,\r\n /airports established in ./,\r\n /(airports|bridges) in ./,\r\n /buildings and structures in ./\r\n ],\r\n 'Place/BodyOfWater': [/(rivers|lakes|tributaries) of ./],\r\n 'Place/City': [\r\n /^cities and towns in ./,\r\n /(municipalities|settlements|villages|localities|townships) in ./\r\n ],\r\n Place: [\r\n /populated places/,\r\n /landforms of ./,\r\n /railway stations/,\r\n /parks in ./,\r\n / district$/,\r\n /geography stubs$/,\r\n /sports venue stubs$/\r\n ],\r\n\r\n // ==Creative Work==\r\n 'CreativeWork/Album': [/[0-9]{4}.*? albums/, /^albums /, / albums$/],\r\n 'CreativeWork/Film': [/[0-9]{4}.*? films/, / films$/, /^films /],\r\n 'CreativeWork/TVShow': [/television series/],\r\n 'CreativeWork/VideoGame': [/video games/],\r\n CreativeWork: [/(film|novel|album) stubs$/, /[0-9]{4}.*? (poems|novels)/, / (poems|novels)$/],\r\n\r\n // ==Event==\r\n 'Event/SportsEvent': [\r\n /. league seasons$/,\r\n /^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/\r\n ],\r\n 'Event/MilitaryConflict': [\r\n /conflicts (in|of) [0-9]{4}/,\r\n /(wars|battles|conflicts) (involving|of|in) ./\r\n ],\r\n Event: [/^(19|20)[0-9]{2} in /, /^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./],\r\n\r\n // ==Orgs==\r\n 'Organization/MusicalGroup': [\r\n /musical groups from /,\r\n /musical groups (dis)?established in [0-9]{4}/,\r\n /musical group stubs/,\r\n /. music(al)? (groups|duos|trios|quartets|quintets)$/\r\n ],\r\n 'Organization/SportsTeam': [\r\n /football clubs in ./,\r\n /(basketball|hockey|baseball|football) teams (in|established) ./\r\n ],\r\n 'Organization/Company': [/companies (established|based) in ./],\r\n Organization: [\r\n /(organi[sz]ations|publications) based in /,\r\n /(organi[sz]ations|publications|schools|awards) established in [0-9]{4}/,\r\n /(secondary|primary) schools/,\r\n /military units/,\r\n /magazines/,\r\n /organi[sz]ation stubs$/\r\n ]\r\n}\r\nmodule.exports = patterns\r\n","module.exports = {\r\n 'living people': 'Person',\r\n 'possibly living people': 'Person',\r\n 'musical quartets': 'Organization/MusicalGroup',\r\n 'musical duos': 'Organization/MusicalGroup',\r\n 'musical trios': 'Organization/MusicalGroup',\r\n\r\n // learned march 30\r\n 'dos games': 'CreativeWork/VideoGame',\r\n 'virtual console games': 'CreativeWork/VideoGame',\r\n 'mac os games': 'CreativeWork/VideoGame',\r\n operas: 'CreativeWork',\r\n 'american science fiction novels': 'CreativeWork',\r\n 'amiga games': 'CreativeWork/VideoGame',\r\n 'broadway musicals': 'CreativeWork',\r\n 'debut novels': 'CreativeWork',\r\n 'the twilight zone (1959 tv series) episodes': 'CreativeWork',\r\n 'arcade games': 'CreativeWork/VideoGame',\r\n 'united states national recording registry recordings': 'CreativeWork',\r\n 'commodore 64 games': 'CreativeWork/VideoGame',\r\n 'nintendo entertainment system games': 'CreativeWork/VideoGame',\r\n 'macos games': 'CreativeWork',\r\n 'playstation (console) games': 'CreativeWork/VideoGame',\r\n 'virtual console games for wii u': 'CreativeWork',\r\n 'ios games': 'CreativeWork/VideoGame',\r\n 'super nintendo entertainment system games': 'CreativeWork/VideoGame',\r\n 'video game sequels': 'CreativeWork/VideoGame',\r\n 'american monthly magazines': 'CreativeWork',\r\n 'broadway plays': 'CreativeWork',\r\n 'game boy advance games': 'CreativeWork/VideoGame',\r\n 'first-person shooters': 'CreativeWork/VideoGame',\r\n 'playstation network games': 'CreativeWork/VideoGame',\r\n 'interactive achievement award winners': 'CreativeWork',\r\n 'linux games': 'CreativeWork/VideoGame',\r\n 'atari st games': 'CreativeWork/VideoGame',\r\n 'doubleday (publisher) books': 'CreativeWork',\r\n '19th-century classical composers': 'CreativeWork',\r\n 'film soundtracks': 'CreativeWork',\r\n 'universal deluxe editions': 'CreativeWork',\r\n 'playstation 2 games': 'CreativeWork/VideoGame',\r\n 'best picture academy award winners': 'CreativeWork',\r\n 'game boy games': 'CreativeWork/VideoGame',\r\n 'shōnen manga': 'CreativeWork',\r\n 'zx spectrum games': 'CreativeWork/VideoGame',\r\n 'west end musicals': 'CreativeWork',\r\n 'sequel novels': 'CreativeWork',\r\n 'dystopian novels': 'CreativeWork',\r\n 'american comic strips': 'CreativeWork',\r\n 'american road movies': 'CreativeWork',\r\n 'chemical elements': 'CreativeWork',\r\n 'amstrad cpc games': 'CreativeWork',\r\n 'mario universe games': 'CreativeWork/VideoGame',\r\n 'neo-noir': 'CreativeWork',\r\n 'multiplayer online games': 'CreativeWork/VideoGame',\r\n 'mobile games': 'CreativeWork/VideoGame',\r\n 'android (operating system) games': 'CreativeWork/VideoGame',\r\n 'platform games': 'CreativeWork/VideoGame',\r\n 'fiction with unreliable narrators': 'CreativeWork',\r\n 'best drama picture golden globe winners': 'CreativeWork',\r\n 'adventure anime and manga': 'CreativeWork',\r\n 'albums recorded at abbey road studios': 'CreativeWork/Album',\r\n 'xbox 360 live arcade games': 'CreativeWork/VideoGame',\r\n 'sega genesis games': 'CreativeWork/VideoGame',\r\n\r\n //learned events\r\n 'years in literature': 'Event',\r\n 'years in music': 'Event',\r\n 'years in film': 'Event',\r\n 'united states supreme court cases': 'Event',\r\n 'leap years in the gregorian calendar': 'Event',\r\n \"governor general's awards\": 'Event',\r\n 'eurovision song contest by year': 'Event',\r\n 'grammy awards ceremonies': 'Event',\r\n 'united kingdom in the eurovision song contest': 'Event',\r\n 'manned soyuz missions': 'Event',\r\n 'american civil liberties union litigation': 'Event',\r\n may: 'Event',\r\n october: 'Event',\r\n 'missions to the moon': 'Event',\r\n 'nasa space probes': 'Event/SpaceMission',\r\n 'world war ii british commando raids': 'Event',\r\n july: 'Event',\r\n december: 'Event',\r\n 'wars involving the united kingdom': 'Event/MilitaryConflict',\r\n september: 'Event',\r\n november: 'Event',\r\n january: 'Event',\r\n june: 'Event',\r\n august: 'Event',\r\n april: 'Event',\r\n february: 'Event',\r\n march: 'Event',\r\n 'conflicts in 1944': 'Event',\r\n 'human spaceflights': 'Event/SpaceMission',\r\n 'missions to mars': 'Event',\r\n 'derelict space probes': 'Event/SpaceMission',\r\n 'luna program': 'Event',\r\n 'proxy wars': 'Event/MilitaryConflict',\r\n 'conflicts in 1942': 'Event',\r\n 'special air service': 'Event',\r\n 'spacecraft launched by delta ii rockets': 'Event/SpaceMission',\r\n 'soft landings on the moon': 'Event',\r\n 'may observances': 'Event',\r\n '1904 summer olympics events': 'Event/SportsEvent',\r\n '1900 summer olympics events': 'Event/SportsEvent',\r\n 'space shuttle missions': 'Event/SpaceMission',\r\n 'apollo program missions': 'Event/SpaceMission',\r\n 'spacecraft launched in 1962': 'Event/SpaceMission',\r\n 'spacecraft launched by titan rockets': 'Event/SpaceMission',\r\n 'first events': 'Event',\r\n 'recent years': 'Event',\r\n 'elections not won by the popular vote winner': 'Event',\r\n 'conflicts in 1864': 'Event',\r\n '1862 in the american civil war': 'Event',\r\n 'new zealand wars': 'Event/MilitaryConflict',\r\n 'battles between england and scotland': 'Event/MilitaryConflict',\r\n '2002 winter olympics events': 'Event/SportsEvent',\r\n 'spacecraft launched by atlas-centaur rockets': 'Event/SpaceMission',\r\n 'space observatories': 'Event/SpaceMission',\r\n 'new york (state) in the american revolution': 'Event',\r\n 'march observances': 'Event',\r\n 'public holidays in the united states': 'Event',\r\n 'conflicts in 1943': 'Event/MilitaryConflict',\r\n 'spacecraft launched in 1966': 'Event/SpaceMission',\r\n 'last stand battles': 'Event/MilitaryConflict',\r\n '1944 in france': 'Event',\r\n 'battles and conflicts without fatalities': 'Event/MilitaryConflict',\r\n 'manned missions to the moon': 'Event/SpaceMission',\r\n 'sample return missions': 'Event/SpaceMission',\r\n '1973 in spaceflight': 'Event/SpaceMission',\r\n 'guerrilla wars': 'Event/MilitaryConflict',\r\n 'retired atlantic hurricanes': 'Event/Disaster',\r\n 'december observances': 'Event',\r\n '20th century american trials': 'Event',\r\n 'african-american civil rights movement (1954–68)': 'Event',\r\n '20th-century conflicts': 'Event/MilitaryConflict',\r\n 'presidential elections in ireland': 'Event/Election',\r\n 'spacecraft launched in 1973': 'Event/SpaceMission',\r\n 'october observances': 'Event',\r\n 'spring holidays': 'Event',\r\n 'years in aviation': 'Event',\r\n 'national days': 'Event',\r\n 'project gemini missions': 'Event/SpaceMission',\r\n 'spacecraft launched in 1965': 'Event/SpaceMission',\r\n '20th-century revolutions': 'Event/MilitaryConflict',\r\n 'spacecraft launched in 1971': 'Event/SpaceMission',\r\n 'fifa world cup tournaments': 'Event/SpaceMission',\r\n 'summer holidays': 'Event',\r\n 'sieges involving japan': 'Event/MilitaryConflict',\r\n 'lunar flybys': 'Event/SpaceMission',\r\n 'apollo program': 'Event',\r\n 'revolution-based civil wars': 'Event/MilitaryConflict',\r\n\r\n // learned organisms\r\n 'taxa named by carl linnaeus': 'Organism',\r\n 'ornamental trees': 'Organism',\r\n 'birds by common name': 'Organism',\r\n 'living fossils': 'Organism',\r\n 'taxa named by john edward gray': 'Organism',\r\n phelsuma: 'Organism',\r\n multituberculates: 'Organism',\r\n 'angiosperm orders': 'Organism',\r\n cimolodonts: 'Organism',\r\n 'urban animals': 'Organism',\r\n flowers: 'Organism',\r\n geckos: 'Organism',\r\n herbs: 'Organism',\r\n spices: 'Organism',\r\n skinks: 'Organism',\r\n 'cretaceous mammals': 'Organism',\r\n 'commercial fish': 'Organism',\r\n 'paleocene mammals': 'Organism',\r\n 'bird families': 'Organism',\r\n 'edible nuts and seeds': 'Organism',\r\n 'invasive plant species': 'Organism',\r\n 'leaf vegetables': 'Organism',\r\n 'root vegetables': 'Organism',\r\n 'corvus (genus)': 'Organism',\r\n 'insects in culture': 'Organism',\r\n ducks: 'Organism',\r\n agamidae: 'Organism',\r\n 'edge species': 'Organism',\r\n 'tropical fruit': 'Organism',\r\n pinus: 'Organism',\r\n 'tropical agriculture': 'Organism',\r\n 'indian spices': 'Organism',\r\n 'paleocene genus extinctions': 'Organism',\r\n 'epiphytic orchids': 'Organism',\r\n crops: 'Organism',\r\n 'fruits originating in asia': 'Organism',\r\n calidris: 'Organism',\r\n ptilodontoids: 'Organism',\r\n 'plants and pollinators': 'Organism',\r\n 'mammal families': 'Organism',\r\n 'marine edible fish': 'Organism',\r\n 'taxa named by leopold fitzinger': 'Organism',\r\n setophaga: 'Organism',\r\n shorebirds: 'Organism',\r\n berries: 'Organism',\r\n megafauna: 'Organism',\r\n 'animal dance': 'Organism',\r\n 'animal phyla': 'Organism',\r\n 'american inventions': 'Organism',\r\n entheogens: 'Organism',\r\n 'crops originating from the americas': 'Organism',\r\n 'non-timber forest products': 'Organism',\r\n geese: 'Organism',\r\n\r\n // person-musician\r\n 'american male guitarists': 'Person/Artist',\r\n 'american singer-songwriters': 'Person/Artist',\r\n 'american male singers': 'Person/Artist',\r\n 'american rock singers': 'Person/Artist',\r\n 'american rock guitarists': 'Person/Artist',\r\n '21st-century american singers': 'Person/Artist',\r\n 'lead guitarists': 'Person/Artist',\r\n 'african-american musicians': 'Person/Artist',\r\n 'english male singers': 'Person/Artist',\r\n 'american male singer-songwriters': 'Person/Artist',\r\n 'american rock songwriters': 'Person/Artist',\r\n 'american record producers': 'Person/Artist',\r\n 'american country singer-songwriters': 'Person/Artist',\r\n '20th-century american guitarists': 'Person/Artist',\r\n 'english songwriters': 'Person/Artist',\r\n '20th-century american pianists': 'Person/Artist',\r\n 'songwriters from new york (state)': 'Person/Artist',\r\n 'african-american singers': 'Person/Artist',\r\n 'american blues singers': 'Person/Artist',\r\n 'american pop singers': 'Person/Artist',\r\n 'male guitarists': 'Person/Artist',\r\n 'american country singers': 'Person/Artist',\r\n 'blues hall of fame inductees': 'Person/Artist',\r\n 'american male songwriters': 'Person/Artist',\r\n 'songwriters from california': 'Person/Artist',\r\n 'english rock guitarists': 'Person/Artist',\r\n 'american folk singers': 'Person/Artist',\r\n 'english rock singers': 'Person/Artist',\r\n 'english singer-songwriters': 'Person/Artist',\r\n 'african-american male rappers': 'Person/Artist',\r\n 'african-american jazz musicians': 'Person/Artist',\r\n '20th-century english singers': 'Person/Artist',\r\n 'american female singer-songwriters': 'Person/Artist',\r\n 'jewish american musicians': 'Person/Artist',\r\n 'american blues guitarists': 'Person/Artist',\r\n '20th-century conductors (music)': 'Person/Artist',\r\n 'american female singers': 'Person/Artist',\r\n 'american jazz bandleaders': 'Person/Artist',\r\n 'american jazz pianists': 'Person/Artist',\r\n 'american soul singers': 'Person/Artist',\r\n 'american female guitarists': 'Person/Artist',\r\n 'american multi-instrumentalists': 'Person/Artist',\r\n 'american country guitarists': 'Person/Artist',\r\n 'english record producers': 'Person/Artist',\r\n 'songwriters from texas': 'Person/Artist',\r\n 'american composers': 'Person/Artist',\r\n 'singers from california': 'Person/Artist',\r\n 'american folk guitarists': 'Person/Artist',\r\n 'lgbt singers': 'Person/Artist',\r\n 'american buskers': 'Person/Artist',\r\n 'guitarists from california': 'Person/Artist',\r\n 'feminist musicians': 'Person/Artist',\r\n 'big band bandleaders': 'Person/Artist',\r\n '20th-century composers': 'Person/Artist',\r\n 'african-american songwriters': 'Person/Artist',\r\n 'british rhythm and blues boom musicians': 'Person/Artist',\r\n 'alternative rock singers': 'Person/Artist',\r\n '21st-century american guitarists': 'Person/Artist',\r\n 'american alternative rock musicians': 'Person/Artist',\r\n 'musicians from los angeles': 'Person/Artist',\r\n 'rhythm guitarists': 'Person/Artist',\r\n 'american session musicians': 'Person/Artist',\r\n 'jazz musicians from new orleans': 'Person/Artist',\r\n 'alternative rock guitarists': 'Person/Artist',\r\n '20th-century women musicians': 'Person/Artist',\r\n 'male film score composers': 'Person/Artist',\r\n 'african-american singer-songwriters': 'Person/Artist',\r\n 'american jazz singers': 'Person/Artist',\r\n '21st-century english singers': 'Person/Artist',\r\n 'singers from new york city': 'Person/Artist',\r\n 'american acoustic guitarists': 'Person/Artist',\r\n 'musicians from new york city': 'Person/Artist',\r\n 'slide guitarists': 'Person/Artist',\r\n 'guitarists from texas': 'Person/Artist',\r\n\r\n // org\r\n 'companies listed on the new york stock exchange': 'Organization/Company',\r\n 'football clubs in england': 'Organization/SportsTeam',\r\n 'musical quintets': 'Organization/MusicalGroup',\r\n 'english rock music groups': 'Organization/MusicalGroup',\r\n 'english new wave musical groups': 'Organization/MusicalGroup',\r\n 'jazz record labels': 'Organization/Company',\r\n 'video game development companies': 'Organization/Company',\r\n 'american record labels': 'Organization/Company',\r\n 'english football league clubs': 'Organization/SportsTeam',\r\n 'companies listed on nasdaq': 'Organization/Company',\r\n 'african-american musical groups': 'Organization/MusicalGroup',\r\n 'japanese brands': 'Organization',\r\n 'video game companies of the united states': 'Organization/Company',\r\n 'american jazz composers': 'Organization',\r\n '21st-century american musicians': 'Organization/MusicalGroup',\r\n 'companies formerly listed on the london stock exchange': 'Organization/Company',\r\n 'southern football league clubs': 'Organization/SportsTeam',\r\n 'multinational companies headquartered in the united states': 'Organization/Company',\r\n 'scouting in the united states': 'Organization',\r\n 'car brands': 'Organization',\r\n 'american alternative metal musical groups': 'Organization/MusicalGroup',\r\n 'government-owned airlines': 'Organization',\r\n 'football clubs in scotland': 'Organization/SportsTeam',\r\n 'baptist denominations in north america': 'Organization',\r\n 'baptist denominations established in the 20th century': 'Organization',\r\n 'land-grant universities and colleges': 'Organization',\r\n 'companies listed on the tokyo stock exchange': 'Organization/Company',\r\n 'organizations based in washington, d.c.': 'Organization',\r\n 'premier league clubs': 'Organization/SportsTeam',\r\n 'national basketball association teams': 'Organization/SportsTeam',\r\n 'social democratic parties': 'Organization/PoliticalParty',\r\n 're-established companies': 'Organization/Company',\r\n 'video game publishers': 'Organization',\r\n 'companies based in new york city': 'Organization/Company',\r\n 'defunct video game companies': 'Organization/Company',\r\n 'companies formed by merger': 'Organization/Company',\r\n 'english pop music groups': 'Organization/MusicalGroup',\r\n 'defunct motor vehicle manufacturers of the united states': 'Organization',\r\n 'alternative rock groups from california': 'Organization',\r\n 'entertainment companies based in california': 'Organization/Company',\r\n 'art rock musical groups': 'Organization/MusicalGroup',\r\n 'english post-punk music groups': 'Organization/MusicalGroup',\r\n\r\n // learned people\r\n 'year of birth unknown': 'Person',\r\n 'fellows of the royal society': 'Person',\r\n 'members of the privy council of the united kingdom': 'Person',\r\n 'uk mps 2001–05': 'Person/Politician',\r\n 'uk mps 1997–2001': 'Person/Politician',\r\n '20th-century american novelists': 'Person/Artist',\r\n 'american people of english descent': 'Person',\r\n 'american male novelists': 'Person/Artist',\r\n 'uk mps 2005–10': 'Person/Politician',\r\n 'guggenheim fellows': 'Person',\r\n '20th-century american writers': 'Person',\r\n 'harvard university alumni': 'Person',\r\n 'fellows of the american academy of arts and sciences': 'Person/Academic',\r\n 'american military personnel of world war ii': 'Person',\r\n '19th-century male writers': 'Person',\r\n 'knights bachelor': 'Person',\r\n 'american roman catholics': 'Person',\r\n 'uk mps 1992–97': 'Person/Politician',\r\n 'american male writers': 'Person',\r\n 'roman catholic monarchs': 'Person/ReligiousFigure',\r\n '20th-century women writers': 'Person',\r\n 'labour party (uk) mps for english constituencies': 'Person/Politician',\r\n '20th-century male writers': 'Person',\r\n 'german male writers': 'Person',\r\n 'knights of the garter': 'Person',\r\n 'conservative party (uk) mps for english constituencies': 'Person/Politician',\r\n 'presidential medal of freedom recipients': 'Person',\r\n 'uk mps 1987–92': 'Person/Politician',\r\n 'american film directors': 'Person/Artist',\r\n '21st-century american novelists': 'Person/Artist',\r\n 'uk mps 2010–15': 'Person/Politician',\r\n 'american film producers': 'Person/Artist',\r\n 'members of the united states national academy of sciences': 'Person/Academic',\r\n 'commanders of the order of the british empire': 'Person',\r\n 'democratic party members of the united states house of representatives': 'Person/Politician',\r\n 'people educated at eton college': 'Person',\r\n 'american male screenwriters': 'Person/Artist',\r\n '21st-century american writers': 'Person',\r\n 'republican party members of the united states house of representatives': 'Person/Politician',\r\n popes: 'Person/ReligiousFigure',\r\n 'alumni of trinity college, cambridge': 'Person',\r\n 'french male writers': 'Person',\r\n 'foreign members of the royal society': 'Person',\r\n 'american science fiction writers': 'Person/Artist',\r\n 'american people of scottish descent': 'Person',\r\n 'american memoirists': 'Person',\r\n 'members of the french academy of sciences': 'Person',\r\n 'jewish american writers': 'Person',\r\n '20th-century english novelists': 'Person/Artist',\r\n 'uk mps 1983–87': 'Person/Politician',\r\n 'united states army soldiers': 'Person',\r\n 'officers of the order of the british empire': 'Person',\r\n 'deaths from pneumonia': 'Person',\r\n 'burials at père lachaise cemetery': 'Person',\r\n 'deaths from cancer in california': 'Person',\r\n 'year of birth missing (living people)': 'Person',\r\n 'democratic party state governors of the united states': 'Person/Politician',\r\n 'english male poets': 'Person/Artist',\r\n 'knights of the golden fleece': 'Person',\r\n 'american male short story writers': 'Person/Artist',\r\n 'columbia university alumni': 'Person',\r\n 'alumni of the university of edinburgh': 'Person',\r\n 'american political writers': 'Person/Artist',\r\n 'california republicans': 'Person/Politician',\r\n 'members of the royal swedish academy of sciences': 'Person/Academic',\r\n 'american people of russian-jewish descent': 'Person',\r\n '20th-century american short story writers': 'Person/Academic',\r\n 'yale university alumni': 'Person',\r\n 'italian popes': 'Person/ReligiousFigure',\r\n 'american atheists': 'Person',\r\n 'people of the tudor period': 'Person',\r\n 'tony award winners': 'Person',\r\n 'male actors from new york city': 'Person/Actor',\r\n 'british secretaries of state': 'Person/Politician',\r\n 'democratic party united states senators': 'Person/Politician',\r\n 'members of the académie française': 'Person',\r\n 'united states army officers': 'Person',\r\n 'persons of national historic significance (canada)': 'Person',\r\n 'uk mps 2015–17': 'Person/Politician',\r\n '20th-century american businesspeople': 'Person',\r\n 'american journalists': 'Person',\r\n 'american television producers': 'Person',\r\n 'writers from new york city': 'Person',\r\n 'republican party united states senators': 'Person/Politician',\r\n 'american male journalists': 'Person',\r\n '21st-century women writers': 'Person',\r\n 'american male comedians': 'Person',\r\n 'american nobel laureates': 'Person/Academic',\r\n 'republican party state governors of the united states': 'Person/Politician',\r\n 'princeton university alumni': 'Person',\r\n 'university of paris alumni': 'Person',\r\n 'american episcopalians': 'Person',\r\n 'american women novelists': 'Person',\r\n 'phi beta kappa members': 'Person',\r\n '20th-century american poets': 'Person',\r\n 'harvard university faculty': 'Person/Academic',\r\n 'english male novelists': 'Person/Artist',\r\n 'california democrats': 'Person/Politician',\r\n 'uk mps 1979–83': 'Person/Politician',\r\n 'bafta winners (people)': 'Person',\r\n 'english male writers': 'Person',\r\n 'uk mps 2017–': 'Person/Politician',\r\n \"members of the queen's privy council for canada\": 'Person',\r\n 'vaudeville performers': 'Person/Artist',\r\n 'american presbyterians': 'Person'\r\n}\r\n","const byPattern = function(str, patterns) {\r\n let types = Object.keys(patterns)\r\n for (let i = 0; i < types.length; i++) {\r\n const key = types[i]\r\n for (let o = 0; o < patterns[key].length; o++) {\r\n const reg = patterns[key][o]\r\n if (reg.test(str) === true) {\r\n return key\r\n }\r\n }\r\n }\r\n return null\r\n}\r\nmodule.exports = byPattern\r\n","const patterns = require('./patterns')\r\nconst mapping = require('./mapping')\r\nconst byPattern = require('../_byPattern')\r\n\r\nconst byCategory = function (doc) {\r\n let found = []\r\n let cats = doc.categories()\r\n // clean them up a bit\r\n cats = cats.map((cat) => {\r\n cat = cat.toLowerCase()\r\n cat = cat.replace(/^(category|categorie|kategori): ?/i, '')\r\n cat = cat.replace(/_/g, ' ')\r\n return cat.trim()\r\n })\r\n // loop through each\r\n for (let i = 0; i < cats.length; i++) {\r\n const cat = cats[i]\r\n // try our 1-to-1 mapping\r\n if (mapping.hasOwnProperty(cat)) {\r\n found.push({ cat: mapping[cat], reason: cat })\r\n continue\r\n }\r\n // loop through our patterns\r\n let match = byPattern(cat, patterns)\r\n if (match) {\r\n found.push({ cat: match, reason: cat })\r\n }\r\n }\r\n return found\r\n}\r\nmodule.exports = byCategory\r\n","module.exports = {\r\n 'Person/Actor': [/actor-stub$/],\r\n 'Person/Politician': [/(politician|mayor)-stub$/],\r\n 'Person/Artist': [/(artist|musician|singer)-stub$/],\r\n 'Person/Athlete': [/sport-bio-stub$/],\r\n Person: [/-bio-stub$/],\r\n\r\n 'CreativeWork/Book': [/-novel-stub$/],\r\n 'CreativeWork/Film': [/-film-stub$/],\r\n 'CreativeWork/Album': [/-album-stub$/],\r\n 'CreativeWork/Play': [/-play-stub$/],\r\n CreativeWork: [/-song-stub$/],\r\n\r\n 'Event/Election': [/-election-stub$/],\r\n 'Organization/SportsTeam': [/-sport-team-stub$/],\r\n 'Organization/Company': [/-company-stub$/],\r\n\r\n 'Place/BodyOfWater': [/-river-stub$/],\r\n Place: [/-geo-stub$/],\r\n}\r\n","module.exports = {\r\n //place\r\n coord: 'Place',\r\n 'weather box': 'Place',\r\n\r\n //person\r\n persondata: 'Person',\r\n writer: 'Person',\r\n 'ted speaker': 'Person',\r\n taxonbar: 'Organism',\r\n wikispecies: 'Organism',\r\n animalia: 'Organism',\r\n chordata: 'Organism',\r\n cnidaria: 'Organism',\r\n porifera: 'Organism',\r\n epicaridea: 'Organism',\r\n mammals: 'Organism',\r\n phlyctaeniidae: 'Organism',\r\n carnivora: 'Organism',\r\n clade: 'Organism',\r\n 'life on earth': 'Organism',\r\n 'orders of insects': 'Organism',\r\n coleoptera: 'Organism',\r\n 'insects in culture': 'Organism',\r\n 'living things in culture': 'Organism',\r\n 'eukaryota classification': 'Organism',\r\n\r\n // creative work\r\n rating: 'CreativeWork',\r\n 'certification table entry': 'CreativeWork',\r\n 'imdb title': 'CreativeWork/Film',\r\n 'track listing': 'CreativeWork/Album',\r\n albumchart: 'CreativeWork',\r\n 'film date': 'CreativeWork/Film',\r\n music: 'CreativeWork',\r\n // vgrelease: 'CreativeWork',\r\n // chem: 'CreativeWork',\r\n 'album ratings': 'CreativeWork',\r\n tracklist: 'CreativeWork/Album',\r\n 'episode list': 'CreativeWork/TVShow',\r\n 'album chart': 'CreativeWork',\r\n 'rotten-tomatoes': 'CreativeWork/Film',\r\n singles: 'CreativeWork',\r\n isbnt: 'CreativeWork',\r\n singlechart: 'CreativeWork',\r\n 'tcmdb title': 'CreativeWork',\r\n 'mojo title': 'CreativeWork',\r\n 'based on': 'CreativeWork',\r\n 'amg movie': 'CreativeWork',\r\n duration: 'CreativeWork',\r\n\r\n // learned events\r\n esc: 'Event',\r\n 'year nav': 'Event',\r\n 'year dab': 'Event',\r\n goal: 'Event',\r\n flagiocmedalist: 'Event',\r\n 'm1 year in topic': 'Event',\r\n 'year nav topic5': 'Event',\r\n 'bc year in topic': 'Event',\r\n flagiocathlete: 'Event',\r\n 'election summary party with leaders': 'Event/Election',\r\n 'year article header': 'Event',\r\n\r\n //learned organisms\r\n 'iucn status': 'Organism',\r\n extinct: 'Organism',\r\n 'fossil range': 'Organism',\r\n internetbirdcollection: 'Organism',\r\n vireo: 'Organism',\r\n 'angle bracket': 'Organism',\r\n 'wikispecies-inline': 'Organism',\r\n 'iucn map': 'Organism',\r\n 'xeno-canto species': 'Organism',\r\n avibase: 'Organism',\r\n cladex: 'Organism',\r\n birdlife: 'Organism',\r\n fossilrange: 'Organism',\r\n\r\n //leaned orgs\r\n 'composition bar': 'Organization',\r\n 'fs player': 'Organization',\r\n y: 'Organization',\r\n n: 'Organization',\r\n rws: 'Organization',\r\n allmusic: 'Organization/MusicalGroup',\r\n\r\n // learned people\r\n 's-aft': 'Person',\r\n 's-bef': 'Person',\r\n 's-start': 'Person',\r\n marriage: 'Person',\r\n 'list of united states senators congress': 'Person/Politician',\r\n 's-off': 'Person',\r\n 's-par': 'Person',\r\n 'internet archive author': 'Person',\r\n 'ribbon devices': 'Person',\r\n 's-reg': 'Person',\r\n 'find a grave': 'Person',\r\n 'gutenberg author': 'Person',\r\n 's-new': 'Person',\r\n 'other people': 'Person',\r\n medalgold: 'Person',\r\n 'baseball year': 'Person/Athlete',\r\n medal: 'Person',\r\n // 'post-nominals': 'Person',\r\n mlby: 'Person',\r\n 's-vac': 'Person',\r\n 's-hou': 'Person',\r\n 'librivox author': 'Person',\r\n 'blp sources': 'Person',\r\n 's-ppo': 'Person',\r\n nbay: 'Person',\r\n\r\n //learned places\r\n 'us census population': 'Place',\r\n jct: 'Place',\r\n 'geographic location': 'Place',\r\n // wikivoyage: 'Place',\r\n representative: 'Place',\r\n 'historical populations': 'Place',\r\n 'wikivoyage-inline': 'Place',\r\n 'election box': 'Place',\r\n zh: 'Place',\r\n 'wide image': 'Place'\r\n}\r\n","const patterns = require('./patterns')\r\nconst mapping = require('./mapping')\r\nconst byPattern = require('../_byPattern')\r\n\r\nconst byTemplate = function(doc) {\r\n let templates = doc.templates()\r\n let found = []\r\n for (let i = 0; i < templates.length; i++) {\r\n const title = templates[i].template\r\n if (mapping.hasOwnProperty(title)) {\r\n found.push({ cat: mapping[title], reason: title })\r\n } else {\r\n // try regex-list on it\r\n let type = byPattern(title, patterns)\r\n if (type) {\r\n found.push({ cat: type, reason: title })\r\n }\r\n }\r\n }\r\n return found\r\n}\r\n\r\nmodule.exports = byTemplate\r\n","module.exports = {\r\n // person\r\n 'early life': 'Person',\r\n 'personal life': 'Person',\r\n career: 'Person',\r\n 'career statistics': 'Person',\r\n 'playing career': 'Person',\r\n 'life and career': 'Person',\r\n 'early life and education': 'Person',\r\n 'film and television credits': 'Person',\r\n filmography: 'Person',\r\n 'selected filmography': 'Person',\r\n // place\r\n demographics: 'Place',\r\n neighbourhoods: 'Place',\r\n climate: 'Place',\r\n 'sister cities': 'Place/City',\r\n 'notable people': 'Place',\r\n // creative-work\r\n cast: 'CreativeWork/Film',\r\n plot: 'CreativeWork',\r\n reception: 'CreativeWork',\r\n // 'critical reception': 'CreativeWork',\r\n // 'critical response': 'CreativeWork',\r\n 'track listing': 'CreativeWork/Album',\r\n // org\r\n founding: 'Organization',\r\n founders: 'Organization',\r\n 'coaching staff': 'Organization/SportsTeam',\r\n 'head coaches': 'Organization/SportsTeam',\r\n 'team records': 'Organization/SportsTeam',\r\n 'band members': 'Organization/MusicalGroup',\r\n\r\n habitat: 'Organism',\r\n morphology: 'Organism',\r\n phylogeny: 'Organism',\r\n 'distribution and diversity': 'Organism',\r\n 'distribution and habitat': 'Organism',\r\n 'reproduction and development': 'Organism',\r\n 'taxonomy and phylogeny': 'Organism',\r\n\r\n // march 29th\r\n //learned works\r\n // production: 'CreativeWork',\r\n charts: 'CreativeWork',\r\n release: 'CreativeWork',\r\n 'plot summary': 'CreativeWork',\r\n gameplay: 'CreativeWork',\r\n characters: 'CreativeWork',\r\n 'box office': 'CreativeWork',\r\n accolades: 'CreativeWork',\r\n soundtrack: 'CreativeWork',\r\n adaptations: 'CreativeWork',\r\n synopsis: 'CreativeWork',\r\n 'home media': 'CreativeWork',\r\n 'weekly charts': 'CreativeWork',\r\n themes: 'CreativeWork',\r\n 'publication history': 'CreativeWork',\r\n filming: 'CreativeWork',\r\n 'year-end charts': 'CreativeWork',\r\n casting: 'CreativeWork',\r\n 'release and reception': 'CreativeWork',\r\n 'commercial performance': 'CreativeWork',\r\n composition: 'CreativeWork',\r\n album: 'CreativeWork',\r\n setting: 'CreativeWork',\r\n 'chart positions': 'CreativeWork',\r\n 'release history': 'CreativeWork',\r\n 'charts and certifications': 'CreativeWork',\r\n sequels: 'CreativeWork',\r\n 'chart performance': 'CreativeWork',\r\n sequel: 'CreativeWork',\r\n recordings: 'CreativeWork',\r\n story: 'CreativeWork',\r\n editions: 'CreativeWork',\r\n 'in other media': 'CreativeWork',\r\n\r\n // learned events\r\n aftermath: 'Event',\r\n births: 'Event',\r\n deaths: 'Event',\r\n battle: 'Event',\r\n results: 'Event',\r\n prelude: 'Event',\r\n may: 'Event',\r\n june: 'Event',\r\n march: 'Event',\r\n december: 'Event',\r\n october: 'Event',\r\n july: 'Event',\r\n august: 'Event',\r\n april: 'Event',\r\n november: 'Event',\r\n february: 'Event',\r\n september: 'Event',\r\n january: 'Event',\r\n incumbents: 'Event',\r\n casualties: 'Event',\r\n 'july to december': 'Event',\r\n 'january to june': 'Event',\r\n 'medal table': 'Event',\r\n 'mission highlights': 'Event/SpaceMission',\r\n campaign: 'Event',\r\n\r\n // learned orgs\r\n albums: 'Organization/MusicalGroup',\r\n 'studio albums': 'Organization/MusicalGroup',\r\n members: 'Organization',\r\n athletics: 'Organization',\r\n 'notable alumni': 'Organization',\r\n academics: 'Organization',\r\n campus: 'Organization',\r\n organization: 'Organization',\r\n 'student life': 'Organization',\r\n rankings: 'Organization',\r\n 'compilation albums': 'Organization/MusicalGroup',\r\n // origins: 'Organization',\r\n 'live albums': 'Organization/MusicalGroup',\r\n products: 'Organization/Company',\r\n fleet: 'Organization',\r\n compilations: 'Organization/MusicalGroup',\r\n research: 'Organization',\r\n formation: 'Organization',\r\n operations: 'Organization',\r\n 'current squad': 'Organization/SportsTeam',\r\n players: 'Organization',\r\n alumni: 'Organization',\r\n eps: 'Organization/MusicalGroup',\r\n 'former members': 'Organization',\r\n presidents: 'Organization',\r\n membership: 'Organization',\r\n 'current members': 'Organization',\r\n\r\n // learned people\r\n works: 'Person',\r\n life: 'Person',\r\n family: 'Person',\r\n 'political career': 'Person',\r\n 'early career': 'Person',\r\n // ancestry: 'Person',\r\n 'later life': 'Person',\r\n 'early life and career': 'Person',\r\n 'later years': 'Person',\r\n 'death and legacy': 'Person',\r\n work: 'Person',\r\n novels: 'Person',\r\n 'later career': 'Person',\r\n international: 'Person',\r\n 'selected works': 'Person',\r\n writings: 'Person',\r\n 'professional career': 'Person',\r\n retirement: 'Person',\r\n poetry: 'Person',\r\n marriage: 'Person',\r\n // films: 'Person',\r\n 'electoral history': 'Person',\r\n 'military career': 'Person',\r\n 'international career': 'Person',\r\n 'parliamentary career': 'Person',\r\n\r\n // learned places\r\n geography: 'Place',\r\n '2010 census': 'Place',\r\n '2000 census': 'Place',\r\n economy: 'Place',\r\n transportation: 'Place',\r\n government: 'Place',\r\n communities: 'Place',\r\n transport: 'Place',\r\n culture: 'Place',\r\n sports: 'Place',\r\n 'adjacent counties': 'Place',\r\n 'major highways': 'Place',\r\n 'notable residents': 'Place',\r\n tourism: 'Place',\r\n cities: 'Place',\r\n population: 'Place',\r\n 'unincorporated communities': 'Place',\r\n 'international relations': 'Place',\r\n infrastructure: 'Place',\r\n schools: 'Place',\r\n rail: 'Place',\r\n 'census-designated places': 'Place',\r\n towns: 'Place',\r\n 'local government': 'Place',\r\n 'points of interest': 'Place',\r\n attractions: 'Place',\r\n geology: 'Place',\r\n townships: 'Place',\r\n recreation: 'Place',\r\n location: 'Place',\r\n 'arts and culture': 'Place',\r\n governance: 'Place',\r\n 'administrative divisions': 'Place',\r\n landmarks: 'Place',\r\n demography: 'Place',\r\n 'parks and recreation': 'Place',\r\n 'public transportation': 'Place',\r\n 'coat of arms': 'Place',\r\n churches: 'Place'\r\n\r\n // learned things\r\n //compatibility: 'Thing',\r\n //compliance: 'Thing',\r\n //'key features': 'Thing'\r\n}\r\n","const sections = require('./mapping')\r\n\r\nconst fromSection = function(doc) {\r\n let found = []\r\n let titles = doc.sections().map(s => {\r\n let str = s.title()\r\n str = str.toLowerCase().trim()\r\n return str\r\n })\r\n for (let i = 0; i < titles.length; i++) {\r\n const title = titles[i]\r\n if (sections.hasOwnProperty(title)) {\r\n found.push({ cat: sections[title], reason: title })\r\n }\r\n }\r\n return found\r\n}\r\nmodule.exports = fromSection\r\n","module.exports = {\r\n 'american football player': 'Person/Athlete',\r\n 'australian politician': 'Person/Politician',\r\n 'canadian politician': 'Person/Politician',\r\n 'cape verde': 'Place',\r\n 'cedar busway station': 'Place',\r\n 'computer game': 'Product',\r\n 'delhi metro': 'Place',\r\n 'erie county, new york': 'Place',\r\n 'football player': 'Person/Athlete',\r\n 'gaelic footballer': 'Person/Athlete',\r\n 'murder victim': 'Person',\r\n 'new jersey': 'Place',\r\n 'new orleans': 'Place',\r\n 'new york City Subway': 'Place',\r\n 'new york': 'Place',\r\n 'new zealand': 'Place',\r\n 'north carolina': 'Place',\r\n 'northern ireland': 'Place',\r\n 'season 2': 'CreativeWork',\r\n 'season 3': 'CreativeWork',\r\n 'season 4': 'CreativeWork',\r\n 'season 5': 'CreativeWork',\r\n 'sri lanka': 'Place',\r\n 'the twilight zone': 'CreativeWork',\r\n 'tv series': 'CreativeWork/TVShow',\r\n 'uk parliament constituency': 'Place',\r\n 'united kingdom': 'Place',\r\n 'united states': 'Place',\r\n 'video game': 'CreativeWork/VideoGame',\r\n academic: 'Person',\r\n actor: 'Person/Actor',\r\n actress: 'Person/Actor',\r\n alaska: 'Place',\r\n album: 'CreativeWork/Album',\r\n argentina: 'Place',\r\n arkansas: 'Place',\r\n artist: 'Person/Artist',\r\n athlete: 'Person/Athlete',\r\n australia: 'Place',\r\n author: 'Person',\r\n ballet: 'CreativeWork',\r\n band: 'Organization/MusicalGroup',\r\n barbados: 'Place',\r\n bishop: 'Person/ReligiousFigure',\r\n book: 'CreativeWork/Book',\r\n boxer: 'Person/Athlete',\r\n brazil: 'Place',\r\n businessman: 'Person',\r\n california: 'Place',\r\n canada: 'Place',\r\n candy: 'Product',\r\n chad: 'Place',\r\n character: 'FictionalCharacter',\r\n chicago: 'Place',\r\n // cocktail: 'Thing',\r\n colombia: 'Place',\r\n company: 'Organization/Company',\r\n composer: 'Person/Artist',\r\n connecticut: 'Place',\r\n cricketer: 'Person/Athlete',\r\n cyclist: 'Person',\r\n diplomat: 'Person',\r\n director: 'Person',\r\n dominica: 'Place',\r\n // drink: 'Thing',\r\n drummer: 'Person',\r\n edmonton: 'Place',\r\n footballer: 'Person/Athlete',\r\n france: 'Place',\r\n // game: 'Thing',\r\n georgia: 'Place',\r\n group: 'Organization',\r\n // horse: 'Thing',\r\n india: 'Place',\r\n israel: 'Place',\r\n japan: 'Place',\r\n journal: 'Organization',\r\n journalist: 'Person',\r\n judge: 'Person',\r\n magazine: 'CreativeWork',\r\n manhattan: 'Place',\r\n michigan: 'Place',\r\n miniseries: 'CreativeWork',\r\n minister: 'Person',\r\n movie: 'CreativeWork/Film',\r\n music: 'CreativeWork',\r\n musician: 'Person/Artist',\r\n newspaper: 'Organization/Company',\r\n nigeria: 'Place',\r\n novel: 'CreativeWork/Book',\r\n oklahoma: 'Place',\r\n ontario: 'Place',\r\n opera: 'CreativeWork',\r\n painter: 'Person/Artist',\r\n painting: 'CreativeWork',\r\n pennsylvania: 'Place',\r\n plant: 'Organism',\r\n play: 'CreativeWork/Play',\r\n poet: 'Person',\r\n politician: 'Person/Politician',\r\n portugal: 'Place',\r\n priest: 'Person',\r\n province: 'Place',\r\n rapper: 'Person/Artist',\r\n river: 'Place/BodyOfWater',\r\n series: 'CreativeWork',\r\n // ship: 'Thing',\r\n singer: 'Person/Artist',\r\n single: 'CreativeWork',\r\n // software: 'Thing/Software',\r\n song: 'CreativeWork',\r\n soundtrack: 'CreativeWork',\r\n spain: 'Place',\r\n sudan: 'Place',\r\n texas: 'Place',\r\n // train: 'Thing',\r\n uk: 'Place',\r\n va: 'Place',\r\n Virginia: 'Place',\r\n volcano: 'Place',\r\n washington: 'Place',\r\n wrestler: 'Person/Athlete',\r\n\r\n //March 29\r\n //learned works\r\n ep: 'CreativeWork',\r\n comics: 'CreativeWork',\r\n musical: 'CreativeWork',\r\n manga: 'CreativeWork',\r\n 'star trek: the next generation': 'CreativeWork',\r\n 'star trek: deep space nine': 'CreativeWork',\r\n 'buffy the vampire slayer': 'CreativeWork',\r\n angel: 'CreativeWork',\r\n 'the outer limits': 'CreativeWork',\r\n 'star trek: voyager': 'CreativeWork',\r\n 'short story': 'CreativeWork',\r\n seinfeld: 'CreativeWork',\r\n 'star trek: enterprise': 'CreativeWork',\r\n poem: 'CreativeWork',\r\n tv: 'CreativeWork',\r\n 'uk series': 'CreativeWork',\r\n 'doctor who': 'CreativeWork',\r\n 'david bowie song': 'CreativeWork',\r\n caravaggio: 'CreativeWork',\r\n 'the beach boys song': 'CreativeWork',\r\n video: 'CreativeWork',\r\n 'audio drama': 'CreativeWork',\r\n 'babylon 5': 'CreativeWork',\r\n 'madonna song': 'CreativeWork',\r\n 'game show': 'CreativeWork/TVShow',\r\n 'u.s. tv series': 'CreativeWork/TVShow',\r\n 'uk tv series': 'CreativeWork/TVShow',\r\n 'australian tv series': 'CreativeWork/TVShow',\r\n 'u.s. game show': 'CreativeWork/TVShow',\r\n\r\n //learned events\r\n festival: 'Event',\r\n '25 m': 'Event',\r\n 'world war ii': 'Event',\r\n conmebol: 'Event',\r\n 'music festival': 'Event',\r\n 'world war i': 'Event',\r\n\r\n //learned orgs\r\n am: 'Organization',\r\n fm: 'Organization',\r\n 'american band': 'Organization/MusicalGroup',\r\n wehrmacht: 'Organization',\r\n 'tv channel': 'Organization',\r\n 'british band': 'Organization',\r\n organization: 'Organization',\r\n airline: 'Organization',\r\n publisher: 'Organization',\r\n 'australian band': 'Organization/MusicalGroup',\r\n 'canadian band': 'Organization/MusicalGroup',\r\n restaurant: 'Organization/Company',\r\n brand: 'Organization',\r\n 'uk band': 'Organization/MusicalGroup',\r\n 'record label': 'Organization',\r\n retailer: 'Organization/Company',\r\n 'union army': 'Organization',\r\n store: 'Organization/Company',\r\n defunct: 'Organization',\r\n 'tv network': 'Organization',\r\n 'political party': 'Organization/PoliticalParty',\r\n 'japanese band': 'Organization/MusicalGroup',\r\n 'department store': 'Organization',\r\n 'swedish band': 'Organization/MusicalGroup',\r\n\r\n //learned people\r\n 'american football': 'Person',\r\n 'ice hockey': 'Person',\r\n soccer: 'Person',\r\n 'rugby league': 'Person',\r\n 'rugby union': 'Person',\r\n 'field hockey': 'Person',\r\n tennis: 'Person',\r\n writer: 'Person',\r\n vc: 'Person',\r\n 'racing driver': 'Person',\r\n 'british politician': 'Person/Politician',\r\n golfer: 'Person/Athlete',\r\n historian: 'Person/Academic',\r\n architect: 'Person',\r\n comedian: 'Person',\r\n cartoonist: 'Person/Artist',\r\n governor: 'Person/Politician',\r\n 'british army officer': 'Person',\r\n general: 'Person',\r\n broadcaster: 'Person',\r\n engineer: 'Person',\r\n philosopher: 'Person/Academic',\r\n mathematician: 'Person/Academic',\r\n novelist: 'Person/Artist',\r\n physician: 'Person',\r\n swimmer: 'Person/Athlete',\r\n soldier: 'Person',\r\n photographer: 'Person/Artist',\r\n 'royal navy officer': 'Person',\r\n producer: 'Person',\r\n theologian: 'Person/ReligiousFigure',\r\n lawyer: 'Person',\r\n playwright: 'Person/Artist',\r\n activist: 'Person',\r\n inventor: 'Person',\r\n astronomer: 'Person/Academic',\r\n 'irish politician': 'Person/Politician',\r\n economist: 'Person/Academic',\r\n mayor: 'Person/Politician',\r\n moon: 'Place/SpaceLocation',\r\n country: 'Place/Country',\r\n\r\n // learned things\r\n // 'programming language': 'Thing/Software',\r\n genus: 'Organism',\r\n // missile: 'Thing',\r\n 'board game': 'Product',\r\n // 'new york city subway car': 'Thing',\r\n // instrument: 'Thing',\r\n // food: 'Thing',\r\n fish: 'Organism',\r\n bird: 'Organism',\r\n // 'operating system': 'Thing/Software',\r\n // 'file format': 'Thing',\r\n // 'computer virus': 'Thing/Software',\r\n 'card game': 'Product',\r\n automobile: 'Product',\r\n // rocket: 'Thing'\r\n // website: 'Thing/Software'\r\n}\r\n","module.exports = {\r\n 'CreativeWork/Film': [/ \\([0-9]{4} film\\)$/],\r\n CreativeWork: [/ \\((.*? )song\\)$/],\r\n Event: [/ \\((19|20)[0-9]{2}\\)$/]\r\n}\r\n","const mapping = require('./mapping')\r\nconst patterns = require('./patterns')\r\nconst byPattern = require('../_byPattern')\r\nconst paren = /\\((.*)\\)$/\r\n\r\nconst byTitle = function (doc) {\r\n let title = doc.title()\r\n if (!title) {\r\n return []\r\n }\r\n //look at parentheses like 'Tornado (film)'\r\n let m = title.match(paren)\r\n if (!m) {\r\n return []\r\n }\r\n let inside = m[1] || ''\r\n inside = inside.toLowerCase()\r\n inside = inside.replace(/_/g, ' ')\r\n inside = inside.trim()\r\n\r\n //look at known parentheses\r\n if (mapping.hasOwnProperty(inside)) {\r\n return [{ cat: mapping[inside], reason: inside }]\r\n }\r\n\r\n // look at regex\r\n let match = byPattern(title, patterns)\r\n if (match) {\r\n return [{ cat: match, reason: title }]\r\n }\r\n return []\r\n}\r\nmodule.exports = byTitle\r\n","const byDescription = function (doc) {\r\n let tmpl = doc.template('short description')\r\n if (tmpl && tmpl.description) {\r\n let desc = tmpl.description\r\n // person\r\n if (desc.match(/(actor|actress)/)) {\r\n return [{ cat: 'Person/Actor', reason: desc }]\r\n }\r\n if (desc.match(/(artist|singer|musician|painter|poet|rapper|drummer)/)) {\r\n return [{ cat: 'Person/Artist', reason: desc }]\r\n }\r\n if (desc.match(/(keyboard|guitar|bass) player/)) {\r\n return [{ cat: 'Person/Artist', reason: desc }]\r\n }\r\n if (desc.match(/(politician|member of parliament)/)) {\r\n return [{ cat: 'Person/Politician', reason: desc }]\r\n }\r\n if (desc.match(/(hockey|soccer|backetball|football) player/)) {\r\n return [{ cat: 'Person/Athlete', reason: desc }]\r\n }\r\n if (desc.match(/(writer|celebrity|activist)/)) {\r\n return [{ cat: 'Person', reason: desc }]\r\n }\r\n // organizations\r\n if (desc.match(/(basketball|hockey|soccer|football|sports) team/)) {\r\n return [{ cat: 'Organization/SportsTeam', reason: desc }]\r\n }\r\n if (desc.match(/(company|subsidary)/)) {\r\n return [{ cat: 'Organization/Company', reason: desc }]\r\n }\r\n if (desc.match(/political party/)) {\r\n return [{ cat: 'Organization/PoliticalParty', reason: desc }]\r\n }\r\n if (desc.match(/(charity|organization|ngo)/)) {\r\n return [{ cat: 'Organization', reason: desc }]\r\n }\r\n // creativeworks\r\n if (desc.match(/television series/)) {\r\n return [{ cat: 'CreativeWork/TVShow', reason: desc }]\r\n }\r\n if (desc.match(/[0-9]{4} film/)) {\r\n return [{ cat: 'CreativeWork/Film', reason: desc }]\r\n }\r\n console.log(desc)\r\n }\r\n return []\r\n}\r\nmodule.exports = byDescription\r\n","const skip = {\r\n disambiguation: true,\r\n surname: true,\r\n name: true,\r\n 'given name': true\r\n}\r\nconst paren = /\\((.*)\\)$/\r\nconst listOf = /^list of ./\r\nconst disambig = /\\(disambiguation\\)/\r\n\r\nconst skipPage = function(doc) {\r\n let title = doc.title() || ''\r\n\r\n //look at parentheses like 'Tornado (film)'\r\n let m = title.match(paren)\r\n if (!m) {\r\n return null\r\n }\r\n let inside = m[1] || ''\r\n inside = inside.toLowerCase()\r\n inside = inside.replace(/_/g, ' ')\r\n inside = inside.trim()\r\n\r\n //look at known parentheses\r\n if (skip.hasOwnProperty(inside)) {\r\n return true\r\n }\r\n //try a regex\r\n if (listOf.test(title) === true) {\r\n return true\r\n }\r\n if (disambig.test(title) === true) {\r\n return true\r\n }\r\n return false\r\n}\r\nmodule.exports = skipPage\r\n","const tree = {\r\n Person: {\r\n Athlete: true,\r\n Artist: true,\r\n Politician: true,\r\n Actor: true,\r\n Academic: true,\r\n ReligiousFigure: true,\r\n },\r\n Place: {\r\n Country: true,\r\n City: true,\r\n Structure: true,\r\n BodyOfWater: true,\r\n SpaceLocation: true,\r\n },\r\n Organization: {\r\n Company: true,\r\n SportsTeam: true,\r\n MusicalGroup: true,\r\n PoliticalParty: true,\r\n },\r\n CreativeWork: {\r\n Film: true,\r\n TVShow: true,\r\n Play: true,\r\n Book: true,\r\n Album: true,\r\n VideoGame: true,\r\n },\r\n Event: {\r\n Election: true,\r\n Disaster: true,\r\n SportsEvent: true,\r\n MilitaryConflict: true,\r\n SpaceMission: true,\r\n },\r\n Product: true,\r\n Organism: true,\r\n MedicalCondition: true,\r\n Concept: true,\r\n FictionalCharacter: true,\r\n}\r\n\r\nconst isObject = function (obj) {\r\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\r\n}\r\n\r\nlet types = {}\r\nconst doit = function (type, obj) {\r\n Object.keys(obj).forEach((k) => {\r\n let tmp = k\r\n if (type) {\r\n tmp = type + '/' + k\r\n }\r\n types[tmp] = true\r\n if (isObject(tree[k])) {\r\n doit(tmp, tree[k])\r\n }\r\n })\r\n}\r\ndoit('', tree)\r\n\r\nmodule.exports = types\r\n","const types = require('./_types')\r\n\r\nconst topk = function (arr) {\r\n let obj = {}\r\n arr.forEach((a) => {\r\n obj[a] = obj[a] || 0\r\n obj[a] += 1\r\n })\r\n let res = Object.keys(obj).map((k) => [k, obj[k]])\r\n res = res.sort((a, b) => {\r\n if (a[1] > b[1]) {\r\n return -1\r\n } else if (a[1] < b[1]) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n return res\r\n}\r\n\r\nconst parse = function (cat) {\r\n let split = cat.split(/\\//)\r\n return {\r\n root: split[0],\r\n child: split[1]\r\n }\r\n}\r\n\r\nconst getScore = function (detail) {\r\n let cats = []\r\n Object.keys(detail).forEach((k) => {\r\n detail[k].forEach((obj) => {\r\n if (!types[obj.cat]) {\r\n console.error('Missing: ' + obj.cat)\r\n }\r\n cats.push(parse(obj.cat))\r\n })\r\n })\r\n // find top parent\r\n let roots = cats.map((obj) => obj.root).filter((s) => s)\r\n let tops = topk(roots)\r\n let top = tops[0]\r\n if (!top) {\r\n return {\r\n detail: detail,\r\n category: null,\r\n score: 0\r\n }\r\n }\r\n let root = top[0]\r\n // score as % of results\r\n let score = top[1] / cats.length\r\n // punish low counts\r\n if (top[1] === 1) {\r\n score *= 0.75\r\n }\r\n if (top[1] === 2) {\r\n score *= 0.85\r\n }\r\n if (top[1] === 3) {\r\n score *= 0.95\r\n }\r\n // if the second root is good\r\n if (tops[1]) {\r\n if (tops[1][1] === tops[0][1]) {\r\n score *= 0.5 //tie\r\n } else {\r\n score *= 0.8\r\n }\r\n }\r\n\r\n // find 2nd level\r\n let children = cats.filter((o) => o.root === root && o.child).map((obj) => obj.child)\r\n let topKids = topk(children)\r\n top = topKids[0]\r\n let category = root\r\n if (top) {\r\n category = `${root}/${top[0]}`\r\n // punish for any conflicting children\r\n if (topKids.length > 1) {\r\n score *= 0.7\r\n }\r\n // punish for low count\r\n if (top[1] === 1) {\r\n score *= 0.8\r\n }\r\n }\r\n return {\r\n root: root,\r\n category: category,\r\n score: score,\r\n detail: detail\r\n }\r\n}\r\nmodule.exports = getScore\r\n","const byInfobox = require('./byInfobox')\r\nconst byCategory = require('./byCategory')\r\nconst byTemplate = require('./byTemplate')\r\nconst bySection = require('./bySection')\r\nconst byTitle = require('./byTitle')\r\nconst byDescription = require('./byDescription')\r\nconst skipPage = require('./_skip')\r\nconst score = require('./score')\r\n\r\nconst plugin = function (models) {\r\n // add a new method to main class\r\n models.Doc.prototype.classify = function (options) {\r\n let doc = this\r\n let res = {}\r\n\r\n // dont classify these\r\n if (skipPage(doc, options)) {\r\n return score(res, options)\r\n }\r\n\r\n //look for 'infobox person', etc\r\n res.infobox = byInfobox(doc, options)\r\n\r\n //look for '{{coord}}'\r\n res.template = byTemplate(doc, options)\r\n\r\n //look for '==early life=='\r\n res.section = bySection(doc, options)\r\n\r\n //look for 'foo (film)'\r\n res.title = byTitle(doc, options)\r\n //look for 'foo (film)'\r\n res.description = byDescription(doc, options)\r\n\r\n //look for 'Category: 1992 Births', etc\r\n res.category = byCategory(doc, options)\r\n\r\n return score(res, options)\r\n }\r\n}\r\nmodule.exports = plugin\r\n"],"names":["actor","adult_biography","afl_biography","aircraft_accident","airline","airliner_accident","airport","album","alpine_ski_racer","amusement_park","ancient_site","archbishop","architect","artist","artwork","athlete","athletics_championships","australian_place","automobile","badminton_event","baseball_biography","basketball_biography","basketball_club","pro_hockey_team","beauty_pageant","beverage","body_of_water","book","book_series","boxer","boxingmatch","bridge","broadcast","broadcasting_network","building","canadianmp","casino","cbb_team","cemetery","cfl_player","character","chef","chess_player","choir","christian_leader","church","civil_conflict","college","college_coach","college_football_player","college_ice_hockey_team","college_soccer_team","comedian","comic_book_title","comic_strip","comics_character","comics_creator","company","concert_tour","court_case","cpu","cricket_ground","cricket_team","cricketer","criminal","cyclist","dam","doctor_who_episode","earthquake","economist","election","electric_vehicle","engineer","event","fashion_designer","feature_on_mars","field_hockey_player","figure_skater","fila_wrestling_event","film","film_awards","film_festival","football_biography","football_club","football_club_season","football_country_season","football_league","football_league_season","football_match","football_tournament_season","former_country","former_subdivision","french_commune","gaa_club","gaa_player","german_location","golf_facility","golfer","government_agency","government_cabinet","governor","gpu","gridiron_football_person","gymnast","handball_biography","hindu_leader","historic_site","historical_era","holiday","hollywood_cartoon","horseraces","horseracing_personality","hospital","hotel","hurricane","ice_hockey_player","indian_politician","individual_snooker_tournament","islands","israel_village","italian_comune","journal","judge","laboratory","lacrosse_player","lake","launch_pad","law_enforcement_agency","legislative_term","legislature","library","little_league_world_series","magazine","martial_artist","mass_murderer","medical_person","military_conflict","military_memorial","military_person","military_structure","military_unit","minister","mlb_player","mobile_phone","model","monarch","monument","motorcycle","mountain","mountain_pass","mountain_range","mp","museum","music_festival","musical","musical_artist","musical_composition","nascar_driver","national_military","nba_biography","nba_season","ncaa_baseball_conference_tournament","ncaa_football_school","ncaa_football_single_game","ncaa_team_season","neighborhood_portland_or","newspaper","nfl_biography","nfl_draft","nfl_player","nfl_season","nfl_single_game","nobility","non_test_cricket_team","officeholder","oil_field","opera","organization","painting","pandemic","park","pba_draft","person","philosopher","police_officer","political_party","politician","power_station","presenter","president","prison","professional_wrestler","province_or_territory_of_canada","public_transit","publisher","racing_driver","radio_show","radio_station","rail_line","rail_service","reality_music_competition","record_label","recurring_event","religious_biography","religious_building","river","road","road_small","roman_emperor","royalty","rugby_biography","rugby_league_biography","rugby_league_club","rugby_league_representative_team","rugby_team","russian_inhabited_locality","russian_town","saint","scholar","school","school_district","scientist","scotland_council_area","sea","settlement","shopping_mall","skier","soap_character","song","song_contest","song_contest_entry","south_african_subplace_2011","spaceflight","sport_governing_body","sports_league","sports_season","sportsperson","squash_player","stadium","state","state_representative","state_senator","station","street","summit","swimmer","swiss_town","synthesizer","television","television_channel","television_episode","television_season","temple","tennis_biography","tennis_event","tennis_grand_slam_events","town_at","treaty","tv_channel","uk_constituency","uk_disused_station","uk_legislation","uk_place","uk_school","unesco_world_heritage_site","university","university_of_notre_dame_residence_hall","v8_supercar_team","venue","video_game","volleyball_biography","volleyball_player","waterfall","windmill","wrc_driver","wrestling_event","writer","zoo","speciesbox","constellation","planet","dogbreed","anthem","computer","play","rpg","webcomic","byInfobox","doc","infoboxes","found","i","length","inf","type","toLowerCase","replace","trim","mapping","hasOwnProperty","push","cat","reason","patterns","FictionalCharacter","Product","Organism","Person","Place","CreativeWork","Event","Organization","operas","may","october","july","december","september","november","january","june","august","april","february","march","phelsuma","multituberculates","cimolodonts","flowers","geckos","herbs","spices","skinks","ducks","agamidae","pinus","crops","calidris","ptilodontoids","setophaga","shorebirds","berries","megafauna","entheogens","geese","popes","byPattern","str","types","Object","keys","key","o","reg","test","byCategory","cats","categories","map","match","coord","persondata","taxonbar","wikispecies","animalia","chordata","cnidaria","porifera","epicaridea","mammals","phlyctaeniidae","carnivora","clade","coleoptera","rating","albumchart","music","tracklist","singles","isbnt","singlechart","duration","esc","goal","flagiocmedalist","flagiocathlete","extinct","internetbirdcollection","vireo","avibase","cladex","birdlife","fossilrange","y","n","rws","allmusic","marriage","medalgold","medal","mlby","nbay","jct","representative","zh","byTemplate","templates","title","template","career","filmography","demographics","neighbourhoods","climate","cast","plot","reception","founding","founders","habitat","morphology","phylogeny","charts","release","gameplay","characters","accolades","soundtrack","adaptations","synopsis","themes","filming","casting","composition","setting","sequels","sequel","recordings","story","editions","aftermath","births","deaths","battle","results","prelude","incumbents","casualties","campaign","albums","members","athletics","academics","campus","rankings","products","fleet","compilations","research","formation","operations","players","alumni","eps","presidents","membership","works","life","family","work","novels","international","writings","retirement","poetry","geography","economy","transportation","government","communities","transport","culture","sports","tourism","cities","population","infrastructure","schools","rail","towns","attractions","geology","townships","recreation","location","governance","landmarks","demography","churches","fromSection","titles","sections","s","academic","actress","alaska","argentina","arkansas","australia","author","ballet","band","barbados","bishop","brazil","businessman","california","canada","candy","chad","chicago","colombia","composer","connecticut","diplomat","director","dominica","drummer","edmonton","footballer","france","georgia","group","india","israel","japan","journalist","manhattan","michigan","miniseries","movie","musician","nigeria","novel","oklahoma","ontario","painter","pennsylvania","plant","poet","portugal","priest","province","rapper","series","singer","single","spain","sudan","texas","uk","va","Virginia","volcano","washington","wrestler","ep","comics","manga","angel","seinfeld","poem","tv","caravaggio","video","festival","conmebol","am","fm","wehrmacht","restaurant","brand","retailer","store","defunct","soccer","tennis","vc","historian","cartoonist","general","broadcaster","mathematician","novelist","physician","soldier","photographer","producer","theologian","lawyer","playwright","activist","inventor","astronomer","mayor","moon","country","genus","fish","bird","paren","byTitle","m","inside","byDescription","tmpl","description","desc","console","log","skip","disambiguation","surname","name","listOf","disambig","skipPage","tree","Athlete","Artist","Politician","Actor","Academic","ReligiousFigure","Country","City","Structure","BodyOfWater","SpaceLocation","Company","SportsTeam","MusicalGroup","PoliticalParty","Film","TVShow","Play","Book","Album","VideoGame","Election","Disaster","SportsEvent","MilitaryConflict","SpaceMission","MedicalCondition","Concept","isObject","obj","prototype","toString","call","doit","forEach","k","tmp","topk","arr","a","res","sort","b","parse","split","root","child","getScore","detail","error","roots","filter","tops","top","category","score","children","topKids","plugin","models","Doc","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 9c84c3ac..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=e||self).wtfClassify=a()}(this,(function(){"use strict";function e(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}var a,r=(a={actor:"Person/Actor",adult_biography:"Person",afl_biography:"Person/Athlete",aircraft_accident:"Event/Disaster",airline:"Organization",airliner_accident:"Event/Disaster",airport:"Place/Structure",album:"CreativeWork/Album",alpine_ski_racer:"Person/Athlete",amusement_park:"Place",ancient_site:"Place",archbishop:"Person/ReligiousFigure",architect:"Person",artist:"Person/Artist",artwork:"CreativeWork",athlete:"Person/Athlete",athletics_championships:"Event/SportsEvent",australian_place:"Place",automobile:"Product",badminton_event:"Event/SportsEvent",baseball_biography:"Person/Athlete",basketball_biography:"Person/Athlete",basketball_club:"Organization/SportsTeam",pro_hockey_team:"Organization/SportsTeam",beauty_pageant:"Event",beverage:"Product",body_of_water:"Place/BodyOfWater",book:"CreativeWork/Book",book_series:"CreativeWork",boxer:"Person/Athlete",boxingmatch:"Event/SportsEvent",bridge:"Place/Structure",broadcast:"CreativeWork",broadcasting_network:"Organization",building:"Place/Structure",canadianmp:"Person/Politician",casino:"Place",cbb_team:"Organization",cemetery:"Place",cfl_player:"Person/Athlete",character:"FictionalCharacter",chef:"Person",chess_player:"Person",choir:"Organization",christian_leader:"Person",church:"Place",civil_conflict:"Event",college:"Organization",college_coach:"Person",college_football_player:"Person",college_ice_hockey_team:"Organization/SportsTeam",college_soccer_team:"Organization/SportsTeam",comedian:"Person",comic_book_title:"CreativeWork",comic_strip:"CreativeWork",comics_character:"FictionalCharacter",comics_creator:"Person",company:"Organization",concert_tour:"Event",court_case:"Event",cpu:"Product",cricket_ground:"Place",cricket_team:"Organization/SportsTeam",cricketer:"Person/Athlete",criminal:"Person",cyclist:"Person/Athlete",dam:"Place",doctor_who_episode:"CreativeWork","dot-com_company":"Organization",earthquake:"Event/Disaster",economist:"Person/Academic",election:"Event/Election",electric_vehicle:"Product",engineer:"Person",event:"Event",fashion_designer:"Person",feature_on_mars:"Place",field_hockey_player:"Person/Athlete",figure_skater:"Person/Athlete",fila_wrestling_event:"Event/SportsEvent",film:"CreativeWork/Film",film_awards:"Organization",film_festival:"Organization",football_biography:"Person",football_club:"Organization/SportsTeam",football_club_season:"Event/SportsEvent",football_country_season:"Event/SportsEvent",football_league:"Organization",football_league_season:"Event/SportsEvent",football_match:"Event/SportsEvent",football_tournament_season:"Event/SportsEvent",former_country:"Place",former_subdivision:"Place",french_commune:"Place",gaa_club:"Organization",gaa_player:"Person/Athlete",german_location:"Place",golf_facility:"Place",golfer:"Person/Athlete",government_agency:"Organization",government_cabinet:"Organization",governor:"Person/Politician",gpu:"Product",gridiron_football_person:"Person",gymnast:"Person/Athlete",handball_biography:"Person",hindu_leader:"Person",historic_site:"Place",historical_era:"Event",holiday:"Event",hollywood_cartoon:"CreativeWork",horseraces:"Event",horseracing_personality:"Person",hospital:"Place",hotel:"Place",hurricane:"Event/Disaster",ice_hockey_player:"Person/Athlete",indian_politician:"Person/Politician",individual_snooker_tournament:"Event",islands:"Place",israel_village:"Place",italian_comune:"Place",journal:"Organization",judge:"Person",laboratory:"Organization",lacrosse_player:"Person/Athlete",lake:"Place/BodyOfWater",launch_pad:"Place",law_enforcement_agency:"Organization",legislative_term:"Event",legislature:"Organization",library:"Organization",little_league_world_series:"Event/SportsEvent",magazine:"CreativeWork",martial_artist:"Person/Athlete",mass_murderer:"Person",medical_person:"Person",military_conflict:"Event/MilitaryConflict",military_memorial:"Place",military_person:"Person",military_structure:"Place",military_unit:"Organization",minister:"Person/ReligiousFigure",mlb_player:"Person/Athlete",mobile_phone:"Product",model:"Person",monarch:"Person",monument:"Place",motorcycle:"Product",mountain:"Place",mountain_pass:"Place",mountain_range:"Place",mp:"Person/Politician",museum:"Place",music_festival:"Event",musical:"CreativeWork",musical_artist:"Organization/MusicalGroup",musical_composition:"CreativeWork",nascar_driver:"Person",national_military:"Organization",nba_biography:"Person/Athlete",nba_season:"Event/SportsEvent",ncaa_baseball_conference_tournament:"Event/SportsEvent",ncaa_football_school:"Organization",ncaa_football_single_game:"Event/SportsEvent",ncaa_team_season:"Event/SportsEvent",neighborhood_portland_or:"Place",newspaper:"Organization",nfl_biography:"Person/Athlete",nfl_draft:"Event",nfl_player:"Person/Athlete",nfl_season:"Event/SportsEvent",nfl_single_game:"Event/SportsEvent",nobility:"Organization",non_test_cricket_team:"Organization/SportsTeam","non-profit":"Organization/SportsTeam",officeholder:"Person/Politician",oil_field:"Place",opera:"CreativeWork",organization:"Organization",painting:"CreativeWork",pandemic:"Event/Disaster",park:"Place",pba_draft:"Event",person:"Person",philosopher:"Person",police_officer:"Person",political_party:"Organization/PoliticalParty",politician:"Person/Politician","politician_(general)":"Person/Politician",power_station:"Place/Structure",presenter:"Person",president:"Person/Politician",prison:"Place",professional_wrestler:"Person/Athlete",province_or_territory_of_canada:"Place",public_transit:"Organization",publisher:"Organization",racing_driver:"Person",radio_show:"CreativeWork",radio_station:"Organization",rail_line:"Organization",rail_service:"Organization",reality_music_competition:"Event",record_label:"Organization",recurring_event:"Event",religious_biography:"Person",religious_building:"Place/Structure",river:"Place/BodyOfWater",road:"Place",road_small:"Place",roman_emperor:"Person/Politician",royalty:"Person",rugby_biography:"Person/Athlete",rugby_league_biography:"Person/Athlete",rugby_league_club:"Organization/SportsTeam",rugby_league_representative_team:"Organization/SportsTeam",rugby_team:"Organization/SportsTeam",russian_inhabited_locality:"Place",russian_town:"Place","russian_urban-type_settlement":"Place",saint:"Person/ReligiousFigure",scholar:"Person/Academic",school:"Place",school_district:"Organization",scientist:"Person/Academic",scotland_council_area:"Place",sea:"Place/BodyOfWater",settlement:"Place",shopping_mall:"Place",skier:"Person/Athlete",soap_character:"FictionalCharacter",song:"CreativeWork",song_contest:"Event",song_contest_entry:"CreativeWork",south_african_subplace_2011:"Place",spaceflight:"Event/SpaceMission","spaceflight/dock":"Event/SpaceMission","spaceflight/ip":"Event/SpaceMission",sport_governing_body:"Organization",sports_league:"Organization",sports_season:"Event/SportsEvent",sportsperson:"Person",squash_player:"Person/Athlete",stadium:"Place/Structure",state:"Place",state_representative:"Person/Politician",state_senator:"Person/Politician",station:"Place",street:"Place",summit:"Event",swimmer:"Person/Athlete",swiss_town:"Place",synthesizer:"Product",television:"Product",television_channel:"Organization",television_episode:"CreativeWork",television_season:"CreativeWork",temple:"Place",tennis_biography:"Person/Athlete",tennis_event:"Event/SportsEvent",tennis_grand_slam_events:"Event/SportsEvent",town_at:"Place",treaty:"CreativeWork",tv_channel:"Organization","u.s._cabinet":"Organization","u.s._legislation":"Organization","u.s._metropolitan_area":"Place","u.s._state":"Place",uk_constituency:"Place",uk_disused_station:"Place",uk_legislation:"Organization",uk_place:"Place",uk_school:"Place",unesco_world_heritage_site:"Place",university:"Organization",university_of_notre_dame_residence_hall:"Place",v8_supercar_team:"Organization",venue:"Place",video_game:"CreativeWork",volleyball_biography:"Person/Athlete",volleyball_player:"Person/Athlete",waterfall:"Place",windmill:"Place",wrc_driver:"Person",wrestling_event:"Event/SportsEvent",writer:"Person",zoo:"Place",speciesbox:"Organism","automatic taxobox":"Organism","medical condition (new)":"MedicalCondition","medical condition":"MedicalCondition",constellation:"Place/SpaceLocation",planet:"Place/SpaceLocation","mythical creature":"FictionalCharacter",dogbreed:"Organism","dog breed":"Organism","cat breed":"Organism","grape variety":"Organism",anthem:"CreativeWork","football tournament":"Event/SportsEvent","former monarchy":"Organization","criminal organization":"Organization","card game":"Product",computer:"Product","laboratory equipment":"Product","baseball team":"Organization/SportsTeam","video game":"CreativeWork/VideoGame","television episode":"CreativeWork","comic book title":"CreativeWork","song contest entry":"CreativeWork","short story":"CreativeWork",play:"CreativeWork/Play","hollywood cartoon":"CreativeWork","radio show":"CreativeWork","simpsons episode":"CreativeWork","musical composition":"CreativeWork","book series":"CreativeWork","comic strip":"CreativeWork","d&d creature":"FictionalCharacter","television season":"CreativeWork","comics organization":"CreativeWork","doctor who episode":"CreativeWork","animanga/other":"CreativeWork","graphic novel":"CreativeWork",rpg:"CreativeWork","vg character":"FictionalCharacter","big finish":"CreativeWork","vg series":"CreativeWork","name module":"CreativeWork","comics story arc":"CreativeWork","animanga character":"FictionalCharacter","video game series":"CreativeWork","futurama episode":"CreativeWork","video game character":"FictionalCharacter","comics character and title":"CreativeWork","comics meta series":"CreativeWork",webcomic:"CreativeWork","the goodies episode":"CreativeWork","audio drama":"CreativeWork","sw comics":"CreativeWork","media franchise":"CreativeWork","folk tale":"CreativeWork","doctor who character":"FictionalCharacter","tolkien character":"FictionalCharacter","military conflict":"Event/MilitaryConflict","olympic event":"Event/SportsEvent","grand prix race report":"Event","recurring event":"Event","music festival":"Event","international football competition":"Event/SportsEvent","football league season":"Event","scotus case":"Event","wrestling event":"Event/SportsEvent","court case":"Event","hockey team player":"Person/Athlete","sports season":"Event/SportsEvent","civil conflict":"Event/MilitaryConflict","concert tour":"Event","cycling race report":"Event/SportsEvent","ncaa team season":"Event/SportsEvent","cricket tournament":"Event/SportsEvent","international labour organization convention":"Event","song contest":"Event","football match":"Event/SportsEvent","australian year":"Event","world series expanded":"Event/SportsEvent","civilian attack":"Event/MilitaryConflict","mma event":"Event/SportsEvent","snooker player":"Person","airliner accident":"Event/Disaster"},e(a,"football tournament","Event/SportsEvent"),e(a,"individual darts tournament","Event"),e(a,"nfl season","Event/SportsEvent"),e(a,"beauty pageant","Event"),e(a,"nfl draft","Event/SportsEvent"),e(a,"athletics championships","Event/SportsEvent"),e(a,"historical event","Event"),e(a,"grand prix motorcycle race report","Event"),e(a,"football club season","Event/SportsEvent"),e(a,"international handball competition","Event"),e(a,"coa case","Event"),e(a,"individual snooker tournament","Event"),e(a,"canadian football game","Event/SportsEvent"),e(a,"australian rules football season","Event/SportsEvent"),e(a,"football tournament season","Event/SportsEvent"),e(a,"esc national year","Event"),e(a,"indy500","Event"),e(a,"international ice hockey competition","Event/SportsEvent"),e(a,"cricket tour","Event/SportsEvent"),e(a,"national political convention","Event"),e(a,"referendum","Event"),e(a,"football club","Organization/SportsTeam"),e(a,"radio station","Organization"),e(a,"military unit","Organization"),e(a,"political party","Organization/PoliticalParty"),e(a,"government agency","Organization"),e(a,"rail line","Organization"),e(a,"record label","Organization"),e(a,"school district","Organization"),e(a,"tv channel","Organization"),e(a,"sports league","Organization"),e(a,"football league","Organization"),e(a,"worldscouting","Organization"),e(a,"rugby team","Organization/SportsTeam"),e(a,"sg rail","Organization"),e(a,"law enforcement agency","Organization"),e(a,"uk legislation","Organization"),e(a,"public transit","Organization"),e(a,"us university ranking","Organization"),e(a,"television channel","Organization"),e(a,"national football team","Organization/SportsTeam"),e(a,"bus transit","Organization"),e(a,"union","Organization"),e(a,"broadcasting network","Organization"),e(a,"christian denomination","Organization"),e(a,"film awards","Organization"),e(a,"gaa club","Organization"),e(a,"fraternity","Organization"),e(a,"rail","Organization"),e(a,"rail service","Organization"),e(a,"national military","Organization"),e(a,"sport governing body","Organization"),e(a,"basketball club","Organization/SportsTeam"),e(a,"hockey team","Organization/SportsTeam"),e(a,"political party/seats","Organization"),e(a,"rugby league club","Organization/SportsTeam"),e(a,"athletic conference","Organization"),e(a,"football club infobox","Organization/SportsTeam"),e(a,"film festival","Organization"),e(a,"medical condition (new)","Organization"),e(a,"brand","Organization/MusicalGroup"),e(a,"cricket team","Organization/SportsTeam"),e(a,"dot-com company","Organization"),e(a,"india university ranking","Organization"),e(a,"uk university rankings","Organization"),e(a,"government cabinet","Organization"),e(a,"taxobox","Organism"),e(a,"subspeciesbox","Organism"),e(a,"mycomorphbox","Organism"),e(a,"paraphyletic group","Organism"),e(a,"nutritional value","Organism"),e(a,"infraspeciesbox","Organism"),e(a,"disease","MedicalCondition"),e(a,"ecoregion","Place"),e(a,"horse","Organism"),e(a,"haplogroup","Organism"),e(a,"bird","Organism"),e(a,"bird/population","Organism"),e(a,"medical resources","Organism"),e(a,"galaxy","Place/SpaceLocation"),e(a,"nc name","Organism"),e(a,"pig breed","Organism"),e(a,"botanical product","Organism"),e(a,"cattle breed","Organism"),e(a,"bishop","Person/ReligiousFigure"),e(a,"horse breed","Organism"),e(a,"poultry breed","Organism"),e(a,"football biography","Person/Athlete"),e(a,"military person","Person"),e(a,"baseball biography","Person/Athlete"),e(a,"ice hockey player","Person/Athlete"),e(a,"nfl player","Person/Athlete"),e(a,"christian leader","Person/ReligiousFigure"),e(a,"congressman","Person/Politician"),e(a,"basketball biography","Person/Athlete"),e(a,"comics creator","Person/Artist"),e(a,"professional wrestler","Person/Athlete"),e(a,"college coach","Person"),e(a,"tennis biography","Person/Athlete"),e(a,"afl biography","Person/Athlete"),e(a,"nfl biography","Person/Athlete"),e(a,"rugby biography","Person/Athlete"),e(a,"rugby league biography","Person/Athlete"),e(a,"prime minister","Person/Politician"),e(a,"nba biography","Person/Athlete"),e(a,"figure skater","Person/Athlete"),e(a,"f1 driver","Person"),e(a,"gridiron football person","Person"),e(a,"indian politician","Person/Politician"),e(a,"racing driver","Person"),e(a,"martial artist","Person"),e(a,"chinese-language singer and actor","Person"),e(a,"astronaut","Person"),e(a,"senator","Person/Politician"),e(a,"nascar driver","Person"),e(a,"adult biography","Person"),e(a,"state representative","Person/Politician"),e(a,"state senator","Person/Politician"),e(a,"coa wide","Person"),e(a,"religious biography","Person/ReligiousFigure"),e(a,"chess player","Person"),e(a,"pageant titleholder","Person"),e(a,"gaa player","Person/Athlete"),e(a,"us cabinet official","Person/Politician"),e(a,"uk place","Place"),e(a,"italian comune","Place"),e(a,"geobox","Place"),e(a,"australian place","Place"),e(a,"french commune","Place"),e(a,"german location","Place"),e(a,"u.s. county","Place"),e(a,"swiss town","Place/City"),e(a,"former country","Place"),e(a,"uk school","Place/Structure"),e(a,"road small","Place"),e(a,"lunar crater","Place"),e(a,"gb station","Place"),e(a,"greek dimos","Place"),e(a,"military structure","Place/Structure"),e(a,"uk constituency main","Place"),e(a,"city japan","Place/City"),e(a,"religious building","Place/Structure"),e(a,"shopping mall","Place/Structure"),e(a,"municipality br","Place/City"),e(a,"finnish municipality/population count","Place"),e(a,"ancient site","Place"),e(a,"mountain range","Place"),e(a,"london station","Place"),e(a,"russian town","Place/City"),e(a,"former subdivision","Place"),e(a,"lighthouse","Place/Structure"),e(a,"uk station","Place"),e(a,"historic site","Place"),e(a,"world heritage site","Place"),e(a,"diocese","Place"),e(a,"south african town 2011","Place/City"),e(a,"uk disused station","Place"),e(a,"belgium municipality","Place"),e(a,"uk constituency","Place"),e(a,"theatre","Place"),e(a,"canada electoral district","Place"),e(a,"nycs","Place"),e(a,"body of water","Place/BodyOfWater"),e(a,"mountain pass","Place"),e(a,"kommune","Place"),e(a,"historic subdivision","Place"),e(a,"u.s. congressional district","Place"),e(a,"power station","Place/Structure"),a),i=(r.actor,r.adult_biography,r.afl_biography,r.aircraft_accident,r.airline,r.airliner_accident,r.airport,r.album,r.alpine_ski_racer,r.amusement_park,r.ancient_site,r.archbishop,r.architect,r.artist,r.artwork,r.athlete,r.athletics_championships,r.australian_place,r.automobile,r.badminton_event,r.baseball_biography,r.basketball_biography,r.basketball_club,r.pro_hockey_team,r.beauty_pageant,r.beverage,r.body_of_water,r.book,r.book_series,r.boxer,r.boxingmatch,r.bridge,r.broadcast,r.broadcasting_network,r.building,r.canadianmp,r.casino,r.cbb_team,r.cemetery,r.cfl_player,r.character,r.chef,r.chess_player,r.choir,r.christian_leader,r.church,r.civil_conflict,r.college,r.college_coach,r.college_football_player,r.college_ice_hockey_team,r.college_soccer_team,r.comedian,r.comic_book_title,r.comic_strip,r.comics_character,r.comics_creator,r.company,r.concert_tour,r.court_case,r.cpu,r.cricket_ground,r.cricket_team,r.cricketer,r.criminal,r.cyclist,r.dam,r.doctor_who_episode,r.earthquake,r.economist,r.election,r.electric_vehicle,r.engineer,r.event,r.fashion_designer,r.feature_on_mars,r.field_hockey_player,r.figure_skater,r.fila_wrestling_event,r.film,r.film_awards,r.film_festival,r.football_biography,r.football_club,r.football_club_season,r.football_country_season,r.football_league,r.football_league_season,r.football_match,r.football_tournament_season,r.former_country,r.former_subdivision,r.french_commune,r.gaa_club,r.gaa_player,r.german_location,r.golf_facility,r.golfer,r.government_agency,r.government_cabinet,r.governor,r.gpu,r.gridiron_football_person,r.gymnast,r.handball_biography,r.hindu_leader,r.historic_site,r.historical_era,r.holiday,r.hollywood_cartoon,r.horseraces,r.horseracing_personality,r.hospital,r.hotel,r.hurricane,r.ice_hockey_player,r.indian_politician,r.individual_snooker_tournament,r.islands,r.israel_village,r.italian_comune,r.journal,r.judge,r.laboratory,r.lacrosse_player,r.lake,r.launch_pad,r.law_enforcement_agency,r.legislative_term,r.legislature,r.library,r.little_league_world_series,r.magazine,r.martial_artist,r.mass_murderer,r.medical_person,r.military_conflict,r.military_memorial,r.military_person,r.military_structure,r.military_unit,r.minister,r.mlb_player,r.mobile_phone,r.model,r.monarch,r.monument,r.motorcycle,r.mountain,r.mountain_pass,r.mountain_range,r.mp,r.museum,r.music_festival,r.musical,r.musical_artist,r.musical_composition,r.nascar_driver,r.national_military,r.nba_biography,r.nba_season,r.ncaa_baseball_conference_tournament,r.ncaa_football_school,r.ncaa_football_single_game,r.ncaa_team_season,r.neighborhood_portland_or,r.newspaper,r.nfl_biography,r.nfl_draft,r.nfl_player,r.nfl_season,r.nfl_single_game,r.nobility,r.non_test_cricket_team,r.officeholder,r.oil_field,r.opera,r.organization,r.painting,r.pandemic,r.park,r.pba_draft,r.person,r.philosopher,r.police_officer,r.political_party,r.politician,r.power_station,r.presenter,r.president,r.prison,r.professional_wrestler,r.province_or_territory_of_canada,r.public_transit,r.publisher,r.racing_driver,r.radio_show,r.radio_station,r.rail_line,r.rail_service,r.reality_music_competition,r.record_label,r.recurring_event,r.religious_biography,r.religious_building,r.river,r.road,r.road_small,r.roman_emperor,r.royalty,r.rugby_biography,r.rugby_league_biography,r.rugby_league_club,r.rugby_league_representative_team,r.rugby_team,r.russian_inhabited_locality,r.russian_town,r.saint,r.scholar,r.school,r.school_district,r.scientist,r.scotland_council_area,r.sea,r.settlement,r.shopping_mall,r.skier,r.soap_character,r.song,r.song_contest,r.song_contest_entry,r.south_african_subplace_2011,r.spaceflight,r.sport_governing_body,r.sports_league,r.sports_season,r.sportsperson,r.squash_player,r.stadium,r.state,r.state_representative,r.state_senator,r.station,r.street,r.summit,r.swimmer,r.swiss_town,r.synthesizer,r.television,r.television_channel,r.television_episode,r.television_season,r.temple,r.tennis_biography,r.tennis_event,r.tennis_grand_slam_events,r.town_at,r.treaty,r.tv_channel,r.uk_constituency,r.uk_disused_station,r.uk_legislation,r.uk_place,r.uk_school,r.unesco_world_heritage_site,r.university,r.university_of_notre_dame_residence_hall,r.v8_supercar_team,r.venue,r.video_game,r.volleyball_biography,r.volleyball_player,r.waterfall,r.windmill,r.wrc_driver,r.wrestling_event,r.writer,r.zoo,r.speciesbox,r.constellation,r.planet,r.dogbreed,r.anthem,r.computer,r.play,r.rpg,r.webcomic,r.indy500,r.referendum,r.worldscouting,r.union,r.fraternity,r.rail,r.brand,r.taxobox,r.subspeciesbox,r.mycomorphbox,r.infraspeciesbox,r.disease,r.ecoregion,r.horse,r.haplogroup,r.bird,r.galaxy,r.bishop,r.congressman,r.astronaut,r.senator,r.geobox,r.lighthouse,r.diocese,r.theatre,r.nycs,r.kommune,function(e){for(var a=e.infoboxes(),i=[],t=0;ta[1]?-1:e[1]1&&(o*=.7),1===t[1]&&(o*=.8)),{root:n,category:l,score:o,detail:e}};return function(e){e.Doc.prototype.classify=function(e){var a={};return k(this)||(a.infobox=i(this),a.template=m(this),a.section=u(this),a.title=d(this),a.description=h(this),a.category=s(this)),w(a)}}})); +!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 af0b2db5..ae7701d5 100644 --- a/plugins/classify/builds/wtf-plugin-classify.mjs +++ b/plugins/classify/builds/wtf-plugin-classify.mjs @@ -1,1060 +1,1677 @@ -/* wtf-plugin-classify 0.2.0 MIT */ -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); +/* wtf-plugin-classify 1.0.0 MIT */ +var AmericanFootballPlayer = { + name: 'AmericanFootballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } +}; + +var BaseballPlayer = { + name: 'BaseballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: ['baseball year'], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } +}; + +var FootballPlayer = { + name: 'FootballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } +}; + +var BasketballPlayer = { + name: 'BasketballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } +}; + +var HockeyPlayer = { + name: 'HockeyPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } +}; + +var Athlete = { + name: 'Athlete', + // + properties: { + leagues: () => {} + }, + children: { + AmericanFootballPlayer: AmericanFootballPlayer, + BaseballPlayer: BaseballPlayer, + FootballPlayer: FootballPlayer, + BasketballPlayer: BasketballPlayer, + HockeyPlayer: HockeyPlayer + }, + // + 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var Person = { + name: 'Person', + children: { + Athlete: Athlete, + Actor: Actor, + Politician: Politician, + Musician: Musician, + Author: Author + }, + 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', //religious person + 'archbishop', 'minister', 'saint', 'bishop', 'christian leader', 'religious biography', // artist + 'artist', 'comics creator', // academic + '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: [] + } +}; + +var 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: [] + } +}; + +var Country = { + name: 'Country', + // + children: {}, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: ['international relations'], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: ['country'], + patterns: [] + } +}; + +var Jurisdiction = { + name: 'Jurisdiction', + children: { + City: City, + Country: Country + }, + 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: [] + } +}; + +var Bridge = { + name: 'Bridge', + // + children: {}, + properties: { + length: () => {} + }, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } +}; + +var Airport = { + name: 'Airport', + // + children: {}, + properties: { + airlines: () => {}, + runways: () => {} + }, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } +}; + +var Structure = { + name: 'Structure', + // + children: { + Bridge: Bridge, + Airport: Airport + }, + 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: [] + } +}; + +var 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: [] + } +}; + +var Place = { + name: 'Place', + children: { + Jurisdiction: Jurisdiction, + Structure: Structure, + BodyOfWater: BodyOfWater + }, + 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var Organization = { + name: 'Organization', + // + children: { + MusicalGroup: MusicalGroup, + Company: Company, + SportsTeam: SportsTeam, + PoliticalParty: PoliticalParty + }, + 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var Event = { + name: 'Event', + properties: { + dates: () => {}, + places: () => {} + }, + children: { + Disaster: Disaster, + Election: Election, + MilitaryConflict: MilitaryConflict, + SportsEvent: SportsEvent + }, + // + 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}\)$/] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var 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\)$/] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var 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: [] + } +}; + +var CreativeWork = { + name: 'CreativeWork', + children: { + Album: Album, + Book: Book, + Film: Film, + TVShow: TVShow, + Play: Play, + Song: Song, + VideoGame: VideoGame + }, + // + 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\)$/] + } +}; + +var 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: [] + } +}; + +var Organism = { + name: 'Organism', + // + children: {}, + properties: {// taxonomy: () => {}, + // members: () => {}, + }, + // + 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: [] + } +}; + +var 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: [] + } +}; + +var Creation = { + name: 'Creation', + children: { + CreativeWork: CreativeWork, + MedicalCondition: MedicalCondition, + Organism: Organism, + Product: Product + }, + // + properties: { + creators: () => {}, + date: () => {} + }, + // + categories: { + mapping: [], + patterns: [] + }, + // + descriptions: { + patterns: [] + }, + // + infoboxes: { + mapping: [], + patterns: [] + }, + // + sections: { + mapping: [], + patterns: [] + }, + // + templates: { + mapping: [], + patterns: [] + }, + // + titles: { + mapping: [], + patterns: [] + } +}; + +let schema = { + children: { + Person: Person, + Place: Place, + Organization: Organization, + Event: Event, + Creation: Creation + } +}; // generate slash-based ids by descending recursively + +const setId = function (root, id) { + if (root.name) { + root.id = id + '/' + root.name; } else { - obj[key] = value; + root.id = ''; + } + + if (root.children) { + Object.keys(root.children).forEach(k => { + setId(root.children[k], root.id); + }); + } + + return root; +}; + +schema = setId(schema, ''); +var schema_1 = schema; + +let mappings$5 = { + categories: {}, + descriptions: {}, + infoboxes: {}, + sections: {}, + templates: {}, + titles: {} +}; +let patterns$4 = { + categories: [], + descriptions: [], + infoboxes: [], + sections: [], + templates: [], + titles: [] +}; + +const doNode = function (node) { + if (node.id) { + // collect mappings + node.categories.mapping.forEach(str => { + mappings$5.categories[str] = node.id; + }); + node.descriptions.mapping = node.descriptions.mapping || []; + node.descriptions.mapping.forEach(str => { + mappings$5.descriptions[str] = node.id; + }); + node.infoboxes.mapping.forEach(str => { + mappings$5.infoboxes[str] = node.id; + }); + node.sections.mapping.forEach(str => { + mappings$5.sections[str] = node.id; + }); + node.templates.mapping.forEach(str => { + mappings$5.templates[str] = node.id; + }); + node.titles.mapping.forEach(str => { + mappings$5.titles[str] = node.id; + }); // collect patterns + + node.categories.patterns.forEach(reg => { + patterns$4.categories.push([reg, node.id]); + }); + node.descriptions.patterns.forEach(reg => { + patterns$4.descriptions.push([reg, node.id]); + }); + node.infoboxes.patterns.forEach(reg => { + patterns$4.infoboxes.push([reg, node.id]); + }); + node.sections.patterns.forEach(reg => { + patterns$4.sections.push([reg, node.id]); + }); + node.templates.patterns.forEach(reg => { + patterns$4.templates.push([reg, node.id]); + }); + node.titles.patterns.forEach(reg => { + patterns$4.titles.push([reg, node.id]); + }); + } + + if (node.children) { + Object.keys(node.children).forEach(k => { + doNode(node.children[k]); + }); } +}; + +doNode(schema_1); +var _dataFns = { + patterns: patterns$4, + mappings: mappings$5 +}; + +const { + mappings: mappings$4 +} = _dataFns; - return obj; -} - -var _mapping; - -var mapping = (_mapping = { - actor: 'Person/Actor', - //1 - adult_biography: 'Person', - //2 - afl_biography: 'Person/Athlete', - //7 - aircraft_accident: 'Event/Disaster', - //2 - //aircraft_begin: 'Thing', //24 - //aircraft_engine: 'Thing', //2 - //aircraft_type: 'Thing', //21 - airline: 'Organization', - //9 - airliner_accident: 'Event/Disaster', - //3 - airport: 'Place/Structure', - //20 - album: 'CreativeWork/Album', - //466 - alpine_ski_racer: 'Person/Athlete', - //2 - amusement_park: 'Place', - //4 - ancient_site: 'Place', - //14 - archbishop: 'Person/ReligiousFigure', - //1 - architect: 'Person', - //9 - // artifact: 'Thing', //1 - artist: 'Person/Artist', - //42 - artwork: 'CreativeWork', - //14 - athlete: 'Person/Athlete', - //6 - athletics_championships: 'Event/SportsEvent', - //6 - australian_place: 'Place', - //18 - automobile: 'Product', - //8 - badminton_event: 'Event/SportsEvent', - //2 - baseball_biography: 'Person/Athlete', - //64 - basketball_biography: 'Person/Athlete', - //17 - basketball_club: 'Organization/SportsTeam', - //17 - pro_hockey_team: 'Organization/SportsTeam', - // - beauty_pageant: 'Event', - //4 - beverage: 'Product', - //7 - body_of_water: 'Place/BodyOfWater', - //7 - book: 'CreativeWork/Book', - //130 - book_series: 'CreativeWork', - //4 - boxer: 'Person/Athlete', - //5 - boxingmatch: 'Event/SportsEvent', - //2 - bridge: 'Place/Structure', - //5 - broadcast: 'CreativeWork', - //10 - broadcasting_network: 'Organization', - //4 - building: 'Place/Structure', - //29 - canadianmp: 'Person/Politician', - //18 - casino: 'Place', - //1 - cbb_team: 'Organization', - //1 - cemetery: 'Place', - //3 - cfl_player: 'Person/Athlete', - //2 - character: 'FictionalCharacter', - //12 - chef: 'Person', - //6 - chess_player: 'Person', - //2 - choir: 'Organization', - //1 - christian_leader: 'Person', - //17 - church: 'Place', - //10 - civil_conflict: 'Event', - //3 - college: 'Organization', - //2 - college_coach: 'Person', - //18 - college_football_player: 'Person', - //7 - college_ice_hockey_team: 'Organization/SportsTeam', - //1 - college_soccer_team: 'Organization/SportsTeam', - //3 - comedian: 'Person', - //3 - comic_book_title: 'CreativeWork', - //9 - comic_strip: 'CreativeWork', - //1 - comics_character: 'FictionalCharacter', - //13 - comics_creator: 'Person', - //10 - company: 'Organization', - //150 - // computer_hardware_bus: 'Thing', //1 - // computer_virus: 'Thing/Software', //1 - concert_tour: 'Event', - //8 - court_case: 'Event', - //8 - cpu: 'Product', - //1 - cricket_ground: 'Place', - //2 - cricket_team: 'Organization/SportsTeam', - //1 - cricketer: 'Person/Athlete', - //43 - criminal: 'Person', - //8 - cyclist: 'Person/Athlete', - //8 - dam: 'Place', - //4 - doctor_who_episode: 'CreativeWork', - //3 - 'dot-com_company': 'Organization', - //3 - earthquake: 'Event/Disaster', - //2 - economist: 'Person/Academic', - //4 - election: 'Event/Election', - //19 - electric_vehicle: 'Product', - //1 - engineer: 'Person', - //2 - // enzyme: 'Thing', //19 - event: 'Event', - //2 - fashion_designer: 'Person', - //2 - feature_on_mars: 'Place', - //1 - field_hockey_player: 'Person/Athlete', - //8 - figure_skater: 'Person/Athlete', - //3 - fila_wrestling_event: 'Event/SportsEvent', - //1 - // file_format: 'Thing', //3 - film: 'CreativeWork/Film', - //183 - film_awards: 'Organization', - //1 - film_festival: 'Organization', - //2 - //// food: 'Thing', //3 - football_biography: 'Person', - //324 - football_club: 'Organization/SportsTeam', - //42 - football_club_season: 'Event/SportsEvent', - //13 - football_country_season: 'Event/SportsEvent', - //5 - football_league: 'Organization', - //4 - football_league_season: 'Event/SportsEvent', - //17 - football_match: 'Event/SportsEvent', - //10 - football_tournament_season: 'Event/SportsEvent', - //4 - former_country: 'Place', - //14 - former_subdivision: 'Place', - //3 - french_commune: 'Place', - //6 - gaa_club: 'Organization', - //2 - gaa_player: 'Person/Athlete', - //15 - // game: 'Thing', //3 - // gene: 'Thing', //3 - german_location: 'Place', - //6 - golf_facility: 'Place', - //2 - golfer: 'Person/Athlete', - //9 - government_agency: 'Organization', - //7 - government_cabinet: 'Organization', - //7 - governor: 'Person/Politician', - //5 - gpu: 'Product', - //1 - gridiron_football_person: 'Person', - //11 - gymnast: 'Person/Athlete', - //2 - handball_biography: 'Person', - //8 - hindu_leader: 'Person', - //1 - historic_site: 'Place', - //3 - historical_era: 'Event', - //1 - holiday: 'Event', - //5 - hollywood_cartoon: 'CreativeWork', - //4 - horseraces: 'Event', - //8 - horseracing_personality: 'Person', - //2 - hospital: 'Place', - //14 - hotel: 'Place', - //3 - hurricane: 'Event/Disaster', - //1 - ice_hockey_player: 'Person/Athlete', - //15 - indian_politician: 'Person/Politician', - //1 - individual_snooker_tournament: 'Event', - //6 - // information_appliance: 'Thing', //6 - // instrument: 'Thing', //3 - islands: 'Place', - //32 - israel_village: 'Place', - //2 - italian_comune: 'Place', - //1 - journal: 'Organization', - //23 - judge: 'Person', - //8 - // judo_technique: 'Thing', //2 - laboratory: 'Organization', - //1 - lacrosse_player: 'Person/Athlete', - //6 - lake: 'Place/BodyOfWater', - //10 - launch_pad: 'Place', - //1 - law_enforcement_agency: 'Organization', - //1 - legislative_term: 'Event', - //1 - legislature: 'Organization', - //3 - library: 'Organization', - //9 - // ligament: 'Thing', //1 - little_league_world_series: 'Event/SportsEvent', - //5 - magazine: 'CreativeWork', - //15 - // martial_art: 'Thing', //2 - martial_artist: 'Person/Athlete', - //13 - mass_murderer: 'Person', - //1 - // medical_condition: 'Thing', //31 - medical_person: 'Person', - //5 - military_conflict: 'Event/MilitaryConflict', - //27 - military_memorial: 'Place', - //2 - military_person: 'Person', - //60 - military_structure: 'Place', - //15 - military_unit: 'Organization', - //33 - // mineral: 'Thing', //5 - minister: 'Person/ReligiousFigure', - //3 - mlb_player: 'Person/Athlete', - //8 - mobile_phone: 'Product', - //3 - model: 'Person', - //2 - monarch: 'Person', - //23 - monument: 'Place', - //1 - motorcycle: 'Product', - //5 - mountain: 'Place', - //59 - mountain_pass: 'Place', - //1 - mountain_range: 'Place', - //13 - mp: 'Person/Politician', - //13 - museum: 'Place', - //13 - music_festival: 'Event', - //5 - // music_genre: 'Thing', //5 - musical: 'CreativeWork', - //3 - musical_artist: 'Organization/MusicalGroup', - //226 - musical_composition: 'CreativeWork', - //7 - nascar_driver: 'Person', - //3 - national_military: 'Organization', - //4 - nba_biography: 'Person/Athlete', - //4 - nba_season: 'Event/SportsEvent', - //6 - ncaa_baseball_conference_tournament: 'Event/SportsEvent', - //6 - ncaa_football_school: 'Organization', - //4 - ncaa_football_single_game: 'Event/SportsEvent', - //1 - ncaa_team_season: 'Event/SportsEvent', - //17 - neighborhood_portland_or: 'Place', - //3 - // network: 'Thing', //3 - // networking_protocol: 'Thing', //1 - newspaper: 'Organization', - //18 - nfl_biography: 'Person/Athlete', - //7 - nfl_draft: 'Event', - //2 - nfl_player: 'Person/Athlete', - //36 - nfl_season: 'Event/SportsEvent', - //27 - nfl_single_game: 'Event/SportsEvent', - //1 - nobility: 'Organization', - //5 - non_test_cricket_team: 'Organization/SportsTeam', - //4 - 'non-profit': 'Organization/SportsTeam', - //6 - officeholder: 'Person/Politician', - //133 - oil_field: 'Place', - //1 - opera: 'CreativeWork', - //3 - organization: 'Organization', - //41 - // os: 'Thing', //1 - painting: 'CreativeWork', - //2 - pandemic: 'Event/Disaster', - //2 - park: 'Place', - //15 - pba_draft: 'Event', - //3 - person: 'Person', - //441 - philosopher: 'Person', - //16 - police_officer: 'Person', - //2 - political_party: 'Organization/PoliticalParty', - //25 - politician: 'Person/Politician', - //34 - 'politician_(general)': 'Person/Politician', - //2 - power_station: 'Place/Structure', - //3 - // prepared_food: 'Thing', //12 - presenter: 'Person', - //4 - president: 'Person/Politician', - //1 - prison: 'Place', - //4 - professional_wrestler: 'Person/Athlete', - //9 - // programming_language: 'Thing', //6 - // protein_family: 'Thing', //2 - province_or_territory_of_canada: 'Place', - //1 - public_transit: 'Organization', - //1 - publisher: 'Organization', - //3 - racing_driver: 'Person', - //4 - radio_show: 'CreativeWork', - //3 - radio_station: 'Organization', - //25 - rail_line: 'Organization', - //7 - rail_service: 'Organization', - //6 - reality_music_competition: 'Event', - //1 - record_label: 'Organization', - //7 - recurring_event: 'Event', - //3 - religious_biography: 'Person', - //9 - religious_building: 'Place/Structure', - //9 - // religious_text: 'Thing', //1 - river: 'Place/BodyOfWater', - //16 - road: 'Place', - //41 - road_small: 'Place', - //14 - // rocket: 'Thing', //3 - roman_emperor: 'Person/Politician', - //2 - royalty: 'Person', - //77 - rugby_biography: 'Person/Athlete', - //12 - rugby_league_biography: 'Person/Athlete', - //24 - rugby_league_club: 'Organization/SportsTeam', - //5 - rugby_league_representative_team: 'Organization/SportsTeam', - //1 - rugby_team: 'Organization/SportsTeam', - //11 - russian_inhabited_locality: 'Place', - //1 - russian_town: 'Place', - //4 - 'russian_urban-type_settlement': 'Place', - //2 - saint: 'Person/ReligiousFigure', - //14 - scholar: 'Person/Academic', - //2 - school: 'Place', - //95 - school_district: 'Organization', - //10 - scientist: 'Person/Academic', - //84 - scotland_council_area: 'Place', - //2 - sea: 'Place/BodyOfWater', - //3 - settlement: 'Place', - //642 - // sheep_breed: 'Thing', //1 - // ship_begin: 'Thing', //84 - // ship_career: 'Thing', //141 - // ship_characteristics: 'Thing', //86 - // ship_class_overview: 'Thing', //25 - // ship_image: 'Thing', //84 - shopping_mall: 'Place', - //9 - skier: 'Person/Athlete', - //14 - soap_character: 'FictionalCharacter', - //126 - // software: 'Thing/Software', //25 - // software_license: 'Thing', //1 - song: 'CreativeWork', - //30 - song_contest: 'Event', - //3 - song_contest_entry: 'CreativeWork', - //12 - south_african_subplace_2011: 'Place', - //1 - spaceflight: 'Event/SpaceMission', - //17 - 'spaceflight/dock': 'Event/SpaceMission', - //17 - 'spaceflight/ip': 'Event/SpaceMission', - //19 - // sport: 'Thing', //2 - sport_governing_body: 'Organization', - //3 - sports_league: 'Organization', - //7 - sports_season: 'Event/SportsEvent', - //3 - sportsperson: 'Person', - //45 - squash_player: 'Person/Athlete', - //1 - stadium: 'Place/Structure', - //14 - state: 'Place', - //1 - state_representative: 'Person/Politician', - //10 - state_senator: 'Person/Politician', - //5 - station: 'Place', - //40 - street: 'Place', - //1 - // subdivision_type: 'Thing', //1 - summit: 'Event', - //2 - swimmer: 'Person/Athlete', - //14 - swiss_town: 'Place', - //36 - // symptom: 'Thing', //2 - synthesizer: 'Product', - //1 - television: 'Product', - //94 - television_channel: 'Organization', - //1 - television_episode: 'CreativeWork', - //26 - television_season: 'CreativeWork', - //18 - temple: 'Place', - //2 - tennis_biography: 'Person/Athlete', - //5 - tennis_event: 'Event/SportsEvent', - //3 - tennis_grand_slam_events: 'Event/SportsEvent', - //2 - // thoroughbred_racehorse: 'Thing', //7 - town_at: 'Place', - //1 - // train: 'Thing', //2 - treaty: 'CreativeWork', - //2 - tv_channel: 'Organization', - //12 - 'u.s._cabinet': 'Organization', - //3 - 'u.s._legislation': 'Organization', - //3 - 'u.s._metropolitan_area': 'Place', - //1 - 'u.s._state': 'Place', - //3 - uk_constituency: 'Place', - //1 - uk_disused_station: 'Place', - //8 - uk_legislation: 'Organization', - //6 - uk_place: 'Place', - //22 - uk_school: 'Place', - //26 - unesco_world_heritage_site: 'Place', - //3 - // united_states_federal_proposed_legislation: 'Thing', //1 - university: 'Organization', - //44 - university_of_notre_dame_residence_hall: 'Place', - //1 - v8_supercar_team: 'Organization', - //3 - venue: 'Place', - //6 - video_game: 'CreativeWork', - //81 - volleyball_biography: 'Person/Athlete', - //1 - volleyball_player: 'Person/Athlete', - //4 - waterfall: 'Place', - //4 - // weapon: 'Thing', //15 - // website: 'Thing/Software', //5 - windmill: 'Place', - //1 - wrc_driver: 'Person', - //1 - wrestling_event: 'Event/SportsEvent', - //8 - writer: 'Person', - //69 - // writing_system: 'Thing', //4 - zoo: 'Place', - //3 - speciesbox: 'Organism', - 'automatic taxobox': 'Organism', - 'medical condition (new)': 'MedicalCondition', - 'medical condition': 'MedicalCondition', - constellation: 'Place/SpaceLocation', - planet: 'Place/SpaceLocation', - 'mythical creature': 'FictionalCharacter', - dogbreed: 'Organism', - 'dog breed': 'Organism', - 'cat breed': 'Organism', - 'grape variety': 'Organism', - anthem: 'CreativeWork', - 'football tournament': 'Event/SportsEvent', - 'former monarchy': 'Organization', - 'criminal organization': 'Organization', - 'card game': 'Product', - computer: 'Product', - 'laboratory equipment': 'Product', - 'baseball team': 'Organization/SportsTeam', - // march 29th - 'video game': 'CreativeWork/VideoGame', - 'television episode': 'CreativeWork', - 'comic book title': 'CreativeWork', - 'song contest entry': 'CreativeWork', - 'short story': 'CreativeWork', - play: 'CreativeWork/Play', - 'hollywood cartoon': 'CreativeWork', - 'radio show': 'CreativeWork', - 'simpsons episode': 'CreativeWork', - 'musical composition': 'CreativeWork', - 'book series': 'CreativeWork', - 'comic strip': 'CreativeWork', - 'd&d creature': 'FictionalCharacter', - 'television season': 'CreativeWork', - 'comics organization': 'CreativeWork', - 'doctor who episode': 'CreativeWork', - 'animanga/other': 'CreativeWork', - 'graphic novel': 'CreativeWork', - rpg: 'CreativeWork', - 'vg character': 'FictionalCharacter', - 'big finish': 'CreativeWork', - 'vg series': 'CreativeWork', - 'name module': 'CreativeWork', - 'comics story arc': 'CreativeWork', - 'animanga character': 'FictionalCharacter', - 'video game series': 'CreativeWork', - // 'fictional location': 'Thing', - 'futurama episode': 'CreativeWork', - 'video game character': 'FictionalCharacter', - 'comics character and title': 'CreativeWork', - 'comics meta series': 'CreativeWork', - webcomic: 'CreativeWork', - 'the goodies episode': 'CreativeWork', - 'audio drama': 'CreativeWork', - // 'comics species': 'Thing', - 'sw comics': 'CreativeWork', - 'media franchise': 'CreativeWork', - 'folk tale': 'CreativeWork', - 'doctor who character': 'FictionalCharacter', - 'tolkien character': 'FictionalCharacter', - // learned events - 'military conflict': 'Event/MilitaryConflict', - 'olympic event': 'Event/SportsEvent', - 'grand prix race report': 'Event', - 'recurring event': 'Event', - 'music festival': 'Event', - 'international football competition': 'Event/SportsEvent', - 'football league season': 'Event', - 'scotus case': 'Event', - 'wrestling event': 'Event/SportsEvent', - 'court case': 'Event', - 'hockey team player': 'Person/Athlete', - 'sports season': 'Event/SportsEvent', - 'civil conflict': 'Event/MilitaryConflict', - 'concert tour': 'Event', - 'cycling race report': 'Event/SportsEvent', - 'ncaa team season': 'Event/SportsEvent', - 'cricket tournament': 'Event/SportsEvent', - 'international labour organization convention': 'Event', - 'song contest': 'Event', - 'football match': 'Event/SportsEvent', - 'australian year': 'Event', - 'world series expanded': 'Event/SportsEvent', - 'civilian attack': 'Event/MilitaryConflict', - 'mma event': 'Event/SportsEvent', - 'snooker player': 'Person', - 'airliner accident': 'Event/Disaster' -}, _defineProperty(_mapping, "football tournament", 'Event/SportsEvent'), _defineProperty(_mapping, 'individual darts tournament', 'Event'), _defineProperty(_mapping, 'nfl season', 'Event/SportsEvent'), _defineProperty(_mapping, 'beauty pageant', 'Event'), _defineProperty(_mapping, 'nfl draft', 'Event/SportsEvent'), _defineProperty(_mapping, 'athletics championships', 'Event/SportsEvent'), _defineProperty(_mapping, 'historical event', 'Event'), _defineProperty(_mapping, 'grand prix motorcycle race report', 'Event'), _defineProperty(_mapping, 'football club season', 'Event/SportsEvent'), _defineProperty(_mapping, 'international handball competition', 'Event'), _defineProperty(_mapping, 'coa case', 'Event'), _defineProperty(_mapping, 'individual snooker tournament', 'Event'), _defineProperty(_mapping, 'canadian football game', 'Event/SportsEvent'), _defineProperty(_mapping, 'australian rules football season', 'Event/SportsEvent'), _defineProperty(_mapping, 'football tournament season', 'Event/SportsEvent'), _defineProperty(_mapping, 'esc national year', 'Event'), _defineProperty(_mapping, "indy500", 'Event'), _defineProperty(_mapping, 'international ice hockey competition', 'Event/SportsEvent'), _defineProperty(_mapping, 'cricket tour', 'Event/SportsEvent'), _defineProperty(_mapping, 'national political convention', 'Event'), _defineProperty(_mapping, "referendum", 'Event'), _defineProperty(_mapping, 'football club', 'Organization/SportsTeam'), _defineProperty(_mapping, 'radio station', 'Organization'), _defineProperty(_mapping, 'military unit', 'Organization'), _defineProperty(_mapping, 'political party', 'Organization/PoliticalParty'), _defineProperty(_mapping, 'government agency', 'Organization'), _defineProperty(_mapping, 'rail line', 'Organization'), _defineProperty(_mapping, 'record label', 'Organization'), _defineProperty(_mapping, 'school district', 'Organization'), _defineProperty(_mapping, 'tv channel', 'Organization'), _defineProperty(_mapping, 'sports league', 'Organization'), _defineProperty(_mapping, 'football league', 'Organization'), _defineProperty(_mapping, "worldscouting", 'Organization'), _defineProperty(_mapping, 'rugby team', 'Organization/SportsTeam'), _defineProperty(_mapping, 'sg rail', 'Organization'), _defineProperty(_mapping, 'law enforcement agency', 'Organization'), _defineProperty(_mapping, 'uk legislation', 'Organization'), _defineProperty(_mapping, 'public transit', 'Organization'), _defineProperty(_mapping, 'us university ranking', 'Organization'), _defineProperty(_mapping, 'television channel', 'Organization'), _defineProperty(_mapping, 'national football team', 'Organization/SportsTeam'), _defineProperty(_mapping, 'bus transit', 'Organization'), _defineProperty(_mapping, "union", 'Organization'), _defineProperty(_mapping, 'broadcasting network', 'Organization'), _defineProperty(_mapping, 'christian denomination', 'Organization'), _defineProperty(_mapping, 'film awards', 'Organization'), _defineProperty(_mapping, 'gaa club', 'Organization'), _defineProperty(_mapping, "fraternity", 'Organization'), _defineProperty(_mapping, "rail", 'Organization'), _defineProperty(_mapping, 'rail service', 'Organization'), _defineProperty(_mapping, 'national military', 'Organization'), _defineProperty(_mapping, 'sport governing body', 'Organization'), _defineProperty(_mapping, 'basketball club', 'Organization/SportsTeam'), _defineProperty(_mapping, 'hockey team', 'Organization/SportsTeam'), _defineProperty(_mapping, 'political party/seats', 'Organization'), _defineProperty(_mapping, 'rugby league club', 'Organization/SportsTeam'), _defineProperty(_mapping, 'athletic conference', 'Organization'), _defineProperty(_mapping, 'football club infobox', 'Organization/SportsTeam'), _defineProperty(_mapping, 'film festival', 'Organization'), _defineProperty(_mapping, "medical condition (new)", 'Organization'), _defineProperty(_mapping, "brand", 'Organization/MusicalGroup'), _defineProperty(_mapping, 'cricket team', 'Organization/SportsTeam'), _defineProperty(_mapping, 'dot-com company', 'Organization'), _defineProperty(_mapping, 'india university ranking', 'Organization'), _defineProperty(_mapping, 'uk university rankings', 'Organization'), _defineProperty(_mapping, 'government cabinet', 'Organization'), _defineProperty(_mapping, "taxobox", 'Organism'), _defineProperty(_mapping, "subspeciesbox", 'Organism'), _defineProperty(_mapping, "mycomorphbox", 'Organism'), _defineProperty(_mapping, 'paraphyletic group', 'Organism'), _defineProperty(_mapping, 'nutritional value', 'Organism'), _defineProperty(_mapping, "infraspeciesbox", 'Organism'), _defineProperty(_mapping, "disease", 'MedicalCondition'), _defineProperty(_mapping, "ecoregion", 'Place'), _defineProperty(_mapping, "horse", 'Organism'), _defineProperty(_mapping, "haplogroup", 'Organism'), _defineProperty(_mapping, "bird", 'Organism'), _defineProperty(_mapping, 'bird/population', 'Organism'), _defineProperty(_mapping, 'medical resources', 'Organism'), _defineProperty(_mapping, "galaxy", 'Place/SpaceLocation'), _defineProperty(_mapping, 'nc name', 'Organism'), _defineProperty(_mapping, 'pig breed', 'Organism'), _defineProperty(_mapping, 'botanical product', 'Organism'), _defineProperty(_mapping, 'cattle breed', 'Organism'), _defineProperty(_mapping, "bishop", 'Person/ReligiousFigure'), _defineProperty(_mapping, 'horse breed', 'Organism'), _defineProperty(_mapping, 'poultry breed', 'Organism'), _defineProperty(_mapping, 'football biography', 'Person/Athlete'), _defineProperty(_mapping, 'military person', 'Person'), _defineProperty(_mapping, 'baseball biography', 'Person/Athlete'), _defineProperty(_mapping, 'ice hockey player', 'Person/Athlete'), _defineProperty(_mapping, 'nfl player', 'Person/Athlete'), _defineProperty(_mapping, 'christian leader', 'Person/ReligiousFigure'), _defineProperty(_mapping, "congressman", 'Person/Politician'), _defineProperty(_mapping, 'basketball biography', 'Person/Athlete'), _defineProperty(_mapping, 'comics creator', 'Person/Artist'), _defineProperty(_mapping, 'professional wrestler', 'Person/Athlete'), _defineProperty(_mapping, 'college coach', 'Person'), _defineProperty(_mapping, 'tennis biography', 'Person/Athlete'), _defineProperty(_mapping, 'afl biography', 'Person/Athlete'), _defineProperty(_mapping, 'nfl biography', 'Person/Athlete'), _defineProperty(_mapping, 'rugby biography', 'Person/Athlete'), _defineProperty(_mapping, 'rugby league biography', 'Person/Athlete'), _defineProperty(_mapping, 'prime minister', 'Person/Politician'), _defineProperty(_mapping, 'nba biography', 'Person/Athlete'), _defineProperty(_mapping, 'figure skater', 'Person/Athlete'), _defineProperty(_mapping, 'f1 driver', 'Person'), _defineProperty(_mapping, 'gridiron football person', 'Person'), _defineProperty(_mapping, 'indian politician', 'Person/Politician'), _defineProperty(_mapping, 'racing driver', 'Person'), _defineProperty(_mapping, 'martial artist', 'Person'), _defineProperty(_mapping, 'chinese-language singer and actor', 'Person'), _defineProperty(_mapping, "astronaut", 'Person'), _defineProperty(_mapping, "senator", 'Person/Politician'), _defineProperty(_mapping, 'nascar driver', 'Person'), _defineProperty(_mapping, 'adult biography', 'Person'), _defineProperty(_mapping, 'state representative', 'Person/Politician'), _defineProperty(_mapping, 'state senator', 'Person/Politician'), _defineProperty(_mapping, 'coa wide', 'Person'), _defineProperty(_mapping, 'religious biography', 'Person/ReligiousFigure'), _defineProperty(_mapping, 'chess player', 'Person'), _defineProperty(_mapping, 'pageant titleholder', 'Person'), _defineProperty(_mapping, 'gaa player', 'Person/Athlete'), _defineProperty(_mapping, 'us cabinet official', 'Person/Politician'), _defineProperty(_mapping, 'uk place', 'Place'), _defineProperty(_mapping, 'italian comune', 'Place'), _defineProperty(_mapping, "geobox", 'Place'), _defineProperty(_mapping, 'australian place', 'Place'), _defineProperty(_mapping, 'french commune', 'Place'), _defineProperty(_mapping, 'german location', 'Place'), _defineProperty(_mapping, 'u.s. county', 'Place'), _defineProperty(_mapping, 'swiss town', 'Place/City'), _defineProperty(_mapping, 'former country', 'Place'), _defineProperty(_mapping, 'uk school', 'Place/Structure'), _defineProperty(_mapping, 'road small', 'Place'), _defineProperty(_mapping, 'lunar crater', 'Place'), _defineProperty(_mapping, 'gb station', 'Place'), _defineProperty(_mapping, 'greek dimos', 'Place'), _defineProperty(_mapping, 'military structure', 'Place/Structure'), _defineProperty(_mapping, 'uk constituency main', 'Place'), _defineProperty(_mapping, 'city japan', 'Place/City'), _defineProperty(_mapping, 'religious building', 'Place/Structure'), _defineProperty(_mapping, 'shopping mall', 'Place/Structure'), _defineProperty(_mapping, 'municipality br', 'Place/City'), _defineProperty(_mapping, 'finnish municipality/population count', 'Place'), _defineProperty(_mapping, 'ancient site', 'Place'), _defineProperty(_mapping, 'mountain range', 'Place'), _defineProperty(_mapping, 'london station', 'Place'), _defineProperty(_mapping, 'russian town', 'Place/City'), _defineProperty(_mapping, 'former subdivision', 'Place'), _defineProperty(_mapping, "lighthouse", 'Place/Structure'), _defineProperty(_mapping, 'uk station', 'Place'), _defineProperty(_mapping, 'historic site', 'Place'), _defineProperty(_mapping, 'world heritage site', 'Place'), _defineProperty(_mapping, "diocese", 'Place'), _defineProperty(_mapping, 'south african town 2011', 'Place/City'), _defineProperty(_mapping, 'uk disused station', 'Place'), _defineProperty(_mapping, 'belgium municipality', 'Place'), _defineProperty(_mapping, 'uk constituency', 'Place'), _defineProperty(_mapping, "theatre", 'Place'), _defineProperty(_mapping, 'canada electoral district', 'Place'), _defineProperty(_mapping, "nycs", 'Place'), _defineProperty(_mapping, 'body of water', 'Place/BodyOfWater'), _defineProperty(_mapping, 'mountain pass', 'Place'), _defineProperty(_mapping, "kommune", 'Place'), _defineProperty(_mapping, 'historic subdivision', 'Place'), _defineProperty(_mapping, 'u.s. congressional district', 'Place'), _defineProperty(_mapping, 'power station', 'Place/Structure'), _mapping); -var mapping_1 = mapping.actor; -var mapping_2 = mapping.adult_biography; -var mapping_3 = mapping.afl_biography; -var mapping_4 = mapping.aircraft_accident; -var mapping_5 = mapping.airline; -var mapping_6 = mapping.airliner_accident; -var mapping_7 = mapping.airport; -var mapping_8 = mapping.album; -var mapping_9 = mapping.alpine_ski_racer; -var mapping_10 = mapping.amusement_park; -var mapping_11 = mapping.ancient_site; -var mapping_12 = mapping.archbishop; -var mapping_13 = mapping.architect; -var mapping_14 = mapping.artist; -var mapping_15 = mapping.artwork; -var mapping_16 = mapping.athlete; -var mapping_17 = mapping.athletics_championships; -var mapping_18 = mapping.australian_place; -var mapping_19 = mapping.automobile; -var mapping_20 = mapping.badminton_event; -var mapping_21 = mapping.baseball_biography; -var mapping_22 = mapping.basketball_biography; -var mapping_23 = mapping.basketball_club; -var mapping_24 = mapping.pro_hockey_team; -var mapping_25 = mapping.beauty_pageant; -var mapping_26 = mapping.beverage; -var mapping_27 = mapping.body_of_water; -var mapping_28 = mapping.book; -var mapping_29 = mapping.book_series; -var mapping_30 = mapping.boxer; -var mapping_31 = mapping.boxingmatch; -var mapping_32 = mapping.bridge; -var mapping_33 = mapping.broadcast; -var mapping_34 = mapping.broadcasting_network; -var mapping_35 = mapping.building; -var mapping_36 = mapping.canadianmp; -var mapping_37 = mapping.casino; -var mapping_38 = mapping.cbb_team; -var mapping_39 = mapping.cemetery; -var mapping_40 = mapping.cfl_player; -var mapping_41 = mapping.character; -var mapping_42 = mapping.chef; -var mapping_43 = mapping.chess_player; -var mapping_44 = mapping.choir; -var mapping_45 = mapping.christian_leader; -var mapping_46 = mapping.church; -var mapping_47 = mapping.civil_conflict; -var mapping_48 = mapping.college; -var mapping_49 = mapping.college_coach; -var mapping_50 = mapping.college_football_player; -var mapping_51 = mapping.college_ice_hockey_team; -var mapping_52 = mapping.college_soccer_team; -var mapping_53 = mapping.comedian; -var mapping_54 = mapping.comic_book_title; -var mapping_55 = mapping.comic_strip; -var mapping_56 = mapping.comics_character; -var mapping_57 = mapping.comics_creator; -var mapping_58 = mapping.company; -var mapping_59 = mapping.concert_tour; -var mapping_60 = mapping.court_case; -var mapping_61 = mapping.cpu; -var mapping_62 = mapping.cricket_ground; -var mapping_63 = mapping.cricket_team; -var mapping_64 = mapping.cricketer; -var mapping_65 = mapping.criminal; -var mapping_66 = mapping.cyclist; -var mapping_67 = mapping.dam; -var mapping_68 = mapping.doctor_who_episode; -var mapping_69 = mapping.earthquake; -var mapping_70 = mapping.economist; -var mapping_71 = mapping.election; -var mapping_72 = mapping.electric_vehicle; -var mapping_73 = mapping.engineer; -var mapping_74 = mapping.event; -var mapping_75 = mapping.fashion_designer; -var mapping_76 = mapping.feature_on_mars; -var mapping_77 = mapping.field_hockey_player; -var mapping_78 = mapping.figure_skater; -var mapping_79 = mapping.fila_wrestling_event; -var mapping_80 = mapping.film; -var mapping_81 = mapping.film_awards; -var mapping_82 = mapping.film_festival; -var mapping_83 = mapping.football_biography; -var mapping_84 = mapping.football_club; -var mapping_85 = mapping.football_club_season; -var mapping_86 = mapping.football_country_season; -var mapping_87 = mapping.football_league; -var mapping_88 = mapping.football_league_season; -var mapping_89 = mapping.football_match; -var mapping_90 = mapping.football_tournament_season; -var mapping_91 = mapping.former_country; -var mapping_92 = mapping.former_subdivision; -var mapping_93 = mapping.french_commune; -var mapping_94 = mapping.gaa_club; -var mapping_95 = mapping.gaa_player; -var mapping_96 = mapping.german_location; -var mapping_97 = mapping.golf_facility; -var mapping_98 = mapping.golfer; -var mapping_99 = mapping.government_agency; -var mapping_100 = mapping.government_cabinet; -var mapping_101 = mapping.governor; -var mapping_102 = mapping.gpu; -var mapping_103 = mapping.gridiron_football_person; -var mapping_104 = mapping.gymnast; -var mapping_105 = mapping.handball_biography; -var mapping_106 = mapping.hindu_leader; -var mapping_107 = mapping.historic_site; -var mapping_108 = mapping.historical_era; -var mapping_109 = mapping.holiday; -var mapping_110 = mapping.hollywood_cartoon; -var mapping_111 = mapping.horseraces; -var mapping_112 = mapping.horseracing_personality; -var mapping_113 = mapping.hospital; -var mapping_114 = mapping.hotel; -var mapping_115 = mapping.hurricane; -var mapping_116 = mapping.ice_hockey_player; -var mapping_117 = mapping.indian_politician; -var mapping_118 = mapping.individual_snooker_tournament; -var mapping_119 = mapping.islands; -var mapping_120 = mapping.israel_village; -var mapping_121 = mapping.italian_comune; -var mapping_122 = mapping.journal; -var mapping_123 = mapping.judge; -var mapping_124 = mapping.laboratory; -var mapping_125 = mapping.lacrosse_player; -var mapping_126 = mapping.lake; -var mapping_127 = mapping.launch_pad; -var mapping_128 = mapping.law_enforcement_agency; -var mapping_129 = mapping.legislative_term; -var mapping_130 = mapping.legislature; -var mapping_131 = mapping.library; -var mapping_132 = mapping.little_league_world_series; -var mapping_133 = mapping.magazine; -var mapping_134 = mapping.martial_artist; -var mapping_135 = mapping.mass_murderer; -var mapping_136 = mapping.medical_person; -var mapping_137 = mapping.military_conflict; -var mapping_138 = mapping.military_memorial; -var mapping_139 = mapping.military_person; -var mapping_140 = mapping.military_structure; -var mapping_141 = mapping.military_unit; -var mapping_142 = mapping.minister; -var mapping_143 = mapping.mlb_player; -var mapping_144 = mapping.mobile_phone; -var mapping_145 = mapping.model; -var mapping_146 = mapping.monarch; -var mapping_147 = mapping.monument; -var mapping_148 = mapping.motorcycle; -var mapping_149 = mapping.mountain; -var mapping_150 = mapping.mountain_pass; -var mapping_151 = mapping.mountain_range; -var mapping_152 = mapping.mp; -var mapping_153 = mapping.museum; -var mapping_154 = mapping.music_festival; -var mapping_155 = mapping.musical; -var mapping_156 = mapping.musical_artist; -var mapping_157 = mapping.musical_composition; -var mapping_158 = mapping.nascar_driver; -var mapping_159 = mapping.national_military; -var mapping_160 = mapping.nba_biography; -var mapping_161 = mapping.nba_season; -var mapping_162 = mapping.ncaa_baseball_conference_tournament; -var mapping_163 = mapping.ncaa_football_school; -var mapping_164 = mapping.ncaa_football_single_game; -var mapping_165 = mapping.ncaa_team_season; -var mapping_166 = mapping.neighborhood_portland_or; -var mapping_167 = mapping.newspaper; -var mapping_168 = mapping.nfl_biography; -var mapping_169 = mapping.nfl_draft; -var mapping_170 = mapping.nfl_player; -var mapping_171 = mapping.nfl_season; -var mapping_172 = mapping.nfl_single_game; -var mapping_173 = mapping.nobility; -var mapping_174 = mapping.non_test_cricket_team; -var mapping_175 = mapping.officeholder; -var mapping_176 = mapping.oil_field; -var mapping_177 = mapping.opera; -var mapping_178 = mapping.organization; -var mapping_179 = mapping.painting; -var mapping_180 = mapping.pandemic; -var mapping_181 = mapping.park; -var mapping_182 = mapping.pba_draft; -var mapping_183 = mapping.person; -var mapping_184 = mapping.philosopher; -var mapping_185 = mapping.police_officer; -var mapping_186 = mapping.political_party; -var mapping_187 = mapping.politician; -var mapping_188 = mapping.power_station; -var mapping_189 = mapping.presenter; -var mapping_190 = mapping.president; -var mapping_191 = mapping.prison; -var mapping_192 = mapping.professional_wrestler; -var mapping_193 = mapping.province_or_territory_of_canada; -var mapping_194 = mapping.public_transit; -var mapping_195 = mapping.publisher; -var mapping_196 = mapping.racing_driver; -var mapping_197 = mapping.radio_show; -var mapping_198 = mapping.radio_station; -var mapping_199 = mapping.rail_line; -var mapping_200 = mapping.rail_service; -var mapping_201 = mapping.reality_music_competition; -var mapping_202 = mapping.record_label; -var mapping_203 = mapping.recurring_event; -var mapping_204 = mapping.religious_biography; -var mapping_205 = mapping.religious_building; -var mapping_206 = mapping.river; -var mapping_207 = mapping.road; -var mapping_208 = mapping.road_small; -var mapping_209 = mapping.roman_emperor; -var mapping_210 = mapping.royalty; -var mapping_211 = mapping.rugby_biography; -var mapping_212 = mapping.rugby_league_biography; -var mapping_213 = mapping.rugby_league_club; -var mapping_214 = mapping.rugby_league_representative_team; -var mapping_215 = mapping.rugby_team; -var mapping_216 = mapping.russian_inhabited_locality; -var mapping_217 = mapping.russian_town; -var mapping_218 = mapping.saint; -var mapping_219 = mapping.scholar; -var mapping_220 = mapping.school; -var mapping_221 = mapping.school_district; -var mapping_222 = mapping.scientist; -var mapping_223 = mapping.scotland_council_area; -var mapping_224 = mapping.sea; -var mapping_225 = mapping.settlement; -var mapping_226 = mapping.shopping_mall; -var mapping_227 = mapping.skier; -var mapping_228 = mapping.soap_character; -var mapping_229 = mapping.song; -var mapping_230 = mapping.song_contest; -var mapping_231 = mapping.song_contest_entry; -var mapping_232 = mapping.south_african_subplace_2011; -var mapping_233 = mapping.spaceflight; -var mapping_234 = mapping.sport_governing_body; -var mapping_235 = mapping.sports_league; -var mapping_236 = mapping.sports_season; -var mapping_237 = mapping.sportsperson; -var mapping_238 = mapping.squash_player; -var mapping_239 = mapping.stadium; -var mapping_240 = mapping.state; -var mapping_241 = mapping.state_representative; -var mapping_242 = mapping.state_senator; -var mapping_243 = mapping.station; -var mapping_244 = mapping.street; -var mapping_245 = mapping.summit; -var mapping_246 = mapping.swimmer; -var mapping_247 = mapping.swiss_town; -var mapping_248 = mapping.synthesizer; -var mapping_249 = mapping.television; -var mapping_250 = mapping.television_channel; -var mapping_251 = mapping.television_episode; -var mapping_252 = mapping.television_season; -var mapping_253 = mapping.temple; -var mapping_254 = mapping.tennis_biography; -var mapping_255 = mapping.tennis_event; -var mapping_256 = mapping.tennis_grand_slam_events; -var mapping_257 = mapping.town_at; -var mapping_258 = mapping.treaty; -var mapping_259 = mapping.tv_channel; -var mapping_260 = mapping.uk_constituency; -var mapping_261 = mapping.uk_disused_station; -var mapping_262 = mapping.uk_legislation; -var mapping_263 = mapping.uk_place; -var mapping_264 = mapping.uk_school; -var mapping_265 = mapping.unesco_world_heritage_site; -var mapping_266 = mapping.university; -var mapping_267 = mapping.university_of_notre_dame_residence_hall; -var mapping_268 = mapping.v8_supercar_team; -var mapping_269 = mapping.venue; -var mapping_270 = mapping.video_game; -var mapping_271 = mapping.volleyball_biography; -var mapping_272 = mapping.volleyball_player; -var mapping_273 = mapping.waterfall; -var mapping_274 = mapping.windmill; -var mapping_275 = mapping.wrc_driver; -var mapping_276 = mapping.wrestling_event; -var mapping_277 = mapping.writer; -var mapping_278 = mapping.zoo; -var mapping_279 = mapping.speciesbox; -var mapping_280 = mapping.constellation; -var mapping_281 = mapping.planet; -var mapping_282 = mapping.dogbreed; -var mapping_283 = mapping.anthem; -var mapping_284 = mapping.computer; -var mapping_285 = mapping.play; -var mapping_286 = mapping.rpg; -var mapping_287 = mapping.webcomic; -var mapping_288 = mapping.indy500; -var mapping_289 = mapping.referendum; -var mapping_290 = mapping.worldscouting; -var mapping_291 = mapping.union; -var mapping_292 = mapping.fraternity; -var mapping_293 = mapping.rail; -var mapping_294 = mapping.brand; -var mapping_295 = mapping.taxobox; -var mapping_296 = mapping.subspeciesbox; -var mapping_297 = mapping.mycomorphbox; -var mapping_298 = mapping.infraspeciesbox; -var mapping_299 = mapping.disease; -var mapping_300 = mapping.ecoregion; -var mapping_301 = mapping.horse; -var mapping_302 = mapping.haplogroup; -var mapping_303 = mapping.bird; -var mapping_304 = mapping.galaxy; -var mapping_305 = mapping.bishop; -var mapping_306 = mapping.congressman; -var mapping_307 = mapping.astronaut; -var mapping_308 = mapping.senator; -var mapping_309 = mapping.geobox; -var mapping_310 = mapping.lighthouse; -var mapping_311 = mapping.diocese; -var mapping_312 = mapping.theatre; -var mapping_313 = mapping.nycs; -var mapping_314 = mapping.kommune; - -var byInfobox = function byInfobox(doc) { - var infoboxes = doc.infoboxes(); - var found = []; - - for (var i = 0; i < infoboxes.length; i++) { - var inf = infoboxes[i]; - var type = inf.type(); +const byInfobox = function (doc) { + let infoboxes = doc.infoboxes(); + let found = []; + + for (let i = 0; i < infoboxes.length; i++) { + let inf = infoboxes[i]; + let type = inf.type(); type = type.toLowerCase(); // type = type.replace(/^(category|categorie|kategori): ?/i, '') type = type.replace(/ /g, '_'); type = type.trim(); - if (mapping.hasOwnProperty(type)) { + if (mappings$4.infoboxes.hasOwnProperty(type)) { found.push({ - cat: mapping[type], + type: mappings$4.infoboxes[type], reason: type }); } @@ -1065,482 +1682,12 @@ var byInfobox = function byInfobox(doc) { var byInfobox_1 = byInfobox; -var patterns = { - FictionalCharacter: [/(fictional|television) characters/], - Product: [/products introduced in ./, /musical instruments/], - Organism: [/(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)$/], - // ==Person== - 'Person/Politician': [/politicians from ./, /politician stubs$/, /. (democrats|republicans|politicians)$/, /mayors of ./], - 'Person/Athlete': [/sportspeople from ./, /(footballers|cricketers|defencemen|cyclists)/], - 'Person/Actor': [/actresses/, /actors from ./, /actor stubs$/, / (actors|actresses)$/], - 'Person/Artist': [/musicians from ./, /(singers|songwriters|painters|poets)/, /novelists from ./], - // 'Person/Scientist': [(astronomers|physicists|biologists|chemists)], - Person: [/[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)/], - // ==Place== - 'Place/Structure': [/(buildings|bridges) completed in /, /airports established in ./, /(airports|bridges) in ./, /buildings and structures in ./], - 'Place/BodyOfWater': [/(rivers|lakes|tributaries) of ./], - 'Place/City': [/^cities and towns in ./, /(municipalities|settlements|villages|localities|townships) in ./], - Place: [/populated places/, /landforms of ./, /railway stations/, /parks in ./, / district$/, /geography stubs$/, /sports venue stubs$/], - // ==Creative Work== - 'CreativeWork/Album': [/[0-9]{4}.*? albums/, /^albums /, / albums$/], - 'CreativeWork/Film': [/[0-9]{4}.*? films/, / films$/, /^films /], - 'CreativeWork/TVShow': [/television series/], - 'CreativeWork/VideoGame': [/video games/], - CreativeWork: [/(film|novel|album) stubs$/, /[0-9]{4}.*? (poems|novels)/, / (poems|novels)$/], - // ==Event== - 'Event/SportsEvent': [/. league seasons$/, /^(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) ./], - Event: [/^(19|20)[0-9]{2} in /, /^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./], - // ==Orgs== - 'Organization/MusicalGroup': [/musical groups from /, /musical groups (dis)?established in [0-9]{4}/, /musical group stubs/, /. music(al)? (groups|duos|trios|quartets|quintets)$/], - 'Organization/SportsTeam': [/football clubs in ./, /(basketball|hockey|baseball|football) teams (in|established) ./], - 'Organization/Company': [/companies (established|based) in ./], - Organization: [/(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$/] -}; -var patterns_1 = patterns; - -var mapping$1 = { - 'living people': 'Person', - 'possibly living people': 'Person', - 'musical quartets': 'Organization/MusicalGroup', - 'musical duos': 'Organization/MusicalGroup', - 'musical trios': 'Organization/MusicalGroup', - // learned march 30 - 'dos games': 'CreativeWork/VideoGame', - 'virtual console games': 'CreativeWork/VideoGame', - 'mac os games': 'CreativeWork/VideoGame', - operas: 'CreativeWork', - 'american science fiction novels': 'CreativeWork', - 'amiga games': 'CreativeWork/VideoGame', - 'broadway musicals': 'CreativeWork', - 'debut novels': 'CreativeWork', - 'the twilight zone (1959 tv series) episodes': 'CreativeWork', - 'arcade games': 'CreativeWork/VideoGame', - 'united states national recording registry recordings': 'CreativeWork', - 'commodore 64 games': 'CreativeWork/VideoGame', - 'nintendo entertainment system games': 'CreativeWork/VideoGame', - 'macos games': 'CreativeWork', - 'playstation (console) games': 'CreativeWork/VideoGame', - 'virtual console games for wii u': 'CreativeWork', - 'ios games': 'CreativeWork/VideoGame', - 'super nintendo entertainment system games': 'CreativeWork/VideoGame', - 'video game sequels': 'CreativeWork/VideoGame', - 'american monthly magazines': 'CreativeWork', - 'broadway plays': 'CreativeWork', - 'game boy advance games': 'CreativeWork/VideoGame', - 'first-person shooters': 'CreativeWork/VideoGame', - 'playstation network games': 'CreativeWork/VideoGame', - 'interactive achievement award winners': 'CreativeWork', - 'linux games': 'CreativeWork/VideoGame', - 'atari st games': 'CreativeWork/VideoGame', - 'doubleday (publisher) books': 'CreativeWork', - '19th-century classical composers': 'CreativeWork', - 'film soundtracks': 'CreativeWork', - 'universal deluxe editions': 'CreativeWork', - 'playstation 2 games': 'CreativeWork/VideoGame', - 'best picture academy award winners': 'CreativeWork', - 'game boy games': 'CreativeWork/VideoGame', - 'shōnen manga': 'CreativeWork', - 'zx spectrum games': 'CreativeWork/VideoGame', - 'west end musicals': 'CreativeWork', - 'sequel novels': 'CreativeWork', - 'dystopian novels': 'CreativeWork', - 'american comic strips': 'CreativeWork', - 'american road movies': 'CreativeWork', - 'chemical elements': 'CreativeWork', - 'amstrad cpc games': 'CreativeWork', - 'mario universe games': 'CreativeWork/VideoGame', - 'neo-noir': 'CreativeWork', - 'multiplayer online games': 'CreativeWork/VideoGame', - 'mobile games': 'CreativeWork/VideoGame', - 'android (operating system) games': 'CreativeWork/VideoGame', - 'platform games': 'CreativeWork/VideoGame', - 'fiction with unreliable narrators': 'CreativeWork', - 'best drama picture golden globe winners': 'CreativeWork', - 'adventure anime and manga': 'CreativeWork', - 'albums recorded at abbey road studios': 'CreativeWork/Album', - 'xbox 360 live arcade games': 'CreativeWork/VideoGame', - 'sega genesis games': 'CreativeWork/VideoGame', - //learned events - 'years in literature': 'Event', - 'years in music': 'Event', - 'years in film': 'Event', - 'united states supreme court cases': 'Event', - 'leap years in the gregorian calendar': 'Event', - "governor general's awards": 'Event', - 'eurovision song contest by year': 'Event', - 'grammy awards ceremonies': 'Event', - 'united kingdom in the eurovision song contest': 'Event', - 'manned soyuz missions': 'Event', - 'american civil liberties union litigation': 'Event', - may: 'Event', - october: 'Event', - 'missions to the moon': 'Event', - 'nasa space probes': 'Event/SpaceMission', - 'world war ii british commando raids': 'Event', - july: 'Event', - december: 'Event', - 'wars involving the united kingdom': 'Event/MilitaryConflict', - september: 'Event', - november: 'Event', - january: 'Event', - june: 'Event', - august: 'Event', - april: 'Event', - february: 'Event', - march: 'Event', - 'conflicts in 1944': 'Event', - 'human spaceflights': 'Event/SpaceMission', - 'missions to mars': 'Event', - 'derelict space probes': 'Event/SpaceMission', - 'luna program': 'Event', - 'proxy wars': 'Event/MilitaryConflict', - 'conflicts in 1942': 'Event', - 'special air service': 'Event', - 'spacecraft launched by delta ii rockets': 'Event/SpaceMission', - 'soft landings on the moon': 'Event', - 'may observances': 'Event', - '1904 summer olympics events': 'Event/SportsEvent', - '1900 summer olympics events': 'Event/SportsEvent', - 'space shuttle missions': 'Event/SpaceMission', - 'apollo program missions': 'Event/SpaceMission', - 'spacecraft launched in 1962': 'Event/SpaceMission', - 'spacecraft launched by titan rockets': 'Event/SpaceMission', - 'first events': 'Event', - 'recent years': 'Event', - 'elections not won by the popular vote winner': 'Event', - 'conflicts in 1864': 'Event', - '1862 in the american civil war': 'Event', - 'new zealand wars': 'Event/MilitaryConflict', - 'battles between england and scotland': 'Event/MilitaryConflict', - '2002 winter olympics events': 'Event/SportsEvent', - 'spacecraft launched by atlas-centaur rockets': 'Event/SpaceMission', - 'space observatories': 'Event/SpaceMission', - 'new york (state) in the american revolution': 'Event', - 'march observances': 'Event', - 'public holidays in the united states': 'Event', - 'conflicts in 1943': 'Event/MilitaryConflict', - 'spacecraft launched in 1966': 'Event/SpaceMission', - 'last stand battles': 'Event/MilitaryConflict', - '1944 in france': 'Event', - 'battles and conflicts without fatalities': 'Event/MilitaryConflict', - 'manned missions to the moon': 'Event/SpaceMission', - 'sample return missions': 'Event/SpaceMission', - '1973 in spaceflight': 'Event/SpaceMission', - 'guerrilla wars': 'Event/MilitaryConflict', - 'retired atlantic hurricanes': 'Event/Disaster', - 'december observances': 'Event', - '20th century american trials': 'Event', - 'african-american civil rights movement (1954–68)': 'Event', - '20th-century conflicts': 'Event/MilitaryConflict', - 'presidential elections in ireland': 'Event/Election', - 'spacecraft launched in 1973': 'Event/SpaceMission', - 'october observances': 'Event', - 'spring holidays': 'Event', - 'years in aviation': 'Event', - 'national days': 'Event', - 'project gemini missions': 'Event/SpaceMission', - 'spacecraft launched in 1965': 'Event/SpaceMission', - '20th-century revolutions': 'Event/MilitaryConflict', - 'spacecraft launched in 1971': 'Event/SpaceMission', - 'fifa world cup tournaments': 'Event/SpaceMission', - 'summer holidays': 'Event', - 'sieges involving japan': 'Event/MilitaryConflict', - 'lunar flybys': 'Event/SpaceMission', - 'apollo program': 'Event', - 'revolution-based civil wars': 'Event/MilitaryConflict', - // learned organisms - 'taxa named by carl linnaeus': 'Organism', - 'ornamental trees': 'Organism', - 'birds by common name': 'Organism', - 'living fossils': 'Organism', - 'taxa named by john edward gray': 'Organism', - phelsuma: 'Organism', - multituberculates: 'Organism', - 'angiosperm orders': 'Organism', - cimolodonts: 'Organism', - 'urban animals': 'Organism', - flowers: 'Organism', - geckos: 'Organism', - herbs: 'Organism', - spices: 'Organism', - skinks: 'Organism', - 'cretaceous mammals': 'Organism', - 'commercial fish': 'Organism', - 'paleocene mammals': 'Organism', - 'bird families': 'Organism', - 'edible nuts and seeds': 'Organism', - 'invasive plant species': 'Organism', - 'leaf vegetables': 'Organism', - 'root vegetables': 'Organism', - 'corvus (genus)': 'Organism', - 'insects in culture': 'Organism', - ducks: 'Organism', - agamidae: 'Organism', - 'edge species': 'Organism', - 'tropical fruit': 'Organism', - pinus: 'Organism', - 'tropical agriculture': 'Organism', - 'indian spices': 'Organism', - 'paleocene genus extinctions': 'Organism', - 'epiphytic orchids': 'Organism', - crops: 'Organism', - 'fruits originating in asia': 'Organism', - calidris: 'Organism', - ptilodontoids: 'Organism', - 'plants and pollinators': 'Organism', - 'mammal families': 'Organism', - 'marine edible fish': 'Organism', - 'taxa named by leopold fitzinger': 'Organism', - setophaga: 'Organism', - shorebirds: 'Organism', - berries: 'Organism', - megafauna: 'Organism', - 'animal dance': 'Organism', - 'animal phyla': 'Organism', - 'american inventions': 'Organism', - entheogens: 'Organism', - 'crops originating from the americas': 'Organism', - 'non-timber forest products': 'Organism', - geese: 'Organism', - // person-musician - 'american male guitarists': 'Person/Artist', - 'american singer-songwriters': 'Person/Artist', - 'american male singers': 'Person/Artist', - 'american rock singers': 'Person/Artist', - 'american rock guitarists': 'Person/Artist', - '21st-century american singers': 'Person/Artist', - 'lead guitarists': 'Person/Artist', - 'african-american musicians': 'Person/Artist', - 'english male singers': 'Person/Artist', - 'american male singer-songwriters': 'Person/Artist', - 'american rock songwriters': 'Person/Artist', - 'american record producers': 'Person/Artist', - 'american country singer-songwriters': 'Person/Artist', - '20th-century american guitarists': 'Person/Artist', - 'english songwriters': 'Person/Artist', - '20th-century american pianists': 'Person/Artist', - 'songwriters from new york (state)': 'Person/Artist', - 'african-american singers': 'Person/Artist', - 'american blues singers': 'Person/Artist', - 'american pop singers': 'Person/Artist', - 'male guitarists': 'Person/Artist', - 'american country singers': 'Person/Artist', - 'blues hall of fame inductees': 'Person/Artist', - 'american male songwriters': 'Person/Artist', - 'songwriters from california': 'Person/Artist', - 'english rock guitarists': 'Person/Artist', - 'american folk singers': 'Person/Artist', - 'english rock singers': 'Person/Artist', - 'english singer-songwriters': 'Person/Artist', - 'african-american male rappers': 'Person/Artist', - 'african-american jazz musicians': 'Person/Artist', - '20th-century english singers': 'Person/Artist', - 'american female singer-songwriters': 'Person/Artist', - 'jewish american musicians': 'Person/Artist', - 'american blues guitarists': 'Person/Artist', - '20th-century conductors (music)': 'Person/Artist', - 'american female singers': 'Person/Artist', - 'american jazz bandleaders': 'Person/Artist', - 'american jazz pianists': 'Person/Artist', - 'american soul singers': 'Person/Artist', - 'american female guitarists': 'Person/Artist', - 'american multi-instrumentalists': 'Person/Artist', - 'american country guitarists': 'Person/Artist', - 'english record producers': 'Person/Artist', - 'songwriters from texas': 'Person/Artist', - 'american composers': 'Person/Artist', - 'singers from california': 'Person/Artist', - 'american folk guitarists': 'Person/Artist', - 'lgbt singers': 'Person/Artist', - 'american buskers': 'Person/Artist', - 'guitarists from california': 'Person/Artist', - 'feminist musicians': 'Person/Artist', - 'big band bandleaders': 'Person/Artist', - '20th-century composers': 'Person/Artist', - 'african-american songwriters': 'Person/Artist', - 'british rhythm and blues boom musicians': 'Person/Artist', - 'alternative rock singers': 'Person/Artist', - '21st-century american guitarists': 'Person/Artist', - 'american alternative rock musicians': 'Person/Artist', - 'musicians from los angeles': 'Person/Artist', - 'rhythm guitarists': 'Person/Artist', - 'american session musicians': 'Person/Artist', - 'jazz musicians from new orleans': 'Person/Artist', - 'alternative rock guitarists': 'Person/Artist', - '20th-century women musicians': 'Person/Artist', - 'male film score composers': 'Person/Artist', - 'african-american singer-songwriters': 'Person/Artist', - 'american jazz singers': 'Person/Artist', - '21st-century english singers': 'Person/Artist', - 'singers from new york city': 'Person/Artist', - 'american acoustic guitarists': 'Person/Artist', - 'musicians from new york city': 'Person/Artist', - 'slide guitarists': 'Person/Artist', - 'guitarists from texas': 'Person/Artist', - // org - 'companies listed on the new york stock exchange': 'Organization/Company', - 'football clubs in england': 'Organization/SportsTeam', - 'musical quintets': 'Organization/MusicalGroup', - 'english rock music groups': 'Organization/MusicalGroup', - 'english new wave musical groups': 'Organization/MusicalGroup', - 'jazz record labels': 'Organization/Company', - 'video game development companies': 'Organization/Company', - 'american record labels': 'Organization/Company', - 'english football league clubs': 'Organization/SportsTeam', - 'companies listed on nasdaq': 'Organization/Company', - 'african-american musical groups': 'Organization/MusicalGroup', - 'japanese brands': 'Organization', - 'video game companies of the united states': 'Organization/Company', - 'american jazz composers': 'Organization', - '21st-century american musicians': 'Organization/MusicalGroup', - 'companies formerly listed on the london stock exchange': 'Organization/Company', - 'southern football league clubs': 'Organization/SportsTeam', - 'multinational companies headquartered in the united states': 'Organization/Company', - 'scouting in the united states': 'Organization', - 'car brands': 'Organization', - 'american alternative metal musical groups': 'Organization/MusicalGroup', - 'government-owned airlines': 'Organization', - 'football clubs in scotland': 'Organization/SportsTeam', - 'baptist denominations in north america': 'Organization', - 'baptist denominations established in the 20th century': 'Organization', - 'land-grant universities and colleges': 'Organization', - 'companies listed on the tokyo stock exchange': 'Organization/Company', - 'organizations based in washington, d.c.': 'Organization', - 'premier league clubs': 'Organization/SportsTeam', - 'national basketball association teams': 'Organization/SportsTeam', - 'social democratic parties': 'Organization/PoliticalParty', - 're-established companies': 'Organization/Company', - 'video game publishers': 'Organization', - 'companies based in new york city': 'Organization/Company', - 'defunct video game companies': 'Organization/Company', - 'companies formed by merger': 'Organization/Company', - 'english pop music groups': 'Organization/MusicalGroup', - 'defunct motor vehicle manufacturers of the united states': 'Organization', - 'alternative rock groups from california': 'Organization', - 'entertainment companies based in california': 'Organization/Company', - 'art rock musical groups': 'Organization/MusicalGroup', - 'english post-punk music groups': 'Organization/MusicalGroup', - // learned people - 'year of birth unknown': 'Person', - 'fellows of the royal society': 'Person', - 'members of the privy council of the united kingdom': 'Person', - 'uk mps 2001–05': 'Person/Politician', - 'uk mps 1997–2001': 'Person/Politician', - '20th-century american novelists': 'Person/Artist', - 'american people of english descent': 'Person', - 'american male novelists': 'Person/Artist', - 'uk mps 2005–10': 'Person/Politician', - 'guggenheim fellows': 'Person', - '20th-century american writers': 'Person', - 'harvard university alumni': 'Person', - 'fellows of the american academy of arts and sciences': 'Person/Academic', - 'american military personnel of world war ii': 'Person', - '19th-century male writers': 'Person', - 'knights bachelor': 'Person', - 'american roman catholics': 'Person', - 'uk mps 1992–97': 'Person/Politician', - 'american male writers': 'Person', - 'roman catholic monarchs': 'Person/ReligiousFigure', - '20th-century women writers': 'Person', - 'labour party (uk) mps for english constituencies': 'Person/Politician', - '20th-century male writers': 'Person', - 'german male writers': 'Person', - 'knights of the garter': 'Person', - 'conservative party (uk) mps for english constituencies': 'Person/Politician', - 'presidential medal of freedom recipients': 'Person', - 'uk mps 1987–92': 'Person/Politician', - 'american film directors': 'Person/Artist', - '21st-century american novelists': 'Person/Artist', - 'uk mps 2010–15': 'Person/Politician', - 'american film producers': 'Person/Artist', - 'members of the united states national academy of sciences': 'Person/Academic', - 'commanders of the order of the british empire': 'Person', - 'democratic party members of the united states house of representatives': 'Person/Politician', - 'people educated at eton college': 'Person', - 'american male screenwriters': 'Person/Artist', - '21st-century american writers': 'Person', - 'republican party members of the united states house of representatives': 'Person/Politician', - popes: 'Person/ReligiousFigure', - 'alumni of trinity college, cambridge': 'Person', - 'french male writers': 'Person', - 'foreign members of the royal society': 'Person', - 'american science fiction writers': 'Person/Artist', - 'american people of scottish descent': 'Person', - 'american memoirists': 'Person', - 'members of the french academy of sciences': 'Person', - 'jewish american writers': 'Person', - '20th-century english novelists': 'Person/Artist', - 'uk mps 1983–87': 'Person/Politician', - 'united states army soldiers': 'Person', - 'officers of the order of the british empire': 'Person', - 'deaths from pneumonia': 'Person', - 'burials at père lachaise cemetery': 'Person', - 'deaths from cancer in california': 'Person', - 'year of birth missing (living people)': 'Person', - 'democratic party state governors of the united states': 'Person/Politician', - 'english male poets': 'Person/Artist', - 'knights of the golden fleece': 'Person', - 'american male short story writers': 'Person/Artist', - 'columbia university alumni': 'Person', - 'alumni of the university of edinburgh': 'Person', - 'american political writers': 'Person/Artist', - 'california republicans': 'Person/Politician', - 'members of the royal swedish academy of sciences': 'Person/Academic', - 'american people of russian-jewish descent': 'Person', - '20th-century american short story writers': 'Person/Academic', - 'yale university alumni': 'Person', - 'italian popes': 'Person/ReligiousFigure', - 'american atheists': 'Person', - 'people of the tudor period': 'Person', - 'tony award winners': 'Person', - 'male actors from new york city': 'Person/Actor', - 'british secretaries of state': 'Person/Politician', - 'democratic party united states senators': 'Person/Politician', - 'members of the académie française': 'Person', - 'united states army officers': 'Person', - 'persons of national historic significance (canada)': 'Person', - 'uk mps 2015–17': 'Person/Politician', - '20th-century american businesspeople': 'Person', - 'american journalists': 'Person', - 'american television producers': 'Person', - 'writers from new york city': 'Person', - 'republican party united states senators': 'Person/Politician', - 'american male journalists': 'Person', - '21st-century women writers': 'Person', - 'american male comedians': 'Person', - 'american nobel laureates': 'Person/Academic', - 'republican party state governors of the united states': 'Person/Politician', - 'princeton university alumni': 'Person', - 'university of paris alumni': 'Person', - 'american episcopalians': 'Person', - 'american women novelists': 'Person', - 'phi beta kappa members': 'Person', - '20th-century american poets': 'Person', - 'harvard university faculty': 'Person/Academic', - 'english male novelists': 'Person/Artist', - 'california democrats': 'Person/Politician', - 'uk mps 1979–83': 'Person/Politician', - 'bafta winners (people)': 'Person', - 'english male writers': 'Person', - 'uk mps 2017–': 'Person/Politician', - "members of the queen's privy council for canada": 'Person', - 'vaudeville performers': 'Person/Artist', - 'american presbyterians': 'Person' -}; - -var byPattern = function byPattern(str, patterns) { - var types = Object.keys(patterns); - - for (var i = 0; i < types.length; i++) { - var key = types[i]; - - for (var o = 0; o < patterns[key].length; o++) { - var reg = patterns[key][o]; +const byPattern = function (str, patterns) { + for (let i = 0; i < patterns.length; i += 1) { + let reg = patterns[i][0]; - if (reg.test(str) === true) { - return key; - } + if (reg.test(str) === true) { + return patterns[i][1]; } } @@ -1549,35 +1696,40 @@ var byPattern = function byPattern(str, patterns) { var _byPattern = byPattern; -var byCategory = function byCategory(doc) { - var found = []; - var cats = doc.categories(); // clean them up a bit +const { + patterns: patterns$3, + mappings: mappings$3 +} = _dataFns; + +const byCategory = function (doc) { + let found = []; + let cats = doc.categories(); // clean them up a bit - cats = cats.map(function (cat) { + cats = cats.map(cat => { cat = cat.toLowerCase(); cat = cat.replace(/^(category|categorie|kategori): ?/i, ''); cat = cat.replace(/_/g, ' '); return cat.trim(); }); // loop through each - for (var i = 0; i < cats.length; i++) { - var cat = cats[i]; // try our 1-to-1 mapping + for (let i = 0; i < cats.length; i++) { + const category = cats[i]; // try our 1-to-1 mapping - if (mapping$1.hasOwnProperty(cat)) { + if (mappings$3.categories.hasOwnProperty(category)) { found.push({ - cat: mapping$1[cat], - reason: cat + type: mappings$3.categories[category], + reason: category }); continue; } // loop through our patterns - var match = _byPattern(cat, patterns_1); + let match = _byPattern(category, patterns$3.categories); if (match) { found.push({ - cat: match, - reason: cat + type: match, + reason: category }); } } @@ -1587,163 +1739,30 @@ var byCategory = function byCategory(doc) { var byCategory_1 = byCategory; -var patterns$1 = { - 'Person/Actor': [/actor-stub$/], - 'Person/Politician': [/(politician|mayor)-stub$/], - 'Person/Artist': [/(artist|musician|singer)-stub$/], - 'Person/Athlete': [/sport-bio-stub$/], - Person: [/-bio-stub$/], - 'CreativeWork/Book': [/-novel-stub$/], - 'CreativeWork/Film': [/-film-stub$/], - 'CreativeWork/Album': [/-album-stub$/], - 'CreativeWork/Play': [/-play-stub$/], - CreativeWork: [/-song-stub$/], - 'Event/Election': [/-election-stub$/], - 'Organization/SportsTeam': [/-sport-team-stub$/], - 'Organization/Company': [/-company-stub$/], - 'Place/BodyOfWater': [/-river-stub$/], - Place: [/-geo-stub$/] -}; - -var mapping$2 = { - //place - coord: 'Place', - 'weather box': 'Place', - //person - persondata: 'Person', - writer: 'Person', - 'ted speaker': 'Person', - taxonbar: 'Organism', - wikispecies: 'Organism', - animalia: 'Organism', - chordata: 'Organism', - cnidaria: 'Organism', - porifera: 'Organism', - epicaridea: 'Organism', - mammals: 'Organism', - phlyctaeniidae: 'Organism', - carnivora: 'Organism', - clade: 'Organism', - 'life on earth': 'Organism', - 'orders of insects': 'Organism', - coleoptera: 'Organism', - 'insects in culture': 'Organism', - 'living things in culture': 'Organism', - 'eukaryota classification': 'Organism', - // creative work - rating: 'CreativeWork', - 'certification table entry': 'CreativeWork', - 'imdb title': 'CreativeWork/Film', - 'track listing': 'CreativeWork/Album', - albumchart: 'CreativeWork', - 'film date': 'CreativeWork/Film', - music: 'CreativeWork', - // vgrelease: 'CreativeWork', - // chem: 'CreativeWork', - 'album ratings': 'CreativeWork', - tracklist: 'CreativeWork/Album', - 'episode list': 'CreativeWork/TVShow', - 'album chart': 'CreativeWork', - 'rotten-tomatoes': 'CreativeWork/Film', - singles: 'CreativeWork', - isbnt: 'CreativeWork', - singlechart: 'CreativeWork', - 'tcmdb title': 'CreativeWork', - 'mojo title': 'CreativeWork', - 'based on': 'CreativeWork', - 'amg movie': 'CreativeWork', - duration: 'CreativeWork', - // learned events - esc: 'Event', - 'year nav': 'Event', - 'year dab': 'Event', - goal: 'Event', - flagiocmedalist: 'Event', - 'm1 year in topic': 'Event', - 'year nav topic5': 'Event', - 'bc year in topic': 'Event', - flagiocathlete: 'Event', - 'election summary party with leaders': 'Event/Election', - 'year article header': 'Event', - //learned organisms - 'iucn status': 'Organism', - extinct: 'Organism', - 'fossil range': 'Organism', - internetbirdcollection: 'Organism', - vireo: 'Organism', - 'angle bracket': 'Organism', - 'wikispecies-inline': 'Organism', - 'iucn map': 'Organism', - 'xeno-canto species': 'Organism', - avibase: 'Organism', - cladex: 'Organism', - birdlife: 'Organism', - fossilrange: 'Organism', - //leaned orgs - 'composition bar': 'Organization', - 'fs player': 'Organization', - y: 'Organization', - n: 'Organization', - rws: 'Organization', - allmusic: 'Organization/MusicalGroup', - // learned people - 's-aft': 'Person', - 's-bef': 'Person', - 's-start': 'Person', - marriage: 'Person', - 'list of united states senators congress': 'Person/Politician', - 's-off': 'Person', - 's-par': 'Person', - 'internet archive author': 'Person', - 'ribbon devices': 'Person', - 's-reg': 'Person', - 'find a grave': 'Person', - 'gutenberg author': 'Person', - 's-new': 'Person', - 'other people': 'Person', - medalgold: 'Person', - 'baseball year': 'Person/Athlete', - medal: 'Person', - // 'post-nominals': 'Person', - mlby: 'Person', - 's-vac': 'Person', - 's-hou': 'Person', - 'librivox author': 'Person', - 'blp sources': 'Person', - 's-ppo': 'Person', - nbay: 'Person', - //learned places - 'us census population': 'Place', - jct: 'Place', - 'geographic location': 'Place', - // wikivoyage: 'Place', - representative: 'Place', - 'historical populations': 'Place', - 'wikivoyage-inline': 'Place', - 'election box': 'Place', - zh: 'Place', - 'wide image': 'Place' -}; +const { + patterns: patterns$2, + mappings: mappings$2 +} = _dataFns; -var byTemplate = function byTemplate(doc) { - var templates = doc.templates(); - var found = []; +const byTemplate = function (doc) { + let templates = doc.templates().map(tmpl => tmpl.json()); + let found = []; - for (var i = 0; i < templates.length; i++) { - var title = templates[i].template; + for (let i = 0; i < templates.length; i++) { + const title = templates[i].template; - if (mapping$2.hasOwnProperty(title)) { + if (mappings$2.templates.hasOwnProperty(title)) { found.push({ - cat: mapping$2[title], + type: mappings$2.templates[title], reason: title }); } else { // try regex-list on it - var type = _byPattern(title, patterns$1); + let type = _byPattern(title, patterns$2.templates); if (type) { found.push({ - cat: type, + type: type, reason: title }); } @@ -1755,220 +1774,24 @@ var byTemplate = function byTemplate(doc) { var byTemplate_1 = byTemplate; -var mapping$3 = { - // person - 'early life': 'Person', - 'personal life': 'Person', - career: 'Person', - 'career statistics': 'Person', - 'playing career': 'Person', - 'life and career': 'Person', - 'early life and education': 'Person', - 'film and television credits': 'Person', - filmography: 'Person', - 'selected filmography': 'Person', - // place - demographics: 'Place', - neighbourhoods: 'Place', - climate: 'Place', - 'sister cities': 'Place/City', - 'notable people': 'Place', - // creative-work - cast: 'CreativeWork/Film', - plot: 'CreativeWork', - reception: 'CreativeWork', - // 'critical reception': 'CreativeWork', - // 'critical response': 'CreativeWork', - 'track listing': 'CreativeWork/Album', - // org - founding: 'Organization', - founders: 'Organization', - 'coaching staff': 'Organization/SportsTeam', - 'head coaches': 'Organization/SportsTeam', - 'team records': 'Organization/SportsTeam', - 'band members': 'Organization/MusicalGroup', - habitat: 'Organism', - morphology: 'Organism', - phylogeny: 'Organism', - 'distribution and diversity': 'Organism', - 'distribution and habitat': 'Organism', - 'reproduction and development': 'Organism', - 'taxonomy and phylogeny': 'Organism', - // march 29th - //learned works - // production: 'CreativeWork', - charts: 'CreativeWork', - release: 'CreativeWork', - 'plot summary': 'CreativeWork', - gameplay: 'CreativeWork', - characters: 'CreativeWork', - 'box office': 'CreativeWork', - accolades: 'CreativeWork', - soundtrack: 'CreativeWork', - adaptations: 'CreativeWork', - synopsis: 'CreativeWork', - 'home media': 'CreativeWork', - 'weekly charts': 'CreativeWork', - themes: 'CreativeWork', - 'publication history': 'CreativeWork', - filming: 'CreativeWork', - 'year-end charts': 'CreativeWork', - casting: 'CreativeWork', - 'release and reception': 'CreativeWork', - 'commercial performance': 'CreativeWork', - composition: 'CreativeWork', - album: 'CreativeWork', - setting: 'CreativeWork', - 'chart positions': 'CreativeWork', - 'release history': 'CreativeWork', - 'charts and certifications': 'CreativeWork', - sequels: 'CreativeWork', - 'chart performance': 'CreativeWork', - sequel: 'CreativeWork', - recordings: 'CreativeWork', - story: 'CreativeWork', - editions: 'CreativeWork', - 'in other media': 'CreativeWork', - // learned events - aftermath: 'Event', - births: 'Event', - deaths: 'Event', - battle: 'Event', - results: 'Event', - prelude: 'Event', - may: 'Event', - june: 'Event', - march: 'Event', - december: 'Event', - october: 'Event', - july: 'Event', - august: 'Event', - april: 'Event', - november: 'Event', - february: 'Event', - september: 'Event', - january: 'Event', - incumbents: 'Event', - casualties: 'Event', - 'july to december': 'Event', - 'january to june': 'Event', - 'medal table': 'Event', - 'mission highlights': 'Event/SpaceMission', - campaign: 'Event', - // learned orgs - albums: 'Organization/MusicalGroup', - 'studio albums': 'Organization/MusicalGroup', - members: 'Organization', - athletics: 'Organization', - 'notable alumni': 'Organization', - academics: 'Organization', - campus: 'Organization', - organization: 'Organization', - 'student life': 'Organization', - rankings: 'Organization', - 'compilation albums': 'Organization/MusicalGroup', - // origins: 'Organization', - 'live albums': 'Organization/MusicalGroup', - products: 'Organization/Company', - fleet: 'Organization', - compilations: 'Organization/MusicalGroup', - research: 'Organization', - formation: 'Organization', - operations: 'Organization', - 'current squad': 'Organization/SportsTeam', - players: 'Organization', - alumni: 'Organization', - eps: 'Organization/MusicalGroup', - 'former members': 'Organization', - presidents: 'Organization', - membership: 'Organization', - 'current members': 'Organization', - // learned people - works: 'Person', - life: 'Person', - family: 'Person', - 'political career': 'Person', - 'early career': 'Person', - // ancestry: 'Person', - 'later life': 'Person', - 'early life and career': 'Person', - 'later years': 'Person', - 'death and legacy': 'Person', - work: 'Person', - novels: 'Person', - 'later career': 'Person', - international: 'Person', - 'selected works': 'Person', - writings: 'Person', - 'professional career': 'Person', - retirement: 'Person', - poetry: 'Person', - marriage: 'Person', - // films: 'Person', - 'electoral history': 'Person', - 'military career': 'Person', - 'international career': 'Person', - 'parliamentary career': 'Person', - // learned places - geography: 'Place', - '2010 census': 'Place', - '2000 census': 'Place', - economy: 'Place', - transportation: 'Place', - government: 'Place', - communities: 'Place', - transport: 'Place', - culture: 'Place', - sports: 'Place', - 'adjacent counties': 'Place', - 'major highways': 'Place', - 'notable residents': 'Place', - tourism: 'Place', - cities: 'Place', - population: 'Place', - 'unincorporated communities': 'Place', - 'international relations': 'Place', - infrastructure: 'Place', - schools: 'Place', - rail: 'Place', - 'census-designated places': 'Place', - towns: 'Place', - 'local government': 'Place', - 'points of interest': 'Place', - attractions: 'Place', - geology: 'Place', - townships: 'Place', - recreation: 'Place', - location: 'Place', - 'arts and culture': 'Place', - governance: 'Place', - 'administrative divisions': 'Place', - landmarks: 'Place', - demography: 'Place', - 'parks and recreation': 'Place', - 'public transportation': 'Place', - 'coat of arms': 'Place', - churches: 'Place' // learned things - //compatibility: 'Thing', - //compliance: 'Thing', - //'key features': 'Thing' - -}; +const { + mappings: mappings$1 +} = _dataFns; -var fromSection = function fromSection(doc) { - var found = []; - var titles = doc.sections().map(function (s) { - var str = s.title(); +const fromSection = function (doc) { + let found = []; + let titles = doc.sections().map(s => { + let str = s.title(); str = str.toLowerCase().trim(); return str; }); - for (var i = 0; i < titles.length; i++) { - var title = titles[i]; + for (let i = 0; i < titles.length; i++) { + const title = titles[i]; - if (mapping$3.hasOwnProperty(title)) { + if (mappings$1.sections.hasOwnProperty(title)) { found.push({ - cat: mapping$3[title], + type: mappings$1.sections[title], reason: title }); } @@ -1979,293 +1802,44 @@ var fromSection = function fromSection(doc) { var bySection = fromSection; -var mapping$4 = { - 'american football player': 'Person/Athlete', - 'australian politician': 'Person/Politician', - 'canadian politician': 'Person/Politician', - 'cape verde': 'Place', - 'cedar busway station': 'Place', - 'computer game': 'Product', - 'delhi metro': 'Place', - 'erie county, new york': 'Place', - 'football player': 'Person/Athlete', - 'gaelic footballer': 'Person/Athlete', - 'murder victim': 'Person', - 'new jersey': 'Place', - 'new orleans': 'Place', - 'new york City Subway': 'Place', - 'new york': 'Place', - 'new zealand': 'Place', - 'north carolina': 'Place', - 'northern ireland': 'Place', - 'season 2': 'CreativeWork', - 'season 3': 'CreativeWork', - 'season 4': 'CreativeWork', - 'season 5': 'CreativeWork', - 'sri lanka': 'Place', - 'the twilight zone': 'CreativeWork', - 'tv series': 'CreativeWork/TVShow', - 'uk parliament constituency': 'Place', - 'united kingdom': 'Place', - 'united states': 'Place', - 'video game': 'CreativeWork/VideoGame', - academic: 'Person', - actor: 'Person/Actor', - actress: 'Person/Actor', - alaska: 'Place', - album: 'CreativeWork/Album', - argentina: 'Place', - arkansas: 'Place', - artist: 'Person/Artist', - athlete: 'Person/Athlete', - australia: 'Place', - author: 'Person', - ballet: 'CreativeWork', - band: 'Organization/MusicalGroup', - barbados: 'Place', - bishop: 'Person/ReligiousFigure', - book: 'CreativeWork/Book', - boxer: 'Person/Athlete', - brazil: 'Place', - businessman: 'Person', - california: 'Place', - canada: 'Place', - candy: 'Product', - chad: 'Place', - character: 'FictionalCharacter', - chicago: 'Place', - // cocktail: 'Thing', - colombia: 'Place', - company: 'Organization/Company', - composer: 'Person/Artist', - connecticut: 'Place', - cricketer: 'Person/Athlete', - cyclist: 'Person', - diplomat: 'Person', - director: 'Person', - dominica: 'Place', - // drink: 'Thing', - drummer: 'Person', - edmonton: 'Place', - footballer: 'Person/Athlete', - france: 'Place', - // game: 'Thing', - georgia: 'Place', - group: 'Organization', - // horse: 'Thing', - india: 'Place', - israel: 'Place', - japan: 'Place', - journal: 'Organization', - journalist: 'Person', - judge: 'Person', - magazine: 'CreativeWork', - manhattan: 'Place', - michigan: 'Place', - miniseries: 'CreativeWork', - minister: 'Person', - movie: 'CreativeWork/Film', - music: 'CreativeWork', - musician: 'Person/Artist', - newspaper: 'Organization/Company', - nigeria: 'Place', - novel: 'CreativeWork/Book', - oklahoma: 'Place', - ontario: 'Place', - opera: 'CreativeWork', - painter: 'Person/Artist', - painting: 'CreativeWork', - pennsylvania: 'Place', - plant: 'Organism', - play: 'CreativeWork/Play', - poet: 'Person', - politician: 'Person/Politician', - portugal: 'Place', - priest: 'Person', - province: 'Place', - rapper: 'Person/Artist', - river: 'Place/BodyOfWater', - series: 'CreativeWork', - // ship: 'Thing', - singer: 'Person/Artist', - single: 'CreativeWork', - // software: 'Thing/Software', - song: 'CreativeWork', - soundtrack: 'CreativeWork', - spain: 'Place', - sudan: 'Place', - texas: 'Place', - // train: 'Thing', - uk: 'Place', - va: 'Place', - Virginia: 'Place', - volcano: 'Place', - washington: 'Place', - wrestler: 'Person/Athlete', - //March 29 - //learned works - ep: 'CreativeWork', - comics: 'CreativeWork', - musical: 'CreativeWork', - manga: 'CreativeWork', - 'star trek: the next generation': 'CreativeWork', - 'star trek: deep space nine': 'CreativeWork', - 'buffy the vampire slayer': 'CreativeWork', - angel: 'CreativeWork', - 'the outer limits': 'CreativeWork', - 'star trek: voyager': 'CreativeWork', - 'short story': 'CreativeWork', - seinfeld: 'CreativeWork', - 'star trek: enterprise': 'CreativeWork', - poem: 'CreativeWork', - tv: 'CreativeWork', - 'uk series': 'CreativeWork', - 'doctor who': 'CreativeWork', - 'david bowie song': 'CreativeWork', - caravaggio: 'CreativeWork', - 'the beach boys song': 'CreativeWork', - video: 'CreativeWork', - 'audio drama': 'CreativeWork', - 'babylon 5': 'CreativeWork', - 'madonna song': 'CreativeWork', - 'game show': 'CreativeWork/TVShow', - 'u.s. tv series': 'CreativeWork/TVShow', - 'uk tv series': 'CreativeWork/TVShow', - 'australian tv series': 'CreativeWork/TVShow', - 'u.s. game show': 'CreativeWork/TVShow', - //learned events - festival: 'Event', - '25 m': 'Event', - 'world war ii': 'Event', - conmebol: 'Event', - 'music festival': 'Event', - 'world war i': 'Event', - //learned orgs - am: 'Organization', - fm: 'Organization', - 'american band': 'Organization/MusicalGroup', - wehrmacht: 'Organization', - 'tv channel': 'Organization', - 'british band': 'Organization', - organization: 'Organization', - airline: 'Organization', - publisher: 'Organization', - 'australian band': 'Organization/MusicalGroup', - 'canadian band': 'Organization/MusicalGroup', - restaurant: 'Organization/Company', - brand: 'Organization', - 'uk band': 'Organization/MusicalGroup', - 'record label': 'Organization', - retailer: 'Organization/Company', - 'union army': 'Organization', - store: 'Organization/Company', - defunct: 'Organization', - 'tv network': 'Organization', - 'political party': 'Organization/PoliticalParty', - 'japanese band': 'Organization/MusicalGroup', - 'department store': 'Organization', - 'swedish band': 'Organization/MusicalGroup', - //learned people - 'american football': 'Person', - 'ice hockey': 'Person', - soccer: 'Person', - 'rugby league': 'Person', - 'rugby union': 'Person', - 'field hockey': 'Person', - tennis: 'Person', - writer: 'Person', - vc: 'Person', - 'racing driver': 'Person', - 'british politician': 'Person/Politician', - golfer: 'Person/Athlete', - historian: 'Person/Academic', - architect: 'Person', - comedian: 'Person', - cartoonist: 'Person/Artist', - governor: 'Person/Politician', - 'british army officer': 'Person', - general: 'Person', - broadcaster: 'Person', - engineer: 'Person', - philosopher: 'Person/Academic', - mathematician: 'Person/Academic', - novelist: 'Person/Artist', - physician: 'Person', - swimmer: 'Person/Athlete', - soldier: 'Person', - photographer: 'Person/Artist', - 'royal navy officer': 'Person', - producer: 'Person', - theologian: 'Person/ReligiousFigure', - lawyer: 'Person', - playwright: 'Person/Artist', - activist: 'Person', - inventor: 'Person', - astronomer: 'Person/Academic', - 'irish politician': 'Person/Politician', - economist: 'Person/Academic', - mayor: 'Person/Politician', - moon: 'Place/SpaceLocation', - country: 'Place/Country', - // learned things - // 'programming language': 'Thing/Software', - genus: 'Organism', - // missile: 'Thing', - 'board game': 'Product', - // 'new york city subway car': 'Thing', - // instrument: 'Thing', - // food: 'Thing', - fish: 'Organism', - bird: 'Organism', - // 'operating system': 'Thing/Software', - // 'file format': 'Thing', - // 'computer virus': 'Thing/Software', - 'card game': 'Product', - automobile: 'Product' // rocket: 'Thing' - // website: 'Thing/Software' - -}; - -var patterns$2 = { - 'CreativeWork/Film': [/ \([0-9]{4} film\)$/], - CreativeWork: [/ \((.*? )song\)$/], - Event: [/ \((19|20)[0-9]{2}\)$/] -}; - -var paren = /\((.*)\)$/; +const { + patterns: patterns$1, + mappings +} = _dataFns; +const paren$1 = /\((.*)\)$/; -var byTitle = function byTitle(doc) { - var title = doc.title(); +const byTitle = function (doc) { + let title = doc.title(); if (!title) { return []; } //look at parentheses like 'Tornado (film)' - var m = title.match(paren); + let m = title.match(paren$1); if (!m) { return []; } - var inside = m[1] || ''; + let inside = m[1] || ''; inside = inside.toLowerCase(); inside = inside.replace(/_/g, ' '); inside = inside.trim(); //look at known parentheses - if (mapping$4.hasOwnProperty(inside)) { + if (mappings.titles.hasOwnProperty(inside)) { return [{ - cat: mapping$4[inside], + type: mappings.titles[inside], reason: inside }]; } // look at regex - var match = _byPattern(title, patterns$2); + let match = _byPattern(title, patterns$1.titles); if (match) { return [{ - cat: match, + type: match, reason: title }]; } @@ -2275,99 +1849,25 @@ var byTitle = function byTitle(doc) { var byTitle_1 = byTitle; -var byDescription = function byDescription(doc) { - var tmpl = doc.template('short description'); - - if (tmpl && tmpl.description) { - var desc = tmpl.description; // person - - if (desc.match(/(actor|actress)/)) { - return [{ - cat: 'Person/Actor', - reason: desc - }]; - } - - if (desc.match(/(artist|singer|musician|painter|poet|rapper|drummer)/)) { - return [{ - cat: 'Person/Artist', - reason: desc - }]; - } - - if (desc.match(/(keyboard|guitar|bass) player/)) { - return [{ - cat: 'Person/Artist', - reason: desc - }]; - } - - if (desc.match(/(politician|member of parliament)/)) { - return [{ - cat: 'Person/Politician', - reason: desc - }]; - } - - if (desc.match(/(hockey|soccer|backetball|football) player/)) { - return [{ - cat: 'Person/Athlete', - reason: desc - }]; - } - - if (desc.match(/(writer|celebrity|activist)/)) { - return [{ - cat: 'Person', - reason: desc - }]; - } // organizations - - - if (desc.match(/(basketball|hockey|soccer|football|sports) team/)) { - return [{ - cat: 'Organization/SportsTeam', - reason: desc - }]; - } - - if (desc.match(/(company|subsidary)/)) { - return [{ - cat: 'Organization/Company', - reason: desc - }]; - } - - if (desc.match(/political party/)) { - return [{ - cat: 'Organization/PoliticalParty', - reason: desc - }]; - } +const { + patterns +} = _dataFns; - if (desc.match(/(charity|organization|ngo)/)) { - return [{ - cat: 'Organization', - reason: desc - }]; - } // creativeworks +const byDescription = function (doc) { + let tmpl = doc.template('short description'); + if (tmpl && tmpl.description) { + let desc = tmpl.description || ''; + desc = desc.toLowerCase(); // loop through our patterns - if (desc.match(/television series/)) { - return [{ - cat: 'CreativeWork/TVShow', - reason: desc - }]; - } + let match = _byPattern(desc, patterns.descriptions); - if (desc.match(/[0-9]{4} film/)) { + if (match) { return [{ - cat: 'CreativeWork/Film', + type: match, reason: desc }]; } - - console.log(desc); } return []; @@ -2375,26 +1875,26 @@ var byDescription = function byDescription(doc) { var byDescription_1 = byDescription; -var skip = { +const skip = { disambiguation: true, surname: true, name: true, 'given name': true }; -var paren$1 = /\((.*)\)$/; -var listOf = /^list of ./; -var disambig = /\(disambiguation\)/; +const paren = /\((.*)\)$/; +const listOf = /^list of ./; +const disambig = /\(disambiguation\)/; -var skipPage = function skipPage(doc) { - var title = doc.title() || ''; //look at parentheses like 'Tornado (film)' +const skipPage = function (doc) { + let title = doc.title() || ''; //look at parentheses like 'Tornado (film)' - var m = title.match(paren$1); + let m = title.match(paren); if (!m) { return null; } - var inside = m[1] || ''; + let inside = m[1] || ''; inside = inside.toLowerCase(); inside = inside.replace(/_/g, ' '); inside = inside.trim(); //look at known parentheses @@ -2417,85 +1917,14 @@ var skipPage = function skipPage(doc) { var _skip = skipPage; -var tree = { - Person: { - Athlete: true, - Artist: true, - Politician: true, - Actor: true, - Academic: true, - ReligiousFigure: true - }, - Place: { - Country: true, - City: true, - Structure: true, - BodyOfWater: true, - SpaceLocation: true - }, - Organization: { - Company: true, - SportsTeam: true, - MusicalGroup: true, - PoliticalParty: true - }, - CreativeWork: { - Film: true, - TVShow: true, - Play: true, - Book: true, - Album: true, - VideoGame: true - }, - Event: { - Election: true, - Disaster: true, - SportsEvent: true, - MilitaryConflict: true, - SpaceMission: true - }, - Product: true, - Organism: true, - MedicalCondition: true, - Concept: true, - FictionalCharacter: true -}; - -var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; -}; - -var types = {}; - -var doit = function doit(type, obj) { - Object.keys(obj).forEach(function (k) { - var tmp = k; - - if (type) { - tmp = type + '/' + k; - } - - types[tmp] = true; - - if (isObject(tree[k])) { - doit(tmp, tree[k]); - } - }); -}; - -doit('', tree); -var _types = types; - -var topk = function topk(arr) { - var obj = {}; - arr.forEach(function (a) { +const topk = function (arr) { + let obj = {}; + arr.forEach(a => { obj[a] = obj[a] || 0; obj[a] += 1; }); - var res = Object.keys(obj).map(function (k) { - return [k, obj[k]]; - }); - res = res.sort(function (a, b) { + let res = Object.keys(obj).map(k => [k, obj[k]]); + res = res.sort((a, b) => { if (a[1] > b[1]) { return -1; } else if (a[1] < b[1]) { @@ -2507,45 +1936,37 @@ var topk = function topk(arr) { return res; }; -var parse = function parse(cat) { - var split = cat.split(/\//); +const parse = function (cat) { + let split = cat.split(/\//); return { - root: split[0], - child: split[1] + root: split[1], + child: split[2] }; }; -var getScore = function getScore(detail) { - var cats = []; - Object.keys(detail).forEach(function (k) { - detail[k].forEach(function (obj) { - if (!_types[obj.cat]) { - console.error('Missing: ' + obj.cat); - } - - cats.push(parse(obj.cat)); +const getScore = function (detail) { + let types = []; + Object.keys(detail).forEach(k => { + detail[k].forEach(obj => { + types.push(parse(obj.type)); }); }); // find top parent - var roots = cats.map(function (obj) { - return obj.root; - }).filter(function (s) { - return s; - }); - var tops = topk(roots); - var top = tops[0]; + let roots = types.map(obj => obj.root).filter(s => s); + let tops = topk(roots); + let top = tops[0]; if (!top) { return { detail: detail, - category: null, + type: null, score: 0 }; } - var root = top[0]; // score as % of results + let root = top[0]; // score as % of results - var score = top[1] / cats.length; // punish low counts + let score = top[1] / types.length; // punish low counts if (top[1] === 1) { score *= 0.75; @@ -2569,17 +1990,13 @@ var getScore = function getScore(detail) { } // find 2nd level - var children = cats.filter(function (o) { - return o.root === root && o.child; - }).map(function (obj) { - return obj.child; - }); - var topKids = topk(children); + let children = types.filter(o => o.root === root && o.child).map(obj => obj.child); + let topKids = topk(children); top = topKids[0]; - var category = root; + let type = root; if (top) { - category = "".concat(root, "/").concat(top[0]); // punish for any conflicting children + type = `${root}/${top[0]}`; // punish for any conflicting children if (topKids.length > 1) { score *= 0.7; @@ -2593,19 +2010,19 @@ var getScore = function getScore(detail) { return { root: root, - category: category, + type: type, score: score, - detail: detail + details: detail }; }; var score = getScore; -var plugin = function plugin(models) { - // add a new method to main class +const plugin = function (models) { + //add a new method to main class models.Doc.prototype.classify = function (options) { - var doc = this; - var res = {}; // dont classify these + let doc = this; + let res = {}; //dont classify these if (_skip(doc)) { return score(res); diff --git a/plugins/classify/package-lock.json b/plugins/classify/package-lock.json index fedd76bf..d152df73 100644 --- a/plugins/classify/package-lock.json +++ b/plugins/classify/package-lock.json @@ -1,394 +1,3413 @@ { "name": "wtf-plugin-classify", - "version": "0.2.0", - "lockfileVersion": 1, + "version": "1.0.0", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-classify", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@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", + "rollup-plugin-json": "4.0.0", + "rollup-plugin-node-resolve": "5.2.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "12.12.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.31.tgz", + "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "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": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "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", + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "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": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" } }, "@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.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.9.0", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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.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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "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.9.0", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "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.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.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.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.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@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.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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@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.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.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.8.3", - "@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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -400,6 +3419,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3437,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 +3455,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 +3474,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 +3510,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,50 +3921,49 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" + "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" } }, @@ -937,15 +3997,60 @@ "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" } }, + "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", @@ -963,15 +4068,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "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.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -992,10 +4098,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001207", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz", + "integrity": "sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==", "dev": true }, "chalk": { @@ -1024,6 +4140,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1046,12 +4168,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.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.8.3", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1070,26 +4192,43 @@ "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { + "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.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.4", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "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" + }, + "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 +4256,57 @@ } }, "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.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.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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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 +4320,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 +4344,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 +4353,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 +4366,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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 }, @@ -1208,11 +4379,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.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", + "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", @@ -1242,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", @@ -1249,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": { @@ -1270,39 +4458,75 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "is-bigint": { + "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.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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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 +4537,27 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, + "is-set": { + "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": { + "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 +4567,31 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 +4599,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,53 +4639,25 @@ "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==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "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" - } + "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": { "version": "0.25.7", @@ -1455,36 +4696,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "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.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.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "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.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -1494,15 +4724,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 +4744,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 +4756,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 +4793,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,35 +4808,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +4847,15 @@ } }, "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": { - "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" @@ -1695,12 +4888,12 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "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": { @@ -1755,16 +4948,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": { @@ -1783,16 +4975,30 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { "version": "0.5.7", @@ -1833,66 +5039,44 @@ "through": "2" } }, - "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" - } - }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "safe-buffer": "~5.1.0" } }, - "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==", + "string.prototype.trim": { + "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.17.5", - "string.prototype.trimstart": "^1.0.0" + "es-abstract": "^1.18.0-next.2" } }, - "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==", + "string.prototype.trimend": { + "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.17.5", - "string.prototype.trimend": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "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==", + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -1905,13 +5089,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 +5162,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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.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 } } @@ -1986,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", @@ -2020,11 +5281,57 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "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.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": { + "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.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", + "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" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/classify/package.json b/plugins/classify/package.json index c07d9d55..de74651d 100644 --- a/plugins/classify/package.json +++ b/plugins/classify/package.json @@ -1,17 +1,22 @@ { "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", "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", "testb": "TESTENV=prod tape ./tests/**/*.test.js | tap-dancer", - "build": "rollup -c" + "build": "rollup -c", + "schema": "node ./schema/_print.js" }, "files": [ "builds" @@ -23,22 +28,21 @@ "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", + "@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", "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.2.2" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/classify/schema/Creation/CreativeWork/Album.js b/plugins/classify/schema/Creation/CreativeWork/Album.js new file mode 100644 index 00000000..dbcf9af6 --- /dev/null +++ b/plugins/classify/schema/Creation/CreativeWork/Album.js @@ -0,0 +1,33 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Creation/CreativeWork/Book.js b/plugins/classify/schema/Creation/CreativeWork/Book.js new file mode 100644 index 00000000..16b69073 --- /dev/null +++ b/plugins/classify/schema/Creation/CreativeWork/Book.js @@ -0,0 +1,33 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Creation/CreativeWork/Film.js b/plugins/classify/schema/Creation/CreativeWork/Film.js new file mode 100644 index 00000000..d5aa36e9 --- /dev/null +++ b/plugins/classify/schema/Creation/CreativeWork/Film.js @@ -0,0 +1,33 @@ +module.exports = { + 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\)$/], + }, +} diff --git a/plugins/classify/schema/Creation/CreativeWork/Play.js b/plugins/classify/schema/Creation/CreativeWork/Play.js new file mode 100644 index 00000000..168f9b39 --- /dev/null +++ b/plugins/classify/schema/Creation/CreativeWork/Play.js @@ -0,0 +1,33 @@ +module.exports = { + name: 'Play', + children: {}, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: ['play'], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [/-play-stub$/], + }, + // + titles: { + mapping: ['play'], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Creation/CreativeWork/Song.js b/plugins/classify/schema/Creation/CreativeWork/Song.js new file mode 100644 index 00000000..d6045d20 --- /dev/null +++ b/plugins/classify/schema/Creation/CreativeWork/Song.js @@ -0,0 +1,33 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Creation/CreativeWork/TVShow.js b/plugins/classify/schema/Creation/CreativeWork/TVShow.js new file mode 100644 index 00000000..24876f76 --- /dev/null +++ b/plugins/classify/schema/Creation/CreativeWork/TVShow.js @@ -0,0 +1,43 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Creation/CreativeWork/VideoGame.js b/plugins/classify/schema/Creation/CreativeWork/VideoGame.js new file mode 100644 index 00000000..7f91aac8 --- /dev/null +++ b/plugins/classify/schema/Creation/CreativeWork/VideoGame.js @@ -0,0 +1,63 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Creation/CreativeWork/index.js b/plugins/classify/schema/Creation/CreativeWork/index.js new file mode 100644 index 00000000..1c7ea4a0 --- /dev/null +++ b/plugins/classify/schema/Creation/CreativeWork/index.js @@ -0,0 +1,215 @@ +module.exports = { + name: 'CreativeWork', + children: { + Album: require('./Album'), + Book: require('./Book'), + Film: require('./Film'), + TVShow: require('./TVShow'), + Play: require('./Play'), + Song: require('./Song'), + VideoGame: require('./VideoGame'), + }, + // + 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\)$/], + }, +} diff --git a/plugins/classify/schema/Creation/FictionalCharacter.js b/plugins/classify/schema/Creation/FictionalCharacter.js new file mode 100644 index 00000000..13c2c31e --- /dev/null +++ b/plugins/classify/schema/Creation/FictionalCharacter.js @@ -0,0 +1,46 @@ +module.exports = { + name: 'FictionalCharacter', + // + children: {}, + properties: {}, + // + categories: { + mapping: [], + patterns: [/(fictional|television) characters/], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [ + 'character', + 'comics_character', + 'soap_character', + 'mythical creature', + 'd&d creature', + 'vg character', + 'animanga character', + 'video game character', + 'doctor who character', + 'tolkien character', + ], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: ['character'], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Creation/MedicalCondition.js b/plugins/classify/schema/Creation/MedicalCondition.js new file mode 100644 index 00000000..41401832 --- /dev/null +++ b/plugins/classify/schema/Creation/MedicalCondition.js @@ -0,0 +1,38 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Creation/Organism.js b/plugins/classify/schema/Creation/Organism.js new file mode 100644 index 00000000..61dad874 --- /dev/null +++ b/plugins/classify/schema/Creation/Organism.js @@ -0,0 +1,163 @@ +module.exports = { + name: 'Organism', + // + children: {}, + properties: { + // taxonomy: () => {}, + // members: () => {}, + }, + // + 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: [], + }, +} diff --git a/plugins/classify/schema/Creation/Product.js b/plugins/classify/schema/Creation/Product.js new file mode 100644 index 00000000..440f3786 --- /dev/null +++ b/plugins/classify/schema/Creation/Product.js @@ -0,0 +1,48 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Creation/index.js b/plugins/classify/schema/Creation/index.js new file mode 100644 index 00000000..fb7992fb --- /dev/null +++ b/plugins/classify/schema/Creation/index.js @@ -0,0 +1,43 @@ +module.exports = { + name: 'Creation', + children: { + CreativeWork: require('./CreativeWork'), + MedicalCondition: require('./MedicalCondition'), + Organism: require('./Organism'), + Product: require('./Product'), + }, + // + properties: { + creators: () => {}, + date: () => {}, + }, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: [], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Event/Disaster.js b/plugins/classify/schema/Event/Disaster.js new file mode 100644 index 00000000..c224d225 --- /dev/null +++ b/plugins/classify/schema/Event/Disaster.js @@ -0,0 +1,43 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Event/Election.js b/plugins/classify/schema/Event/Election.js new file mode 100644 index 00000000..53cf4b59 --- /dev/null +++ b/plugins/classify/schema/Event/Election.js @@ -0,0 +1,33 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Event/MilitaryConflict.js b/plugins/classify/schema/Event/MilitaryConflict.js new file mode 100644 index 00000000..977a4853 --- /dev/null +++ b/plugins/classify/schema/Event/MilitaryConflict.js @@ -0,0 +1,46 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Event/SpaceMission.js b/plugins/classify/schema/Event/SpaceMission.js new file mode 100644 index 00000000..6a1b0322 --- /dev/null +++ b/plugins/classify/schema/Event/SpaceMission.js @@ -0,0 +1,57 @@ +module.exports = { + name: 'SpaceMission', + children: {}, + properties: { + destination: () => {}, + }, + // + categories: { + mapping: [ + 'nasa space probes', + 'human spaceflights', + 'derelict space probes', + 'spacecraft launched by delta ii rockets', + 'space shuttle missions', + 'apollo program missions', + 'spacecraft launched in 1962', + 'spacecraft launched by titan rockets', + 'spacecraft launched by atlas-centaur rockets', + 'space observatories', + 'spacecraft launched in 1966', + 'manned missions to the moon', + 'sample return missions', + '1973 in spaceflight', + 'spacecraft launched in 1973', + 'project gemini missions', + 'spacecraft launched in 1965', + 'spacecraft launched in 1971', + 'fifa world cup tournaments', + 'lunar flybys', + ], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: ['spaceflight', 'spaceflight/dock', 'spaceflight/ip'], + patterns: [], + }, + // + sections: { + mapping: ['mission highlights'], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: [], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Event/SportsEvent.js b/plugins/classify/schema/Event/SportsEvent.js new file mode 100644 index 00000000..8cf8b61e --- /dev/null +++ b/plugins/classify/schema/Event/SportsEvent.js @@ -0,0 +1,84 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Event/index.js b/plugins/classify/schema/Event/index.js new file mode 100644 index 00000000..c65495b5 --- /dev/null +++ b/plugins/classify/schema/Event/index.js @@ -0,0 +1,168 @@ +module.exports = { + name: 'Event', + properties: { + dates: () => {}, + places: () => {}, + }, + children: { + Disaster: require('./Disaster'), + Election: require('./Election'), + MilitaryConflict: require('./MilitaryConflict'), + SportsEvent: require('./SportsEvent'), + }, + // + 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}\)$/], + }, +} diff --git a/plugins/classify/schema/Organization/Company.js b/plugins/classify/schema/Organization/Company.js new file mode 100644 index 00000000..9db1dc22 --- /dev/null +++ b/plugins/classify/schema/Organization/Company.js @@ -0,0 +1,49 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Organization/MusicalGroup.js b/plugins/classify/schema/Organization/MusicalGroup.js new file mode 100644 index 00000000..a6202291 --- /dev/null +++ b/plugins/classify/schema/Organization/MusicalGroup.js @@ -0,0 +1,71 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Organization/PoliticalParty.js b/plugins/classify/schema/Organization/PoliticalParty.js new file mode 100644 index 00000000..7f5fb3ab --- /dev/null +++ b/plugins/classify/schema/Organization/PoliticalParty.js @@ -0,0 +1,34 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Organization/SportsTeam.js b/plugins/classify/schema/Organization/SportsTeam.js new file mode 100644 index 00000000..70a59226 --- /dev/null +++ b/plugins/classify/schema/Organization/SportsTeam.js @@ -0,0 +1,68 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Organization/index.js b/plugins/classify/schema/Organization/index.js new file mode 100644 index 00000000..38c5876d --- /dev/null +++ b/plugins/classify/schema/Organization/index.js @@ -0,0 +1,178 @@ +module.exports = { + name: 'Organization', + // + children: { + MusicalGroup: require('./MusicalGroup'), + Company: require('./Company'), + SportsTeam: require('./SportsTeam'), + PoliticalParty: require('./PoliticalParty'), + }, + 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: [], + }, +} diff --git a/plugins/classify/schema/Person/Actor.js b/plugins/classify/schema/Person/Actor.js new file mode 100644 index 00000000..ce8d704d --- /dev/null +++ b/plugins/classify/schema/Person/Actor.js @@ -0,0 +1,38 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Person/Athlete/AmericanFootballPlayer.js b/plugins/classify/schema/Person/Athlete/AmericanFootballPlayer.js new file mode 100644 index 00000000..666eaf08 --- /dev/null +++ b/plugins/classify/schema/Person/Athlete/AmericanFootballPlayer.js @@ -0,0 +1,34 @@ +module.exports = { + name: 'AmericanFootballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: [], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Person/Athlete/BaseballPlayer.js b/plugins/classify/schema/Person/Athlete/BaseballPlayer.js new file mode 100644 index 00000000..8bbf7b3d --- /dev/null +++ b/plugins/classify/schema/Person/Athlete/BaseballPlayer.js @@ -0,0 +1,34 @@ +module.exports = { + name: 'BaseballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: ['baseball year'], + patterns: [], + }, + // + titles: { + mapping: [], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Person/Athlete/BasketballPlayer.js b/plugins/classify/schema/Person/Athlete/BasketballPlayer.js new file mode 100644 index 00000000..4b05ae1f --- /dev/null +++ b/plugins/classify/schema/Person/Athlete/BasketballPlayer.js @@ -0,0 +1,34 @@ +module.exports = { + name: 'BasketballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: [], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Person/Athlete/FootballPlayer.js b/plugins/classify/schema/Person/Athlete/FootballPlayer.js new file mode 100644 index 00000000..7233cb2d --- /dev/null +++ b/plugins/classify/schema/Person/Athlete/FootballPlayer.js @@ -0,0 +1,34 @@ +module.exports = { + name: 'FootballPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: [], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Person/Athlete/HockeyPlayer.js b/plugins/classify/schema/Person/Athlete/HockeyPlayer.js new file mode 100644 index 00000000..37323092 --- /dev/null +++ b/plugins/classify/schema/Person/Athlete/HockeyPlayer.js @@ -0,0 +1,34 @@ +module.exports = { + name: 'HockeyPlayer', + // + children: {}, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: [], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Person/Athlete/index.js b/plugins/classify/schema/Person/Athlete/index.js new file mode 100644 index 00000000..335629e4 --- /dev/null +++ b/plugins/classify/schema/Person/Athlete/index.js @@ -0,0 +1,100 @@ +module.exports = { + name: 'Athlete', + // + properties: { + leagues: () => {}, + }, + children: { + AmericanFootballPlayer: require('./AmericanFootballPlayer'), + BaseballPlayer: require('./BaseballPlayer'), + FootballPlayer: require('./FootballPlayer'), + BasketballPlayer: require('./BasketballPlayer'), + HockeyPlayer: require('./HockeyPlayer'), + }, + // + 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: [], + }, +} diff --git a/plugins/classify/schema/Person/Author.js b/plugins/classify/schema/Person/Author.js new file mode 100644 index 00000000..c9cc9bc5 --- /dev/null +++ b/plugins/classify/schema/Person/Author.js @@ -0,0 +1,62 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Person/Musician.js b/plugins/classify/schema/Person/Musician.js new file mode 100644 index 00000000..2d158792 --- /dev/null +++ b/plugins/classify/schema/Person/Musician.js @@ -0,0 +1,114 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Person/Politician.js b/plugins/classify/schema/Person/Politician.js new file mode 100644 index 00000000..bb5753df --- /dev/null +++ b/plugins/classify/schema/Person/Politician.js @@ -0,0 +1,91 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Person/index.js b/plugins/classify/schema/Person/index.js new file mode 100644 index 00000000..da3e6580 --- /dev/null +++ b/plugins/classify/schema/Person/index.js @@ -0,0 +1,293 @@ +module.exports = { + name: 'Person', + children: { + Athlete: require('./Athlete'), + Actor: require('./Actor'), + Politician: require('./Politician'), + Musician: require('./Musician'), + Author: require('./Author'), + }, + 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', + + //religious person + 'archbishop', + 'minister', + 'saint', + 'bishop', + 'christian leader', + 'religious biography', + // artist + 'artist', + 'comics creator', + // academic + '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: [], + }, +} diff --git a/plugins/classify/schema/Place/BodyOfWater.js b/plugins/classify/schema/Place/BodyOfWater.js new file mode 100644 index 00000000..4aaf7f42 --- /dev/null +++ b/plugins/classify/schema/Place/BodyOfWater.js @@ -0,0 +1,35 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Place/Jurisdiction/City.js b/plugins/classify/schema/Place/Jurisdiction/City.js new file mode 100644 index 00000000..b21d3ed5 --- /dev/null +++ b/plugins/classify/schema/Place/Jurisdiction/City.js @@ -0,0 +1,49 @@ +module.exports = { + 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: [], + }, +} diff --git a/plugins/classify/schema/Place/Jurisdiction/Country.js b/plugins/classify/schema/Place/Jurisdiction/Country.js new file mode 100644 index 00000000..1abf98eb --- /dev/null +++ b/plugins/classify/schema/Place/Jurisdiction/Country.js @@ -0,0 +1,34 @@ +module.exports = { + name: 'Country', + // + children: {}, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [], + patterns: [], + }, + // + sections: { + mapping: ['international relations'], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: ['country'], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Place/Jurisdiction/index.js b/plugins/classify/schema/Place/Jurisdiction/index.js new file mode 100644 index 00000000..2aa62e66 --- /dev/null +++ b/plugins/classify/schema/Place/Jurisdiction/index.js @@ -0,0 +1,75 @@ +module.exports = { + name: 'Jurisdiction', + children: { + City: require('./City'), + Country: require('./Country'), + }, + 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: [], + }, +} diff --git a/plugins/classify/schema/Place/OuterSpaceLocation.js b/plugins/classify/schema/Place/OuterSpaceLocation.js new file mode 100644 index 00000000..30bb4f90 --- /dev/null +++ b/plugins/classify/schema/Place/OuterSpaceLocation.js @@ -0,0 +1,35 @@ +module.exports = { + name: 'OuterSpaceLocation', + // + children: {}, + properties: {}, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: ['constellation', 'planet', 'galaxy'], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: ['moon'], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Place/Structure/Airport.js b/plugins/classify/schema/Place/Structure/Airport.js new file mode 100644 index 00000000..290e7306 --- /dev/null +++ b/plugins/classify/schema/Place/Structure/Airport.js @@ -0,0 +1,38 @@ +module.exports = { + name: 'Airport', + // + children: {}, + properties: { + airlines: () => {}, + runways: () => {}, + }, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: [], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Place/Structure/Bridge.js b/plugins/classify/schema/Place/Structure/Bridge.js new file mode 100644 index 00000000..6af38041 --- /dev/null +++ b/plugins/classify/schema/Place/Structure/Bridge.js @@ -0,0 +1,37 @@ +module.exports = { + name: 'Bridge', + // + children: {}, + properties: { + length: () => {}, + }, + // + categories: { + mapping: [], + patterns: [], + }, + // + descriptions: { + patterns: [], + }, + // + infoboxes: { + mapping: [], + patterns: [], + }, + // + sections: { + mapping: [], + patterns: [], + }, + // + templates: { + mapping: [], + patterns: [], + }, + // + titles: { + mapping: [], + patterns: [], + }, +} diff --git a/plugins/classify/schema/Place/Structure/index.js b/plugins/classify/schema/Place/Structure/index.js new file mode 100644 index 00000000..3649ee0e --- /dev/null +++ b/plugins/classify/schema/Place/Structure/index.js @@ -0,0 +1,58 @@ +module.exports = { + name: 'Structure', + // + children: { + Bridge: require('./Bridge'), + Airport: require('./Airport'), + }, + 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: [], + }, +} diff --git a/plugins/classify/schema/Place/index.js b/plugins/classify/schema/Place/index.js new file mode 100644 index 00000000..24ae7491 --- /dev/null +++ b/plugins/classify/schema/Place/index.js @@ -0,0 +1,207 @@ +module.exports = { + name: 'Place', + children: { + Jurisdiction: require('./Jurisdiction'), + Structure: require('./Structure'), + BodyOfWater: require('./BodyOfWater'), + }, + 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: [], + }, +} diff --git a/plugins/classify/schema/_data-fns.js b/plugins/classify/schema/_data-fns.js new file mode 100644 index 00000000..0989e216 --- /dev/null +++ b/plugins/classify/schema/_data-fns.js @@ -0,0 +1,70 @@ +const schema = require('./index') + +let mappings = { + categories: {}, + descriptions: {}, + infoboxes: {}, + sections: {}, + templates: {}, + titles: {}, +} +let patterns = { + categories: [], + descriptions: [], + infoboxes: [], + sections: [], + templates: [], + titles: [], +} + +const doNode = function (node) { + if (node.id) { + // collect mappings + node.categories.mapping.forEach((str) => { + mappings.categories[str] = node.id + }) + node.descriptions.mapping = node.descriptions.mapping || [] + node.descriptions.mapping.forEach((str) => { + mappings.descriptions[str] = node.id + }) + node.infoboxes.mapping.forEach((str) => { + mappings.infoboxes[str] = node.id + }) + node.sections.mapping.forEach((str) => { + mappings.sections[str] = node.id + }) + node.templates.mapping.forEach((str) => { + mappings.templates[str] = node.id + }) + node.titles.mapping.forEach((str) => { + mappings.titles[str] = node.id + }) + // collect patterns + node.categories.patterns.forEach((reg) => { + patterns.categories.push([reg, node.id]) + }) + node.descriptions.patterns.forEach((reg) => { + patterns.descriptions.push([reg, node.id]) + }) + node.infoboxes.patterns.forEach((reg) => { + patterns.infoboxes.push([reg, node.id]) + }) + node.sections.patterns.forEach((reg) => { + patterns.sections.push([reg, node.id]) + }) + node.templates.patterns.forEach((reg) => { + patterns.templates.push([reg, node.id]) + }) + node.titles.patterns.forEach((reg) => { + patterns.titles.push([reg, node.id]) + }) + } + + if (node.children) { + Object.keys(node.children).forEach((k) => { + doNode(node.children[k]) + }) + } +} +doNode(schema) +module.exports = { patterns, mappings } diff --git a/plugins/classify/schema/_print.js b/plugins/classify/schema/_print.js new file mode 100644 index 00000000..bcc7a0cd --- /dev/null +++ b/plugins/classify/schema/_print.js @@ -0,0 +1,40 @@ +const schema = require('./index') +/** add spaces at the end */ +const indent = function (str = '', width) { + let pad = ''.padStart(width, ' ') + return pad + str +} + +const hasData = function (obj) { + // is it an object + if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') { + return false + } + // does it have zero properties + return Object.keys(obj).length > 0 +} + +const doChildren = function (obj, depth) { + if (obj.id) { + let name = indent('' + obj.id, depth * 3) + if (hasData(obj.children)) { + console.log(`${name}:`) + } else { + console.log(`${name} : true`) + } + // print properties + // if (hasData(obj.properties)) { + // Object.keys(obj.properties).forEach((k) => { + // console.log(indent(`[${k}]`, depth * 3 + 4)) + // }) + // } + } + depth += 1 + Object.keys(obj.children).forEach((k) => { + doChildren(obj.children[k], depth) + }) +} +console.log('\n\n') +doChildren(schema, 0) +console.log('\n\n') +// console.log(JSON.stringify(schema, null, 2)) diff --git a/plugins/classify/schema/index.js b/plugins/classify/schema/index.js new file mode 100644 index 00000000..277cb2ee --- /dev/null +++ b/plugins/classify/schema/index.js @@ -0,0 +1,28 @@ +let schema = { + children: { + Person: require('./Person'), + Place: require('./Place'), + Organization: require('./Organization'), + Event: require('./Event'), + Creation: require('./Creation'), + }, +} + +// generate slash-based ids by descending recursively +const setId = function (root, id) { + if (root.name) { + root.id = id + '/' + root.name + } else { + root.id = '' + } + if (root.children) { + Object.keys(root.children).forEach((k) => { + setId(root.children[k], root.id) + }) + } + return root +} + +schema = setId(schema, '') + +module.exports = schema diff --git a/plugins/classify/scratch.js b/plugins/classify/scratch.js new file mode 100644 index 00000000..dca66955 --- /dev/null +++ b/plugins/classify/scratch.js @@ -0,0 +1,7 @@ +const wtf = require('../../src') +const classify = require('./src') +wtf.extend(classify) + +wtf.fetch('Toronto').then((doc) => { + console.log(doc.classify().details) +}) diff --git a/plugins/classify/src/_byPattern.js b/plugins/classify/src/_byPattern.js index 55e19f40..3af7c5ac 100644 --- a/plugins/classify/src/_byPattern.js +++ b/plugins/classify/src/_byPattern.js @@ -1,12 +1,8 @@ -const byPattern = function(str, patterns) { - let types = Object.keys(patterns) - for (let i = 0; i < types.length; i++) { - const key = types[i] - for (let o = 0; o < patterns[key].length; o++) { - const reg = patterns[key][o] - if (reg.test(str) === true) { - return key - } +const byPattern = function (str, patterns) { + for (let i = 0; i < patterns.length; i += 1) { + let reg = patterns[i][0] + if (reg.test(str) === true) { + return patterns[i][1] } } return null 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/_types.js b/plugins/classify/src/_types.js deleted file mode 100644 index ee7e86f7..00000000 --- a/plugins/classify/src/_types.js +++ /dev/null @@ -1,64 +0,0 @@ -const tree = { - Person: { - Athlete: true, - Artist: true, - Politician: true, - Actor: true, - Academic: true, - ReligiousFigure: true, - }, - Place: { - Country: true, - City: true, - Structure: true, - BodyOfWater: true, - SpaceLocation: true, - }, - Organization: { - Company: true, - SportsTeam: true, - MusicalGroup: true, - PoliticalParty: true, - }, - CreativeWork: { - Film: true, - TVShow: true, - Play: true, - Book: true, - Album: true, - VideoGame: true, - }, - Event: { - Election: true, - Disaster: true, - SportsEvent: true, - MilitaryConflict: true, - SpaceMission: true, - }, - Product: true, - Organism: true, - MedicalCondition: true, - Concept: true, - FictionalCharacter: true, -} - -const isObject = function (obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]' -} - -let types = {} -const doit = function (type, obj) { - Object.keys(obj).forEach((k) => { - let tmp = k - if (type) { - tmp = type + '/' + k - } - types[tmp] = true - if (isObject(tree[k])) { - doit(tmp, tree[k]) - } - }) -} -doit('', tree) - -module.exports = types diff --git a/plugins/classify/src/byCategory/index.js b/plugins/classify/src/byCategory/index.js index cc22fab2..152659d7 100644 --- a/plugins/classify/src/byCategory/index.js +++ b/plugins/classify/src/byCategory/index.js @@ -1,5 +1,4 @@ -const patterns = require('./patterns') -const mapping = require('./mapping') +const { patterns, mappings } = require('../../schema/_data-fns') const byPattern = require('../_byPattern') const byCategory = function (doc) { @@ -14,16 +13,16 @@ const byCategory = function (doc) { }) // loop through each for (let i = 0; i < cats.length; i++) { - const cat = cats[i] + const category = cats[i] // try our 1-to-1 mapping - if (mapping.hasOwnProperty(cat)) { - found.push({ cat: mapping[cat], reason: cat }) + if (mappings.categories.hasOwnProperty(category)) { + found.push({ type: mappings.categories[category], reason: category }) continue } // loop through our patterns - let match = byPattern(cat, patterns) + let match = byPattern(category, patterns.categories) if (match) { - found.push({ cat: match, reason: cat }) + found.push({ type: match, reason: category }) } } return found diff --git a/plugins/classify/src/byCategory/mapping.js b/plugins/classify/src/byCategory/mapping.js deleted file mode 100644 index f826ca33..00000000 --- a/plugins/classify/src/byCategory/mapping.js +++ /dev/null @@ -1,435 +0,0 @@ -module.exports = { - 'living people': 'Person', - 'possibly living people': 'Person', - 'musical quartets': 'Organization/MusicalGroup', - 'musical duos': 'Organization/MusicalGroup', - 'musical trios': 'Organization/MusicalGroup', - - // learned march 30 - 'dos games': 'CreativeWork/VideoGame', - 'virtual console games': 'CreativeWork/VideoGame', - 'mac os games': 'CreativeWork/VideoGame', - operas: 'CreativeWork', - 'american science fiction novels': 'CreativeWork', - 'amiga games': 'CreativeWork/VideoGame', - 'broadway musicals': 'CreativeWork', - 'debut novels': 'CreativeWork', - 'the twilight zone (1959 tv series) episodes': 'CreativeWork', - 'arcade games': 'CreativeWork/VideoGame', - 'united states national recording registry recordings': 'CreativeWork', - 'commodore 64 games': 'CreativeWork/VideoGame', - 'nintendo entertainment system games': 'CreativeWork/VideoGame', - 'macos games': 'CreativeWork', - 'playstation (console) games': 'CreativeWork/VideoGame', - 'virtual console games for wii u': 'CreativeWork', - 'ios games': 'CreativeWork/VideoGame', - 'super nintendo entertainment system games': 'CreativeWork/VideoGame', - 'video game sequels': 'CreativeWork/VideoGame', - 'american monthly magazines': 'CreativeWork', - 'broadway plays': 'CreativeWork', - 'game boy advance games': 'CreativeWork/VideoGame', - 'first-person shooters': 'CreativeWork/VideoGame', - 'playstation network games': 'CreativeWork/VideoGame', - 'interactive achievement award winners': 'CreativeWork', - 'linux games': 'CreativeWork/VideoGame', - 'atari st games': 'CreativeWork/VideoGame', - 'doubleday (publisher) books': 'CreativeWork', - '19th-century classical composers': 'CreativeWork', - 'film soundtracks': 'CreativeWork', - 'universal deluxe editions': 'CreativeWork', - 'playstation 2 games': 'CreativeWork/VideoGame', - 'best picture academy award winners': 'CreativeWork', - 'game boy games': 'CreativeWork/VideoGame', - 'shōnen manga': 'CreativeWork', - 'zx spectrum games': 'CreativeWork/VideoGame', - 'west end musicals': 'CreativeWork', - 'sequel novels': 'CreativeWork', - 'dystopian novels': 'CreativeWork', - 'american comic strips': 'CreativeWork', - 'american road movies': 'CreativeWork', - 'chemical elements': 'CreativeWork', - 'amstrad cpc games': 'CreativeWork', - 'mario universe games': 'CreativeWork/VideoGame', - 'neo-noir': 'CreativeWork', - 'multiplayer online games': 'CreativeWork/VideoGame', - 'mobile games': 'CreativeWork/VideoGame', - 'android (operating system) games': 'CreativeWork/VideoGame', - 'platform games': 'CreativeWork/VideoGame', - 'fiction with unreliable narrators': 'CreativeWork', - 'best drama picture golden globe winners': 'CreativeWork', - 'adventure anime and manga': 'CreativeWork', - 'albums recorded at abbey road studios': 'CreativeWork/Album', - 'xbox 360 live arcade games': 'CreativeWork/VideoGame', - 'sega genesis games': 'CreativeWork/VideoGame', - - //learned events - 'years in literature': 'Event', - 'years in music': 'Event', - 'years in film': 'Event', - 'united states supreme court cases': 'Event', - 'leap years in the gregorian calendar': 'Event', - "governor general's awards": 'Event', - 'eurovision song contest by year': 'Event', - 'grammy awards ceremonies': 'Event', - 'united kingdom in the eurovision song contest': 'Event', - 'manned soyuz missions': 'Event', - 'american civil liberties union litigation': 'Event', - may: 'Event', - october: 'Event', - 'missions to the moon': 'Event', - 'nasa space probes': 'Event/SpaceMission', - 'world war ii british commando raids': 'Event', - july: 'Event', - december: 'Event', - 'wars involving the united kingdom': 'Event/MilitaryConflict', - september: 'Event', - november: 'Event', - january: 'Event', - june: 'Event', - august: 'Event', - april: 'Event', - february: 'Event', - march: 'Event', - 'conflicts in 1944': 'Event', - 'human spaceflights': 'Event/SpaceMission', - 'missions to mars': 'Event', - 'derelict space probes': 'Event/SpaceMission', - 'luna program': 'Event', - 'proxy wars': 'Event/MilitaryConflict', - 'conflicts in 1942': 'Event', - 'special air service': 'Event', - 'spacecraft launched by delta ii rockets': 'Event/SpaceMission', - 'soft landings on the moon': 'Event', - 'may observances': 'Event', - '1904 summer olympics events': 'Event/SportsEvent', - '1900 summer olympics events': 'Event/SportsEvent', - 'space shuttle missions': 'Event/SpaceMission', - 'apollo program missions': 'Event/SpaceMission', - 'spacecraft launched in 1962': 'Event/SpaceMission', - 'spacecraft launched by titan rockets': 'Event/SpaceMission', - 'first events': 'Event', - 'recent years': 'Event', - 'elections not won by the popular vote winner': 'Event', - 'conflicts in 1864': 'Event', - '1862 in the american civil war': 'Event', - 'new zealand wars': 'Event/MilitaryConflict', - 'battles between england and scotland': 'Event/MilitaryConflict', - '2002 winter olympics events': 'Event/SportsEvent', - 'spacecraft launched by atlas-centaur rockets': 'Event/SpaceMission', - 'space observatories': 'Event/SpaceMission', - 'new york (state) in the american revolution': 'Event', - 'march observances': 'Event', - 'public holidays in the united states': 'Event', - 'conflicts in 1943': 'Event/MilitaryConflict', - 'spacecraft launched in 1966': 'Event/SpaceMission', - 'last stand battles': 'Event/MilitaryConflict', - '1944 in france': 'Event', - 'battles and conflicts without fatalities': 'Event/MilitaryConflict', - 'manned missions to the moon': 'Event/SpaceMission', - 'sample return missions': 'Event/SpaceMission', - '1973 in spaceflight': 'Event/SpaceMission', - 'guerrilla wars': 'Event/MilitaryConflict', - 'retired atlantic hurricanes': 'Event/Disaster', - 'december observances': 'Event', - '20th century american trials': 'Event', - 'african-american civil rights movement (1954–68)': 'Event', - '20th-century conflicts': 'Event/MilitaryConflict', - 'presidential elections in ireland': 'Event/Election', - 'spacecraft launched in 1973': 'Event/SpaceMission', - 'october observances': 'Event', - 'spring holidays': 'Event', - 'years in aviation': 'Event', - 'national days': 'Event', - 'project gemini missions': 'Event/SpaceMission', - 'spacecraft launched in 1965': 'Event/SpaceMission', - '20th-century revolutions': 'Event/MilitaryConflict', - 'spacecraft launched in 1971': 'Event/SpaceMission', - 'fifa world cup tournaments': 'Event/SpaceMission', - 'summer holidays': 'Event', - 'sieges involving japan': 'Event/MilitaryConflict', - 'lunar flybys': 'Event/SpaceMission', - 'apollo program': 'Event', - 'revolution-based civil wars': 'Event/MilitaryConflict', - - // learned organisms - 'taxa named by carl linnaeus': 'Organism', - 'ornamental trees': 'Organism', - 'birds by common name': 'Organism', - 'living fossils': 'Organism', - 'taxa named by john edward gray': 'Organism', - phelsuma: 'Organism', - multituberculates: 'Organism', - 'angiosperm orders': 'Organism', - cimolodonts: 'Organism', - 'urban animals': 'Organism', - flowers: 'Organism', - geckos: 'Organism', - herbs: 'Organism', - spices: 'Organism', - skinks: 'Organism', - 'cretaceous mammals': 'Organism', - 'commercial fish': 'Organism', - 'paleocene mammals': 'Organism', - 'bird families': 'Organism', - 'edible nuts and seeds': 'Organism', - 'invasive plant species': 'Organism', - 'leaf vegetables': 'Organism', - 'root vegetables': 'Organism', - 'corvus (genus)': 'Organism', - 'insects in culture': 'Organism', - ducks: 'Organism', - agamidae: 'Organism', - 'edge species': 'Organism', - 'tropical fruit': 'Organism', - pinus: 'Organism', - 'tropical agriculture': 'Organism', - 'indian spices': 'Organism', - 'paleocene genus extinctions': 'Organism', - 'epiphytic orchids': 'Organism', - crops: 'Organism', - 'fruits originating in asia': 'Organism', - calidris: 'Organism', - ptilodontoids: 'Organism', - 'plants and pollinators': 'Organism', - 'mammal families': 'Organism', - 'marine edible fish': 'Organism', - 'taxa named by leopold fitzinger': 'Organism', - setophaga: 'Organism', - shorebirds: 'Organism', - berries: 'Organism', - megafauna: 'Organism', - 'animal dance': 'Organism', - 'animal phyla': 'Organism', - 'american inventions': 'Organism', - entheogens: 'Organism', - 'crops originating from the americas': 'Organism', - 'non-timber forest products': 'Organism', - geese: 'Organism', - - // person-musician - 'american male guitarists': 'Person/Artist', - 'american singer-songwriters': 'Person/Artist', - 'american male singers': 'Person/Artist', - 'american rock singers': 'Person/Artist', - 'american rock guitarists': 'Person/Artist', - '21st-century american singers': 'Person/Artist', - 'lead guitarists': 'Person/Artist', - 'african-american musicians': 'Person/Artist', - 'english male singers': 'Person/Artist', - 'american male singer-songwriters': 'Person/Artist', - 'american rock songwriters': 'Person/Artist', - 'american record producers': 'Person/Artist', - 'american country singer-songwriters': 'Person/Artist', - '20th-century american guitarists': 'Person/Artist', - 'english songwriters': 'Person/Artist', - '20th-century american pianists': 'Person/Artist', - 'songwriters from new york (state)': 'Person/Artist', - 'african-american singers': 'Person/Artist', - 'american blues singers': 'Person/Artist', - 'american pop singers': 'Person/Artist', - 'male guitarists': 'Person/Artist', - 'american country singers': 'Person/Artist', - 'blues hall of fame inductees': 'Person/Artist', - 'american male songwriters': 'Person/Artist', - 'songwriters from california': 'Person/Artist', - 'english rock guitarists': 'Person/Artist', - 'american folk singers': 'Person/Artist', - 'english rock singers': 'Person/Artist', - 'english singer-songwriters': 'Person/Artist', - 'african-american male rappers': 'Person/Artist', - 'african-american jazz musicians': 'Person/Artist', - '20th-century english singers': 'Person/Artist', - 'american female singer-songwriters': 'Person/Artist', - 'jewish american musicians': 'Person/Artist', - 'american blues guitarists': 'Person/Artist', - '20th-century conductors (music)': 'Person/Artist', - 'american female singers': 'Person/Artist', - 'american jazz bandleaders': 'Person/Artist', - 'american jazz pianists': 'Person/Artist', - 'american soul singers': 'Person/Artist', - 'american female guitarists': 'Person/Artist', - 'american multi-instrumentalists': 'Person/Artist', - 'american country guitarists': 'Person/Artist', - 'english record producers': 'Person/Artist', - 'songwriters from texas': 'Person/Artist', - 'american composers': 'Person/Artist', - 'singers from california': 'Person/Artist', - 'american folk guitarists': 'Person/Artist', - 'lgbt singers': 'Person/Artist', - 'american buskers': 'Person/Artist', - 'guitarists from california': 'Person/Artist', - 'feminist musicians': 'Person/Artist', - 'big band bandleaders': 'Person/Artist', - '20th-century composers': 'Person/Artist', - 'african-american songwriters': 'Person/Artist', - 'british rhythm and blues boom musicians': 'Person/Artist', - 'alternative rock singers': 'Person/Artist', - '21st-century american guitarists': 'Person/Artist', - 'american alternative rock musicians': 'Person/Artist', - 'musicians from los angeles': 'Person/Artist', - 'rhythm guitarists': 'Person/Artist', - 'american session musicians': 'Person/Artist', - 'jazz musicians from new orleans': 'Person/Artist', - 'alternative rock guitarists': 'Person/Artist', - '20th-century women musicians': 'Person/Artist', - 'male film score composers': 'Person/Artist', - 'african-american singer-songwriters': 'Person/Artist', - 'american jazz singers': 'Person/Artist', - '21st-century english singers': 'Person/Artist', - 'singers from new york city': 'Person/Artist', - 'american acoustic guitarists': 'Person/Artist', - 'musicians from new york city': 'Person/Artist', - 'slide guitarists': 'Person/Artist', - 'guitarists from texas': 'Person/Artist', - - // org - 'companies listed on the new york stock exchange': 'Organization/Company', - 'football clubs in england': 'Organization/SportsTeam', - 'musical quintets': 'Organization/MusicalGroup', - 'english rock music groups': 'Organization/MusicalGroup', - 'english new wave musical groups': 'Organization/MusicalGroup', - 'jazz record labels': 'Organization/Company', - 'video game development companies': 'Organization/Company', - 'american record labels': 'Organization/Company', - 'english football league clubs': 'Organization/SportsTeam', - 'companies listed on nasdaq': 'Organization/Company', - 'african-american musical groups': 'Organization/MusicalGroup', - 'japanese brands': 'Organization', - 'video game companies of the united states': 'Organization/Company', - 'american jazz composers': 'Organization', - '21st-century american musicians': 'Organization/MusicalGroup', - 'companies formerly listed on the london stock exchange': 'Organization/Company', - 'southern football league clubs': 'Organization/SportsTeam', - 'multinational companies headquartered in the united states': 'Organization/Company', - 'scouting in the united states': 'Organization', - 'car brands': 'Organization', - 'american alternative metal musical groups': 'Organization/MusicalGroup', - 'government-owned airlines': 'Organization', - 'football clubs in scotland': 'Organization/SportsTeam', - 'baptist denominations in north america': 'Organization', - 'baptist denominations established in the 20th century': 'Organization', - 'land-grant universities and colleges': 'Organization', - 'companies listed on the tokyo stock exchange': 'Organization/Company', - 'organizations based in washington, d.c.': 'Organization', - 'premier league clubs': 'Organization/SportsTeam', - 'national basketball association teams': 'Organization/SportsTeam', - 'social democratic parties': 'Organization/PoliticalParty', - 're-established companies': 'Organization/Company', - 'video game publishers': 'Organization', - 'companies based in new york city': 'Organization/Company', - 'defunct video game companies': 'Organization/Company', - 'companies formed by merger': 'Organization/Company', - 'english pop music groups': 'Organization/MusicalGroup', - 'defunct motor vehicle manufacturers of the united states': 'Organization', - 'alternative rock groups from california': 'Organization', - 'entertainment companies based in california': 'Organization/Company', - 'art rock musical groups': 'Organization/MusicalGroup', - 'english post-punk music groups': 'Organization/MusicalGroup', - - // learned people - 'year of birth unknown': 'Person', - 'fellows of the royal society': 'Person', - 'members of the privy council of the united kingdom': 'Person', - 'uk mps 2001–05': 'Person/Politician', - 'uk mps 1997–2001': 'Person/Politician', - '20th-century american novelists': 'Person/Artist', - 'american people of english descent': 'Person', - 'american male novelists': 'Person/Artist', - 'uk mps 2005–10': 'Person/Politician', - 'guggenheim fellows': 'Person', - '20th-century american writers': 'Person', - 'harvard university alumni': 'Person', - 'fellows of the american academy of arts and sciences': 'Person/Academic', - 'american military personnel of world war ii': 'Person', - '19th-century male writers': 'Person', - 'knights bachelor': 'Person', - 'american roman catholics': 'Person', - 'uk mps 1992–97': 'Person/Politician', - 'american male writers': 'Person', - 'roman catholic monarchs': 'Person/ReligiousFigure', - '20th-century women writers': 'Person', - 'labour party (uk) mps for english constituencies': 'Person/Politician', - '20th-century male writers': 'Person', - 'german male writers': 'Person', - 'knights of the garter': 'Person', - 'conservative party (uk) mps for english constituencies': 'Person/Politician', - 'presidential medal of freedom recipients': 'Person', - 'uk mps 1987–92': 'Person/Politician', - 'american film directors': 'Person/Artist', - '21st-century american novelists': 'Person/Artist', - 'uk mps 2010–15': 'Person/Politician', - 'american film producers': 'Person/Artist', - 'members of the united states national academy of sciences': 'Person/Academic', - 'commanders of the order of the british empire': 'Person', - 'democratic party members of the united states house of representatives': 'Person/Politician', - 'people educated at eton college': 'Person', - 'american male screenwriters': 'Person/Artist', - '21st-century american writers': 'Person', - 'republican party members of the united states house of representatives': 'Person/Politician', - popes: 'Person/ReligiousFigure', - 'alumni of trinity college, cambridge': 'Person', - 'french male writers': 'Person', - 'foreign members of the royal society': 'Person', - 'american science fiction writers': 'Person/Artist', - 'american people of scottish descent': 'Person', - 'american memoirists': 'Person', - 'members of the french academy of sciences': 'Person', - 'jewish american writers': 'Person', - '20th-century english novelists': 'Person/Artist', - 'uk mps 1983–87': 'Person/Politician', - 'united states army soldiers': 'Person', - 'officers of the order of the british empire': 'Person', - 'deaths from pneumonia': 'Person', - 'burials at père lachaise cemetery': 'Person', - 'deaths from cancer in california': 'Person', - 'year of birth missing (living people)': 'Person', - 'democratic party state governors of the united states': 'Person/Politician', - 'english male poets': 'Person/Artist', - 'knights of the golden fleece': 'Person', - 'american male short story writers': 'Person/Artist', - 'columbia university alumni': 'Person', - 'alumni of the university of edinburgh': 'Person', - 'american political writers': 'Person/Artist', - 'california republicans': 'Person/Politician', - 'members of the royal swedish academy of sciences': 'Person/Academic', - 'american people of russian-jewish descent': 'Person', - '20th-century american short story writers': 'Person/Academic', - 'yale university alumni': 'Person', - 'italian popes': 'Person/ReligiousFigure', - 'american atheists': 'Person', - 'people of the tudor period': 'Person', - 'tony award winners': 'Person', - 'male actors from new york city': 'Person/Actor', - 'british secretaries of state': 'Person/Politician', - 'democratic party united states senators': 'Person/Politician', - 'members of the académie française': 'Person', - 'united states army officers': 'Person', - 'persons of national historic significance (canada)': 'Person', - 'uk mps 2015–17': 'Person/Politician', - '20th-century american businesspeople': 'Person', - 'american journalists': 'Person', - 'american television producers': 'Person', - 'writers from new york city': 'Person', - 'republican party united states senators': 'Person/Politician', - 'american male journalists': 'Person', - '21st-century women writers': 'Person', - 'american male comedians': 'Person', - 'american nobel laureates': 'Person/Academic', - 'republican party state governors of the united states': 'Person/Politician', - 'princeton university alumni': 'Person', - 'university of paris alumni': 'Person', - 'american episcopalians': 'Person', - 'american women novelists': 'Person', - 'phi beta kappa members': 'Person', - '20th-century american poets': 'Person', - 'harvard university faculty': 'Person/Academic', - 'english male novelists': 'Person/Artist', - 'california democrats': 'Person/Politician', - 'uk mps 1979–83': 'Person/Politician', - 'bafta winners (people)': 'Person', - 'english male writers': 'Person', - 'uk mps 2017–': 'Person/Politician', - "members of the queen's privy council for canada": 'Person', - 'vaudeville performers': 'Person/Artist', - 'american presbyterians': 'Person' -} diff --git a/plugins/classify/src/byCategory/patterns.js b/plugins/classify/src/byCategory/patterns.js deleted file mode 100644 index 093a9eb0..00000000 --- a/plugins/classify/src/byCategory/patterns.js +++ /dev/null @@ -1,99 +0,0 @@ -const patterns = { - FictionalCharacter: [/(fictional|television) characters/], - Product: [/products introduced in ./, /musical instruments/], - Organism: [ - /(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)$/ - ], - - // ==Person== - 'Person/Politician': [ - /politicians from ./, - /politician stubs$/, - /. (democrats|republicans|politicians)$/, - /mayors of ./ - ], - 'Person/Athlete': [/sportspeople from ./, /(footballers|cricketers|defencemen|cyclists)/], - 'Person/Actor': [/actresses/, /actors from ./, /actor stubs$/, / (actors|actresses)$/], - 'Person/Artist': [/musicians from ./, /(singers|songwriters|painters|poets)/, /novelists from ./], - // 'Person/Scientist': [(astronomers|physicists|biologists|chemists)], - Person: [ - /[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)/ - ], - - // ==Place== - 'Place/Structure': [ - /(buildings|bridges) completed in /, - /airports established in ./, - /(airports|bridges) in ./, - /buildings and structures in ./ - ], - 'Place/BodyOfWater': [/(rivers|lakes|tributaries) of ./], - 'Place/City': [ - /^cities and towns in ./, - /(municipalities|settlements|villages|localities|townships) in ./ - ], - Place: [ - /populated places/, - /landforms of ./, - /railway stations/, - /parks in ./, - / district$/, - /geography stubs$/, - /sports venue stubs$/ - ], - - // ==Creative Work== - 'CreativeWork/Album': [/[0-9]{4}.*? albums/, /^albums /, / albums$/], - 'CreativeWork/Film': [/[0-9]{4}.*? films/, / films$/, /^films /], - 'CreativeWork/TVShow': [/television series/], - 'CreativeWork/VideoGame': [/video games/], - CreativeWork: [/(film|novel|album) stubs$/, /[0-9]{4}.*? (poems|novels)/, / (poems|novels)$/], - - // ==Event== - 'Event/SportsEvent': [ - /. league seasons$/, - /^(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) ./ - ], - Event: [/^(19|20)[0-9]{2} in /, /^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./], - - // ==Orgs== - 'Organization/MusicalGroup': [ - /musical groups from /, - /musical groups (dis)?established in [0-9]{4}/, - /musical group stubs/, - /. music(al)? (groups|duos|trios|quartets|quintets)$/ - ], - 'Organization/SportsTeam': [ - /football clubs in ./, - /(basketball|hockey|baseball|football) teams (in|established) ./ - ], - 'Organization/Company': [/companies (established|based) in ./], - Organization: [ - /(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$/ - ] -} -module.exports = patterns diff --git a/plugins/classify/src/byDescription/index.js b/plugins/classify/src/byDescription/index.js index 0a7c0b6a..0d2d593a 100644 --- a/plugins/classify/src/byDescription/index.js +++ b/plugins/classify/src/byDescription/index.js @@ -1,47 +1,16 @@ +const { patterns } = require('../../schema/_data-fns') +const byPattern = require('../_byPattern') + const byDescription = function (doc) { let tmpl = doc.template('short description') if (tmpl && tmpl.description) { - let desc = tmpl.description - // person - if (desc.match(/(actor|actress)/)) { - return [{ cat: 'Person/Actor', reason: desc }] + let desc = tmpl.description || '' + desc = desc.toLowerCase() + // loop through our patterns + let match = byPattern(desc, patterns.descriptions) + if (match) { + return [{ type: match, reason: desc }] } - if (desc.match(/(artist|singer|musician|painter|poet|rapper|drummer)/)) { - return [{ cat: 'Person/Artist', reason: desc }] - } - if (desc.match(/(keyboard|guitar|bass) player/)) { - return [{ cat: 'Person/Artist', reason: desc }] - } - if (desc.match(/(politician|member of parliament)/)) { - return [{ cat: 'Person/Politician', reason: desc }] - } - if (desc.match(/(hockey|soccer|backetball|football) player/)) { - return [{ cat: 'Person/Athlete', reason: desc }] - } - if (desc.match(/(writer|celebrity|activist)/)) { - return [{ cat: 'Person', reason: desc }] - } - // organizations - if (desc.match(/(basketball|hockey|soccer|football|sports) team/)) { - return [{ cat: 'Organization/SportsTeam', reason: desc }] - } - if (desc.match(/(company|subsidary)/)) { - return [{ cat: 'Organization/Company', reason: desc }] - } - if (desc.match(/political party/)) { - return [{ cat: 'Organization/PoliticalParty', reason: desc }] - } - if (desc.match(/(charity|organization|ngo)/)) { - return [{ cat: 'Organization', reason: desc }] - } - // creativeworks - if (desc.match(/television series/)) { - return [{ cat: 'CreativeWork/TVShow', reason: desc }] - } - if (desc.match(/[0-9]{4} film/)) { - return [{ cat: 'CreativeWork/Film', reason: desc }] - } - console.log(desc) } return [] } diff --git a/plugins/classify/src/byInfobox/index.js b/plugins/classify/src/byInfobox/index.js index 9079b557..38961f09 100644 --- a/plugins/classify/src/byInfobox/index.js +++ b/plugins/classify/src/byInfobox/index.js @@ -1,4 +1,4 @@ -const mapping = require('./mapping') +const { mappings } = require('../../schema/_data-fns') const byInfobox = function (doc) { let infoboxes = doc.infoboxes() @@ -12,8 +12,8 @@ const byInfobox = function (doc) { type = type.replace(/ /g, '_') type = type.trim() - if (mapping.hasOwnProperty(type)) { - found.push({ cat: mapping[type], reason: type }) + if (mappings.infoboxes.hasOwnProperty(type)) { + found.push({ type: mappings.infoboxes[type], reason: type }) } } return found diff --git a/plugins/classify/src/byInfobox/mapping.js b/plugins/classify/src/byInfobox/mapping.js deleted file mode 100644 index 40e0aff3..00000000 --- a/plugins/classify/src/byInfobox/mapping.js +++ /dev/null @@ -1,600 +0,0 @@ -module.exports = { - actor: 'Person/Actor', //1 - adult_biography: 'Person', //2 - afl_biography: 'Person/Athlete', //7 - aircraft_accident: 'Event/Disaster', //2 - //aircraft_begin: 'Thing', //24 - //aircraft_engine: 'Thing', //2 - //aircraft_type: 'Thing', //21 - airline: 'Organization', //9 - airliner_accident: 'Event/Disaster', //3 - airport: 'Place/Structure', //20 - album: 'CreativeWork/Album', //466 - alpine_ski_racer: 'Person/Athlete', //2 - amusement_park: 'Place', //4 - ancient_site: 'Place', //14 - archbishop: 'Person/ReligiousFigure', //1 - architect: 'Person', //9 - //artifact: 'Thing', //1 - artist: 'Person/Artist', //42 - artwork: 'CreativeWork', //14 - athlete: 'Person/Athlete', //6 - athletics_championships: 'Event/SportsEvent', //6 - australian_place: 'Place', //18 - automobile: 'Product', //8 - badminton_event: 'Event/SportsEvent', //2 - baseball_biography: 'Person/Athlete', //64 - basketball_biography: 'Person/Athlete', //17 - basketball_club: 'Organization/SportsTeam', //17 - pro_hockey_team: 'Organization/SportsTeam', // - beauty_pageant: 'Event', //4 - beverage: 'Product', //7 - body_of_water: 'Place/BodyOfWater', //7 - book: 'CreativeWork/Book', //130 - book_series: 'CreativeWork', //4 - boxer: 'Person/Athlete', //5 - boxingmatch: 'Event/SportsEvent', //2 - bridge: 'Place/Structure', //5 - broadcast: 'CreativeWork', //10 - broadcasting_network: 'Organization', //4 - building: 'Place/Structure', //29 - canadianmp: 'Person/Politician', //18 - casino: 'Place', //1 - cbb_team: 'Organization', //1 - cemetery: 'Place', //3 - cfl_player: 'Person/Athlete', //2 - character: 'FictionalCharacter', //12 - chef: 'Person', //6 - chess_player: 'Person', //2 - choir: 'Organization', //1 - christian_leader: 'Person', //17 - church: 'Place', //10 - civil_conflict: 'Event', //3 - college: 'Organization', //2 - college_coach: 'Person', //18 - college_football_player: 'Person', //7 - college_ice_hockey_team: 'Organization/SportsTeam', //1 - college_soccer_team: 'Organization/SportsTeam', //3 - comedian: 'Person', //3 - comic_book_title: 'CreativeWork', //9 - comic_strip: 'CreativeWork', //1 - comics_character: 'FictionalCharacter', //13 - comics_creator: 'Person', //10 - company: 'Organization', //150 - //computer_hardware_bus: 'Thing', //1 - //computer_virus: 'Thing/Software', //1 - concert_tour: 'Event', //8 - court_case: 'Event', //8 - cpu: 'Product', //1 - cricket_ground: 'Place', //2 - cricket_team: 'Organization/SportsTeam', //1 - cricketer: 'Person/Athlete', //43 - criminal: 'Person', //8 - cyclist: 'Person/Athlete', //8 - dam: 'Place', //4 - doctor_who_episode: 'CreativeWork', //3 - 'dot-com_company': 'Organization', //3 - earthquake: 'Event/Disaster', //2 - economist: 'Person/Academic', //4 - election: 'Event/Election', //19 - electric_vehicle: 'Product', //1 - engineer: 'Person', //2 - //enzyme: 'Thing', //19 - event: 'Event', //2 - fashion_designer: 'Person', //2 - feature_on_mars: 'Place', //1 - field_hockey_player: 'Person/Athlete', //8 - figure_skater: 'Person/Athlete', //3 - fila_wrestling_event: 'Event/SportsEvent', //1 - //file_format: 'Thing', //3 - film: 'CreativeWork/Film', //183 - film_awards: 'Organization', //1 - film_festival: 'Organization', //2 - //food: 'Thing', //3 - football_biography: 'Person', //324 - football_club: 'Organization/SportsTeam', //42 - football_club_season: 'Event/SportsEvent', //13 - football_country_season: 'Event/SportsEvent', //5 - football_league: 'Organization', //4 - football_league_season: 'Event/SportsEvent', //17 - football_match: 'Event/SportsEvent', //10 - football_tournament_season: 'Event/SportsEvent', //4 - former_country: 'Place', //14 - former_subdivision: 'Place', //3 - french_commune: 'Place', //6 - gaa_club: 'Organization', //2 - gaa_player: 'Person/Athlete', //15 - //game: 'Thing', //3 - //gene: 'Thing', //3 - german_location: 'Place', //6 - golf_facility: 'Place', //2 - golfer: 'Person/Athlete', //9 - government_agency: 'Organization', //7 - government_cabinet: 'Organization', //7 - governor: 'Person/Politician', //5 - gpu: 'Product', //1 - gridiron_football_person: 'Person', //11 - gymnast: 'Person/Athlete', //2 - handball_biography: 'Person', //8 - hindu_leader: 'Person', //1 - historic_site: 'Place', //3 - historical_era: 'Event', //1 - holiday: 'Event', //5 - hollywood_cartoon: 'CreativeWork', //4 - horseraces: 'Event', //8 - horseracing_personality: 'Person', //2 - hospital: 'Place', //14 - hotel: 'Place', //3 - hurricane: 'Event/Disaster', //1 - ice_hockey_player: 'Person/Athlete', //15 - indian_politician: 'Person/Politician', //1 - individual_snooker_tournament: 'Event', //6 - //information_appliance: 'Thing', //6 - //instrument: 'Thing', //3 - islands: 'Place', //32 - israel_village: 'Place', //2 - italian_comune: 'Place', //1 - journal: 'Organization', //23 - judge: 'Person', //8 - //judo_technique: 'Thing', //2 - laboratory: 'Organization', //1 - lacrosse_player: 'Person/Athlete', //6 - lake: 'Place/BodyOfWater', //10 - launch_pad: 'Place', //1 - law_enforcement_agency: 'Organization', //1 - legislative_term: 'Event', //1 - legislature: 'Organization', //3 - library: 'Organization', //9 - //ligament: 'Thing', //1 - little_league_world_series: 'Event/SportsEvent', //5 - magazine: 'CreativeWork', //15 - //martial_art: 'Thing', //2 - martial_artist: 'Person/Athlete', //13 - mass_murderer: 'Person', //1 - //medical_condition: 'Thing', //31 - medical_person: 'Person', //5 - military_conflict: 'Event/MilitaryConflict', //27 - military_memorial: 'Place', //2 - military_person: 'Person', //60 - military_structure: 'Place', //15 - military_unit: 'Organization', //33 - //mineral: 'Thing', //5 - minister: 'Person/ReligiousFigure', //3 - mlb_player: 'Person/Athlete', //8 - mobile_phone: 'Product', //3 - model: 'Person', //2 - monarch: 'Person', //23 - monument: 'Place', //1 - motorcycle: 'Product', //5 - mountain: 'Place', //59 - mountain_pass: 'Place', //1 - mountain_range: 'Place', //13 - mp: 'Person/Politician', //13 - museum: 'Place', //13 - music_festival: 'Event', //5 - //music_genre: 'Thing', //5 - musical: 'CreativeWork', //3 - musical_artist: 'Organization/MusicalGroup', //226 - musical_composition: 'CreativeWork', //7 - nascar_driver: 'Person', //3 - national_military: 'Organization', //4 - nba_biography: 'Person/Athlete', //4 - nba_season: 'Event/SportsEvent', //6 - ncaa_baseball_conference_tournament: 'Event/SportsEvent', //6 - ncaa_football_school: 'Organization', //4 - ncaa_football_single_game: 'Event/SportsEvent', //1 - ncaa_team_season: 'Event/SportsEvent', //17 - neighborhood_portland_or: 'Place', //3 - //network: 'Thing', //3 - //networking_protocol: 'Thing', //1 - newspaper: 'Organization', //18 - nfl_biography: 'Person/Athlete', //7 - nfl_draft: 'Event', //2 - nfl_player: 'Person/Athlete', //36 - nfl_season: 'Event/SportsEvent', //27 - nfl_single_game: 'Event/SportsEvent', //1 - nobility: 'Organization', //5 - non_test_cricket_team: 'Organization/SportsTeam', //4 - 'non-profit': 'Organization/SportsTeam', //6 - officeholder: 'Person/Politician', //133 - oil_field: 'Place', //1 - opera: 'CreativeWork', //3 - organization: 'Organization', //41 - //os: 'Thing', //1 - painting: 'CreativeWork', //2 - pandemic: 'Event/Disaster', //2 - park: 'Place', //15 - pba_draft: 'Event', //3 - person: 'Person', //441 - philosopher: 'Person', //16 - police_officer: 'Person', //2 - political_party: 'Organization/PoliticalParty', //25 - politician: 'Person/Politician', //34 - 'politician_(general)': 'Person/Politician', //2 - power_station: 'Place/Structure', //3 - //prepared_food: 'Thing', //12 - presenter: 'Person', //4 - president: 'Person/Politician', //1 - prison: 'Place', //4 - professional_wrestler: 'Person/Athlete', //9 - //programming_language: 'Thing', //6 - //protein_family: 'Thing', //2 - province_or_territory_of_canada: 'Place', //1 - public_transit: 'Organization', //1 - publisher: 'Organization', //3 - racing_driver: 'Person', //4 - radio_show: 'CreativeWork', //3 - radio_station: 'Organization', //25 - rail_line: 'Organization', //7 - rail_service: 'Organization', //6 - reality_music_competition: 'Event', //1 - record_label: 'Organization', //7 - recurring_event: 'Event', //3 - religious_biography: 'Person', //9 - religious_building: 'Place/Structure', //9 - //religious_text: 'Thing', //1 - river: 'Place/BodyOfWater', //16 - road: 'Place', //41 - road_small: 'Place', //14 - //rocket: 'Thing', //3 - roman_emperor: 'Person/Politician', //2 - royalty: 'Person', //77 - rugby_biography: 'Person/Athlete', //12 - rugby_league_biography: 'Person/Athlete', //24 - rugby_league_club: 'Organization/SportsTeam', //5 - rugby_league_representative_team: 'Organization/SportsTeam', //1 - rugby_team: 'Organization/SportsTeam', //11 - russian_inhabited_locality: 'Place', //1 - russian_town: 'Place', //4 - 'russian_urban-type_settlement': 'Place', //2 - saint: 'Person/ReligiousFigure', //14 - scholar: 'Person/Academic', //2 - school: 'Place', //95 - school_district: 'Organization', //10 - scientist: 'Person/Academic', //84 - scotland_council_area: 'Place', //2 - sea: 'Place/BodyOfWater', //3 - settlement: 'Place', //642 - //sheep_breed: 'Thing', //1 - //ship_begin: 'Thing', //84 - //ship_career: 'Thing', //141 - //ship_characteristics: 'Thing', //86 - //ship_class_overview: 'Thing', //25 - //ship_image: 'Thing', //84 - shopping_mall: 'Place', //9 - skier: 'Person/Athlete', //14 - soap_character: 'FictionalCharacter', //126 - //software: 'Thing/Software', //25 - //software_license: 'Thing', //1 - song: 'CreativeWork', //30 - song_contest: 'Event', //3 - song_contest_entry: 'CreativeWork', //12 - south_african_subplace_2011: 'Place', //1 - spaceflight: 'Event/SpaceMission', //17 - 'spaceflight/dock': 'Event/SpaceMission', //17 - 'spaceflight/ip': 'Event/SpaceMission', //19 - //sport: 'Thing', //2 - sport_governing_body: 'Organization', //3 - sports_league: 'Organization', //7 - sports_season: 'Event/SportsEvent', //3 - sportsperson: 'Person', //45 - squash_player: 'Person/Athlete', //1 - stadium: 'Place/Structure', //14 - state: 'Place', //1 - state_representative: 'Person/Politician', //10 - state_senator: 'Person/Politician', //5 - station: 'Place', //40 - street: 'Place', //1 - //subdivision_type: 'Thing', //1 - summit: 'Event', //2 - swimmer: 'Person/Athlete', //14 - swiss_town: 'Place', //36 - //symptom: 'Thing', //2 - synthesizer: 'Product', //1 - television: 'Product', //94 - television_channel: 'Organization', //1 - television_episode: 'CreativeWork', //26 - television_season: 'CreativeWork', //18 - temple: 'Place', //2 - tennis_biography: 'Person/Athlete', //5 - tennis_event: 'Event/SportsEvent', //3 - tennis_grand_slam_events: 'Event/SportsEvent', //2 - //thoroughbred_racehorse: 'Thing', //7 - town_at: 'Place', //1 - //train: 'Thing', //2 - treaty: 'CreativeWork', //2 - tv_channel: 'Organization', //12 - 'u.s._cabinet': 'Organization', //3 - 'u.s._legislation': 'Organization', //3 - 'u.s._metropolitan_area': 'Place', //1 - 'u.s._state': 'Place', //3 - uk_constituency: 'Place', //1 - uk_disused_station: 'Place', //8 - uk_legislation: 'Organization', //6 - uk_place: 'Place', //22 - uk_school: 'Place', //26 - unesco_world_heritage_site: 'Place', //3 - //united_states_federal_proposed_legislation: 'Thing', //1 - university: 'Organization', //44 - university_of_notre_dame_residence_hall: 'Place', //1 - v8_supercar_team: 'Organization', //3 - venue: 'Place', //6 - video_game: 'CreativeWork', //81 - volleyball_biography: 'Person/Athlete', //1 - volleyball_player: 'Person/Athlete', //4 - waterfall: 'Place', //4 - //weapon: 'Thing', //15 - //website: 'Thing/Software', //5 - windmill: 'Place', //1 - wrc_driver: 'Person', //1 - wrestling_event: 'Event/SportsEvent', //8 - writer: 'Person', //69 - //writing_system: 'Thing', //4 - zoo: 'Place', //3 - speciesbox: 'Organism', - 'automatic taxobox': 'Organism', - 'medical condition (new)': 'MedicalCondition', - 'medical condition': 'MedicalCondition', - constellation: 'Place/SpaceLocation', - planet: 'Place/SpaceLocation', - 'mythical creature': 'FictionalCharacter', - dogbreed: 'Organism', - 'dog breed': 'Organism', - 'cat breed': 'Organism', - 'grape variety': 'Organism', - anthem: 'CreativeWork', - 'football tournament': 'Event/SportsEvent', - 'former monarchy': 'Organization', - 'criminal organization': 'Organization', - 'card game': 'Product', - computer: 'Product', - 'laboratory equipment': 'Product', - 'baseball team': 'Organization/SportsTeam', - - //march 29th - 'video game': 'CreativeWork/VideoGame', - 'television episode': 'CreativeWork', - 'comic book title': 'CreativeWork', - 'song contest entry': 'CreativeWork', - 'short story': 'CreativeWork', - play: 'CreativeWork/Play', - 'hollywood cartoon': 'CreativeWork', - 'radio show': 'CreativeWork', - 'simpsons episode': 'CreativeWork', - 'musical composition': 'CreativeWork', - 'book series': 'CreativeWork', - 'comic strip': 'CreativeWork', - 'd&d creature': 'FictionalCharacter', - 'television season': 'CreativeWork', - 'comics organization': 'CreativeWork', - 'doctor who episode': 'CreativeWork', - 'animanga/other': 'CreativeWork', - 'graphic novel': 'CreativeWork', - rpg: 'CreativeWork', - 'vg character': 'FictionalCharacter', - 'big finish': 'CreativeWork', - 'vg series': 'CreativeWork', - 'name module': 'CreativeWork', - 'comics story arc': 'CreativeWork', - 'animanga character': 'FictionalCharacter', - 'video game series': 'CreativeWork', - //'fictional location': 'Thing', - 'futurama episode': 'CreativeWork', - 'video game character': 'FictionalCharacter', - 'comics character and title': 'CreativeWork', - 'comics meta series': 'CreativeWork', - webcomic: 'CreativeWork', - 'the goodies episode': 'CreativeWork', - 'audio drama': 'CreativeWork', - //'comics species': 'Thing', - 'sw comics': 'CreativeWork', - 'media franchise': 'CreativeWork', - 'folk tale': 'CreativeWork', - 'doctor who character': 'FictionalCharacter', - 'tolkien character': 'FictionalCharacter', - - //learned events - 'military conflict': 'Event/MilitaryConflict', - 'olympic event': 'Event/SportsEvent', - 'grand prix race report': 'Event', - 'recurring event': 'Event', - 'music festival': 'Event', - 'international football competition': 'Event/SportsEvent', - 'football league season': 'Event', - 'scotus case': 'Event', - 'wrestling event': 'Event/SportsEvent', - 'court case': 'Event', - 'hockey team player': 'Person/Athlete', - 'sports season': 'Event/SportsEvent', - 'civil conflict': 'Event/MilitaryConflict', - 'concert tour': 'Event', - 'cycling race report': 'Event/SportsEvent', - 'ncaa team season': 'Event/SportsEvent', - 'cricket tournament': 'Event/SportsEvent', - 'international labour organization convention': 'Event', - 'song contest': 'Event', - 'football match': 'Event/SportsEvent', - 'australian year': 'Event', - 'world series expanded': 'Event/SportsEvent', - 'civilian attack': 'Event/MilitaryConflict', - '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', - 'nfl draft': 'Event/SportsEvent', - 'athletics championships': 'Event/SportsEvent', - 'historical event': 'Event', - 'grand prix motorcycle race report': 'Event', - 'football club season': 'Event/SportsEvent', - 'international handball competition': 'Event', - 'coa case': 'Event', - 'individual snooker tournament': 'Event', - 'canadian football game': 'Event/SportsEvent', - 'australian rules football season': 'Event/SportsEvent', - 'football tournament season': 'Event/SportsEvent', - 'esc national year': 'Event', - indy500: 'Event', - 'international ice hockey competition': 'Event/SportsEvent', - 'cricket tour': 'Event/SportsEvent', - 'national political convention': 'Event', - referendum: 'Event', - - //learned organization - 'football club': 'Organization/SportsTeam', - 'radio station': 'Organization', - 'military unit': 'Organization', - 'political party': 'Organization/PoliticalParty', - 'government agency': 'Organization', - 'rail line': 'Organization', - 'record label': 'Organization', - 'school district': 'Organization', - 'tv channel': 'Organization', - 'sports league': 'Organization', - 'football league': 'Organization', - worldscouting: 'Organization', - 'rugby team': 'Organization/SportsTeam', - 'sg rail': 'Organization', - 'law enforcement agency': 'Organization', - 'uk legislation': 'Organization', - 'public transit': 'Organization', - 'us university ranking': 'Organization', - 'television channel': 'Organization', - 'national football team': 'Organization/SportsTeam', - 'bus transit': 'Organization', - union: 'Organization', - 'broadcasting network': 'Organization', - 'christian denomination': 'Organization', - 'film awards': 'Organization', - 'gaa club': 'Organization', - fraternity: 'Organization', - rail: 'Organization', - 'rail service': 'Organization', - 'national military': 'Organization', - 'sport governing body': 'Organization', - 'basketball club': 'Organization/SportsTeam', - 'hockey team': 'Organization/SportsTeam', - 'political party/seats': 'Organization', - 'rugby league club': 'Organization/SportsTeam', - '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', - 'india university ranking': 'Organization', - 'uk university rankings': 'Organization', - 'government cabinet': 'Organization', - - //learned organisms - taxobox: 'Organism', - subspeciesbox: 'Organism', - mycomorphbox: 'Organism', - 'paraphyletic group': 'Organism', - 'nutritional value': 'Organism', - infraspeciesbox: 'Organism', - disease: 'MedicalCondition', - ecoregion: 'Place', - horse: 'Organism', - haplogroup: 'Organism', - bird: 'Organism', - 'bird/population': 'Organism', - 'medical resources': 'Organism', - //'college mascot': 'Thing', - galaxy: 'Place/SpaceLocation', - 'nc name': 'Organism', - 'pig breed': 'Organism', - 'botanical product': 'Organism', - 'cattle breed': 'Organism', - bishop: 'Person/ReligiousFigure', - 'horse breed': 'Organism', - 'poultry breed': 'Organism', - - //learned people - 'football biography': 'Person/Athlete', - 'military person': 'Person', - 'baseball biography': 'Person/Athlete', - 'ice hockey player': 'Person/Athlete', - 'nfl player': 'Person/Athlete', - 'christian leader': 'Person/ReligiousFigure', - congressman: 'Person/Politician', - 'basketball biography': 'Person/Athlete', - 'comics creator': 'Person/Artist', - 'professional wrestler': 'Person/Athlete', - 'college coach': 'Person', - 'tennis biography': 'Person/Athlete', - 'afl biography': 'Person/Athlete', - 'nfl biography': 'Person/Athlete', - 'rugby biography': 'Person/Athlete', - 'rugby league biography': 'Person/Athlete', - 'prime minister': 'Person/Politician', - 'nba biography': 'Person/Athlete', - 'figure skater': 'Person/Athlete', - 'f1 driver': 'Person', - 'gridiron football person': 'Person', - 'indian politician': 'Person/Politician', - 'racing driver': 'Person', - 'martial artist': 'Person', - 'chinese-language singer and actor': 'Person', - astronaut: 'Person', - senator: 'Person/Politician', - 'nascar driver': 'Person', - 'adult biography': 'Person', - 'state representative': 'Person/Politician', - 'state senator': 'Person/Politician', - 'coa wide': 'Person', - 'religious biography': 'Person/ReligiousFigure', - 'chess player': 'Person', - 'pageant titleholder': 'Person', - 'gaa player': 'Person/Athlete', - 'us cabinet official': 'Person/Politician', - - //learned places - 'uk place': 'Place', - 'italian comune': 'Place', - geobox: 'Place', - 'australian place': 'Place', - 'french commune': 'Place', - 'german location': 'Place', - 'u.s. county': 'Place', - 'swiss town': 'Place/City', - 'former country': 'Place', - 'uk school': 'Place/Structure', - 'road small': 'Place', - 'lunar crater': 'Place', - 'gb station': 'Place', - 'greek dimos': 'Place', - 'military structure': 'Place/Structure', - 'uk constituency main': 'Place', - 'city japan': 'Place/City', - 'religious building': 'Place/Structure', - 'shopping mall': 'Place/Structure', - 'municipality br': 'Place/City', - 'finnish municipality/population count': 'Place', - 'ancient site': 'Place', - 'mountain range': 'Place', - 'london station': 'Place', - 'russian town': 'Place/City', - 'former subdivision': 'Place', - lighthouse: 'Place/Structure', - 'uk station': 'Place', - 'historic site': 'Place', - 'world heritage site': 'Place', - diocese: 'Place', - 'south african town 2011': 'Place/City', - 'uk disused station': 'Place', - 'belgium municipality': 'Place', - 'uk constituency': 'Place', - theatre: 'Place', - 'canada electoral district': 'Place', - nycs: 'Place', - 'body of water': 'Place/BodyOfWater', - 'mountain pass': 'Place', - kommune: 'Place', - 'historic subdivision': 'Place', - 'u.s. congressional district': 'Place', - 'power station': 'Place/Structure', -} diff --git a/plugins/classify/src/bySection/index.js b/plugins/classify/src/bySection/index.js index cf6572cd..4ad97c5a 100644 --- a/plugins/classify/src/bySection/index.js +++ b/plugins/classify/src/bySection/index.js @@ -1,16 +1,16 @@ -const sections = require('./mapping') +const { mappings } = require('../../schema/_data-fns') -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 }) for (let i = 0; i < titles.length; i++) { const title = titles[i] - if (sections.hasOwnProperty(title)) { - found.push({ cat: sections[title], reason: title }) + if (mappings.sections.hasOwnProperty(title)) { + found.push({ type: mappings.sections[title], reason: title }) } } return found diff --git a/plugins/classify/src/bySection/mapping.js b/plugins/classify/src/bySection/mapping.js deleted file mode 100644 index 8ecbae5a..00000000 --- a/plugins/classify/src/bySection/mapping.js +++ /dev/null @@ -1,206 +0,0 @@ -module.exports = { - // person - 'early life': 'Person', - 'personal life': 'Person', - career: 'Person', - 'career statistics': 'Person', - 'playing career': 'Person', - 'life and career': 'Person', - 'early life and education': 'Person', - 'film and television credits': 'Person', - filmography: 'Person', - 'selected filmography': 'Person', - // place - demographics: 'Place', - neighbourhoods: 'Place', - climate: 'Place', - 'sister cities': 'Place/City', - 'notable people': 'Place', - // creative-work - cast: 'CreativeWork/Film', - plot: 'CreativeWork', - reception: 'CreativeWork', - // 'critical reception': 'CreativeWork', - // 'critical response': 'CreativeWork', - 'track listing': 'CreativeWork/Album', - // org - founding: 'Organization', - founders: 'Organization', - 'coaching staff': 'Organization/SportsTeam', - 'head coaches': 'Organization/SportsTeam', - 'team records': 'Organization/SportsTeam', - 'band members': 'Organization/MusicalGroup', - - habitat: 'Organism', - morphology: 'Organism', - phylogeny: 'Organism', - 'distribution and diversity': 'Organism', - 'distribution and habitat': 'Organism', - 'reproduction and development': 'Organism', - 'taxonomy and phylogeny': 'Organism', - - // march 29th - //learned works - // production: 'CreativeWork', - charts: 'CreativeWork', - release: 'CreativeWork', - 'plot summary': 'CreativeWork', - gameplay: 'CreativeWork', - characters: 'CreativeWork', - 'box office': 'CreativeWork', - accolades: 'CreativeWork', - soundtrack: 'CreativeWork', - adaptations: 'CreativeWork', - synopsis: 'CreativeWork', - 'home media': 'CreativeWork', - 'weekly charts': 'CreativeWork', - themes: 'CreativeWork', - 'publication history': 'CreativeWork', - filming: 'CreativeWork', - 'year-end charts': 'CreativeWork', - casting: 'CreativeWork', - 'release and reception': 'CreativeWork', - 'commercial performance': 'CreativeWork', - composition: 'CreativeWork', - album: 'CreativeWork', - setting: 'CreativeWork', - 'chart positions': 'CreativeWork', - 'release history': 'CreativeWork', - 'charts and certifications': 'CreativeWork', - sequels: 'CreativeWork', - 'chart performance': 'CreativeWork', - sequel: 'CreativeWork', - recordings: 'CreativeWork', - story: 'CreativeWork', - editions: 'CreativeWork', - 'in other media': 'CreativeWork', - - // learned events - aftermath: 'Event', - births: 'Event', - deaths: 'Event', - battle: 'Event', - results: 'Event', - prelude: 'Event', - may: 'Event', - june: 'Event', - march: 'Event', - december: 'Event', - october: 'Event', - july: 'Event', - august: 'Event', - april: 'Event', - november: 'Event', - february: 'Event', - september: 'Event', - january: 'Event', - incumbents: 'Event', - casualties: 'Event', - 'july to december': 'Event', - 'january to june': 'Event', - 'medal table': 'Event', - 'mission highlights': 'Event/SpaceMission', - campaign: 'Event', - - // learned orgs - albums: 'Organization/MusicalGroup', - 'studio albums': 'Organization/MusicalGroup', - members: 'Organization', - athletics: 'Organization', - 'notable alumni': 'Organization', - academics: 'Organization', - campus: 'Organization', - organization: 'Organization', - 'student life': 'Organization', - rankings: 'Organization', - 'compilation albums': 'Organization/MusicalGroup', - // origins: 'Organization', - 'live albums': 'Organization/MusicalGroup', - products: 'Organization/Company', - fleet: 'Organization', - compilations: 'Organization/MusicalGroup', - research: 'Organization', - formation: 'Organization', - operations: 'Organization', - 'current squad': 'Organization/SportsTeam', - players: 'Organization', - alumni: 'Organization', - eps: 'Organization/MusicalGroup', - 'former members': 'Organization', - presidents: 'Organization', - membership: 'Organization', - 'current members': 'Organization', - - // learned people - works: 'Person', - life: 'Person', - family: 'Person', - 'political career': 'Person', - 'early career': 'Person', - // ancestry: 'Person', - 'later life': 'Person', - 'early life and career': 'Person', - 'later years': 'Person', - 'death and legacy': 'Person', - work: 'Person', - novels: 'Person', - 'later career': 'Person', - international: 'Person', - 'selected works': 'Person', - writings: 'Person', - 'professional career': 'Person', - retirement: 'Person', - poetry: 'Person', - marriage: 'Person', - // films: 'Person', - 'electoral history': 'Person', - 'military career': 'Person', - 'international career': 'Person', - 'parliamentary career': 'Person', - - // learned places - geography: 'Place', - '2010 census': 'Place', - '2000 census': 'Place', - economy: 'Place', - transportation: 'Place', - government: 'Place', - communities: 'Place', - transport: 'Place', - culture: 'Place', - sports: 'Place', - 'adjacent counties': 'Place', - 'major highways': 'Place', - 'notable residents': 'Place', - tourism: 'Place', - cities: 'Place', - population: 'Place', - 'unincorporated communities': 'Place', - 'international relations': 'Place', - infrastructure: 'Place', - schools: 'Place', - rail: 'Place', - 'census-designated places': 'Place', - towns: 'Place', - 'local government': 'Place', - 'points of interest': 'Place', - attractions: 'Place', - geology: 'Place', - townships: 'Place', - recreation: 'Place', - location: 'Place', - 'arts and culture': 'Place', - governance: 'Place', - 'administrative divisions': 'Place', - landmarks: 'Place', - demography: 'Place', - 'parks and recreation': 'Place', - 'public transportation': 'Place', - 'coat of arms': 'Place', - churches: 'Place' - - // learned things - //compatibility: 'Thing', - //compliance: 'Thing', - //'key features': 'Thing' -} diff --git a/plugins/classify/src/byTemplate/index.js b/plugins/classify/src/byTemplate/index.js index d6313e6f..9f2d160d 100644 --- a/plugins/classify/src/byTemplate/index.js +++ b/plugins/classify/src/byTemplate/index.js @@ -1,19 +1,18 @@ -const patterns = require('./patterns') -const mapping = require('./mapping') +const { patterns, mappings } = require('../../schema/_data-fns') const byPattern = require('../_byPattern') -const byTemplate = function(doc) { - let templates = doc.templates() +const byTemplate = function (doc) { + let templates = doc.templates().map((tmpl) => tmpl.json()) let found = [] for (let i = 0; i < templates.length; i++) { const title = templates[i].template - if (mapping.hasOwnProperty(title)) { - found.push({ cat: mapping[title], reason: title }) + if (mappings.templates.hasOwnProperty(title)) { + found.push({ type: mappings.templates[title], reason: title }) } else { // try regex-list on it - let type = byPattern(title, patterns) + let type = byPattern(title, patterns.templates) if (type) { - found.push({ cat: type, reason: title }) + found.push({ type: type, reason: title }) } } } diff --git a/plugins/classify/src/byTemplate/mapping.js b/plugins/classify/src/byTemplate/mapping.js deleted file mode 100644 index 21f5e13d..00000000 --- a/plugins/classify/src/byTemplate/mapping.js +++ /dev/null @@ -1,126 +0,0 @@ -module.exports = { - //place - coord: 'Place', - 'weather box': 'Place', - - //person - persondata: 'Person', - writer: 'Person', - 'ted speaker': 'Person', - taxonbar: 'Organism', - wikispecies: 'Organism', - animalia: 'Organism', - chordata: 'Organism', - cnidaria: 'Organism', - porifera: 'Organism', - epicaridea: 'Organism', - mammals: 'Organism', - phlyctaeniidae: 'Organism', - carnivora: 'Organism', - clade: 'Organism', - 'life on earth': 'Organism', - 'orders of insects': 'Organism', - coleoptera: 'Organism', - 'insects in culture': 'Organism', - 'living things in culture': 'Organism', - 'eukaryota classification': 'Organism', - - // creative work - rating: 'CreativeWork', - 'certification table entry': 'CreativeWork', - 'imdb title': 'CreativeWork/Film', - 'track listing': 'CreativeWork/Album', - albumchart: 'CreativeWork', - 'film date': 'CreativeWork/Film', - music: 'CreativeWork', - // vgrelease: 'CreativeWork', - // chem: 'CreativeWork', - 'album ratings': 'CreativeWork', - tracklist: 'CreativeWork/Album', - 'episode list': 'CreativeWork/TVShow', - 'album chart': 'CreativeWork', - 'rotten-tomatoes': 'CreativeWork/Film', - singles: 'CreativeWork', - isbnt: 'CreativeWork', - singlechart: 'CreativeWork', - 'tcmdb title': 'CreativeWork', - 'mojo title': 'CreativeWork', - 'based on': 'CreativeWork', - 'amg movie': 'CreativeWork', - duration: 'CreativeWork', - - // learned events - esc: 'Event', - 'year nav': 'Event', - 'year dab': 'Event', - goal: 'Event', - flagiocmedalist: 'Event', - 'm1 year in topic': 'Event', - 'year nav topic5': 'Event', - 'bc year in topic': 'Event', - flagiocathlete: 'Event', - 'election summary party with leaders': 'Event/Election', - 'year article header': 'Event', - - //learned organisms - 'iucn status': 'Organism', - extinct: 'Organism', - 'fossil range': 'Organism', - internetbirdcollection: 'Organism', - vireo: 'Organism', - 'angle bracket': 'Organism', - 'wikispecies-inline': 'Organism', - 'iucn map': 'Organism', - 'xeno-canto species': 'Organism', - avibase: 'Organism', - cladex: 'Organism', - birdlife: 'Organism', - fossilrange: 'Organism', - - //leaned orgs - 'composition bar': 'Organization', - 'fs player': 'Organization', - y: 'Organization', - n: 'Organization', - rws: 'Organization', - allmusic: 'Organization/MusicalGroup', - - // learned people - 's-aft': 'Person', - 's-bef': 'Person', - 's-start': 'Person', - marriage: 'Person', - 'list of united states senators congress': 'Person/Politician', - 's-off': 'Person', - 's-par': 'Person', - 'internet archive author': 'Person', - 'ribbon devices': 'Person', - 's-reg': 'Person', - 'find a grave': 'Person', - 'gutenberg author': 'Person', - 's-new': 'Person', - 'other people': 'Person', - medalgold: 'Person', - 'baseball year': 'Person/Athlete', - medal: 'Person', - // 'post-nominals': 'Person', - mlby: 'Person', - 's-vac': 'Person', - 's-hou': 'Person', - 'librivox author': 'Person', - 'blp sources': 'Person', - 's-ppo': 'Person', - nbay: 'Person', - - //learned places - 'us census population': 'Place', - jct: 'Place', - 'geographic location': 'Place', - // wikivoyage: 'Place', - representative: 'Place', - 'historical populations': 'Place', - 'wikivoyage-inline': 'Place', - 'election box': 'Place', - zh: 'Place', - 'wide image': 'Place' -} diff --git a/plugins/classify/src/byTemplate/patterns.js b/plugins/classify/src/byTemplate/patterns.js deleted file mode 100644 index c25c16d2..00000000 --- a/plugins/classify/src/byTemplate/patterns.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - 'Person/Actor': [/actor-stub$/], - 'Person/Politician': [/(politician|mayor)-stub$/], - 'Person/Artist': [/(artist|musician|singer)-stub$/], - 'Person/Athlete': [/sport-bio-stub$/], - Person: [/-bio-stub$/], - - 'CreativeWork/Book': [/-novel-stub$/], - 'CreativeWork/Film': [/-film-stub$/], - 'CreativeWork/Album': [/-album-stub$/], - 'CreativeWork/Play': [/-play-stub$/], - CreativeWork: [/-song-stub$/], - - 'Event/Election': [/-election-stub$/], - 'Organization/SportsTeam': [/-sport-team-stub$/], - 'Organization/Company': [/-company-stub$/], - - 'Place/BodyOfWater': [/-river-stub$/], - Place: [/-geo-stub$/], -} diff --git a/plugins/classify/src/byTitle/index.js b/plugins/classify/src/byTitle/index.js index 8e7256d6..7b23cb92 100644 --- a/plugins/classify/src/byTitle/index.js +++ b/plugins/classify/src/byTitle/index.js @@ -1,5 +1,4 @@ -const mapping = require('./mapping') -const patterns = require('./patterns') +const { patterns, mappings } = require('../../schema/_data-fns') const byPattern = require('../_byPattern') const paren = /\((.*)\)$/ @@ -19,14 +18,14 @@ const byTitle = function (doc) { inside = inside.trim() //look at known parentheses - if (mapping.hasOwnProperty(inside)) { - return [{ cat: mapping[inside], reason: inside }] + if (mappings.titles.hasOwnProperty(inside)) { + return [{ type: mappings.titles[inside], reason: inside }] } // look at regex - let match = byPattern(title, patterns) + let match = byPattern(title, patterns.titles) if (match) { - return [{ cat: match, reason: title }] + return [{ type: match, reason: title }] } return [] } diff --git a/plugins/classify/src/byTitle/mapping.js b/plugins/classify/src/byTitle/mapping.js deleted file mode 100644 index 969f7205..00000000 --- a/plugins/classify/src/byTitle/mapping.js +++ /dev/null @@ -1,251 +0,0 @@ -module.exports = { - 'american football player': 'Person/Athlete', - 'australian politician': 'Person/Politician', - 'canadian politician': 'Person/Politician', - 'cape verde': 'Place', - 'cedar busway station': 'Place', - 'computer game': 'Product', - 'delhi metro': 'Place', - 'erie county, new york': 'Place', - 'football player': 'Person/Athlete', - 'gaelic footballer': 'Person/Athlete', - 'murder victim': 'Person', - 'new jersey': 'Place', - 'new orleans': 'Place', - 'new york City Subway': 'Place', - 'new york': 'Place', - 'new zealand': 'Place', - 'north carolina': 'Place', - 'northern ireland': 'Place', - 'season 2': 'CreativeWork', - 'season 3': 'CreativeWork', - 'season 4': 'CreativeWork', - 'season 5': 'CreativeWork', - 'sri lanka': 'Place', - 'the twilight zone': 'CreativeWork', - 'tv series': 'CreativeWork/TVShow', - 'uk parliament constituency': 'Place', - 'united kingdom': 'Place', - 'united states': 'Place', - 'video game': 'CreativeWork/VideoGame', - academic: 'Person', - actor: 'Person/Actor', - actress: 'Person/Actor', - alaska: 'Place', - album: 'CreativeWork/Album', - argentina: 'Place', - arkansas: 'Place', - artist: 'Person/Artist', - athlete: 'Person/Athlete', - australia: 'Place', - author: 'Person', - ballet: 'CreativeWork', - band: 'Organization/MusicalGroup', - barbados: 'Place', - bishop: 'Person/ReligiousFigure', - book: 'CreativeWork/Book', - boxer: 'Person/Athlete', - brazil: 'Place', - businessman: 'Person', - california: 'Place', - canada: 'Place', - candy: 'Product', - chad: 'Place', - character: 'FictionalCharacter', - chicago: 'Place', - // cocktail: 'Thing', - colombia: 'Place', - company: 'Organization/Company', - composer: 'Person/Artist', - connecticut: 'Place', - cricketer: 'Person/Athlete', - cyclist: 'Person', - diplomat: 'Person', - director: 'Person', - dominica: 'Place', - // drink: 'Thing', - drummer: 'Person', - edmonton: 'Place', - footballer: 'Person/Athlete', - france: 'Place', - // game: 'Thing', - georgia: 'Place', - group: 'Organization', - // horse: 'Thing', - india: 'Place', - israel: 'Place', - japan: 'Place', - journal: 'Organization', - journalist: 'Person', - judge: 'Person', - magazine: 'CreativeWork', - manhattan: 'Place', - michigan: 'Place', - miniseries: 'CreativeWork', - minister: 'Person', - movie: 'CreativeWork/Film', - music: 'CreativeWork', - musician: 'Person/Artist', - newspaper: 'Organization/Company', - nigeria: 'Place', - novel: 'CreativeWork/Book', - oklahoma: 'Place', - ontario: 'Place', - opera: 'CreativeWork', - painter: 'Person/Artist', - painting: 'CreativeWork', - pennsylvania: 'Place', - plant: 'Organism', - play: 'CreativeWork/Play', - poet: 'Person', - politician: 'Person/Politician', - portugal: 'Place', - priest: 'Person', - province: 'Place', - rapper: 'Person/Artist', - river: 'Place/BodyOfWater', - series: 'CreativeWork', - // ship: 'Thing', - singer: 'Person/Artist', - single: 'CreativeWork', - // software: 'Thing/Software', - song: 'CreativeWork', - soundtrack: 'CreativeWork', - spain: 'Place', - sudan: 'Place', - texas: 'Place', - // train: 'Thing', - uk: 'Place', - va: 'Place', - Virginia: 'Place', - volcano: 'Place', - washington: 'Place', - wrestler: 'Person/Athlete', - - //March 29 - //learned works - ep: 'CreativeWork', - comics: 'CreativeWork', - musical: 'CreativeWork', - manga: 'CreativeWork', - 'star trek: the next generation': 'CreativeWork', - 'star trek: deep space nine': 'CreativeWork', - 'buffy the vampire slayer': 'CreativeWork', - angel: 'CreativeWork', - 'the outer limits': 'CreativeWork', - 'star trek: voyager': 'CreativeWork', - 'short story': 'CreativeWork', - seinfeld: 'CreativeWork', - 'star trek: enterprise': 'CreativeWork', - poem: 'CreativeWork', - tv: 'CreativeWork', - 'uk series': 'CreativeWork', - 'doctor who': 'CreativeWork', - 'david bowie song': 'CreativeWork', - caravaggio: 'CreativeWork', - 'the beach boys song': 'CreativeWork', - video: 'CreativeWork', - 'audio drama': 'CreativeWork', - 'babylon 5': 'CreativeWork', - 'madonna song': 'CreativeWork', - 'game show': 'CreativeWork/TVShow', - 'u.s. tv series': 'CreativeWork/TVShow', - 'uk tv series': 'CreativeWork/TVShow', - 'australian tv series': 'CreativeWork/TVShow', - 'u.s. game show': 'CreativeWork/TVShow', - - //learned events - festival: 'Event', - '25 m': 'Event', - 'world war ii': 'Event', - conmebol: 'Event', - 'music festival': 'Event', - 'world war i': 'Event', - - //learned orgs - am: 'Organization', - fm: 'Organization', - 'american band': 'Organization/MusicalGroup', - wehrmacht: 'Organization', - 'tv channel': 'Organization', - 'british band': 'Organization', - organization: 'Organization', - airline: 'Organization', - publisher: 'Organization', - 'australian band': 'Organization/MusicalGroup', - 'canadian band': 'Organization/MusicalGroup', - restaurant: 'Organization/Company', - brand: 'Organization', - 'uk band': 'Organization/MusicalGroup', - 'record label': 'Organization', - retailer: 'Organization/Company', - 'union army': 'Organization', - store: 'Organization/Company', - defunct: 'Organization', - 'tv network': 'Organization', - 'political party': 'Organization/PoliticalParty', - 'japanese band': 'Organization/MusicalGroup', - 'department store': 'Organization', - 'swedish band': 'Organization/MusicalGroup', - - //learned people - 'american football': 'Person', - 'ice hockey': 'Person', - soccer: 'Person', - 'rugby league': 'Person', - 'rugby union': 'Person', - 'field hockey': 'Person', - tennis: 'Person', - writer: 'Person', - vc: 'Person', - 'racing driver': 'Person', - 'british politician': 'Person/Politician', - golfer: 'Person/Athlete', - historian: 'Person/Academic', - architect: 'Person', - comedian: 'Person', - cartoonist: 'Person/Artist', - governor: 'Person/Politician', - 'british army officer': 'Person', - general: 'Person', - broadcaster: 'Person', - engineer: 'Person', - philosopher: 'Person/Academic', - mathematician: 'Person/Academic', - novelist: 'Person/Artist', - physician: 'Person', - swimmer: 'Person/Athlete', - soldier: 'Person', - photographer: 'Person/Artist', - 'royal navy officer': 'Person', - producer: 'Person', - theologian: 'Person/ReligiousFigure', - lawyer: 'Person', - playwright: 'Person/Artist', - activist: 'Person', - inventor: 'Person', - astronomer: 'Person/Academic', - 'irish politician': 'Person/Politician', - economist: 'Person/Academic', - mayor: 'Person/Politician', - moon: 'Place/SpaceLocation', - country: 'Place/Country', - - // learned things - // 'programming language': 'Thing/Software', - genus: 'Organism', - // missile: 'Thing', - 'board game': 'Product', - // 'new york city subway car': 'Thing', - // instrument: 'Thing', - // food: 'Thing', - fish: 'Organism', - bird: 'Organism', - // 'operating system': 'Thing/Software', - // 'file format': 'Thing', - // 'computer virus': 'Thing/Software', - 'card game': 'Product', - automobile: 'Product', - // rocket: 'Thing' - // website: 'Thing/Software' -} diff --git a/plugins/classify/src/byTitle/patterns.js b/plugins/classify/src/byTitle/patterns.js deleted file mode 100644 index ceadb527..00000000 --- a/plugins/classify/src/byTitle/patterns.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - 'CreativeWork/Film': [/ \([0-9]{4} film\)$/], - CreativeWork: [/ \((.*? )song\)$/], - Event: [/ \((19|20)[0-9]{2}\)$/] -} diff --git a/plugins/classify/src/index.js b/plugins/classify/src/index.js index 716535fc..c6e71f8b 100644 --- a/plugins/classify/src/index.js +++ b/plugins/classify/src/index.js @@ -35,7 +35,6 @@ const plugin = function (models) { //look for 'Category: 1992 Births', etc res.category = byCategory(doc, options) - return score(res, options) } } diff --git a/plugins/classify/src/score.js b/plugins/classify/src/score.js index 202799fb..d103e95f 100644 --- a/plugins/classify/src/score.js +++ b/plugins/classify/src/score.js @@ -1,5 +1,3 @@ -const types = require('./_types') - const topk = function (arr) { let obj = {} arr.forEach((a) => { @@ -21,35 +19,32 @@ const topk = function (arr) { const parse = function (cat) { let split = cat.split(/\//) return { - root: split[0], - child: split[1] + root: split[1], + child: split[2], } } const getScore = function (detail) { - let cats = [] + let types = [] Object.keys(detail).forEach((k) => { detail[k].forEach((obj) => { - if (!types[obj.cat]) { - console.error('Missing: ' + obj.cat) - } - cats.push(parse(obj.cat)) + types.push(parse(obj.type)) }) }) // find top parent - let roots = cats.map((obj) => obj.root).filter((s) => s) + let roots = types.map((obj) => obj.root).filter((s) => s) let tops = topk(roots) let top = tops[0] if (!top) { return { detail: detail, - category: null, - score: 0 + type: null, + score: 0, } } let root = top[0] // score as % of results - let score = top[1] / cats.length + let score = top[1] / types.length // punish low counts if (top[1] === 1) { score *= 0.75 @@ -70,12 +65,12 @@ const getScore = function (detail) { } // find 2nd level - let children = cats.filter((o) => o.root === root && o.child).map((obj) => obj.child) + let children = types.filter((o) => o.root === root && o.child).map((obj) => obj.child) let topKids = topk(children) top = topKids[0] - let category = root + let type = root if (top) { - category = `${root}/${top[0]}` + type = `${root}/${top[0]}` // punish for any conflicting children if (topKids.length > 1) { score *= 0.7 @@ -87,9 +82,9 @@ const getScore = function (detail) { } return { root: root, - category: category, + type: type, score: score, - detail: detail + details: detail, } } module.exports = getScore diff --git a/plugins/classify/tests/i18n.test.js b/plugins/classify/tests/i18n.test.js index c83f64af..c6eabb9d 100644 --- a/plugins/classify/tests/i18n.test.js +++ b/plugins/classify/tests/i18n.test.js @@ -5,18 +5,18 @@ 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) let res = doc.classify() - t.equal(res.category, a[1], a[0]) + t.equal(res.type, a[1], a[0]) }) t.end() diff --git a/plugins/classify/tests/misc.test.js b/plugins/classify/tests/misc.test.js index c39fafe3..2af5a9a0 100644 --- a/plugins/classify/tests/misc.test.js +++ b/plugins/classify/tests/misc.test.js @@ -18,23 +18,23 @@ test('classify-test', async function (t) { ['Clint-Murchison-Sr.', 'Person'], ['Charlie-Milstead', 'Person/Athlete'], ['Gregory-Serper', 'Person'], - ['United-Kingdom', 'Place'], + ['United-Kingdom', 'Place/Jurisdiction'], ['Teymanak-e-Olya', 'Place'], - ['toronto', 'Place/City'], + ['toronto', 'Place/Jurisdiction'], ['royal_cinema', 'Place'], - ['Canton-of-Etaples', 'Place'], + ['Canton-of-Etaples', 'Place/Jurisdiction'], ['Arts_Club_of_Chicago', 'Place'], - ['al_Haytham', 'Person/Academic'], - ['The-Field-of-Waterloo', 'CreativeWork'], + ['al_Haytham', 'Person'], + ['The-Field-of-Waterloo', 'Creation/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`) let txt = fs.readFileSync(abs).toString() let doc = wtf(txt) let res = doc.classify() - t.equal(res.category, a[1], a[0]) + t.equal(res.type, a[1], a[0]) }) t.end() }) diff --git a/plugins/disambig/README.md b/plugins/disambig/README.md new file mode 100644 index 00000000..7444eb01 --- /dev/null +++ b/plugins/disambig/README.md @@ -0,0 +1,27 @@ +
+ + +
a plugin for wtf_wikipedia
+ + + + + + + + + + +
+
+ +
+ npm install wtf-plugin-disambig +
+ +disambig-details plugin for wtf_wikipedia + + +work-in-progress + +MIT diff --git a/plugins/disambig/builds/wtf-plugin-disambig.js b/plugins/disambig/builds/wtf-plugin-disambig.js new file mode 100644 index 00000000..455cde4b --- /dev/null +++ b/plugins/disambig/builds/wtf-plugin-disambig.js @@ -0,0 +1,123 @@ +/* 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) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfdisambig = factory()); +}(this, (function () { 'use strict'; + + // 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 () { + if (this.isDisambiguation() !== true) { + return null; + } // remove 'see also' + + + let sec = this.section('see also'); + + if (sec !== null) { + sec.remove(); + } + + let intro = this.section().sentence(); + let main = getMain(intro); + let pages = []; + this.sections().forEach(s => { + let title = s.title(); + + if (shouldSkip.test(title) === true) { + return; + } + + s.lists().forEach(list => { + list.lines().forEach(line => { + let found = parseLine(line); + + if (found) { + found.section = title; + pages.push(found); + } + }); + }); + }); + return { + text: getTitle(this), + main: main, + pages: pages + }; + }; // alias + + + models.Doc.prototype.disambig = models.Doc.prototype.disambiguation; + }; + + var src = addMethod; + + return src; + +}))); +//# sourceMappingURL=wtf-plugin-disambig.js.map diff --git a/plugins/disambig/builds/wtf-plugin-disambig.js.map b/plugins/disambig/builds/wtf-plugin-disambig.js.map new file mode 100644 index 00000000..7c2f52c6 --- /dev/null +++ b/plugins/disambig/builds/wtf-plugin-disambig.js.map @@ -0,0 +1 @@ +{"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 new file mode 100644 index 00000000..b4d9afbb --- /dev/null +++ b/plugins/disambig/builds/wtf-plugin-disambig.min.js @@ -0,0 +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).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 new file mode 100644 index 00000000..3334436b --- /dev/null +++ b/plugins/disambig/builds/wtf-plugin-disambig.mjs @@ -0,0 +1,114 @@ +/* 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 () { + if (this.isDisambiguation() !== true) { + return null; + } // remove 'see also' + + + let sec = this.section('see also'); + + if (sec !== null) { + sec.remove(); + } + + let intro = this.section().sentence(); + let main = getMain(intro); + let pages = []; + this.sections().forEach(s => { + let title = s.title(); + + if (shouldSkip.test(title) === true) { + return; + } + + s.lists().forEach(list => { + list.lines().forEach(line => { + let found = parseLine(line); + + if (found) { + found.section = title; + pages.push(found); + } + }); + }); + }); + return { + text: getTitle(this), + main: main, + pages: pages + }; + }; // alias + + + models.Doc.prototype.disambig = models.Doc.prototype.disambiguation; +}; + +var src = addMethod; + +export default src; diff --git a/plugins/disambig/package-lock.json b/plugins/disambig/package-lock.json new file mode 100644 index 00000000..cd1fdfb1 --- /dev/null +++ b/plugins/disambig/package-lock.json @@ -0,0 +1,5230 @@ +{ + "name": "wtf-plugin-disambig", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "wtf-plugin-disambig", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "compromise": "13.10.5", + "spacetime": "6.14.0" + }, + "devDependencies": { + "@babel/core": "7.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "rollup": "2.44.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.1.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "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.12.13", + "regexpu-core": "^4.7.1" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "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.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "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.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "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.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "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.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "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/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" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "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.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@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, + "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.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.12.13" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "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.13.0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "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.13.0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "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.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" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "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.13" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@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.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.14.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", + "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001203", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", + "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/compromise": { + "version": "13.10.5", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", + "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "dependencies": { + "efrt-unpack": "2.2.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", + "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.3", + "semver": "7.0.0" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/efrt-unpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/efrt-unpack/-/efrt-unpack-2.2.0.tgz", + "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" + }, + "node_modules/electron-to-chromium": { + "version": "1.3.693", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz", + "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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" + } + }, + "node_modules/is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "node_modules/is-boolean-object": { + "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" + } + }, + "node_modules/is-callable": { + "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" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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" + } + }, + "node_modules/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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "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" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-typed-array": { + "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.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-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 + }, + "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 + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "node_modules/object-is": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-commonjs/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-node-resolve/node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spacetime": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.14.0.tgz", + "integrity": "sha512-pz/nMIRGNSJeFfDFvhPjMHXhFU1NcrYnpydMuSS2Zsk0NEoHJc2rRKXugkmlqUv/l/fPxWVJVnj8isVS0//vbQ==" + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/string.prototype.trimstart": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", + "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "node_modules/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, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "node_modules/which-typed-array": { + "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", + "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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@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-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.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.13.0" + } + }, + "@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "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.12.13" + } + }, + "@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "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.13.12" + } + }, + "@babel/helper-module-imports": { + "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.13.12" + } + }, + "@babel/helper-module-transforms": { + "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.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.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.12.13" + } + }, + "@babel/helper-plugin-utils": { + "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-remap-async-to-generator": { + "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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-replace-supers": { + "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.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.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.13.12" + } + }, + "@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.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.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/helper-validator-option": { + "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.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/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.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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "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.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.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.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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "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.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "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.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "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/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.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.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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.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.12.13" + } + }, + "@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.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.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "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.13.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "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.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.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.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "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.12.13" + } + }, + "@babel/plugin-transform-classes": { + "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.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.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.13.0" + } + }, + "@babel/plugin-transform-destructuring": { + "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.13.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "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.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "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.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "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.13.0" + } + }, + "@babel/plugin-transform-function-name": { + "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.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "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.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "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.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "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.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.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.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" + } + }, + "@babel/plugin-transform-modules-umd": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "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.13" + } + }, + "@babel/plugin-transform-new-target": { + "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.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "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.13.0" + } + }, + "@babel/plugin-transform-property-literals": { + "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.12.13" + } + }, + "@babel/plugin-transform-regenerator": { + "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.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.12.13" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "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.12.13" + } + }, + "@babel/plugin-transform-spread": { + "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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "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.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "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.13.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "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.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { + "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.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.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.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "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.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" + } + }, + "@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "requires": { + "@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.19.0" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/node": { + "version": "14.14.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", + "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "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" + } + }, + "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", + "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.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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + } + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "call-bind": { + "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.2" + } + }, + "caniuse-lite": { + "version": "1.0.30001203", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", + "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==", + "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 + }, + "colorette": { + "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": { + "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 + }, + "compromise": { + "version": "13.10.5", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", + "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "requires": { + "efrt-unpack": "2.2.0" + } + }, + "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.9.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", + "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", + "dev": true, + "requires": { + "browserslist": "^4.16.3", + "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.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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" + }, + "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", + "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" + } + }, + "efrt-unpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/efrt-unpack/-/efrt-unpack-2.2.0.tgz", + "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" + }, + "electron-to-chromium": { + "version": "1.3.693", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz", + "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==", + "dev": true + }, + "es-abstract": { + "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.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.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "es-get-iterator": { + "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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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": { + "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": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "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.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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 + }, + "get-intrinsic": { + "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", + "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", + "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-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "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": { + "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.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.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.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.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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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.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.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "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.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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "lodash": { + "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": { + "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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true + }, + "object-inspect": { + "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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "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 + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "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.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": { + "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.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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "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.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "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.44.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", + "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.1" + } + }, + "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" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "@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": "*" + } + } + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } + } + }, + "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": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "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 + }, + "spacetime": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.14.0.tgz", + "integrity": "sha512-pz/nMIRGNSJeFfDFvhPjMHXhFU1NcrYnpydMuSS2Zsk0NEoHJc2rRKXugkmlqUv/l/fPxWVJVnj8isVS0//vbQ==" + }, + "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_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" + } + }, + "string.prototype.trim": { + "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.2" + } + }, + "string.prototype.trimend": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "requires": { + "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": { + "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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "terser": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", + "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", + "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 + }, + "unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, + "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.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.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": { + "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.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", + "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" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true + } + } +} diff --git a/plugins/disambig/package.json b/plugins/disambig/package.json new file mode 100644 index 00000000..14a0a951 --- /dev/null +++ b/plugins/disambig/package.json @@ -0,0 +1,52 @@ +{ + "name": "wtf-plugin-disambig", + "description": "disambig-details plugin for wtf_wikipedia", + "version": "0.0.1", + "main": "./builds/wtf-plugin-disambig.js", + "unpkg": "./builds/wtf-plugin-disambig.min.js", + "module": "./builds/wtf-plugin-disambig.mjs", + "author": "Spencer Kelly (spencermountain)", + "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/disambig#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": "es5", + "tabWidth": 2, + "semi": false, + "singleQuote": true, + "printWidth": 100 + }, + "dependencies": { + "compromise": "13.10.5", + "spacetime": "6.14.0" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + }, + "devDependencies": { + "@babel/core": "7.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "rollup": "2.44.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.1.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "license": "MIT" +} diff --git a/plugins/disambig/rollup.config.js b/plugins/disambig/rollup.config.js new file mode 100644 index 00000000..e25c60ec --- /dev/null +++ b/plugins/disambig/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 resolve from '@rollup/plugin-node-resolve' //import spacetime + +import { version } from './package.json' +console.log('\n 📦 - running rollup..\n') + +const name = 'wtf-plugin-disambig' +const banner = `/* ${name} ${version} MIT */` +export default [ + // === es-module === + { + input: 'src/index.js', + output: [{ banner: banner, file: `builds/${name}.mjs`, format: 'esm' }], + plugins: [ + resolve(), + commonjs(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'], + }), + ], + }, + + // === .js === + { + input: 'src/index.js', + output: [ + { + banner: banner, + file: `builds/${name}.js`, + format: 'umd', + name: 'wtfdisambig', + sourcemap: true, + }, + ], + plugins: [ + resolve(), + commonjs(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'], + }), + ], + }, + // === min.js === + { + input: 'src/index.js', + output: [ + { + banner: banner, + file: `builds/${name}.min.js`, + format: 'umd', + name: 'wtfdisambig', + sourcemap: false, + }, + ], + plugins: [ + resolve(), + commonjs(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'], + }), + terser(), + sizeCheck({ expect: 55, warn: 15 }), + ], + }, +] diff --git a/plugins/disambig/src/index.js b/plugins/disambig/src/index.js new file mode 100644 index 00000000..9a412038 --- /dev/null +++ b/plugins/disambig/src/index.js @@ -0,0 +1,93 @@ +// 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 () { + if (this.isDisambiguation() !== true) { + return null + } + // remove 'see also' + let sec = this.section('see also') + if (sec !== null) { + sec.remove() + } + let intro = this.section().sentence() + let main = getMain(intro) + + let pages = [] + this.sections().forEach((s) => { + let title = s.title() + if (shouldSkip.test(title) === true) { + return + } + s.lists().forEach((list) => { + list.lines().forEach((line) => { + let found = parseLine(line) + if (found) { + found.section = title + pages.push(found) + } + }) + }) + }) + return { + text: getTitle(this), + main: main, + pages: pages, + } + } + // alias + models.Doc.prototype.disambig = models.Doc.prototype.disambiguation +} +module.exports = addMethod diff --git a/plugins/disambig/tests/_lib.js b/plugins/disambig/tests/_lib.js new file mode 100644 index 00000000..e7c10f86 --- /dev/null +++ b/plugins/disambig/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/disambig/tests/disambig.test.js b/plugins/disambig/tests/disambig.test.js new file mode 100644 index 00000000..d0fd7d4c --- /dev/null +++ b/plugins/disambig/tests/disambig.test.js @@ -0,0 +1,95 @@ +const test = require('tape') +const wtf = require('./_lib') + +test('barrie', function (t) { + let str = `'''[[Barrie]]''' is a city in Ontario, Canada. + +'''Barrie''' may also refer to: + +* [[Barrie (electoral district)]], Canadian federal electoral district +* [[Barrie (provincial electoral district)]], provincial electoral district +* [[Barrie—Simcoe—Bradford]], former Canadian electoral district +* [[Barrie School]], private school in Silver Spring, Maryland +* [[Barrie (company)]], fashion company owned by Chanel +* [[Little Barrie]], British band` + + let doc = wtf(str) + let res = doc.disambiguation() + t.equal(res.text, 'Barrie', 'text') + t.equal(res.main, 'Barrie', 'main') + t.equal(res.pages.length, 6, '6-pages') + + t.end() +}) + +test('barry', function (t) { + let str = `'''Barry''' may refer to: +{{TOC right}} + +==People and fictional characters== +* [[Barry (name)]], including lists of people with the given name, nickname or surname, as well as fictional characters with the given name +* [[Dancing Barry]], stage name of Barry Richards (born c. 1950), former dancer at National Basketball Association games + +==Places== +===Canada=== +*[[Barry Lake]], Quebec +*[[Barry Islands]], Nunavut + +===United Kingdom=== +* [[Barry, Angus]], Scotland, a village +** [[Barry Mill]], a watermill +* [[Barry, Vale of Glamorgan]], Wales, a town +** [[Barry Railway Company]] + +===United States=== +* [[Barry, Illinois]], a city +* [[Barry, Minnesota]], a city +* [[Barry, Texas]], a city +* [[Barry County, Michigan]] +* [[Barry County, Missouri]] +* [[Barry Township (disambiguation)]], in several states +* [[Fort Barry]], Marin County, California, a former US Army installation + +===Elsewhere=== +* [[Barry Island (Debenham Islands)]], Antarctica +* [[Barry, New South Wales]], Australia, a village +* [[Barry, Hautes-Pyrénées]], France, a commune + +==Arts and entertainment== +* [[Barry (album)|''Barry'' (album)]], by Barry Manilow +* "Barry", a character from the Marillion album cover ''[[Anoraknophobia]]'' +* [[Barry (1949 film)|''Barry'' (1949 film)]], a French film +* [[Barry (2016 film)|''Barry'' (2016 film)]], an American film +* [[Barry (TV series)|''Barry'' (TV series)]], an American tragicomedy series +* [[Barry Award (for crime novels)]] +* [[Melbourne International Comedy Festival Award]], formerly called the Barry Award + +==Other uses== +* [[Barry (heraldry)]] +* [[Barry (dog)]] (1800–1814), a mountain rescue St. Bernard +* [[Barry (radio)]], an Australian radio station +* [[Barry (UK Parliament constituency)]] +* [[Barry University]], a private Catholic university in Miami Shores, Florida +* [[Tropical Storm Barry]] +* {{USS|Barry}}, four US destroyers +* [[1703 Barry]], a minor planet + +==See also== +* [[De Barry family]] +* [[Dubarry (disambiguation)]] +* [[Barre (disambiguation)]] +* [[Barrie (disambiguation)]] +* [[Berry (disambiguation)]] +{{srt}} + +{{Disambiguation|geo}} +` + + let doc = wtf(str) + let res = doc.disambiguation() + t.equal(res.text, 'Barry', 'text') + t.equal(res.main, null, 'main') + t.equal(res.pages.length, 32, '32-pages') + + t.end() +}) diff --git a/plugins/html/package-lock.json b/plugins/html/package-lock.json index e722f5c2..75e4653f 100644 --- a/plugins/html/package-lock.json +++ b/plugins/html/package-lock.json @@ -1,446 +1,3413 @@ { "name": "wtf-plugin-html", "version": "0.2.1", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-html", + "version": "0.2.1", + "license": "MIT", + "devDependencies": { + "@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", + "rollup-plugin-json": "^4.0.0", + "rollup-plugin-node-resolve": "^5.1.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@types/node": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", + "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-reference/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "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": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@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.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.9.0", + "@babel/types": "^7.13.0", "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "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.12.11", "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.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.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.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.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@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.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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@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.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.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.8.3", - "@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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -452,6 +3419,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3437,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 +3455,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 +3474,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 +3510,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,63 +3921,49 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, @@ -1000,22 +3982,67 @@ "@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==", + "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" + } + }, + "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": { - "color-convert": "^1.9.0" + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" } }, - "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==", + "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": { - "object.assign": "^4.1.0" + "@babel/helper-define-polyfill-provider": "^0.1.5" } }, "balanced-match": { @@ -1035,15 +4062,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "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.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1064,10 +4092,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { @@ -1096,6 +4134,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1118,12 +4162,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.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.8.3", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1142,26 +4186,43 @@ "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { + "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.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.4", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "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" + }, + "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 +4250,57 @@ } }, "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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 +4314,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 +4338,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 +4347,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 +4360,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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 }, @@ -1280,11 +4373,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.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", + "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", @@ -1314,6 +4418,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", @@ -1321,9 +4431,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": { @@ -1342,39 +4452,75 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "is-bigint": { + "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.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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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 +4539,27 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, + "is-set": { + "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": { + "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 +4569,31 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 +4601,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,61 +4641,25 @@ "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": { - "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 }, - "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" - } + "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": { "version": "0.25.7", @@ -1531,9 +4686,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 +4698,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "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.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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } }, "object-keys": { "version": "1.1.1", @@ -1578,15 +4726,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 +4746,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 +4758,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 +4795,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,35 +4810,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +4849,15 @@ } }, "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": { - "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" @@ -1779,12 +4890,12 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "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": { @@ -1839,16 +4950,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": { @@ -1867,16 +4977,30 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { "version": "0.5.7", @@ -1885,9 +5009,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", @@ -1917,44 +5041,44 @@ "through": "2" } }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "safe-buffer": "~5.1.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.trim": { + "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", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.2" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimend": { + "version": "1.0.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", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "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==", + "string.prototype.trimstart": { + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -1967,13 +5091,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 +5164,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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.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 } } @@ -2048,6 +5237,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", @@ -2082,11 +5283,57 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "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.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": { + "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.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", + "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" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/html/package.json b/plugins/html/package.json index c520a0c5..d29f57ff 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", @@ -23,22 +27,21 @@ "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", + "@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", "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.2.2" }, - "licence": "MIT" + "license": "MIT" } 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 290a926a..689497b0 100644 --- a/plugins/html/src/02-section.js +++ b/plugins/html/src/02-section.js @@ -5,12 +5,13 @@ const defaults = { lists: 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' } @@ -18,31 +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 + //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' }) @@ -51,9 +53,10 @@ const doSection = function(options) { html += ' ' + this.sentences() - .map(s => s.html(options)) + .map((s) => s.html(options)) .join(' ') } return '
\n' + html + '
\n' } + module.exports = doSection 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..d0c6195e 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.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/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/html/tests/_lib.js b/plugins/html/tests/_lib.js index e7c10f86..446cf771 100644 --- a/plugins/html/tests/_lib.js +++ b/plugins/html/tests/_lib.js @@ -3,7 +3,7 @@ if (typeof process !== undefined && typeof module !== undefined) { if (process.env.TESTENV === 'prod') { console.log('🧢 - testing production') wtf = require('../../../') - wtf.extend(require(`../`)) + wtf.extend(require(`..`)) } else { wtf = require('../../../src') wtf.extend(require(`../src`)) 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/builds/wtf-plugin-i18n.js b/plugins/i18n/builds/wtf-plugin-i18n.js index 69d226a1..d7bb5d99 100644 --- a/plugins/i18n/builds/wtf-plugin-i18n.js +++ b/plugins/i18n/builds/wtf-plugin-i18n.js @@ -2,7 +2,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.wtfI18n = factory()); + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfI18n = factory()); }(this, (function () { 'use strict'; var birth_date_and_age = ['ålder', 'ani', 'b', // 'birth date', @@ -95,7 +95,7 @@ var taxobox = ['bảng phân loại', 'biotakso infokaste', 'blwch tacson', 'boks klassans', 'bosca sonraí tacsanomaíochta', 'capsa taxinomica', 'dora tewran', 'ficha de taxón', 'info/taxonomia', "infotaula d'ésser viu", 'kishtey fys baagh', 'kotak info taksonomi', 'puha fakafaʻahinga', 'takso kutusu', 'taksoboks', 'taksokvir', 'takson infobox', 'taksonitabel', 'taksonomia', 'taksonomiija', 'taksonomio', 'taksonomiýa', 'taksonomka', 'taksoqutu', 'tassobox', 'tassonomìa', // 'taxobox', 'taxobox öömrang', 'taxobox2', 'taxoboxe', 'taxocaixa', 'taxonomio', 'taxotaula infotaula', 'ταξινομοπλαίσιο', 'таксанамічная інфармацыя', 'таксанамія', 'таксаҥа', 'таксобокс', 'таксон', 'таксономија', 'таксономиясь', 'таксономія', 'ტაქსოდაფა', 'տաքսոտուփ', 'מיון', 'جعبه اطلاعات آرایه زیستی', 'صندوق معلومات كائن', 'जीवचौकट', 'වර්ගීකරණකොටුව', 'ตารางจำแนกพันธุ์', 'ຕາລາງຈຳແໜກພັນ', '생물 분류', '物種明細模', '生物分類表']; - var mapping = { + let mapping = { 'birth date and age': birth_date_and_age, citation: citation, 'cite book': cite_book, @@ -118,12 +118,12 @@ taxobox: taxobox }; - var plugin = function plugin(models, templates) { - Object.keys(mapping).forEach(function (k) { - mapping[k].forEach(function (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) { - return templates[k](tmpl, list, k); + templates[name] = function (tmpl, list, parse) { + return templates[k](tmpl, list, parse, k); }; }); }); diff --git a/plugins/i18n/builds/wtf-plugin-i18n.js.map b/plugins/i18n/builds/wtf-plugin-i18n.js.map index cd27947a..21b8fb3e 100644 --- a/plugins/i18n/builds/wtf-plugin-i18n.js.map +++ b/plugins/i18n/builds/wtf-plugin-i18n.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-i18n.js","sources":["../src/data/birth_date_and_age.js","../src/data/citation.js","../src/data/cite_book.js","../src/data/cite_journal.js","../src/data/cite_web.js","../src/data/commons_cat.js","../src/data/coord.js","../src/data/flag.js","../src/data/flagicon.js","../src/data/formatnum.js","../src/data/ipa.js","../src/data/isbn.js","../src/data/main.js","../src/data/portal.js","../src/data/reflist.js","../src/data/sfn.js","../src/data/small.js","../src/data/start_date.js","../src/data/persondata.js","../src/data/taxobox.js","../src/index.js"],"sourcesContent":["module.exports = [\r\n 'ålder',\r\n 'ani',\r\n 'b',\r\n // 'birth date',\r\n // 'birth date and age',\r\n // 'birth year and age',\r\n 'calcola età',\r\n 'dáta breithe agus aois',\r\n 'data de nacemento e idade',\r\n 'data de naissença e atge',\r\n 'dâta de nèssence',\r\n 'data naixement i edat',\r\n 'data nașterii și vârsta',\r\n 'data tat-twelid u età',\r\n 'date de naissance',\r\n 'dato og alder',\r\n 'dátum narodenia a vek',\r\n 'datum narození a věk',\r\n 'datum rođenja i godine',\r\n 'datum rojstva in starost',\r\n 'doğum tarihi ve yaşı',\r\n 'doğum tarixi və yaşı',\r\n 'dyddiad geni ac oedran',\r\n 'dzimšanas datums un vecums',\r\n 'életkor-élő-dátummal',\r\n 'fødselsdato og alder',\r\n 'geboortedatum en ouderdom',\r\n 'jaiotza data eta adina',\r\n 'narodniny a staroba',\r\n 'narodniny a starstwo',\r\n 'naskiĝdato kaj aĝo',\r\n 'ngày sinh và tuổi',\r\n 'petsa ti pannakaipasngay ken tawen',\r\n 'roja bûyînê û temen',\r\n 'sünniaeg ja vanus',\r\n 'syntymäaika ja ikä',\r\n 'tanggal embas lan yusa',\r\n 'tanggal lahir dan umur',\r\n 'tarikh lahir dan umur',\r\n 'ulloq ukiuilu',\r\n 'дата з віком',\r\n 'дата на раждане и години',\r\n 'дата нараджэння і ўзрост',\r\n 'датум рођења',\r\n 'нарадзіўся',\r\n 'райгуырд',\r\n 'роден на и возраст',\r\n 'родился',\r\n 'таърихи таваллуд ва син',\r\n 'төрсөн огноо, нас',\r\n 'шочмокече',\r\n 'დაბადების თარიღი და ასაკი',\r\n 'ծննդյան ամսաթիվ և տարիք',\r\n 'تاريخ الميلاد و العمر',\r\n 'تاريخ الميلاد والعمر',\r\n 'تاریخ پیدائش اور عمر',\r\n 'تاریخ تولد و سن',\r\n 'ڄمڻ جي تاريخ ۽ عمر',\r\n 'د زیږون نیټه او عمر',\r\n 'دوغوم تاریخی ایله یاش',\r\n 'ڕۆژی لەدایکبوون و تەمەن',\r\n 'जन्म तिथि एवं आयु',\r\n 'जन्म दिनांक आणि वय',\r\n 'জন্ম তারিখ ও বয়স',\r\n 'பிறப்பும் அகவையும்',\r\n 'උපන් දින සහ වයස',\r\n '출생일과 나이',\r\n '出世日同歲數',\r\n '生年月日と年齢',\r\n '生日搭年纪'\r\n]\r\n","module.exports = [\r\n 'atsauce',\r\n 'chú thích',\r\n 'cit',\r\n 'cita testo',\r\n 'citácia harvard',\r\n 'citat',\r\n 'citat3',\r\n // 'citation',\r\n 'cite',\r\n 'citim',\r\n 'cito',\r\n 'cytuj',\r\n 'erreferentzia',\r\n 'iomradh',\r\n 'kaynak',\r\n 'kilde',\r\n 'obra citada',\r\n 'tzita testu',\r\n 'viide',\r\n 'наведување',\r\n 'উদ্ধৃতি',\r\n 'ကိုးကားခြင်း',\r\n '인용'\r\n]\r\n","module.exports = [\r\n 'bókaheimild',\r\n 'book reference',\r\n 'chú thích sách',\r\n 'ċita ktieb',\r\n 'cita libro',\r\n 'cita libru',\r\n 'cita llibru',\r\n 'citace monografie',\r\n 'citácia knihy',\r\n 'citaĵo el libro',\r\n 'citar lhibro',\r\n 'citar libro',\r\n 'citar livro',\r\n 'citat carte',\r\n 'citaziuni di testu',\r\n // 'cite book',\r\n 'cite book.',\r\n 'cité un lìber',\r\n 'citeer boek',\r\n 'citiranje knjiga',\r\n 'cytuj książkę',\r\n 'cytuj ksiōnżkã',\r\n 'enmyslioar',\r\n 'girjegáldu',\r\n 'grāmatas atsauce',\r\n 'hivatkozás/könyv',\r\n 'iomradh leabhar',\r\n 'kilde bog',\r\n 'kilde bok',\r\n 'kirjaviite',\r\n 'kitap kaynağı',\r\n 'kjelde bok',\r\n 'lidɐraduur',\r\n 'literatur',\r\n 'literatura',\r\n 'navedi knjigo',\r\n 'ouvrage',\r\n 'ôvra',\r\n 'ref-llibre',\r\n 'tzita libru',\r\n 'кітап',\r\n 'наведена книга',\r\n 'צייגט בוך',\r\n 'استشهاد بكتاب',\r\n 'حوالہ کتاب',\r\n 'کیتاب قایناقلاماسی',\r\n 'ڪتابن مان حوالا',\r\n 'یادکرد',\r\n 'स्रोत पुस्तक',\r\n 'বই উদ্ধৃতি',\r\n '서적 인용',\r\n '引書'\r\n]\r\n","module.exports = [\r\n 'article',\r\n 'chú thích tạp chí',\r\n 'cita pubblicazione',\r\n 'ċita pubblikazzjoni',\r\n 'cita publicación',\r\n 'cita publicación periódica',\r\n 'cita publicasion',\r\n 'citácia periodika',\r\n 'citaĵo el gazeto',\r\n 'citar periódico',\r\n 'citat revistă',\r\n 'cite aldizkari',\r\n // 'cite journal',\r\n \"cité n'arvista\",\r\n 'cite paper',\r\n 'citeer journal',\r\n 'citiranje časopisa',\r\n 'cytuj news',\r\n 'cytuj pismo',\r\n 'dergi kaynağı',\r\n 'iomradh iris',\r\n 'lehtiviite',\r\n 'luaigh foilseachán',\r\n 'navedi revijo',\r\n 'publikācijas atsauce',\r\n 'ref-publicació',\r\n 'revista',\r\n 'tzita publicatzione',\r\n 'макъала',\r\n 'наведено списание',\r\n 'статья',\r\n 'ыстатыйа',\r\n 'استشهاد بدورية أكاديمية',\r\n 'بیرخستنەوەی گۆڤار',\r\n 'حوالہ رسالہ',\r\n 'जर्नल स्रोत',\r\n 'সাময়িকী উদ্ধৃতি',\r\n '저널 인용'\r\n]\r\n","module.exports = [\r\n 'chú thích web',\r\n 'cita web',\r\n 'ċita web',\r\n 'citace elektronické monografie',\r\n 'citácia elektronického dokumentu',\r\n 'citaĵo el la reto',\r\n 'citar web',\r\n 'citat web',\r\n 'cité la ragnà',\r\n // 'cite web',\r\n 'cite web öömrang',\r\n 'citeer web',\r\n 'citeweb',\r\n 'citiranje weba',\r\n 'cito web',\r\n 'cytuj strōnã',\r\n 'cytuj stronę',\r\n 'iomradh lìon',\r\n 'kilde www',\r\n 'lien web',\r\n 'ligam web',\r\n 'lim vouèbe',\r\n 'lua idirlín',\r\n 'navedi splet',\r\n 'neahttagáldu',\r\n 'ref-web',\r\n 'tīmekļa atsauce',\r\n 'tzita web',\r\n 'vefheimild',\r\n 'verkkoviite',\r\n 'web kaynağı',\r\n 'наведена мрежна страница',\r\n 'спасылка',\r\n 'цитат уеб',\r\n 'צייגט וועב',\r\n 'بیرخستنەوەی وێب',\r\n 'حوالہ ویب',\r\n 'حوالو ويب',\r\n 'مرجع ويب',\r\n 'وب قایناقلاماسی',\r\n 'संकेतस्थळ स्रोत',\r\n 'ওয়েব উদ্ধৃতি',\r\n 'వెబ్ మూలము',\r\n 'උපන්‍යාස වෙබ්',\r\n '웹 인용',\r\n '引網'\r\n]\r\n","module.exports = [\r\n 'catcómhaoin',\r\n 'categorìa ëd commons',\r\n 'comincat',\r\n 'commons',\r\n // 'commons cat',\r\n 'commons categories',\r\n 'commons category',\r\n 'commons kategori',\r\n 'commons kategoriýa',\r\n 'commons-kategorie',\r\n 'commonscat',\r\n // 'commonscat ',\r\n 'commonsi kategooria',\r\n // 'commonskat',\r\n 'communiacat',\r\n 'katégori commons',\r\n 'kategori commons',\r\n 'kategorija v zbirki',\r\n 'thể loại commons',\r\n 'vikianbar kateqoriyası',\r\n 'vikikrātuves kategorija',\r\n 'викианбор-гурӯҳ',\r\n 'категорија на остави',\r\n 'ризница-врска',\r\n 'վիքիպահեստ կատեգորիա',\r\n 'קאמאנסקאט',\r\n 'آمبار بؤلمه',\r\n 'پۆلی کۆمنز',\r\n 'تصنيف كومنز',\r\n 'تصنيف كومونز',\r\n 'رده انبار',\r\n 'زمرہ کومنز',\r\n 'ڪومنز زمرو',\r\n 'कमन्सश्रेणी',\r\n 'कॉमन्स वर्ग',\r\n 'कॉमन्स श्रेणी',\r\n 'कॉमंस श्रेणी',\r\n 'কমন্স থাক',\r\n 'কমন্স বিষয়শ্রেণী',\r\n 'ਕਾਮਨਜ਼ ਸ਼੍ਰੇਣੀ',\r\n 'කොමන්ස්ප්‍රවර්ග',\r\n 'คอมมอนส์-หมวดหมู่',\r\n '위키공용분류',\r\n '同享類'\r\n]\r\n","module.exports = [\r\n // 'coor',\r\n 'coor dd',\r\n // 'coor dm',\r\n // 'coor dms',\r\n // 'coord',\r\n 'coordenadas',\r\n 'coordinate',\r\n 'coördinaten',\r\n 'cord',\r\n 'hnit',\r\n 'koord',\r\n 'koordinat',\r\n 'koördinate',\r\n 'kòòrdinatë',\r\n 'koordinate',\r\n 'koordinate text',\r\n 'koördinaten',\r\n 'koordinaten',\r\n 'koordynaty',\r\n 'souřadnice',\r\n 'súradnice',\r\n 'tọa độ',\r\n 'współrzędne',\r\n 'каардынаты',\r\n 'محل وقوع',\r\n 'স্থানাঙ্ক',\r\n '좌표'\r\n]\r\n","module.exports = [\r\n 'al2',\r\n 'bandeira',\r\n // 'bandera',\r\n 'bandera2',\r\n // 'bandiera',\r\n 'bayrak',\r\n 'bendera',\r\n 'bratach',\r\n 'chórgoj',\r\n 'chorhoj',\r\n 'drapel',\r\n // 'fana',\r\n 'fáni',\r\n // 'flag',\r\n 'flag2',\r\n 'flagg',\r\n 'flagga',\r\n // 'flagicon',\r\n 'flago',\r\n 'flaq',\r\n 'karogs',\r\n 'lá cờ',\r\n 'lippu',\r\n 'państwo',\r\n 'pantli2',\r\n 'payis',\r\n 'pays',\r\n 'pisilipp',\r\n 'stän',\r\n 'vexillum',\r\n 'vlag',\r\n 'wagayway',\r\n 'zastava',\r\n 'zászló2',\r\n 'zid',\r\n 'застава',\r\n 'знаме',\r\n 'парчам',\r\n 'сьцяг',\r\n 'ялав',\r\n 'დროშა',\r\n 'դրոշ',\r\n 'դրօշ',\r\n 'דגל',\r\n 'بایراق',\r\n 'پرچم',\r\n 'جهنڊو',\r\n 'جھنڈا',\r\n 'علم',\r\n 'देश झन्डा',\r\n 'पताका',\r\n 'পতাকা',\r\n 'கொடி',\r\n 'ධජය',\r\n 'ທຸງຊາດ',\r\n 'အလံ',\r\n '국기',\r\n '旗'\r\n]\r\n","module.exports = [\r\n // 'Al',\r\n 'bandera',\r\n 'bandera4',\r\n 'bandiera',\r\n 'bandièra',\r\n 'bandiere',\r\n 'bannera',\r\n 'bayraksimge',\r\n 'bayraq',\r\n 'bayroqikon',\r\n 'bendera-ikon',\r\n 'drapeau',\r\n 'drapél',\r\n 'eicon baner',\r\n 'falgicon',\r\n 'fana',\r\n 'flag icon',\r\n 'flag-ikon',\r\n 'flaga',\r\n 'flaggbild',\r\n // 'flagicon',\r\n 'flagikon',\r\n 'íconebandeira',\r\n 'ikonazastave',\r\n 'leavga',\r\n 'lippukuva',\r\n 'minivlajka',\r\n 'riigi ikoon',\r\n 'vexillum icon',\r\n 'vlagikoon',\r\n 'vlagland',\r\n 'wagaywayikono',\r\n 'zászlóikon',\r\n 'zd',\r\n 'абираҟ',\r\n 'байрак1',\r\n 'байракх',\r\n 'далбаа',\r\n 'државнознаме',\r\n 'желек',\r\n 'зас',\r\n 'икона-флаг',\r\n 'прапорець',\r\n 'сцяг',\r\n 'тук',\r\n 'тырыса',\r\n 'флаг',\r\n 'بایراقچه',\r\n 'پرچم تصویر',\r\n 'پرچمک',\r\n 'جهنڊو عڪس',\r\n 'رمز علم',\r\n 'ھێمای ئاڵا',\r\n 'ध्वजचिन्ह',\r\n 'পতাকা আইকন',\r\n 'ਝੰਡਾ ਤਸਵੀਰ',\r\n '국기그림'\r\n]\r\n","module.exports = [\r\n // 'formatnum',\r\n 'formattal',\r\n 'puntudecimal',\r\n 'szám',\r\n 'try formatnum',\r\n '형식 숫자'\r\n]\r\n","module.exports = [\r\n 'afa',\r\n // 'afi',\r\n // 'api',\r\n 'ase',\r\n 'ifa',\r\n // 'ipa',\r\n 'ipa-text',\r\n 'ipa1',\r\n 'ipa2',\r\n 'lbf',\r\n 'lfe',\r\n 'prononciation api',\r\n 'unicode',\r\n 'δφα',\r\n 'мфа',\r\n 'יפא',\r\n 'آوا',\r\n 'أصد',\r\n 'بول',\r\n 'نغا',\r\n 'अ-ध्व-लि',\r\n 'আধ্বব'\r\n]\r\n","module.exports = [\r\n // 'isbn',\r\n 'isbn2',\r\n 'آئی ایس بی این',\r\n 'ردمك',\r\n 'شابک۲',\r\n 'আইএসবিএন'\r\n]\r\n","module.exports = [\r\n 'aðalgrein',\r\n 'ana madde',\r\n 'antsipirihany',\r\n 'ap',\r\n 'article détaillé',\r\n 'article principal',\r\n 'articllo dètalyê',\r\n 'articlo principal',\r\n 'articol principal',\r\n 'articulo prencepale',\r\n 'artigo percipal',\r\n 'artigo principal',\r\n 'artiklu prinċipali',\r\n 'artitgel principal',\r\n 'bővebben',\r\n 'ĉefartikolo',\r\n 'chính',\r\n 'əsas',\r\n 'glavni',\r\n 'głowny nastawk',\r\n 'gotara bingehîn',\r\n 'hauptartikel',\r\n 'hlavný článok',\r\n 'hłowny nastawk',\r\n 'hoofartikel',\r\n 'høvuðsgrein',\r\n 'huvudartikel',\r\n 'ki',\r\n 'kryesor',\r\n // 'main',\r\n // 'main article',\r\n 'mien artikal',\r\n 'nagusia',\r\n 'nangruna',\r\n 'osobny artykuł',\r\n 'pääartikkeli',\r\n 'pagr',\r\n 'pamatraksts',\r\n 'pangunahin',\r\n 'prif',\r\n 'prinsipal',\r\n 'qq',\r\n 'torra a',\r\n 'utama',\r\n 'utdypende artikkel',\r\n 'vaata',\r\n 'váldoartihkal',\r\n 'véddi ànche',\r\n 'vedi anche',\r\n 'xóotal',\r\n 'zie hoofdartikel',\r\n 'κύριο',\r\n 'аслияб макъала',\r\n 'асноўны артыкул',\r\n 'главна',\r\n 'главьнъ',\r\n 'керттера статья',\r\n 'кол чүүл',\r\n 'основна',\r\n 'основная статья',\r\n 'үндсэн өгүүлэл',\r\n 'მთავარი',\r\n 'հիմնական հոդված',\r\n 'հիմնական յոդված',\r\n 'אנווייז צום הויפט ארטיקל',\r\n 'הפניה לערך מורחב',\r\n 'اساس',\r\n 'اصل مضمون',\r\n 'اصلی',\r\n 'بشپړه ليکنه',\r\n 'تفصيلي مضمون',\r\n 'سەرەکی',\r\n 'مفصلة',\r\n 'मुख्य',\r\n 'मुख्यः',\r\n 'মূল নিবন্ধ',\r\n 'പ്രധാനലേഖനം',\r\n 'หลัก',\r\n 'ບົດຄວາມຫຼັກ',\r\n 'ដើមចំបង',\r\n '본문',\r\n '內文'\r\n]\r\n","module.exports = [\r\n // 'atari',\r\n 'awwur',\r\n 'chủ đề',\r\n 'lango',\r\n 'link portaal',\r\n 'porched',\r\n 'portaal',\r\n 'portada',\r\n 'portail',\r\n // 'portal',\r\n 'pòrtal',\r\n 'portál',\r\n 'portal box',\r\n 'portale',\r\n 'portałe',\r\n 'portalo',\r\n 'portalpar',\r\n 'portāls',\r\n 'portály',\r\n 'portaol',\r\n 'teemasivu',\r\n 'vikisritis',\r\n 'wikiportal',\r\n 'πύλη',\r\n 'ков',\r\n 'партал',\r\n 'портал',\r\n 'პორტალი',\r\n 'պորտալ',\r\n 'קישורי פורטל',\r\n 'باب',\r\n 'بوابة',\r\n 'بوابه',\r\n 'پوْرتال',\r\n 'تانبه',\r\n 'درگاه',\r\n 'دەروازە',\r\n 'दालन',\r\n 'প্রবেশদ্বার',\r\n 'കവാടം',\r\n 'สถานีย่อย2',\r\n 'ផតថល',\r\n '포털',\r\n 'ウィキポータルリンク',\r\n '門'\r\n]\r\n","module.exports = [\r\n 'atsauces',\r\n 'çavkanî',\r\n 'çeşmeler',\r\n 'cyfeiriadau',\r\n 'daveoù',\r\n 'dustuniow',\r\n 'erreferentzia zerrenda',\r\n 'fotnoteliste',\r\n 'gáldut',\r\n 'išnašos',\r\n 'i̇stinad siyahısı',\r\n 'izvori',\r\n 'kaynakça',\r\n 'listănote',\r\n 'listaref',\r\n 'llistaref',\r\n 'manbalar',\r\n 'nūruodis',\r\n 'przëpisë',\r\n 'przipisy',\r\n 'przypisy',\r\n 'referans',\r\n 'referanser',\r\n 'rèferences',\r\n 'références',\r\n 'references',\r\n 'referéncias',\r\n 'referências',\r\n 'referencie',\r\n 'referències',\r\n 'referencoj',\r\n 'referency',\r\n 'referenzen',\r\n 'referenzi',\r\n // 'reflist ',\r\n 'refréncias',\r\n 'refspisak',\r\n 'šaltėnē',\r\n 'sklici',\r\n 'tham khảo',\r\n 'verwysings',\r\n 'viited',\r\n 'viitteet',\r\n 'παραπομπές',\r\n 'асăрхавсем',\r\n 'баянар',\r\n 'белгалдаккхар',\r\n 'билгалдахарш',\r\n 'быһаарыылар',\r\n 'валэктонъёс',\r\n 'дереккөздер',\r\n 'заалтс',\r\n 'зүүлтэ',\r\n 'извори',\r\n 'иҫкәрмәләр',\r\n 'кладѧꙃи',\r\n 'крыніцы',\r\n 'наводи',\r\n 'примечания',\r\n 'фиппаинæгтæ',\r\n 'хіужаби',\r\n 'эзоҳ',\r\n 'სქოლიოს სია',\r\n 'სქოლიოშ ერკებული',\r\n 'ծանցանկ',\r\n 'הערות שוליים',\r\n 'רעפליסטע',\r\n 'پانویس',\r\n 'حوالہ جات',\r\n 'حوالو',\r\n 'حوالے',\r\n 'سأرچئشمە',\r\n 'قایناق',\r\n 'لړسرچينې',\r\n 'مراجع',\r\n 'مصادر',\r\n 'संदर्भयादी',\r\n 'সূত্র তালিকা',\r\n 'ਹਵਾਲੇ',\r\n 'ଆଧାର',\r\n 'ආශ්‍රලැයිස්තුව',\r\n 'รายการอ้างอิง',\r\n 'បញ្ជីឯកសារយោង',\r\n '각주'\r\n]\r\n","module.exports = [\r\n 'harvnp',\r\n 'harvref',\r\n 'kdş',\r\n 'mallonga piednoto',\r\n 'odn',\r\n //'sfn',\r\n 'зноска'\r\n]\r\n","module.exports = [\r\n 'biçûk',\r\n 'küçük',\r\n 'litaskrift',\r\n 'malé',\r\n 'malgrande',\r\n 'malo',\r\n 'nhỏ',\r\n 'pequeno',\r\n 'petit',\r\n 'piccolo',\r\n // 'small',\r\n 'дробны шрыфт',\r\n 'мали',\r\n 'мало',\r\n 'փոքր',\r\n 'מוקטן',\r\n 'קליין',\r\n 'بچووک',\r\n 'صغير',\r\n 'صغیر',\r\n 'ছোট',\r\n 'ਛੋਟਾ'\r\n]\r\n","module.exports = [\r\n 'algusaeg',\r\n 'aloituspäivämäärä',\r\n 'başlangıç tarihi',\r\n 'data',\r\n 'data de início',\r\n 'data inici',\r\n 'date début',\r\n 'destpêka dem',\r\n 'fecha',\r\n 'initial release',\r\n 'početni datum',\r\n 'pradžios data',\r\n // 'start date',\r\n // 'start-date',\r\n 'start dato',\r\n 'startdato',\r\n 'startdatum',\r\n 'tanggal mulai',\r\n 'tarikh mula',\r\n 'začetni datum',\r\n 'ημερομηνία εκκίνησης',\r\n 'датум почетка',\r\n 'почетен датум',\r\n 'დაიწყე თარიღი',\r\n 'تاريخ بداية',\r\n 'تاریخ آغاز',\r\n 'ڕێکەوتی سەرەتا',\r\n 'ܣܝܩܘܡ ܫܘܪܝܐ',\r\n 'दिनांक',\r\n 'শুরুর তারিখ',\r\n 'ආරම්භක දිනය',\r\n '시작 날짜'\r\n]\r\n","module.exports = [\r\n 'persoondata', //af\r\n 'ব্যক্তিতথ্য', //as\r\n 'personendaten', //de\r\n // 'persondata', //en\r\n 'اطلاعات شخص', //fa\r\n 'פרטים ביוגרפיים', //he\r\n 'व्यक्तिगत आँकड़े', //hi\r\n '인물데이터', //ko\r\n 'persoonsgegevens', //nl\r\n 'osebni podatki', //sl\r\n 'лични подаци', //sr\r\n 'ข้อมูลบุคคล', //th\r\n 'dữ liệu nhân vật', //vi\r\n '個人資訊' //zh\r\n]\r\n","module.exports = [\r\n 'bảng phân loại',\r\n 'biotakso infokaste',\r\n 'blwch tacson',\r\n 'boks klassans',\r\n 'bosca sonraí tacsanomaíochta',\r\n 'capsa taxinomica',\r\n 'dora tewran',\r\n 'ficha de taxón',\r\n 'info/taxonomia',\r\n \"infotaula d'ésser viu\",\r\n 'kishtey fys baagh',\r\n 'kotak info taksonomi',\r\n 'puha fakafaʻahinga',\r\n 'takso kutusu',\r\n 'taksoboks',\r\n 'taksokvir',\r\n 'takson infobox',\r\n 'taksonitabel',\r\n 'taksonomia',\r\n 'taksonomiija',\r\n 'taksonomio',\r\n 'taksonomiýa',\r\n 'taksonomka',\r\n 'taksoqutu',\r\n 'tassobox',\r\n 'tassonomìa',\r\n // 'taxobox',\r\n 'taxobox öömrang',\r\n 'taxobox2',\r\n 'taxoboxe',\r\n 'taxocaixa',\r\n 'taxonomio',\r\n 'taxotaula infotaula',\r\n 'ταξινομοπλαίσιο',\r\n 'таксанамічная інфармацыя',\r\n 'таксанамія',\r\n 'таксаҥа',\r\n 'таксобокс',\r\n 'таксон',\r\n 'таксономија',\r\n 'таксономиясь',\r\n 'таксономія',\r\n 'ტაქსოდაფა',\r\n 'տաքսոտուփ',\r\n 'מיון',\r\n 'جعبه اطلاعات آرایه زیستی',\r\n 'صندوق معلومات كائن',\r\n 'जीवचौकट',\r\n 'වර්ගීකරණකොටුව',\r\n 'ตารางจำแนกพันธุ์',\r\n 'ຕາລາງຈຳແໜກພັນ',\r\n '생물 분류',\r\n '物種明細模',\r\n '生物分類表'\r\n]\r\n","let mapping = {\r\n 'birth date and age': require('./data/birth_date_and_age'),\r\n citation: require('./data/citation'),\r\n 'cite book': require('./data/cite_book'),\r\n 'cite journal': require('./data/cite_journal'),\r\n 'cite web': require('./data/cite_web'),\r\n 'commons cat': require('./data/commons_cat'),\r\n coord: require('./data/coord'),\r\n flag: require('./data/flag'),\r\n flagicon: require('./data/flagicon'),\r\n formatnum: require('./data/formatnum'),\r\n ipa: require('./data/ipa'),\r\n isbn: require('./data/isbn'),\r\n main: require('./data/main'),\r\n portal: require('./data/portal'),\r\n reflist: require('./data/reflist'),\r\n sfn: require('./data/sfn'),\r\n small: require('./data/small'),\r\n 'start date': require('./data/start_date'),\r\n persondata: require('./data/persondata'),\r\n taxobox: require('./data/taxobox')\r\n}\r\n\r\nconst plugin = function(models, templates) {\r\n Object.keys(mapping).forEach(k => {\r\n mapping[k].forEach(name => {\r\n // create template parser with alias\r\n templates[name] = function(tmpl, list) {\r\n return templates[k](tmpl, list, k)\r\n }\r\n })\r\n })\r\n}\r\nmodule.exports = plugin\r\n"],"names":["mapping","require$$0","citation","require$$1","require$$2","require$$3","require$$4","require$$5","coord","require$$6","flag","require$$7","flagicon","require$$8","formatnum","require$$9","ipa","require$$10","isbn","require$$11","main","require$$12","portal","require$$13","reflist","require$$14","sfn","require$$15","small","require$$16","require$$17","persondata","require$$18","taxobox","require$$19","plugin","models","templates","Object","keys","forEach","k","name","tmpl","list"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-i18n.js","sources":["../src/data/birth_date_and_age.js","../src/data/citation.js","../src/data/cite_book.js","../src/data/cite_journal.js","../src/data/cite_web.js","../src/data/commons_cat.js","../src/data/coord.js","../src/data/flag.js","../src/data/flagicon.js","../src/data/formatnum.js","../src/data/ipa.js","../src/data/isbn.js","../src/data/main.js","../src/data/portal.js","../src/data/reflist.js","../src/data/sfn.js","../src/data/small.js","../src/data/start_date.js","../src/data/persondata.js","../src/data/taxobox.js","../src/index.js"],"sourcesContent":["module.exports = [\n 'ålder',\n 'ani',\n 'b',\n // 'birth date',\n // 'birth date and age',\n // 'birth year and age',\n 'calcola età',\n 'dáta breithe agus aois',\n 'data de nacemento e idade',\n 'data de naissença e atge',\n 'dâta de nèssence',\n 'data naixement i edat',\n 'data nașterii și vârsta',\n 'data tat-twelid u età',\n 'date de naissance',\n 'dato og alder',\n 'dátum narodenia a vek',\n 'datum narození a věk',\n 'datum rođenja i godine',\n 'datum rojstva in starost',\n 'doğum tarihi ve yaşı',\n 'doğum tarixi və yaşı',\n 'dyddiad geni ac oedran',\n 'dzimšanas datums un vecums',\n 'életkor-élő-dátummal',\n 'fødselsdato og alder',\n 'geboortedatum en ouderdom',\n 'jaiotza data eta adina',\n 'narodniny a staroba',\n 'narodniny a starstwo',\n 'naskiĝdato kaj aĝo',\n 'ngày sinh và tuổi',\n 'petsa ti pannakaipasngay ken tawen',\n 'roja bûyînê û temen',\n 'sünniaeg ja vanus',\n 'syntymäaika ja ikä',\n 'tanggal embas lan yusa',\n 'tanggal lahir dan umur',\n 'tarikh lahir dan umur',\n 'ulloq ukiuilu',\n 'дата з віком',\n 'дата на раждане и години',\n 'дата нараджэння і ўзрост',\n 'датум рођења',\n 'нарадзіўся',\n 'райгуырд',\n 'роден на и возраст',\n 'родился',\n 'таърихи таваллуд ва син',\n 'төрсөн огноо, нас',\n 'шочмокече',\n 'დაბადების თარიღი და ასაკი',\n 'ծննդյան ամսաթիվ և տարիք',\n 'تاريخ الميلاد و العمر',\n 'تاريخ الميلاد والعمر',\n 'تاریخ پیدائش اور عمر',\n 'تاریخ تولد و سن',\n 'ڄمڻ جي تاريخ ۽ عمر',\n 'د زیږون نیټه او عمر',\n 'دوغوم تاریخی ایله یاش',\n 'ڕۆژی لەدایکبوون و تەمەن',\n 'जन्म तिथि एवं आयु',\n 'जन्म दिनांक आणि वय',\n 'জন্ম তারিখ ও বয়স',\n 'பிறப்பும் அகவையும்',\n 'උපන් දින සහ වයස',\n '출생일과 나이',\n '出世日同歲數',\n '生年月日と年齢',\n '生日搭年纪'\n]\n","module.exports = [\n 'atsauce',\n 'chú thích',\n 'cit',\n 'cita testo',\n 'citácia harvard',\n 'citat',\n 'citat3',\n // 'citation',\n 'cite',\n 'citim',\n 'cito',\n 'cytuj',\n 'erreferentzia',\n 'iomradh',\n 'kaynak',\n 'kilde',\n 'obra citada',\n 'tzita testu',\n 'viide',\n 'наведување',\n 'উদ্ধৃতি',\n 'ကိုးကားခြင်း',\n '인용'\n]\n","module.exports = [\n 'bókaheimild',\n 'book reference',\n 'chú thích sách',\n 'ċita ktieb',\n 'cita libro',\n 'cita libru',\n 'cita llibru',\n 'citace monografie',\n 'citácia knihy',\n 'citaĵo el libro',\n 'citar lhibro',\n 'citar libro',\n 'citar livro',\n 'citat carte',\n 'citaziuni di testu',\n // 'cite book',\n 'cite book.',\n 'cité un lìber',\n 'citeer boek',\n 'citiranje knjiga',\n 'cytuj książkę',\n 'cytuj ksiōnżkã',\n 'enmyslioar',\n 'girjegáldu',\n 'grāmatas atsauce',\n 'hivatkozás/könyv',\n 'iomradh leabhar',\n 'kilde bog',\n 'kilde bok',\n 'kirjaviite',\n 'kitap kaynağı',\n 'kjelde bok',\n 'lidɐraduur',\n 'literatur',\n 'literatura',\n 'navedi knjigo',\n 'ouvrage',\n 'ôvra',\n 'ref-llibre',\n 'tzita libru',\n 'кітап',\n 'наведена книга',\n 'צייגט בוך',\n 'استشهاد بكتاب',\n 'حوالہ کتاب',\n 'کیتاب قایناقلاماسی',\n 'ڪتابن مان حوالا',\n 'یادکرد',\n 'स्रोत पुस्तक',\n 'বই উদ্ধৃতি',\n '서적 인용',\n '引書'\n]\n","module.exports = [\n 'article',\n 'chú thích tạp chí',\n 'cita pubblicazione',\n 'ċita pubblikazzjoni',\n 'cita publicación',\n 'cita publicación periódica',\n 'cita publicasion',\n 'citácia periodika',\n 'citaĵo el gazeto',\n 'citar periódico',\n 'citat revistă',\n 'cite aldizkari',\n // 'cite journal',\n \"cité n'arvista\",\n 'cite paper',\n 'citeer journal',\n 'citiranje časopisa',\n 'cytuj news',\n 'cytuj pismo',\n 'dergi kaynağı',\n 'iomradh iris',\n 'lehtiviite',\n 'luaigh foilseachán',\n 'navedi revijo',\n 'publikācijas atsauce',\n 'ref-publicació',\n 'revista',\n 'tzita publicatzione',\n 'макъала',\n 'наведено списание',\n 'статья',\n 'ыстатыйа',\n 'استشهاد بدورية أكاديمية',\n 'بیرخستنەوەی گۆڤار',\n 'حوالہ رسالہ',\n 'जर्नल स्रोत',\n 'সাময়িকী উদ্ধৃতি',\n '저널 인용'\n]\n","module.exports = [\n 'chú thích web',\n 'cita web',\n 'ċita web',\n 'citace elektronické monografie',\n 'citácia elektronického dokumentu',\n 'citaĵo el la reto',\n 'citar web',\n 'citat web',\n 'cité la ragnà',\n // 'cite web',\n 'cite web öömrang',\n 'citeer web',\n 'citeweb',\n 'citiranje weba',\n 'cito web',\n 'cytuj strōnã',\n 'cytuj stronę',\n 'iomradh lìon',\n 'kilde www',\n 'lien web',\n 'ligam web',\n 'lim vouèbe',\n 'lua idirlín',\n 'navedi splet',\n 'neahttagáldu',\n 'ref-web',\n 'tīmekļa atsauce',\n 'tzita web',\n 'vefheimild',\n 'verkkoviite',\n 'web kaynağı',\n 'наведена мрежна страница',\n 'спасылка',\n 'цитат уеб',\n 'צייגט וועב',\n 'بیرخستنەوەی وێب',\n 'حوالہ ویب',\n 'حوالو ويب',\n 'مرجع ويب',\n 'وب قایناقلاماسی',\n 'संकेतस्थळ स्रोत',\n 'ওয়েব উদ্ধৃতি',\n 'వెబ్ మూలము',\n 'උපන්‍යාස වෙබ්',\n '웹 인용',\n '引網'\n]\n","module.exports = [\n 'catcómhaoin',\n 'categorìa ëd commons',\n 'comincat',\n 'commons',\n // 'commons cat',\n 'commons categories',\n 'commons category',\n 'commons kategori',\n 'commons kategoriýa',\n 'commons-kategorie',\n 'commonscat',\n // 'commonscat ',\n 'commonsi kategooria',\n // 'commonskat',\n 'communiacat',\n 'katégori commons',\n 'kategori commons',\n 'kategorija v zbirki',\n 'thể loại commons',\n 'vikianbar kateqoriyası',\n 'vikikrātuves kategorija',\n 'викианбор-гурӯҳ',\n 'категорија на остави',\n 'ризница-врска',\n 'վիքիպահեստ կատեգորիա',\n 'קאמאנסקאט',\n 'آمبار بؤلمه',\n 'پۆلی کۆمنز',\n 'تصنيف كومنز',\n 'تصنيف كومونز',\n 'رده انبار',\n 'زمرہ کومنز',\n 'ڪومنز زمرو',\n 'कमन्सश्रेणी',\n 'कॉमन्स वर्ग',\n 'कॉमन्स श्रेणी',\n 'कॉमंस श्रेणी',\n 'কমন্স থাক',\n 'কমন্স বিষয়শ্রেণী',\n 'ਕਾਮਨਜ਼ ਸ਼੍ਰੇਣੀ',\n 'කොමන්ස්ප්‍රවර්ග',\n 'คอมมอนส์-หมวดหมู่',\n '위키공용분류',\n '同享類'\n]\n","module.exports = [\n // 'coor',\n 'coor dd',\n // 'coor dm',\n // 'coor dms',\n // 'coord',\n 'coordenadas',\n 'coordinate',\n 'coördinaten',\n 'cord',\n 'hnit',\n 'koord',\n 'koordinat',\n 'koördinate',\n 'kòòrdinatë',\n 'koordinate',\n 'koordinate text',\n 'koördinaten',\n 'koordinaten',\n 'koordynaty',\n 'souřadnice',\n 'súradnice',\n 'tọa độ',\n 'współrzędne',\n 'каардынаты',\n 'محل وقوع',\n 'স্থানাঙ্ক',\n '좌표'\n]\n","module.exports = [\n 'al2',\n 'bandeira',\n // 'bandera',\n 'bandera2',\n // 'bandiera',\n 'bayrak',\n 'bendera',\n 'bratach',\n 'chórgoj',\n 'chorhoj',\n 'drapel',\n // 'fana',\n 'fáni',\n // 'flag',\n 'flag2',\n 'flagg',\n 'flagga',\n // 'flagicon',\n 'flago',\n 'flaq',\n 'karogs',\n 'lá cờ',\n 'lippu',\n 'państwo',\n 'pantli2',\n 'payis',\n 'pays',\n 'pisilipp',\n 'stän',\n 'vexillum',\n 'vlag',\n 'wagayway',\n 'zastava',\n 'zászló2',\n 'zid',\n 'застава',\n 'знаме',\n 'парчам',\n 'сьцяг',\n 'ялав',\n 'დროშა',\n 'դրոշ',\n 'դրօշ',\n 'דגל',\n 'بایراق',\n 'پرچم',\n 'جهنڊو',\n 'جھنڈا',\n 'علم',\n 'देश झन्डा',\n 'पताका',\n 'পতাকা',\n 'கொடி',\n 'ධජය',\n 'ທຸງຊາດ',\n 'အလံ',\n '국기',\n '旗'\n]\n","module.exports = [\n // 'Al',\n 'bandera',\n 'bandera4',\n 'bandiera',\n 'bandièra',\n 'bandiere',\n 'bannera',\n 'bayraksimge',\n 'bayraq',\n 'bayroqikon',\n 'bendera-ikon',\n 'drapeau',\n 'drapél',\n 'eicon baner',\n 'falgicon',\n 'fana',\n 'flag icon',\n 'flag-ikon',\n 'flaga',\n 'flaggbild',\n // 'flagicon',\n 'flagikon',\n 'íconebandeira',\n 'ikonazastave',\n 'leavga',\n 'lippukuva',\n 'minivlajka',\n 'riigi ikoon',\n 'vexillum icon',\n 'vlagikoon',\n 'vlagland',\n 'wagaywayikono',\n 'zászlóikon',\n 'zd',\n 'абираҟ',\n 'байрак1',\n 'байракх',\n 'далбаа',\n 'државнознаме',\n 'желек',\n 'зас',\n 'икона-флаг',\n 'прапорець',\n 'сцяг',\n 'тук',\n 'тырыса',\n 'флаг',\n 'بایراقچه',\n 'پرچم تصویر',\n 'پرچمک',\n 'جهنڊو عڪس',\n 'رمز علم',\n 'ھێمای ئاڵا',\n 'ध्वजचिन्ह',\n 'পতাকা আইকন',\n 'ਝੰਡਾ ਤਸਵੀਰ',\n '국기그림'\n]\n","module.exports = [\n // 'formatnum',\n 'formattal',\n 'puntudecimal',\n 'szám',\n 'try formatnum',\n '형식 숫자'\n]\n","module.exports = [\n 'afa',\n // 'afi',\n // 'api',\n 'ase',\n 'ifa',\n // 'ipa',\n 'ipa-text',\n 'ipa1',\n 'ipa2',\n 'lbf',\n 'lfe',\n 'prononciation api',\n 'unicode',\n 'δφα',\n 'мфа',\n 'יפא',\n 'آوا',\n 'أصد',\n 'بول',\n 'نغا',\n 'अ-ध्व-लि',\n 'আধ্বব'\n]\n","module.exports = [\n // 'isbn',\n 'isbn2',\n 'آئی ایس بی این',\n 'ردمك',\n 'شابک۲',\n 'আইএসবিএন'\n]\n","module.exports = [\n 'aðalgrein',\n 'ana madde',\n 'antsipirihany',\n 'ap',\n 'article détaillé',\n 'article principal',\n 'articllo dètalyê',\n 'articlo principal',\n 'articol principal',\n 'articulo prencepale',\n 'artigo percipal',\n 'artigo principal',\n 'artiklu prinċipali',\n 'artitgel principal',\n 'bővebben',\n 'ĉefartikolo',\n 'chính',\n 'əsas',\n 'glavni',\n 'głowny nastawk',\n 'gotara bingehîn',\n 'hauptartikel',\n 'hlavný článok',\n 'hłowny nastawk',\n 'hoofartikel',\n 'høvuðsgrein',\n 'huvudartikel',\n 'ki',\n 'kryesor',\n // 'main',\n // 'main article',\n 'mien artikal',\n 'nagusia',\n 'nangruna',\n 'osobny artykuł',\n 'pääartikkeli',\n 'pagr',\n 'pamatraksts',\n 'pangunahin',\n 'prif',\n 'prinsipal',\n 'qq',\n 'torra a',\n 'utama',\n 'utdypende artikkel',\n 'vaata',\n 'váldoartihkal',\n 'véddi ànche',\n 'vedi anche',\n 'xóotal',\n 'zie hoofdartikel',\n 'κύριο',\n 'аслияб макъала',\n 'асноўны артыкул',\n 'главна',\n 'главьнъ',\n 'керттера статья',\n 'кол чүүл',\n 'основна',\n 'основная статья',\n 'үндсэн өгүүлэл',\n 'მთავარი',\n 'հիմնական հոդված',\n 'հիմնական յոդված',\n 'אנווייז צום הויפט ארטיקל',\n 'הפניה לערך מורחב',\n 'اساس',\n 'اصل مضمون',\n 'اصلی',\n 'بشپړه ليکنه',\n 'تفصيلي مضمون',\n 'سەرەکی',\n 'مفصلة',\n 'मुख्य',\n 'मुख्यः',\n 'মূল নিবন্ধ',\n 'പ്രധാനലേഖനം',\n 'หลัก',\n 'ບົດຄວາມຫຼັກ',\n 'ដើមចំបង',\n '본문',\n '內文'\n]\n","module.exports = [\n // 'atari',\n 'awwur',\n 'chủ đề',\n 'lango',\n 'link portaal',\n 'porched',\n 'portaal',\n 'portada',\n 'portail',\n // 'portal',\n 'pòrtal',\n 'portál',\n 'portal box',\n 'portale',\n 'portałe',\n 'portalo',\n 'portalpar',\n 'portāls',\n 'portály',\n 'portaol',\n 'teemasivu',\n 'vikisritis',\n 'wikiportal',\n 'πύλη',\n 'ков',\n 'партал',\n 'портал',\n 'პორტალი',\n 'պորտալ',\n 'קישורי פורטל',\n 'باب',\n 'بوابة',\n 'بوابه',\n 'پوْرتال',\n 'تانبه',\n 'درگاه',\n 'دەروازە',\n 'दालन',\n 'প্রবেশদ্বার',\n 'കവാടം',\n 'สถานีย่อย2',\n 'ផតថល',\n '포털',\n 'ウィキポータルリンク',\n '門'\n]\n","module.exports = [\n 'atsauces',\n 'çavkanî',\n 'çeşmeler',\n 'cyfeiriadau',\n 'daveoù',\n 'dustuniow',\n 'erreferentzia zerrenda',\n 'fotnoteliste',\n 'gáldut',\n 'išnašos',\n 'i̇stinad siyahısı',\n 'izvori',\n 'kaynakça',\n 'listănote',\n 'listaref',\n 'llistaref',\n 'manbalar',\n 'nūruodis',\n 'przëpisë',\n 'przipisy',\n 'przypisy',\n 'referans',\n 'referanser',\n 'rèferences',\n 'références',\n 'references',\n 'referéncias',\n 'referências',\n 'referencie',\n 'referències',\n 'referencoj',\n 'referency',\n 'referenzen',\n 'referenzi',\n // 'reflist ',\n 'refréncias',\n 'refspisak',\n 'šaltėnē',\n 'sklici',\n 'tham khảo',\n 'verwysings',\n 'viited',\n 'viitteet',\n 'παραπομπές',\n 'асăрхавсем',\n 'баянар',\n 'белгалдаккхар',\n 'билгалдахарш',\n 'быһаарыылар',\n 'валэктонъёс',\n 'дереккөздер',\n 'заалтс',\n 'зүүлтэ',\n 'извори',\n 'иҫкәрмәләр',\n 'кладѧꙃи',\n 'крыніцы',\n 'наводи',\n 'примечания',\n 'фиппаинæгтæ',\n 'хіужаби',\n 'эзоҳ',\n 'სქოლიოს სია',\n 'სქოლიოშ ერკებული',\n 'ծանցանկ',\n 'הערות שוליים',\n 'רעפליסטע',\n 'پانویس',\n 'حوالہ جات',\n 'حوالو',\n 'حوالے',\n 'سأرچئشمە',\n 'قایناق',\n 'لړسرچينې',\n 'مراجع',\n 'مصادر',\n 'संदर्भयादी',\n 'সূত্র তালিকা',\n 'ਹਵਾਲੇ',\n 'ଆଧାର',\n 'ආශ්‍රලැයිස්තුව',\n 'รายการอ้างอิง',\n 'បញ្ជីឯកសារយោង',\n '각주'\n]\n","module.exports = [\n 'harvnp',\n 'harvref',\n 'kdş',\n 'mallonga piednoto',\n 'odn',\n //'sfn',\n 'зноска'\n]\n","module.exports = [\n 'biçûk',\n 'küçük',\n 'litaskrift',\n 'malé',\n 'malgrande',\n 'malo',\n 'nhỏ',\n 'pequeno',\n 'petit',\n 'piccolo',\n // 'small',\n 'дробны шрыфт',\n 'мали',\n 'мало',\n 'փոքր',\n 'מוקטן',\n 'קליין',\n 'بچووک',\n 'صغير',\n 'صغیر',\n 'ছোট',\n 'ਛੋਟਾ'\n]\n","module.exports = [\n 'algusaeg',\n 'aloituspäivämäärä',\n 'başlangıç tarihi',\n 'data',\n 'data de início',\n 'data inici',\n 'date début',\n 'destpêka dem',\n 'fecha',\n 'initial release',\n 'početni datum',\n 'pradžios data',\n // 'start date',\n // 'start-date',\n 'start dato',\n 'startdato',\n 'startdatum',\n 'tanggal mulai',\n 'tarikh mula',\n 'začetni datum',\n 'ημερομηνία εκκίνησης',\n 'датум почетка',\n 'почетен датум',\n 'დაიწყე თარიღი',\n 'تاريخ بداية',\n 'تاریخ آغاز',\n 'ڕێکەوتی سەرەتا',\n 'ܣܝܩܘܡ ܫܘܪܝܐ',\n 'दिनांक',\n 'শুরুর তারিখ',\n 'ආරම්භක දිනය',\n '시작 날짜'\n]\n","module.exports = [\n 'persoondata', //af\n 'ব্যক্তিতথ্য', //as\n 'personendaten', //de\n // 'persondata', //en\n 'اطلاعات شخص', //fa\n 'פרטים ביוגרפיים', //he\n 'व्यक्तिगत आँकड़े', //hi\n '인물데이터', //ko\n 'persoonsgegevens', //nl\n 'osebni podatki', //sl\n 'лични подаци', //sr\n 'ข้อมูลบุคคล', //th\n 'dữ liệu nhân vật', //vi\n '個人資訊' //zh\n]\n","module.exports = [\n 'bảng phân loại',\n 'biotakso infokaste',\n 'blwch tacson',\n 'boks klassans',\n 'bosca sonraí tacsanomaíochta',\n 'capsa taxinomica',\n 'dora tewran',\n 'ficha de taxón',\n 'info/taxonomia',\n \"infotaula d'ésser viu\",\n 'kishtey fys baagh',\n 'kotak info taksonomi',\n 'puha fakafaʻahinga',\n 'takso kutusu',\n 'taksoboks',\n 'taksokvir',\n 'takson infobox',\n 'taksonitabel',\n 'taksonomia',\n 'taksonomiija',\n 'taksonomio',\n 'taksonomiýa',\n 'taksonomka',\n 'taksoqutu',\n 'tassobox',\n 'tassonomìa',\n // 'taxobox',\n 'taxobox öömrang',\n 'taxobox2',\n 'taxoboxe',\n 'taxocaixa',\n 'taxonomio',\n 'taxotaula infotaula',\n 'ταξινομοπλαίσιο',\n 'таксанамічная інфармацыя',\n 'таксанамія',\n 'таксаҥа',\n 'таксобокс',\n 'таксон',\n 'таксономија',\n 'таксономиясь',\n 'таксономія',\n 'ტაქსოდაფა',\n 'տաքսոտուփ',\n 'מיון',\n 'جعبه اطلاعات آرایه زیستی',\n 'صندوق معلومات كائن',\n 'जीवचौकट',\n 'වර්ගීකරණකොටුව',\n 'ตารางจำแนกพันธุ์',\n 'ຕາລາງຈຳແໜກພັນ',\n '생물 분류',\n '物種明細模',\n '生物分類表'\n]\n","let mapping = {\n 'birth date and age': require('./data/birth_date_and_age'),\n citation: require('./data/citation'),\n 'cite book': require('./data/cite_book'),\n 'cite journal': require('./data/cite_journal'),\n 'cite web': require('./data/cite_web'),\n 'commons cat': require('./data/commons_cat'),\n coord: require('./data/coord'),\n flag: require('./data/flag'),\n flagicon: require('./data/flagicon'),\n formatnum: require('./data/formatnum'),\n ipa: require('./data/ipa'),\n isbn: require('./data/isbn'),\n main: require('./data/main'),\n portal: require('./data/portal'),\n reflist: require('./data/reflist'),\n sfn: require('./data/sfn'),\n small: require('./data/small'),\n 'start date': require('./data/start_date'),\n persondata: require('./data/persondata'),\n taxobox: require('./data/taxobox')\n}\n\nconst plugin = function (models, templates) {\n Object.keys(mapping).forEach((k) => {\n mapping[k].forEach((name) => {\n // create template parser with alias\n templates[name] = function (tmpl, list, parse) {\n return templates[k](tmpl, list, parse, k)\n }\n })\n })\n}\nmodule.exports = plugin\n"],"names":["mapping","require$$0","citation","require$$1","require$$2","require$$3","require$$4","require$$5","coord","require$$6","flag","require$$7","flagicon","require$$8","formatnum","require$$9","ipa","require$$10","isbn","require$$11","main","require$$12","portal","require$$13","reflist","require$$14","sfn","require$$15","small","require$$16","require$$17","persondata","require$$18","taxobox","require$$19","plugin","models","templates","Object","keys","forEach","k","name","tmpl","list","parse"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/i18n/builds/wtf-plugin-i18n.min.js b/plugins/i18n/builds/wtf-plugin-i18n.min.js index 4325deb3..31733871 100644 --- a/plugins/i18n/builds/wtf-plugin-i18n.min.js +++ b/plugins/i18n/builds/wtf-plugin-i18n.min.js @@ -1 +1 @@ -!function(a,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(a=a||self).wtfI18n=i()}(this,(function(){"use strict";var a={"birth date and age":["ålder","ani","b","calcola età","dáta breithe agus aois","data de nacemento e idade","data de naissença e atge","dâta de nèssence","data naixement i edat","data nașterii și vârsta","data tat-twelid u età","date de naissance","dato og alder","dátum narodenia a vek","datum narození a věk","datum rođenja i godine","datum rojstva in starost","doğum tarihi ve yaşı","doğum tarixi və yaşı","dyddiad geni ac oedran","dzimšanas datums un vecums","életkor-élő-dátummal","fødselsdato og alder","geboortedatum en ouderdom","jaiotza data eta adina","narodniny a staroba","narodniny a starstwo","naskiĝdato kaj aĝo","ngày sinh và tuổi","petsa ti pannakaipasngay ken tawen","roja bûyînê û temen","sünniaeg ja vanus","syntymäaika ja ikä","tanggal embas lan yusa","tanggal lahir dan umur","tarikh lahir dan umur","ulloq ukiuilu","дата з віком","дата на раждане и години","дата нараджэння і ўзрост","датум рођења","нарадзіўся","райгуырд","роден на и возраст","родился","таърихи таваллуд ва син","төрсөн огноо, нас","шочмокече","დაბადების თარიღი და ასაკი","ծննդյան ամսաթիվ և տարիք","تاريخ الميلاد و العمر","تاريخ الميلاد والعمر","تاریخ پیدائش اور عمر","تاریخ تولد و سن","ڄمڻ جي تاريخ ۽ عمر","د زیږون نیټه او عمر","دوغوم تاریخی ایله یاش","ڕۆژی لەدایکبوون و تەمەن","जन्म तिथि एवं आयु","जन्म दिनांक आणि वय","জন্ম তারিখ ও বয়স","பிறப்பும் அகவையும்","උපන් දින සහ වයස","출생일과 나이","出世日同歲數","生年月日と年齢","生日搭年纪"],citation:["atsauce","chú thích","cit","cita testo","citácia harvard","citat","citat3","cite","citim","cito","cytuj","erreferentzia","iomradh","kaynak","kilde","obra citada","tzita testu","viide","наведување","উদ্ধৃতি","ကိုးကားခြင်း","인용"],"cite book":["bókaheimild","book reference","chú thích sách","ċita ktieb","cita libro","cita libru","cita llibru","citace monografie","citácia knihy","citaĵo el libro","citar lhibro","citar libro","citar livro","citat carte","citaziuni di testu","cite book.","cité un lìber","citeer boek","citiranje knjiga","cytuj książkę","cytuj ksiōnżkã","enmyslioar","girjegáldu","grāmatas atsauce","hivatkozás/könyv","iomradh leabhar","kilde bog","kilde bok","kirjaviite","kitap kaynağı","kjelde bok","lidɐraduur","literatur","literatura","navedi knjigo","ouvrage","ôvra","ref-llibre","tzita libru","кітап","наведена книга","צייגט בוך","استشهاد بكتاب","حوالہ کتاب","کیتاب قایناقلاماسی","ڪتابن مان حوالا","یادکرد","स्रोत पुस्तक","বই উদ্ধৃতি","서적 인용","引書"],"cite journal":["article","chú thích tạp chí","cita pubblicazione","ċita pubblikazzjoni","cita publicación","cita publicación periódica","cita publicasion","citácia periodika","citaĵo el gazeto","citar periódico","citat revistă","cite aldizkari","cité n'arvista","cite paper","citeer journal","citiranje časopisa","cytuj news","cytuj pismo","dergi kaynağı","iomradh iris","lehtiviite","luaigh foilseachán","navedi revijo","publikācijas atsauce","ref-publicació","revista","tzita publicatzione","макъала","наведено списание","статья","ыстатыйа","استشهاد بدورية أكاديمية","بیرخستنەوەی گۆڤار","حوالہ رسالہ","जर्नल स्रोत","সাময়িকী উদ্ধৃতি","저널 인용"],"cite web":["chú thích web","cita web","ċita web","citace elektronické monografie","citácia elektronického dokumentu","citaĵo el la reto","citar web","citat web","cité la ragnà","cite web öömrang","citeer web","citeweb","citiranje weba","cito web","cytuj strōnã","cytuj stronę","iomradh lìon","kilde www","lien web","ligam web","lim vouèbe","lua idirlín","navedi splet","neahttagáldu","ref-web","tīmekļa atsauce","tzita web","vefheimild","verkkoviite","web kaynağı","наведена мрежна страница","спасылка","цитат уеб","צייגט וועב","بیرخستنەوەی وێب","حوالہ ویب","حوالو ويب","مرجع ويب","وب قایناقلاماسی","संकेतस्थळ स्रोत","ওয়েব উদ্ধৃতি","వెబ్ మూలము","උපන්‍යාස වෙබ්","웹 인용","引網"],"commons cat":["catcómhaoin","categorìa ëd commons","comincat","commons","commons categories","commons category","commons kategori","commons kategoriýa","commons-kategorie","commonscat","commonsi kategooria","communiacat","katégori commons","kategori commons","kategorija v zbirki","thể loại commons","vikianbar kateqoriyası","vikikrātuves kategorija","викианбор-гурӯҳ","категорија на остави","ризница-врска","վիքիպահեստ կատեգորիա","קאמאנסקאט","آمبار بؤلمه","پۆلی کۆمنز","تصنيف كومنز","تصنيف كومونز","رده انبار","زمرہ کومنز","ڪومنز زمرو","कमन्सश्रेणी","कॉमन्स वर्ग","कॉमन्स श्रेणी","कॉमंस श्रेणी","কমন্স থাক","কমন্স বিষয়শ্রেণী","ਕਾਮਨਜ਼ ਸ਼੍ਰੇਣੀ","කොමන්ස්ප්‍රවර්ග","คอมมอนส์-หมวดหมู่","위키공용분류","同享類"],coord:["coor dd","coordenadas","coordinate","coördinaten","cord","hnit","koord","koordinat","koördinate","kòòrdinatë","koordinate","koordinate text","koördinaten","koordinaten","koordynaty","souřadnice","súradnice","tọa độ","współrzędne","каардынаты","محل وقوع","স্থানাঙ্ক","좌표"],flag:["al2","bandeira","bandera2","bayrak","bendera","bratach","chórgoj","chorhoj","drapel","fáni","flag2","flagg","flagga","flago","flaq","karogs","lá cờ","lippu","państwo","pantli2","payis","pays","pisilipp","stän","vexillum","vlag","wagayway","zastava","zászló2","zid","застава","знаме","парчам","сьцяг","ялав","დროშა","դրոշ","դրօշ","דגל","بایراق","پرچم","جهنڊو","جھنڈا","علم","देश झन्डा","पताका","পতাকা","கொடி","ධජය","ທຸງຊາດ","အလံ","국기","旗"],flagicon:["bandera","bandera4","bandiera","bandièra","bandiere","bannera","bayraksimge","bayraq","bayroqikon","bendera-ikon","drapeau","drapél","eicon baner","falgicon","fana","flag icon","flag-ikon","flaga","flaggbild","flagikon","íconebandeira","ikonazastave","leavga","lippukuva","minivlajka","riigi ikoon","vexillum icon","vlagikoon","vlagland","wagaywayikono","zászlóikon","zd","абираҟ","байрак1","байракх","далбаа","државнознаме","желек","зас","икона-флаг","прапорець","сцяг","тук","тырыса","флаг","بایراقچه","پرچم تصویر","پرچمک","جهنڊو عڪس","رمز علم","ھێمای ئاڵا","ध्वजचिन्ह","পতাকা আইকন","ਝੰਡਾ ਤਸਵੀਰ","국기그림"],formatnum:["formattal","puntudecimal","szám","try formatnum","형식 숫자"],ipa:["afa","ase","ifa","ipa-text","ipa1","ipa2","lbf","lfe","prononciation api","unicode","δφα","мфа","יפא","آوا","أصد","بول","نغا","अ-ध्व-लि","আধ্বব"],isbn:["isbn2","آئی ایس بی این","ردمك","شابک۲","আইএসবিএন"],main:["aðalgrein","ana madde","antsipirihany","ap","article détaillé","article principal","articllo dètalyê","articlo principal","articol principal","articulo prencepale","artigo percipal","artigo principal","artiklu prinċipali","artitgel principal","bővebben","ĉefartikolo","chính","əsas","glavni","głowny nastawk","gotara bingehîn","hauptartikel","hlavný článok","hłowny nastawk","hoofartikel","høvuðsgrein","huvudartikel","ki","kryesor","mien artikal","nagusia","nangruna","osobny artykuł","pääartikkeli","pagr","pamatraksts","pangunahin","prif","prinsipal","qq","torra a","utama","utdypende artikkel","vaata","váldoartihkal","véddi ànche","vedi anche","xóotal","zie hoofdartikel","κύριο","аслияб макъала","асноўны артыкул","главна","главьнъ","керттера статья","кол чүүл","основна","основная статья","үндсэн өгүүлэл","მთავარი","հիմնական հոդված","հիմնական յոդված","אנווייז צום הויפט ארטיקל","הפניה לערך מורחב","اساس","اصل مضمون","اصلی","بشپړه ليکنه","تفصيلي مضمون","سەرەکی","مفصلة","मुख्य","मुख्यः","মূল নিবন্ধ","പ്രധാനലേഖനം","หลัก","ບົດຄວາມຫຼັກ","ដើមចំបង","본문","內文"],portal:["awwur","chủ đề","lango","link portaal","porched","portaal","portada","portail","pòrtal","portál","portal box","portale","portałe","portalo","portalpar","portāls","portály","portaol","teemasivu","vikisritis","wikiportal","πύλη","ков","партал","портал","პორტალი","պորտալ","קישורי פורטל","باب","بوابة","بوابه","پوْرتال","تانبه","درگاه","دەروازە","दालन","প্রবেশদ্বার","കവാടം","สถานีย่อย2","ផតថល","포털","ウィキポータルリンク","門"],reflist:["atsauces","çavkanî","çeşmeler","cyfeiriadau","daveoù","dustuniow","erreferentzia zerrenda","fotnoteliste","gáldut","išnašos","i̇stinad siyahısı","izvori","kaynakça","listănote","listaref","llistaref","manbalar","nūruodis","przëpisë","przipisy","przypisy","referans","referanser","rèferences","références","references","referéncias","referências","referencie","referències","referencoj","referency","referenzen","referenzi","refréncias","refspisak","šaltėnē","sklici","tham khảo","verwysings","viited","viitteet","παραπομπές","асăрхавсем","баянар","белгалдаккхар","билгалдахарш","быһаарыылар","валэктонъёс","дереккөздер","заалтс","зүүлтэ","извори","иҫкәрмәләр","кладѧꙃи","крыніцы","наводи","примечания","фиппаинæгтæ","хіужаби","эзоҳ","სქოლიოს სია","სქოლიოშ ერკებული","ծանցանկ","הערות שוליים","רעפליסטע","پانویس","حوالہ جات","حوالو","حوالے","سأرچئشمە","قایناق","لړسرچينې","مراجع","مصادر","संदर्भयादी","সূত্র তালিকা","ਹਵਾਲੇ","ଆଧାର","ආශ්‍රලැයිස්තුව","รายการอ้างอิง","បញ្ជីឯកសារយោង","각주"],sfn:["harvnp","harvref","kdş","mallonga piednoto","odn","зноска"],small:["biçûk","küçük","litaskrift","malé","malgrande","malo","nhỏ","pequeno","petit","piccolo","дробны шрыфт","мали","мало","փոքր","מוקטן","קליין","بچووک","صغير","صغیر","ছোট","ਛੋਟਾ"],"start date":["algusaeg","aloituspäivämäärä","başlangıç tarihi","data","data de início","data inici","date début","destpêka dem","fecha","initial release","početni datum","pradžios data","start dato","startdato","startdatum","tanggal mulai","tarikh mula","začetni datum","ημερομηνία εκκίνησης","датум почетка","почетен датум","დაიწყე თარიღი","تاريخ بداية","تاریخ آغاز","ڕێکەوتی سەرەتا","ܣܝܩܘܡ ܫܘܪܝܐ","दिनांक","শুরুর তারিখ","ආරම්භක දිනය","시작 날짜"],persondata:["persoondata","ব্যক্তিতথ্য","personendaten","اطلاعات شخص","פרטים ביוגרפיים","व्यक्तिगत आँकड़े","인물데이터","persoonsgegevens","osebni podatki","лични подаци","ข้อมูลบุคคล","dữ liệu nhân vật","個人資訊"],taxobox:["bảng phân loại","biotakso infokaste","blwch tacson","boks klassans","bosca sonraí tacsanomaíochta","capsa taxinomica","dora tewran","ficha de taxón","info/taxonomia","infotaula d'ésser viu","kishtey fys baagh","kotak info taksonomi","puha fakafaʻahinga","takso kutusu","taksoboks","taksokvir","takson infobox","taksonitabel","taksonomia","taksonomiija","taksonomio","taksonomiýa","taksonomka","taksoqutu","tassobox","tassonomìa","taxobox öömrang","taxobox2","taxoboxe","taxocaixa","taxonomio","taxotaula infotaula","ταξινομοπλαίσιο","таксанамічная інфармацыя","таксанамія","таксаҥа","таксобокс","таксон","таксономија","таксономиясь","таксономія","ტაქსოდაფა","տաքսոտուփ","מיון","جعبه اطلاعات آرایه زیستی","صندوق معلومات كائن","जीवचौकट","වර්ගීකරණකොටුව","ตารางจำแนกพันธุ์","ຕາລາງຈຳແໜກພັນ","생물 분류","物種明細模","生物分類表"]};return function(i,t){Object.keys(a).forEach((function(i){a[i].forEach((function(a){t[a]=function(a,e){return t[i](a,e,i)}}))}))}})); +!function(a,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(a="undefined"!=typeof globalThis?globalThis:a||self).wtfI18n=i()}(this,(function(){"use strict";let a={"birth date and age":["ålder","ani","b","calcola età","dáta breithe agus aois","data de nacemento e idade","data de naissença e atge","dâta de nèssence","data naixement i edat","data nașterii și vârsta","data tat-twelid u età","date de naissance","dato og alder","dátum narodenia a vek","datum narození a věk","datum rođenja i godine","datum rojstva in starost","doğum tarihi ve yaşı","doğum tarixi və yaşı","dyddiad geni ac oedran","dzimšanas datums un vecums","életkor-élő-dátummal","fødselsdato og alder","geboortedatum en ouderdom","jaiotza data eta adina","narodniny a staroba","narodniny a starstwo","naskiĝdato kaj aĝo","ngày sinh và tuổi","petsa ti pannakaipasngay ken tawen","roja bûyînê û temen","sünniaeg ja vanus","syntymäaika ja ikä","tanggal embas lan yusa","tanggal lahir dan umur","tarikh lahir dan umur","ulloq ukiuilu","дата з віком","дата на раждане и години","дата нараджэння і ўзрост","датум рођења","нарадзіўся","райгуырд","роден на и возраст","родился","таърихи таваллуд ва син","төрсөн огноо, нас","шочмокече","დაბადების თარიღი და ასაკი","ծննդյան ամսաթիվ և տարիք","تاريخ الميلاد و العمر","تاريخ الميلاد والعمر","تاریخ پیدائش اور عمر","تاریخ تولد و سن","ڄمڻ جي تاريخ ۽ عمر","د زیږون نیټه او عمر","دوغوم تاریخی ایله یاش","ڕۆژی لەدایکبوون و تەمەن","जन्म तिथि एवं आयु","जन्म दिनांक आणि वय","জন্ম তারিখ ও বয়স","பிறப்பும் அகவையும்","උපන් දින සහ වයස","출생일과 나이","出世日同歲數","生年月日と年齢","生日搭年纪"],citation:["atsauce","chú thích","cit","cita testo","citácia harvard","citat","citat3","cite","citim","cito","cytuj","erreferentzia","iomradh","kaynak","kilde","obra citada","tzita testu","viide","наведување","উদ্ধৃতি","ကိုးကားခြင်း","인용"],"cite book":["bókaheimild","book reference","chú thích sách","ċita ktieb","cita libro","cita libru","cita llibru","citace monografie","citácia knihy","citaĵo el libro","citar lhibro","citar libro","citar livro","citat carte","citaziuni di testu","cite book.","cité un lìber","citeer boek","citiranje knjiga","cytuj książkę","cytuj ksiōnżkã","enmyslioar","girjegáldu","grāmatas atsauce","hivatkozás/könyv","iomradh leabhar","kilde bog","kilde bok","kirjaviite","kitap kaynağı","kjelde bok","lidɐraduur","literatur","literatura","navedi knjigo","ouvrage","ôvra","ref-llibre","tzita libru","кітап","наведена книга","צייגט בוך","استشهاد بكتاب","حوالہ کتاب","کیتاب قایناقلاماسی","ڪتابن مان حوالا","یادکرد","स्रोत पुस्तक","বই উদ্ধৃতি","서적 인용","引書"],"cite journal":["article","chú thích tạp chí","cita pubblicazione","ċita pubblikazzjoni","cita publicación","cita publicación periódica","cita publicasion","citácia periodika","citaĵo el gazeto","citar periódico","citat revistă","cite aldizkari","cité n'arvista","cite paper","citeer journal","citiranje časopisa","cytuj news","cytuj pismo","dergi kaynağı","iomradh iris","lehtiviite","luaigh foilseachán","navedi revijo","publikācijas atsauce","ref-publicació","revista","tzita publicatzione","макъала","наведено списание","статья","ыстатыйа","استشهاد بدورية أكاديمية","بیرخستنەوەی گۆڤار","حوالہ رسالہ","जर्नल स्रोत","সাময়িকী উদ্ধৃতি","저널 인용"],"cite web":["chú thích web","cita web","ċita web","citace elektronické monografie","citácia elektronického dokumentu","citaĵo el la reto","citar web","citat web","cité la ragnà","cite web öömrang","citeer web","citeweb","citiranje weba","cito web","cytuj strōnã","cytuj stronę","iomradh lìon","kilde www","lien web","ligam web","lim vouèbe","lua idirlín","navedi splet","neahttagáldu","ref-web","tīmekļa atsauce","tzita web","vefheimild","verkkoviite","web kaynağı","наведена мрежна страница","спасылка","цитат уеб","צייגט וועב","بیرخستنەوەی وێب","حوالہ ویب","حوالو ويب","مرجع ويب","وب قایناقلاماسی","संकेतस्थळ स्रोत","ওয়েব উদ্ধৃতি","వెబ్ మూలము","උපන්‍යාස වෙබ්","웹 인용","引網"],"commons cat":["catcómhaoin","categorìa ëd commons","comincat","commons","commons categories","commons category","commons kategori","commons kategoriýa","commons-kategorie","commonscat","commonsi kategooria","communiacat","katégori commons","kategori commons","kategorija v zbirki","thể loại commons","vikianbar kateqoriyası","vikikrātuves kategorija","викианбор-гурӯҳ","категорија на остави","ризница-врска","վիքիպահեստ կատեգորիա","קאמאנסקאט","آمبار بؤلمه","پۆلی کۆمنز","تصنيف كومنز","تصنيف كومونز","رده انبار","زمرہ کومنز","ڪومنز زمرو","कमन्सश्रेणी","कॉमन्स वर्ग","कॉमन्स श्रेणी","कॉमंस श्रेणी","কমন্স থাক","কমন্স বিষয়শ্রেণী","ਕਾਮਨਜ਼ ਸ਼੍ਰੇਣੀ","කොමන්ස්ප්‍රවර්ග","คอมมอนส์-หมวดหมู่","위키공용분류","同享類"],coord:["coor dd","coordenadas","coordinate","coördinaten","cord","hnit","koord","koordinat","koördinate","kòòrdinatë","koordinate","koordinate text","koördinaten","koordinaten","koordynaty","souřadnice","súradnice","tọa độ","współrzędne","каардынаты","محل وقوع","স্থানাঙ্ক","좌표"],flag:["al2","bandeira","bandera2","bayrak","bendera","bratach","chórgoj","chorhoj","drapel","fáni","flag2","flagg","flagga","flago","flaq","karogs","lá cờ","lippu","państwo","pantli2","payis","pays","pisilipp","stän","vexillum","vlag","wagayway","zastava","zászló2","zid","застава","знаме","парчам","сьцяг","ялав","დროშა","դրոշ","դրօշ","דגל","بایراق","پرچم","جهنڊو","جھنڈا","علم","देश झन्डा","पताका","পতাকা","கொடி","ධජය","ທຸງຊາດ","အလံ","국기","旗"],flagicon:["bandera","bandera4","bandiera","bandièra","bandiere","bannera","bayraksimge","bayraq","bayroqikon","bendera-ikon","drapeau","drapél","eicon baner","falgicon","fana","flag icon","flag-ikon","flaga","flaggbild","flagikon","íconebandeira","ikonazastave","leavga","lippukuva","minivlajka","riigi ikoon","vexillum icon","vlagikoon","vlagland","wagaywayikono","zászlóikon","zd","абираҟ","байрак1","байракх","далбаа","државнознаме","желек","зас","икона-флаг","прапорець","сцяг","тук","тырыса","флаг","بایراقچه","پرچم تصویر","پرچمک","جهنڊو عڪس","رمز علم","ھێمای ئاڵا","ध्वजचिन्ह","পতাকা আইকন","ਝੰਡਾ ਤਸਵੀਰ","국기그림"],formatnum:["formattal","puntudecimal","szám","try formatnum","형식 숫자"],ipa:["afa","ase","ifa","ipa-text","ipa1","ipa2","lbf","lfe","prononciation api","unicode","δφα","мфа","יפא","آوا","أصد","بول","نغا","अ-ध्व-लि","আধ্বব"],isbn:["isbn2","آئی ایس بی این","ردمك","شابک۲","আইএসবিএন"],main:["aðalgrein","ana madde","antsipirihany","ap","article détaillé","article principal","articllo dètalyê","articlo principal","articol principal","articulo prencepale","artigo percipal","artigo principal","artiklu prinċipali","artitgel principal","bővebben","ĉefartikolo","chính","əsas","glavni","głowny nastawk","gotara bingehîn","hauptartikel","hlavný článok","hłowny nastawk","hoofartikel","høvuðsgrein","huvudartikel","ki","kryesor","mien artikal","nagusia","nangruna","osobny artykuł","pääartikkeli","pagr","pamatraksts","pangunahin","prif","prinsipal","qq","torra a","utama","utdypende artikkel","vaata","váldoartihkal","véddi ànche","vedi anche","xóotal","zie hoofdartikel","κύριο","аслияб макъала","асноўны артыкул","главна","главьнъ","керттера статья","кол чүүл","основна","основная статья","үндсэн өгүүлэл","მთავარი","հիմնական հոդված","հիմնական յոդված","אנווייז צום הויפט ארטיקל","הפניה לערך מורחב","اساس","اصل مضمون","اصلی","بشپړه ليکنه","تفصيلي مضمون","سەرەکی","مفصلة","मुख्य","मुख्यः","মূল নিবন্ধ","പ്രധാനലേഖനം","หลัก","ບົດຄວາມຫຼັກ","ដើមចំបង","본문","內文"],portal:["awwur","chủ đề","lango","link portaal","porched","portaal","portada","portail","pòrtal","portál","portal box","portale","portałe","portalo","portalpar","portāls","portály","portaol","teemasivu","vikisritis","wikiportal","πύλη","ков","партал","портал","პორტალი","պորտալ","קישורי פורטל","باب","بوابة","بوابه","پوْرتال","تانبه","درگاه","دەروازە","दालन","প্রবেশদ্বার","കവാടം","สถานีย่อย2","ផតថល","포털","ウィキポータルリンク","門"],reflist:["atsauces","çavkanî","çeşmeler","cyfeiriadau","daveoù","dustuniow","erreferentzia zerrenda","fotnoteliste","gáldut","išnašos","i̇stinad siyahısı","izvori","kaynakça","listănote","listaref","llistaref","manbalar","nūruodis","przëpisë","przipisy","przypisy","referans","referanser","rèferences","références","references","referéncias","referências","referencie","referències","referencoj","referency","referenzen","referenzi","refréncias","refspisak","šaltėnē","sklici","tham khảo","verwysings","viited","viitteet","παραπομπές","асăрхавсем","баянар","белгалдаккхар","билгалдахарш","быһаарыылар","валэктонъёс","дереккөздер","заалтс","зүүлтэ","извори","иҫкәрмәләр","кладѧꙃи","крыніцы","наводи","примечания","фиппаинæгтæ","хіужаби","эзоҳ","სქოლიოს სია","სქოლიოშ ერკებული","ծանցանկ","הערות שוליים","רעפליסטע","پانویس","حوالہ جات","حوالو","حوالے","سأرچئشمە","قایناق","لړسرچينې","مراجع","مصادر","संदर्भयादी","সূত্র তালিকা","ਹਵਾਲੇ","ଆଧାର","ආශ්‍රලැයිස්තුව","รายการอ้างอิง","បញ្ជីឯកសារយោង","각주"],sfn:["harvnp","harvref","kdş","mallonga piednoto","odn","зноска"],small:["biçûk","küçük","litaskrift","malé","malgrande","malo","nhỏ","pequeno","petit","piccolo","дробны шрыфт","мали","мало","փոքր","מוקטן","קליין","بچووک","صغير","صغیر","ছোট","ਛੋਟਾ"],"start date":["algusaeg","aloituspäivämäärä","başlangıç tarihi","data","data de início","data inici","date début","destpêka dem","fecha","initial release","početni datum","pradžios data","start dato","startdato","startdatum","tanggal mulai","tarikh mula","začetni datum","ημερομηνία εκκίνησης","датум почетка","почетен датум","დაიწყე თარიღი","تاريخ بداية","تاریخ آغاز","ڕێکەوتی سەرەتا","ܣܝܩܘܡ ܫܘܪܝܐ","दिनांक","শুরুর তারিখ","ආරම්භක දිනය","시작 날짜"],persondata:["persoondata","ব্যক্তিতথ্য","personendaten","اطلاعات شخص","פרטים ביוגרפיים","व्यक्तिगत आँकड़े","인물데이터","persoonsgegevens","osebni podatki","лични подаци","ข้อมูลบุคคล","dữ liệu nhân vật","個人資訊"],taxobox:["bảng phân loại","biotakso infokaste","blwch tacson","boks klassans","bosca sonraí tacsanomaíochta","capsa taxinomica","dora tewran","ficha de taxón","info/taxonomia","infotaula d'ésser viu","kishtey fys baagh","kotak info taksonomi","puha fakafaʻahinga","takso kutusu","taksoboks","taksokvir","takson infobox","taksonitabel","taksonomia","taksonomiija","taksonomio","taksonomiýa","taksonomka","taksoqutu","tassobox","tassonomìa","taxobox öömrang","taxobox2","taxoboxe","taxocaixa","taxonomio","taxotaula infotaula","ταξινομοπλαίσιο","таксанамічная інфармацыя","таксанамія","таксаҥа","таксобокс","таксон","таксономија","таксономиясь","таксономія","ტაქსოდაფა","տաքսոտուփ","מיון","جعبه اطلاعات آرایه زیستی","صندوق معلومات كائن","जीवचौकट","වර්ගීකරණකොටුව","ตารางจำแนกพันธุ์","ຕາລາງຈຳແໜກພັນ","생물 분류","物種明細模","生物分類表"]};return function(i,t){Object.keys(a).forEach((i=>{a[i].forEach((a=>{t[a]=function(a,e,o){return t[i](a,e,o,i)}}))}))}})); diff --git a/plugins/i18n/builds/wtf-plugin-i18n.mjs b/plugins/i18n/builds/wtf-plugin-i18n.mjs index 4f01673d..e1837553 100644 --- a/plugins/i18n/builds/wtf-plugin-i18n.mjs +++ b/plugins/i18n/builds/wtf-plugin-i18n.mjs @@ -89,7 +89,7 @@ var persondata = ['persoondata', //af var taxobox = ['bảng phân loại', 'biotakso infokaste', 'blwch tacson', 'boks klassans', 'bosca sonraí tacsanomaíochta', 'capsa taxinomica', 'dora tewran', 'ficha de taxón', 'info/taxonomia', "infotaula d'ésser viu", 'kishtey fys baagh', 'kotak info taksonomi', 'puha fakafaʻahinga', 'takso kutusu', 'taksoboks', 'taksokvir', 'takson infobox', 'taksonitabel', 'taksonomia', 'taksonomiija', 'taksonomio', 'taksonomiýa', 'taksonomka', 'taksoqutu', 'tassobox', 'tassonomìa', // 'taxobox', 'taxobox öömrang', 'taxobox2', 'taxoboxe', 'taxocaixa', 'taxonomio', 'taxotaula infotaula', 'ταξινομοπλαίσιο', 'таксанамічная інфармацыя', 'таксанамія', 'таксаҥа', 'таксобокс', 'таксон', 'таксономија', 'таксономиясь', 'таксономія', 'ტაქსოდაფა', 'տաքսոտուփ', 'מיון', 'جعبه اطلاعات آرایه زیستی', 'صندوق معلومات كائن', 'जीवचौकट', 'වර්ගීකරණකොටුව', 'ตารางจำแนกพันธุ์', 'ຕາລາງຈຳແໜກພັນ', '생물 분류', '物種明細模', '生物分類表']; -var mapping = { +let mapping = { 'birth date and age': birth_date_and_age, citation: citation, 'cite book': cite_book, @@ -112,12 +112,12 @@ var mapping = { taxobox: taxobox }; -var plugin = function plugin(models, templates) { - Object.keys(mapping).forEach(function (k) { - mapping[k].forEach(function (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) { - return templates[k](tmpl, list, k); + templates[name] = function (tmpl, list, parse) { + return templates[k](tmpl, list, parse, k); }; }); }); diff --git a/plugins/i18n/package-lock.json b/plugins/i18n/package-lock.json index c253ac45..2136c61e 100644 --- a/plugins/i18n/package-lock.json +++ b/plugins/i18n/package-lock.json @@ -1,394 +1,3413 @@ { "name": "wtf-plugin-i18n", "version": "0.1.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-i18n", + "version": "0.1.0", + "license": "MIT", + "devDependencies": { + "@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", + "rollup-plugin-json": "4.0.0", + "rollup-plugin-node-resolve": "5.2.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "12.12.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.31.tgz", + "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "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": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" } }, "@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.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.9.0", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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.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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "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.9.0", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "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.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.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.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.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@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.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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@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.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.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.8.3", - "@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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -400,6 +3419,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3437,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 +3455,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 +3474,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 +3510,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,50 +3921,49 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" + "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" } }, @@ -937,15 +3997,60 @@ "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" } }, + "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", @@ -963,15 +4068,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "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.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -992,10 +4098,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { @@ -1024,6 +4140,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1046,12 +4168,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.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.8.3", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1070,26 +4192,43 @@ "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { + "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.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.4", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "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" + }, + "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 +4256,57 @@ } }, "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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 +4320,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 +4344,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 +4353,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 +4366,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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 }, @@ -1208,11 +4379,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.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", + "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", @@ -1242,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", @@ -1249,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": { @@ -1270,39 +4458,75 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "is-bigint": { + "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.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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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 +4537,27 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, + "is-set": { + "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": { + "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 +4567,31 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 +4599,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,53 +4639,25 @@ "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==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "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" - } + "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": { "version": "0.25.7", @@ -1455,36 +4696,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "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.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.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "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.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -1494,15 +4724,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 +4744,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 +4756,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 +4793,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,35 +4808,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +4847,15 @@ } }, "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": { - "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" @@ -1695,12 +4888,12 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "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": { @@ -1755,16 +4948,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": { @@ -1783,16 +4975,30 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { "version": "0.5.7", @@ -1833,66 +5039,44 @@ "through": "2" } }, - "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" - } - }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "safe-buffer": "~5.1.0" } }, - "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==", + "string.prototype.trim": { + "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.17.5", - "string.prototype.trimstart": "^1.0.0" + "es-abstract": "^1.18.0-next.2" } }, - "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==", + "string.prototype.trimend": { + "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.17.5", - "string.prototype.trimend": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "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==", + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -1905,13 +5089,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 +5162,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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.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 } } @@ -1986,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", @@ -2020,11 +5281,57 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "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.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": { + "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.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", + "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" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/i18n/package.json b/plugins/i18n/package.json index 6106c47c..a0a91612 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", @@ -23,22 +27,21 @@ "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", + "@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", "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.2.2" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/i18n/scratch.js b/plugins/i18n/scratch.js new file mode 100644 index 00000000..a53c4a45 --- /dev/null +++ b/plugins/i18n/scratch.js @@ -0,0 +1,7 @@ +const wtf = require('../../src') +const i18n = require('./src') +wtf.extend(i18n) + +// wtf.fetch('Toronto').then((doc) => { +// console.log(doc.classify().details) +// }) diff --git a/plugins/i18n/src/index.js b/plugins/i18n/src/index.js index b55c04a1..62ebcde5 100644 --- a/plugins/i18n/src/index.js +++ b/plugins/i18n/src/index.js @@ -21,12 +21,12 @@ 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) { - return templates[k](tmpl, list, k) + templates[name] = function (tmpl, list, parse) { + return templates[k](tmpl, list, parse, k) } }) }) diff --git a/plugins/i18n/tests/misc.test.js b/plugins/i18n/tests/misc.test.js index 821f9d89..6514f86b 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,16 +9,16 @@ 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() + let templates = doc.templates().map((tmpl) => tmpl.json()) t.equal(templates.length, 1, 'one templates') t.equal(doc.text(), ``, 'main text') 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,17 +28,17 @@ 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() + 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') 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/image/README.md b/plugins/image/README.md index d21455ae..e8847357 100644 --- a/plugins/image/README.md +++ b/plugins/image/README.md @@ -9,8 +9,8 @@ - - + +
@@ -25,7 +25,7 @@ Some additional methods for using and rendering images in wtf_wikipedia const wtf = require('wtf_wikipedia') wtf.extend(require('wtf-plugin-markdown')) -wtf.fetch('casa', 'it', { wiki: `wiktionary` }).then(async function(doc) { +wtf.fetch('casa', { lang:'it', wiki: `wiktionary` }).then(async function(doc) { let image = doc.images(0) // make a {method: 'HEAD'} request to test the image is there @@ -34,12 +34,25 @@ wtf.fetch('casa', 'it', { wiki: `wiktionary` }).then(async function(doc) { //instead of using the redirect api, generate a direct img url let url = image.commonsURL() //https://upload.wikimedia.org/wikipedia/commons/4/4e/RybnoeDistrict_06-13_Konstantinovo_village_05.jpg + + let img = doc.mainImage() + // }) ``` +plugin also has a method for choosing a good, or representative image for this page, if it exists: +```js +// choose a good image for this article +let doc = await wtf.fetch('Toronto') +let img = doc.mainImage() +console.log(img.src()) +// https://wikipedia.org/wiki/Special:Redirect/file/Toronto_Flag.svg +``` + ### API - **image.exists()** - double-check that the image is on the server - **image.commonsURL()** - instead of the wikimedia redirect server, generate a url for the commons server. +- **image.mainImage()** - get only an image that should represent this topic, as a thumbnail. MIT diff --git a/plugins/image/builds/wtf-plugin-image.js b/plugins/image/builds/wtf-plugin-image.js index 2e42d759..03fbf17f 100644 --- a/plugins/image/builds/wtf-plugin-image.js +++ b/plugins/image/builds/wtf-plugin-image.js @@ -1,1891 +1,1892 @@ -/* 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) : - (global = global || self, global.wtfImage = factory(global.https)); + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('https')) : + typeof define === 'function' && define.amd ? define(['https'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfImage = factory(global.https)); }(this, (function (https) { 'use strict'; - https = https && Object.prototype.hasOwnProperty.call(https, 'default') ? https['default'] : https; - - function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; - } - - var hashes = createCommonjsModule(function (module, exports) { - /** - * jshashes - https://github.com/h2non/jshashes - * Released under the "New BSD" license - * - * Algorithms specification: - * - * MD5 - http://www.ietf.org/rfc/rfc1321.txt - * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html - * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * HMAC - http://www.ietf.org/rfc/rfc2104.txt - */ - (function () { - var Hashes; - - function utf8Encode(str) { - var x, - y, - output = '', - i = -1, - l; - - if (str && str.length) { - l = str.length; - - while ((i += 1) < l) { - /* Decode utf-16 surrogate pairs */ - x = str.charCodeAt(i); - y = i + 1 < l ? str.charCodeAt(i + 1) : 0; - - if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) { - x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); - i += 1; - } - /* Encode output as utf-8 */ - - - if (x <= 0x7F) { - output += String.fromCharCode(x); - } else if (x <= 0x7FF) { - output += String.fromCharCode(0xC0 | x >>> 6 & 0x1F, 0x80 | x & 0x3F); - } else if (x <= 0xFFFF) { - output += String.fromCharCode(0xE0 | x >>> 12 & 0x0F, 0x80 | x >>> 6 & 0x3F, 0x80 | x & 0x3F); - } else if (x <= 0x1FFFFF) { - output += String.fromCharCode(0xF0 | x >>> 18 & 0x07, 0x80 | x >>> 12 & 0x3F, 0x80 | x >>> 6 & 0x3F, 0x80 | x & 0x3F); - } - } - } - - return output; - } - - function utf8Decode(str) { - var i, - ac, - c1, - c2, - c3, - arr = [], - l; - i = ac = c1 = c2 = c3 = 0; - - if (str && str.length) { - l = str.length; - str += ''; - - while (i < l) { - c1 = str.charCodeAt(i); - ac += 1; - - if (c1 < 128) { - arr[ac] = String.fromCharCode(c1); - i += 1; - } else if (c1 > 191 && c1 < 224) { - c2 = str.charCodeAt(i + 1); - arr[ac] = String.fromCharCode((c1 & 31) << 6 | c2 & 63); - i += 2; - } else { - c2 = str.charCodeAt(i + 1); - c3 = str.charCodeAt(i + 2); - arr[ac] = String.fromCharCode((c1 & 15) << 12 | (c2 & 63) << 6 | c3 & 63); - i += 3; - } - } - } - - return arr.join(''); - } - /** - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ - - - function safe_add(x, y) { - var lsw = (x & 0xFFFF) + (y & 0xFFFF), - msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return msw << 16 | lsw & 0xFFFF; - } - /** - * Bitwise rotate a 32-bit number to the left. - */ - - - function bit_rol(num, cnt) { - return num << cnt | num >>> 32 - cnt; - } - /** - * Convert a raw string to a hex string - */ - - - function rstr2hex(input, hexcase) { - var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef', - output = '', - x, - i = 0, - l = input.length; - - for (; i < l; i += 1) { - x = input.charCodeAt(i); - output += hex_tab.charAt(x >>> 4 & 0x0F) + hex_tab.charAt(x & 0x0F); - } - - return output; - } - /** - * Convert an array of big-endian words to a string - */ - - - function binb2rstr(input) { - var i, - l = input.length * 32, - output = ''; - - for (i = 0; i < l; i += 8) { - output += String.fromCharCode(input[i >> 5] >>> 24 - i % 32 & 0xFF); - } - - return output; - } - /** - * Convert an array of little-endian words to a string - */ - - - function binl2rstr(input) { - var i, - l = input.length * 32, - output = ''; - - for (i = 0; i < l; i += 8) { - output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xFF); - } - - return output; - } - /** - * Convert a raw string to an array of little-endian words - * Characters >255 have their high-byte silently ignored. - */ - - - function rstr2binl(input) { - var i, - l = input.length * 8, - output = Array(input.length >> 2), - lo = output.length; - - for (i = 0; i < lo; i += 1) { - output[i] = 0; - } - - for (i = 0; i < l; i += 8) { - output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << i % 32; - } - - return output; - } - /** - * Convert a raw string to an array of big-endian words - * Characters >255 have their high-byte silently ignored. - */ - - - function rstr2binb(input) { - var i, - l = input.length * 8, - output = Array(input.length >> 2), - lo = output.length; - - for (i = 0; i < lo; i += 1) { - output[i] = 0; - } - - for (i = 0; i < l; i += 8) { - output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << 24 - i % 32; - } - - return output; - } - /** - * Convert a raw string to an arbitrary string encoding - */ - - - function rstr2any(input, encoding) { - var divisor = encoding.length, - remainders = Array(), - i, - q, - x, - ld, - quotient, - dividend, - output, - full_length; - /* Convert to an array of 16-bit big-endian values, forming the dividend */ - - dividend = Array(Math.ceil(input.length / 2)); - ld = dividend.length; - - for (i = 0; i < ld; i += 1) { - dividend[i] = input.charCodeAt(i * 2) << 8 | input.charCodeAt(i * 2 + 1); - } - /** - * Repeatedly perform a long division. The binary array forms the dividend, - * the length of the encoding is the divisor. Once computed, the quotient - * forms the dividend for the next step. We stop when the dividend is zerHashes. - * All remainders are stored for later use. - */ - - - while (dividend.length > 0) { - quotient = Array(); - x = 0; - - for (i = 0; i < dividend.length; i += 1) { - x = (x << 16) + dividend[i]; - q = Math.floor(x / divisor); - x -= q * divisor; - - if (quotient.length > 0 || q > 0) { - quotient[quotient.length] = q; - } - } - - remainders[remainders.length] = x; - dividend = quotient; - } - /* Convert the remainders to the output string */ - - - output = ''; - - for (i = remainders.length - 1; i >= 0; i--) { - output += encoding.charAt(remainders[i]); - } - /* Append leading zero equivalents */ - - - full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2))); - - for (i = output.length; i < full_length; i += 1) { - output = encoding[0] + output; - } - - return output; - } - /** - * Convert a raw string to a base-64 string - */ - - - function rstr2b64(input, b64pad) { - var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', - output = '', - len = input.length, - i, - j, - triplet; - b64pad = b64pad || '='; - - for (i = 0; i < len; i += 3) { - triplet = input.charCodeAt(i) << 16 | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0); - - for (j = 0; j < 4; j += 1) { - if (i * 8 + j * 6 > input.length * 8) { - output += b64pad; - } else { - output += tab.charAt(triplet >>> 6 * (3 - j) & 0x3F); - } - } - } - - return output; - } - - Hashes = { - /** - * @property {String} version - * @readonly - */ - VERSION: '1.0.6', - - /** - * @member Hashes - * @class Base64 - * @constructor - */ - Base64: function Base64() { - // private properties - var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', - pad = '=', - // URL encoding support @todo - utf8 = true; // by default enable UTF-8 support encoding - // public method for encoding - - this.encode = function (input) { - var i, - j, - triplet, - output = '', - len = input.length; - pad = pad || '='; - input = utf8 ? utf8Encode(input) : input; - - for (i = 0; i < len; i += 3) { - triplet = input.charCodeAt(i) << 16 | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0); - - for (j = 0; j < 4; j += 1) { - if (i * 8 + j * 6 > len * 8) { - output += pad; - } else { - output += tab.charAt(triplet >>> 6 * (3 - j) & 0x3F); - } - } - } - - return output; - }; // public method for decoding - - - this.decode = function (input) { - // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - var i, - o1, - o2, - o3, - h1, - h2, - h3, - h4, - bits, - ac, - dec = '', - arr = []; - - if (!input) { - return input; - } - - i = ac = 0; - input = input.replace(new RegExp('\\' + pad, 'gi'), ''); // use '=' - //input += ''; - - do { - // unpack four hexets into three octets using index points in b64 - h1 = tab.indexOf(input.charAt(i += 1)); - h2 = tab.indexOf(input.charAt(i += 1)); - h3 = tab.indexOf(input.charAt(i += 1)); - h4 = tab.indexOf(input.charAt(i += 1)); - bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; - o1 = bits >> 16 & 0xff; - o2 = bits >> 8 & 0xff; - o3 = bits & 0xff; - ac += 1; - - if (h3 === 64) { - arr[ac] = String.fromCharCode(o1); - } else if (h4 === 64) { - arr[ac] = String.fromCharCode(o1, o2); - } else { - arr[ac] = String.fromCharCode(o1, o2, o3); - } - } while (i < input.length); - - dec = arr.join(''); - dec = utf8 ? utf8Decode(dec) : dec; - return dec; - }; // set custom pad string - - - this.setPad = function (str) { - pad = str || pad; - return this; - }; // set custom tab string characters - - - this.setTab = function (str) { - tab = str || tab; - return this; - }; - - this.setUTF8 = function (bool) { - if (typeof bool === 'boolean') { - utf8 = bool; - } - - return this; - }; - }, - - /** - * CRC-32 calculation - * @member Hashes - * @method CRC32 - * @static - * @param {String} str Input String - * @return {String} - */ - CRC32: function CRC32(str) { - var crc = 0, - x = 0, - y = 0, - table, - i, - iTop; - str = utf8Encode(str); - table = ['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(''); - crc = crc ^ -1; - - for (i = 0, iTop = str.length; i < iTop; i += 1) { - y = (crc ^ str.charCodeAt(i)) & 0xFF; - x = '0x' + table.substr(y * 9, 8); - crc = crc >>> 8 ^ x; - } // always return a positive number (that's what >>> 0 does) - - - return (crc ^ -1) >>> 0; - }, - - /** - * @member Hashes - * @class MD5 - * @constructor - * @param {Object} [config] - * - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See for more infHashes. - */ - MD5: function MD5(options) { - /** - * Private config properties. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase} - */ - var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, - // hexadecimal output case format. false - lowercase; true - uppercase - b64pad = options && typeof options.pad === 'string' ? options.pad : '=', - // base-64 pad character. Defaults to '=' for strict RFC compliance - utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true; // enable/disable utf8 encoding - // privileged (public) methods - - this.hex = function (s) { - return rstr2hex(rstr(s), hexcase); - }; - - this.b64 = function (s) { - return rstr2b64(rstr(s), b64pad); - }; - - this.any = function (s, e) { - return rstr2any(rstr(s), e); - }; - - this.raw = function (s) { - return rstr(s); - }; - - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d), hexcase); - }; - - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - */ - - - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * Enable/disable uppercase hexadecimal returned string - * @param {Boolean} - * @return {Object} this - */ - - - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - - return this; - }; - /** - * Defines a base64 pad string - * @param {String} Pad - * @return {Object} this - */ - - - this.setPad = function (a) { - b64pad = a || b64pad; - return this; - }; - /** - * Defines a base64 pad string - * @param {Boolean} - * @return {Object} [this] - */ - - - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - - return this; - }; // private methods - - /** - * Calculate the MD5 of a raw string - */ - - - function rstr(s) { - s = utf8 ? utf8Encode(s) : s; - return binl2rstr(binl(rstr2binl(s), s.length * 8)); - } - /** - * Calculate the HMAC-MD5, of a key and some data (raw strings) - */ - - - function rstr_hmac(key, data) { - var bkey, ipad, opad, hash, i; - key = utf8 ? utf8Encode(key) : key; - data = utf8 ? utf8Encode(data) : data; - bkey = rstr2binl(key); - - if (bkey.length > 16) { - bkey = binl(bkey, key.length * 8); - } - - ipad = Array(16), opad = Array(16); - - for (i = 0; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8); - return binl2rstr(binl(opad.concat(hash), 512 + 128)); - } - /** - * Calculate the MD5 of an array of little-endian words, and a bit length. - */ - - - function binl(x, len) { - var i, - olda, - oldb, - oldc, - oldd, - a = 1732584193, - b = -271733879, - c = -1732584194, - d = 271733878; - /* append padding */ - - x[len >> 5] |= 0x80 << len % 32; - x[(len + 64 >>> 9 << 4) + 14] = len; - - for (i = 0; i < x.length; i += 16) { - olda = a; - oldb = b; - oldc = c; - oldd = d; - a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936); - d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586); - c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819); - b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330); - a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897); - d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426); - c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341); - b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983); - a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416); - d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417); - c = md5_ff(c, d, a, b, x[i + 10], 17, -42063); - b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162); - a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682); - d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101); - c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290); - b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329); - a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510); - d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632); - c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713); - b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302); - a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691); - d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083); - c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335); - b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848); - a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438); - d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690); - c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961); - b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501); - a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467); - d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784); - c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473); - b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734); - a = md5_hh(a, b, c, d, x[i + 5], 4, -378558); - d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463); - c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562); - b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556); - a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060); - d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353); - c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632); - b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640); - a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174); - d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222); - c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979); - b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189); - a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487); - d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835); - c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520); - b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651); - a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844); - d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415); - c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905); - b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055); - a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571); - d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606); - c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523); - b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799); - a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359); - d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744); - c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380); - b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649); - a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070); - d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379); - c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259); - b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551); - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - } - - return Array(a, b, c, d); - } - /** - * These functions implement the four basic operations the algorithm uses. - */ - - - function md5_cmn(q, a, b, x, s, t) { - return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); - } - - function md5_ff(a, b, c, d, x, s, t) { - return md5_cmn(b & c | ~b & d, a, b, x, s, t); - } - - function md5_gg(a, b, c, d, x, s, t) { - return md5_cmn(b & d | c & ~d, a, b, x, s, t); - } - - function md5_hh(a, b, c, d, x, s, t) { - return md5_cmn(b ^ c ^ d, a, b, x, s, t); - } - - function md5_ii(a, b, c, d, x, s, t) { - return md5_cmn(c ^ (b | ~d), a, b, x, s, t); - } - }, - - /** - * @member Hashes - * @class Hashes.SHA1 - * @param {Object} [config] - * @constructor - * - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1 - * Version 2.2 Copyright Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See http://pajhome.org.uk/crypt/md5 for details. - */ - SHA1: function SHA1(options) { - /** - * Private config properties. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase} - */ - var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, - // hexadecimal output case format. false - lowercase; true - uppercase - b64pad = options && typeof options.pad === 'string' ? options.pad : '=', - // base-64 pad character. Defaults to '=' for strict RFC compliance - utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true; // enable/disable utf8 encoding - // public methods - - this.hex = function (s) { - return rstr2hex(rstr(s), hexcase); - }; - - this.b64 = function (s) { - return rstr2b64(rstr(s), b64pad); - }; - - this.any = function (s, e) { - return rstr2any(rstr(s), e); - }; - - this.raw = function (s) { - return rstr(s); - }; - - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d)); - }; - - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - * @public - */ - - - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * @description Enable/disable uppercase hexadecimal returned string - * @param {boolean} - * @return {Object} this - * @public - */ - - - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - - return this; - }; - /** - * @description Defines a base64 pad string - * @param {string} Pad - * @return {Object} this - * @public - */ - - - this.setPad = function (a) { - b64pad = a || b64pad; - return this; - }; - /** - * @description Defines a base64 pad string - * @param {boolean} - * @return {Object} this - * @public - */ - - - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - - return this; - }; // private methods - - /** - * Calculate the SHA-512 of a raw string - */ - - - function rstr(s) { - s = utf8 ? utf8Encode(s) : s; - return binb2rstr(binb(rstr2binb(s), s.length * 8)); - } - /** - * Calculate the HMAC-SHA1 of a key and some data (raw strings) - */ - - - function rstr_hmac(key, data) { - var bkey, ipad, opad, i, hash; - key = utf8 ? utf8Encode(key) : key; - data = utf8 ? utf8Encode(data) : data; - bkey = rstr2binb(key); - - if (bkey.length > 16) { - bkey = binb(bkey, key.length * 8); - } - - ipad = Array(16), opad = Array(16); - - for (i = 0; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8); - return binb2rstr(binb(opad.concat(hash), 512 + 160)); - } - /** - * Calculate the SHA-1 of an array of big-endian words, and a bit length - */ - - - function binb(x, len) { - var i, - j, - t, - olda, - oldb, - oldc, - oldd, - olde, - w = Array(80), - a = 1732584193, - b = -271733879, - c = -1732584194, - d = 271733878, - e = -1009589776; - /* append padding */ - - x[len >> 5] |= 0x80 << 24 - len % 32; - x[(len + 64 >> 9 << 4) + 15] = len; - - for (i = 0; i < x.length; i += 16) { - olda = a; - oldb = b; - oldc = c; - oldd = d; - olde = e; - - for (j = 0; j < 80; j += 1) { - if (j < 16) { - w[j] = x[i + j]; - } else { - w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); - } - - t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j))); - e = d; - d = c; - c = bit_rol(b, 30); - b = a; - a = t; - } - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - e = safe_add(e, olde); - } - - return Array(a, b, c, d, e); - } - /** - * Perform the appropriate triplet combination function for the current - * iteration - */ - - - function sha1_ft(t, b, c, d) { - if (t < 20) { - return b & c | ~b & d; - } - - if (t < 40) { - return b ^ c ^ d; - } - - if (t < 60) { - return b & c | b & d | c & d; - } - - return b ^ c ^ d; - } - /** - * Determine the appropriate additive constant for the current iteration - */ - - - function sha1_kt(t) { - return t < 20 ? 1518500249 : t < 40 ? 1859775393 : t < 60 ? -1894007588 : -899497514; - } - }, - - /** - * @class Hashes.SHA256 - * @param {config} - * - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2 - * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See http://pajhome.org.uk/crypt/md5 for details. - * Also http://anmar.eu.org/projects/jssha2/ - */ - SHA256: function SHA256(options) { - /** - * Private properties configuration variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * @see this.setUpperCase() method - * @see this.setPad() method - */ - var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, - // hexadecimal output case format. false - lowercase; true - uppercase */ - b64pad = options && typeof options.pad === 'string' ? options.pad : '=', - - /* base-64 pad character. Default '=' for strict RFC compliance */ - utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true, - - /* enable/disable utf8 encoding */ - sha256_K; - /* privileged (public) methods */ - - this.hex = function (s) { - return rstr2hex(rstr(s, utf8)); - }; - - this.b64 = function (s) { - return rstr2b64(rstr(s, utf8), b64pad); - }; - - this.any = function (s, e) { - return rstr2any(rstr(s, utf8), e); - }; - - this.raw = function (s) { - return rstr(s, utf8); - }; - - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d)); - }; - - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - * @public - */ - - - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * Enable/disable uppercase hexadecimal returned string - * @param {boolean} - * @return {Object} this - * @public - */ - - - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - - return this; - }; - /** - * @description Defines a base64 pad string - * @param {string} Pad - * @return {Object} this - * @public - */ - - - this.setPad = function (a) { - b64pad = a || b64pad; - return this; - }; - /** - * Defines a base64 pad string - * @param {boolean} - * @return {Object} this - * @public - */ - - - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - - return this; - }; // private methods - - /** - * Calculate the SHA-512 of a raw string - */ - - - function rstr(s, utf8) { - s = utf8 ? utf8Encode(s) : s; - return binb2rstr(binb(rstr2binb(s), s.length * 8)); - } - /** - * Calculate the HMAC-sha256 of a key and some data (raw strings) - */ - - - function rstr_hmac(key, data) { - key = utf8 ? utf8Encode(key) : key; - data = utf8 ? utf8Encode(data) : data; - var hash, - i = 0, - bkey = rstr2binb(key), - ipad = Array(16), - opad = Array(16); - - if (bkey.length > 16) { - bkey = binb(bkey, key.length * 8); - } - - for (; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8); - return binb2rstr(binb(opad.concat(hash), 512 + 256)); - } - /* - * Main sha256 function, with its support functions - */ - - - function sha256_S(X, n) { - return X >>> n | X << 32 - n; - } - - function sha256_R(X, n) { - return X >>> n; - } - - function sha256_Ch(x, y, z) { - return x & y ^ ~x & z; - } - - function sha256_Maj(x, y, z) { - return x & y ^ x & z ^ y & z; - } - - function sha256_Sigma0256(x) { - return sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22); - } - - function sha256_Sigma1256(x) { - return sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25); - } - - function sha256_Gamma0256(x) { - return sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3); - } - - function sha256_Gamma1256(x) { - return sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10); - } - - sha256_K = [1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993, -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987, 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885, -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872, -1866530822, -1538233109, -1090935817, -965641998]; - - function binb(m, l) { - var HASH = [1779033703, -1150833019, 1013904242, -1521486534, 1359893119, -1694144372, 528734635, 1541459225]; - var W = new Array(64); - var a, b, c, d, e, f, g, h; - var i, j, T1, T2; - /* append padding */ - - m[l >> 5] |= 0x80 << 24 - l % 32; - m[(l + 64 >> 9 << 4) + 15] = l; - - for (i = 0; i < m.length; i += 16) { - a = HASH[0]; - b = HASH[1]; - c = HASH[2]; - d = HASH[3]; - e = HASH[4]; - f = HASH[5]; - g = HASH[6]; - h = HASH[7]; - - for (j = 0; j < 64; j += 1) { - if (j < 16) { - W[j] = m[j + i]; - } else { - W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]), sha256_Gamma0256(W[j - 15])), W[j - 16]); - } - - T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)), sha256_K[j]), W[j]); - T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c)); - h = g; - g = f; - f = e; - e = safe_add(d, T1); - d = c; - c = b; - b = a; - a = safe_add(T1, T2); - } - - HASH[0] = safe_add(a, HASH[0]); - HASH[1] = safe_add(b, HASH[1]); - HASH[2] = safe_add(c, HASH[2]); - HASH[3] = safe_add(d, HASH[3]); - HASH[4] = safe_add(e, HASH[4]); - HASH[5] = safe_add(f, HASH[5]); - HASH[6] = safe_add(g, HASH[6]); - HASH[7] = safe_add(h, HASH[7]); - } - - return HASH; - } - }, - - /** - * @class Hashes.SHA512 - * @param {config} - * - * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2 - * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See http://pajhome.org.uk/crypt/md5 for details. - */ - SHA512: function SHA512(options) { - /** - * Private properties configuration variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * @see this.setUpperCase() method - * @see this.setPad() method - */ - var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, - - /* hexadecimal output case format. false - lowercase; true - uppercase */ - b64pad = options && typeof options.pad === 'string' ? options.pad : '=', - - /* base-64 pad character. Default '=' for strict RFC compliance */ - utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true, - - /* enable/disable utf8 encoding */ - sha512_k; - /* privileged (public) methods */ - - this.hex = function (s) { - return rstr2hex(rstr(s)); - }; - - this.b64 = function (s) { - return rstr2b64(rstr(s), b64pad); - }; - - this.any = function (s, e) { - return rstr2any(rstr(s), e); - }; - - this.raw = function (s) { - return rstr(s); - }; - - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d)); - }; - - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - * @public - */ - - - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * @description Enable/disable uppercase hexadecimal returned string - * @param {boolean} - * @return {Object} this - * @public - */ - - - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - - return this; - }; - /** - * @description Defines a base64 pad string - * @param {string} Pad - * @return {Object} this - * @public - */ - - - this.setPad = function (a) { - b64pad = a || b64pad; - return this; - }; - /** - * @description Defines a base64 pad string - * @param {boolean} - * @return {Object} this - * @public - */ - - - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - - return this; - }; - /* private methods */ - - /** - * Calculate the SHA-512 of a raw string - */ - - - function rstr(s) { - s = utf8 ? utf8Encode(s) : s; - return binb2rstr(binb(rstr2binb(s), s.length * 8)); - } - /* - * Calculate the HMAC-SHA-512 of a key and some data (raw strings) - */ - - - function rstr_hmac(key, data) { - key = utf8 ? utf8Encode(key) : key; - data = utf8 ? utf8Encode(data) : data; - var hash, - i = 0, - bkey = rstr2binb(key), - ipad = Array(32), - opad = Array(32); - - if (bkey.length > 32) { - bkey = binb(bkey, key.length * 8); - } - - for (; i < 32; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8); - return binb2rstr(binb(opad.concat(hash), 1024 + 512)); - } - /** - * Calculate the SHA-512 of an array of big-endian dwords, and a bit length - */ - - - function binb(x, len) { - var j, - i, - l, - W = new Array(80), - hash = new Array(16), - //Initial hash values - H = [new int64(0x6a09e667, -205731576), new int64(-1150833019, -2067093701), new int64(0x3c6ef372, -23791573), new int64(-1521486534, 0x5f1d36f1), new int64(0x510e527f, -1377402159), new int64(-1694144372, 0x2b3e6c1f), new int64(0x1f83d9ab, -79577749), new int64(0x5be0cd19, 0x137e2179)], - T1 = new int64(0, 0), - T2 = new int64(0, 0), - a = new int64(0, 0), - b = new int64(0, 0), - c = new int64(0, 0), - d = new int64(0, 0), - e = new int64(0, 0), - f = new int64(0, 0), - g = new int64(0, 0), - h = new int64(0, 0), - //Temporary variables not specified by the document - s0 = new int64(0, 0), - s1 = new int64(0, 0), - Ch = new int64(0, 0), - Maj = new int64(0, 0), - r1 = new int64(0, 0), - r2 = new int64(0, 0), - r3 = new int64(0, 0); - - if (sha512_k === undefined) { - //SHA512 constants - sha512_k = [new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd), new int64(-1245643825, -330482897), new int64(-373957723, -2121671748), new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031), new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736), new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe), new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302), new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1), new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428), new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3), new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65), new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483), new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459), new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210), new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340), new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395), new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70), new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926), new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473), new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8), new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b), new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023), new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30), new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910), new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8), new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53), new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016), new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893), new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397), new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60), new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec), new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047), new int64(-1090935817, -1295615723), new int64(-965641998, -479046869), new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207), new int64(-354779690, -840897762), new int64(-176337025, -294727304), new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026), new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b), new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493), new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620), new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430), new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)]; - } - - for (i = 0; i < 80; i += 1) { - W[i] = new int64(0, 0); - } // append padding to the source string. The format is described in the FIPS. - - - x[len >> 5] |= 0x80 << 24 - (len & 0x1f); - x[(len + 128 >> 10 << 5) + 31] = len; - l = x.length; - - for (i = 0; i < l; i += 32) { - //32 dwords is the block size - int64copy(a, H[0]); - int64copy(b, H[1]); - int64copy(c, H[2]); - int64copy(d, H[3]); - int64copy(e, H[4]); - int64copy(f, H[5]); - int64copy(g, H[6]); - int64copy(h, H[7]); - - for (j = 0; j < 16; j += 1) { - W[j].h = x[i + 2 * j]; - W[j].l = x[i + 2 * j + 1]; - } - - for (j = 16; j < 80; j += 1) { - //sigma1 - int64rrot(r1, W[j - 2], 19); - int64revrrot(r2, W[j - 2], 29); - int64shr(r3, W[j - 2], 6); - s1.l = r1.l ^ r2.l ^ r3.l; - s1.h = r1.h ^ r2.h ^ r3.h; //sigma0 - - int64rrot(r1, W[j - 15], 1); - int64rrot(r2, W[j - 15], 8); - int64shr(r3, W[j - 15], 7); - s0.l = r1.l ^ r2.l ^ r3.l; - s0.h = r1.h ^ r2.h ^ r3.h; - int64add4(W[j], s1, W[j - 7], s0, W[j - 16]); - } - - for (j = 0; j < 80; j += 1) { - //Ch - Ch.l = e.l & f.l ^ ~e.l & g.l; - Ch.h = e.h & f.h ^ ~e.h & g.h; //Sigma1 - - int64rrot(r1, e, 14); - int64rrot(r2, e, 18); - int64revrrot(r3, e, 9); - s1.l = r1.l ^ r2.l ^ r3.l; - s1.h = r1.h ^ r2.h ^ r3.h; //Sigma0 - - int64rrot(r1, a, 28); - int64revrrot(r2, a, 2); - int64revrrot(r3, a, 7); - s0.l = r1.l ^ r2.l ^ r3.l; - s0.h = r1.h ^ r2.h ^ r3.h; //Maj - - Maj.l = a.l & b.l ^ a.l & c.l ^ b.l & c.l; - Maj.h = a.h & b.h ^ a.h & c.h ^ b.h & c.h; - int64add5(T1, h, s1, Ch, sha512_k[j], W[j]); - int64add(T2, s0, Maj); - int64copy(h, g); - int64copy(g, f); - int64copy(f, e); - int64add(e, d, T1); - int64copy(d, c); - int64copy(c, b); - int64copy(b, a); - int64add(a, T1, T2); - } - - int64add(H[0], H[0], a); - int64add(H[1], H[1], b); - int64add(H[2], H[2], c); - int64add(H[3], H[3], d); - int64add(H[4], H[4], e); - int64add(H[5], H[5], f); - int64add(H[6], H[6], g); - int64add(H[7], H[7], h); - } //represent the hash as an array of 32-bit dwords - - - for (i = 0; i < 8; i += 1) { - hash[2 * i] = H[i].h; - hash[2 * i + 1] = H[i].l; - } - - return hash; - } //A constructor for 64-bit numbers - - - function int64(h, l) { - this.h = h; - this.l = l; //this.toString = int64toString; - } //Copies src into dst, assuming both are 64-bit numbers - - - function int64copy(dst, src) { - dst.h = src.h; - dst.l = src.l; - } //Right-rotates a 64-bit number by shift - //Won't handle cases of shift>=32 - //The function revrrot() is for that - - - function int64rrot(dst, x, shift) { - dst.l = x.l >>> shift | x.h << 32 - shift; - dst.h = x.h >>> shift | x.l << 32 - shift; - } //Reverses the dwords of the source and then rotates right by shift. - //This is equivalent to rotation by 32+shift - - - function int64revrrot(dst, x, shift) { - dst.l = x.h >>> shift | x.l << 32 - shift; - dst.h = x.l >>> shift | x.h << 32 - shift; - } //Bitwise-shifts right a 64-bit number by shift - //Won't handle shift>=32, but it's never needed in SHA512 - - - function int64shr(dst, x, shift) { - dst.l = x.l >>> shift | x.h << 32 - shift; - dst.h = x.h >>> shift; - } //Adds two 64-bit numbers - //Like the original implementation, does not rely on 32-bit operations - - - function int64add(dst, x, y) { - var w0 = (x.l & 0xffff) + (y.l & 0xffff); - var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16); - var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16); - var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16); - dst.l = w0 & 0xffff | w1 << 16; - dst.h = w2 & 0xffff | w3 << 16; - } //Same, except with 4 addends. Works faster than adding them one by one. - - - function int64add4(dst, a, b, c, d) { - var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff); - var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16); - var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16); - var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16); - dst.l = w0 & 0xffff | w1 << 16; - dst.h = w2 & 0xffff | w3 << 16; - } //Same, except with 5 addends - - - function int64add5(dst, a, b, c, d, e) { - var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff), - w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16), - w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16), - w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16); - dst.l = w0 & 0xffff | w1 << 16; - dst.h = w2 & 0xffff | w3 << 16; - } - }, - - /** - * @class Hashes.RMD160 - * @constructor - * @param {Object} [config] - * - * A JavaScript implementation of the RIPEMD-160 Algorithm - * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See http://pajhome.org.uk/crypt/md5 for details. - * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/ - */ - RMD160: function RMD160(options) { - /** - * Private properties configuration variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * @see this.setUpperCase() method - * @see this.setPad() method - */ - var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, - - /* hexadecimal output case format. false - lowercase; true - uppercase */ - b64pad = options && typeof options.pad === 'string' ? options.pa : '=', - - /* base-64 pad character. Default '=' for strict RFC compliance */ - utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true, - - /* enable/disable utf8 encoding */ - rmd160_r1 = [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], - rmd160_r2 = [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], - rmd160_s1 = [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], - rmd160_s2 = [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]; - /* privileged (public) methods */ - - this.hex = function (s) { - return rstr2hex(rstr(s)); - }; - - this.b64 = function (s) { - return rstr2b64(rstr(s), b64pad); - }; - - this.any = function (s, e) { - return rstr2any(rstr(s), e); - }; - - this.raw = function (s) { - return rstr(s); - }; - - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d)); - }; - - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - * @public - */ - - - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * @description Enable/disable uppercase hexadecimal returned string - * @param {boolean} - * @return {Object} this - * @public - */ - - - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - - return this; - }; - /** - * @description Defines a base64 pad string - * @param {string} Pad - * @return {Object} this - * @public - */ - - - this.setPad = function (a) { - if (typeof a !== 'undefined') { - b64pad = a; - } - - return this; - }; - /** - * @description Defines a base64 pad string - * @param {boolean} - * @return {Object} this - * @public - */ - - - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - - return this; - }; - /* private methods */ - - /** - * Calculate the rmd160 of a raw string - */ - - - function rstr(s) { - s = utf8 ? utf8Encode(s) : s; - return binl2rstr(binl(rstr2binl(s), s.length * 8)); - } - /** - * Calculate the HMAC-rmd160 of a key and some data (raw strings) - */ - - - function rstr_hmac(key, data) { - key = utf8 ? utf8Encode(key) : key; - data = utf8 ? utf8Encode(data) : data; - var i, - hash, - bkey = rstr2binl(key), - ipad = Array(16), - opad = Array(16); - - if (bkey.length > 16) { - bkey = binl(bkey, key.length * 8); - } - - for (i = 0; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8); - return binl2rstr(binl(opad.concat(hash), 512 + 160)); - } - /** - * Convert an array of little-endian words to a string - */ - - - function binl2rstr(input) { - var i, - output = '', - l = input.length * 32; - - for (i = 0; i < l; i += 8) { - output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xFF); - } - - return output; - } - /** - * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length. - */ - - - function binl(x, len) { - var T, - j, - i, - l, - h0 = 0x67452301, - h1 = 0xefcdab89, - h2 = 0x98badcfe, - h3 = 0x10325476, - h4 = 0xc3d2e1f0, - A1, - B1, - C1, - D1, - E1, - A2, - B2, - C2, - D2, - E2; - /* append padding */ - - x[len >> 5] |= 0x80 << len % 32; - x[(len + 64 >>> 9 << 4) + 14] = len; - l = x.length; - - for (i = 0; i < l; i += 16) { - A1 = A2 = h0; - B1 = B2 = h1; - C1 = C2 = h2; - D1 = D2 = h3; - E1 = E2 = h4; - - for (j = 0; j <= 79; j += 1) { - T = safe_add(A1, rmd160_f(j, B1, C1, D1)); - T = safe_add(T, x[i + rmd160_r1[j]]); - T = safe_add(T, rmd160_K1(j)); - T = safe_add(bit_rol(T, rmd160_s1[j]), E1); - A1 = E1; - E1 = D1; - D1 = bit_rol(C1, 10); - C1 = B1; - B1 = T; - T = safe_add(A2, rmd160_f(79 - j, B2, C2, D2)); - T = safe_add(T, x[i + rmd160_r2[j]]); - T = safe_add(T, rmd160_K2(j)); - T = safe_add(bit_rol(T, rmd160_s2[j]), E2); - A2 = E2; - E2 = D2; - D2 = bit_rol(C2, 10); - C2 = B2; - B2 = T; - } - - T = safe_add(h1, safe_add(C1, D2)); - h1 = safe_add(h2, safe_add(D1, E2)); - h2 = safe_add(h3, safe_add(E1, A2)); - h3 = safe_add(h4, safe_add(A1, B2)); - h4 = safe_add(h0, safe_add(B1, C2)); - h0 = T; - } - - return [h0, h1, h2, h3, h4]; - } // specific algorithm methods - - - function rmd160_f(j, x, y, z) { - return 0 <= j && j <= 15 ? x ^ y ^ z : 16 <= j && j <= 31 ? x & y | ~x & z : 32 <= j && j <= 47 ? (x | ~y) ^ z : 48 <= j && j <= 63 ? x & z | y & ~z : 64 <= j && j <= 79 ? x ^ (y | ~z) : 'rmd160_f: j out of range'; - } - - function rmd160_K1(j) { - return 0 <= j && j <= 15 ? 0x00000000 : 16 <= j && j <= 31 ? 0x5a827999 : 32 <= j && j <= 47 ? 0x6ed9eba1 : 48 <= j && j <= 63 ? 0x8f1bbcdc : 64 <= j && j <= 79 ? 0xa953fd4e : 'rmd160_K1: j out of range'; - } - - function rmd160_K2(j) { - return 0 <= j && j <= 15 ? 0x50a28be6 : 16 <= j && j <= 31 ? 0x5c4dd124 : 32 <= j && j <= 47 ? 0x6d703ef3 : 48 <= j && j <= 63 ? 0x7a6d76e9 : 64 <= j && j <= 79 ? 0x00000000 : 'rmd160_K2: j out of range'; - } - } - }; // exposes Hashes - - (function (window, undefined$1) { - var freeExports = false; - - { - freeExports = exports; - - if (exports && _typeof(commonjsGlobal) === 'object' && commonjsGlobal && commonjsGlobal === commonjsGlobal.global) { - window = commonjsGlobal; - } - } - - if (typeof undefined$1 === 'function' && _typeof(undefined$1.amd) === 'object' && undefined$1.amd) { - // define as an anonymous module, so, through path mapping, it can be aliased - undefined$1(function () { - return Hashes; - }); - } else if (freeExports) { - // in Node.js or RingoJS v0.8.0+ - if ( module && module.exports === freeExports) { - module.exports = Hashes; - } // in Narwhal or RingoJS v0.7.0- - else { - freeExports.Hashes = Hashes; - } - } else { - // in a browser or Rhino - window.Hashes = Hashes; - } - })(this); - })(); // IIFE - - }); - - var server = 'https://upload.wikimedia.org/wikipedia/commons/'; - - var encodeTitle = function encodeTitle(file) { - var title = file.replace(/^(image|file?)\:/i, ''); //titlecase it - - title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores - - title = title.trim().replace(/ /g, '_'); - return title; - }; //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 - - - var commonsURL = function commonsURL() { - var file = this.data.file; - var title = encodeTitle(file); - var hash = new hashes.MD5().hex(title); - var path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'; - title = encodeURIComponent(title); - path += title; - return server + path; - }; - - var urlHash = commonsURL; - - var request = function request(url) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return new Promise(function (resolve, reject) { - https.get(url, opts, function (resp) { - var status = String(resp.statusCode) || ''; - var bool = /^[23]/.test(status); - resolve(bool); - }).on('error', function (err) { - reject(err); - }); - }); - }; - - var server$1 = request; - - var imgExists = function imgExists(callback) { - return server$1(this.url(), { - method: 'HEAD' - }).then(function (bool) { - //support callback non-promise form - if (callback) { - callback(null, bool); - } - - return bool; - })["catch"](function (e) { - console.error(e); - - if (callback) { - callback(e, null); - } - }); - }; - - var imgExists_1 = imgExists; - - var addMethod = function addMethod(models) { - // add a new method to Image class - models.Image.prototype.commonsURL = urlHash; - models.Image.prototype.exists = imgExists_1; - }; - - var src = addMethod; - - return src; + function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + + var https__default = /*#__PURE__*/_interopDefaultLegacy(https); + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var hashes = createCommonjsModule(function (module, exports) { + /** + * jshashes - https://github.com/h2non/jshashes + * Released under the "New BSD" license + * + * Algorithms specification: + * + * MD5 - http://www.ietf.org/rfc/rfc1321.txt + * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html + * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * HMAC - http://www.ietf.org/rfc/rfc2104.txt + */ + (function () { + var Hashes; + + function utf8Encode(str) { + var x, + y, + output = '', + i = -1, + l; + + if (str && str.length) { + l = str.length; + + while ((i += 1) < l) { + /* Decode utf-16 surrogate pairs */ + x = str.charCodeAt(i); + y = i + 1 < l ? str.charCodeAt(i + 1) : 0; + + if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) { + x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); + i += 1; + } + /* Encode output as utf-8 */ + + + if (x <= 0x7F) { + output += String.fromCharCode(x); + } else if (x <= 0x7FF) { + output += String.fromCharCode(0xC0 | x >>> 6 & 0x1F, 0x80 | x & 0x3F); + } else if (x <= 0xFFFF) { + output += String.fromCharCode(0xE0 | x >>> 12 & 0x0F, 0x80 | x >>> 6 & 0x3F, 0x80 | x & 0x3F); + } else if (x <= 0x1FFFFF) { + output += String.fromCharCode(0xF0 | x >>> 18 & 0x07, 0x80 | x >>> 12 & 0x3F, 0x80 | x >>> 6 & 0x3F, 0x80 | x & 0x3F); + } + } + } + + return output; + } + + function utf8Decode(str) { + var i, + ac, + c1, + c2, + c3, + arr = [], + l; + i = ac = c1 = c2 = c3 = 0; + + if (str && str.length) { + l = str.length; + str += ''; + + while (i < l) { + c1 = str.charCodeAt(i); + ac += 1; + + if (c1 < 128) { + arr[ac] = String.fromCharCode(c1); + i += 1; + } else if (c1 > 191 && c1 < 224) { + c2 = str.charCodeAt(i + 1); + arr[ac] = String.fromCharCode((c1 & 31) << 6 | c2 & 63); + i += 2; + } else { + c2 = str.charCodeAt(i + 1); + c3 = str.charCodeAt(i + 2); + arr[ac] = String.fromCharCode((c1 & 15) << 12 | (c2 & 63) << 6 | c3 & 63); + i += 3; + } + } + } + + return arr.join(''); + } + /** + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ + + + function safe_add(x, y) { + var lsw = (x & 0xFFFF) + (y & 0xFFFF), + msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return msw << 16 | lsw & 0xFFFF; + } + /** + * Bitwise rotate a 32-bit number to the left. + */ + + + function bit_rol(num, cnt) { + return num << cnt | num >>> 32 - cnt; + } + /** + * Convert a raw string to a hex string + */ + + + function rstr2hex(input, hexcase) { + var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef', + output = '', + x, + i = 0, + l = input.length; + + for (; i < l; i += 1) { + x = input.charCodeAt(i); + output += hex_tab.charAt(x >>> 4 & 0x0F) + hex_tab.charAt(x & 0x0F); + } + + return output; + } + /** + * Convert an array of big-endian words to a string + */ + + + function binb2rstr(input) { + var i, + l = input.length * 32, + output = ''; + + for (i = 0; i < l; i += 8) { + output += String.fromCharCode(input[i >> 5] >>> 24 - i % 32 & 0xFF); + } + + return output; + } + /** + * Convert an array of little-endian words to a string + */ + + + function binl2rstr(input) { + var i, + l = input.length * 32, + output = ''; + + for (i = 0; i < l; i += 8) { + output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xFF); + } + + return output; + } + /** + * Convert a raw string to an array of little-endian words + * Characters >255 have their high-byte silently ignored. + */ + + + function rstr2binl(input) { + var i, + l = input.length * 8, + output = Array(input.length >> 2), + lo = output.length; + + for (i = 0; i < lo; i += 1) { + output[i] = 0; + } + + for (i = 0; i < l; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << i % 32; + } + + return output; + } + /** + * Convert a raw string to an array of big-endian words + * Characters >255 have their high-byte silently ignored. + */ + + + function rstr2binb(input) { + var i, + l = input.length * 8, + output = Array(input.length >> 2), + lo = output.length; + + for (i = 0; i < lo; i += 1) { + output[i] = 0; + } + + for (i = 0; i < l; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << 24 - i % 32; + } + + return output; + } + /** + * Convert a raw string to an arbitrary string encoding + */ + + + function rstr2any(input, encoding) { + var divisor = encoding.length, + remainders = Array(), + i, + q, + x, + ld, + quotient, + dividend, + output, + full_length; + /* Convert to an array of 16-bit big-endian values, forming the dividend */ + + dividend = Array(Math.ceil(input.length / 2)); + ld = dividend.length; + + for (i = 0; i < ld; i += 1) { + dividend[i] = input.charCodeAt(i * 2) << 8 | input.charCodeAt(i * 2 + 1); + } + /** + * Repeatedly perform a long division. The binary array forms the dividend, + * the length of the encoding is the divisor. Once computed, the quotient + * forms the dividend for the next step. We stop when the dividend is zerHashes. + * All remainders are stored for later use. + */ + + + while (dividend.length > 0) { + quotient = Array(); + x = 0; + + for (i = 0; i < dividend.length; i += 1) { + x = (x << 16) + dividend[i]; + q = Math.floor(x / divisor); + x -= q * divisor; + + if (quotient.length > 0 || q > 0) { + quotient[quotient.length] = q; + } + } + + remainders[remainders.length] = x; + dividend = quotient; + } + /* Convert the remainders to the output string */ + + + output = ''; + + for (i = remainders.length - 1; i >= 0; i--) { + output += encoding.charAt(remainders[i]); + } + /* Append leading zero equivalents */ + + + full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2))); + + for (i = output.length; i < full_length; i += 1) { + output = encoding[0] + output; + } + + return output; + } + /** + * Convert a raw string to a base-64 string + */ + + + function rstr2b64(input, b64pad) { + var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + output = '', + len = input.length, + i, + j, + triplet; + b64pad = b64pad || '='; + + for (i = 0; i < len; i += 3) { + triplet = input.charCodeAt(i) << 16 | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0); + + for (j = 0; j < 4; j += 1) { + if (i * 8 + j * 6 > input.length * 8) { + output += b64pad; + } else { + output += tab.charAt(triplet >>> 6 * (3 - j) & 0x3F); + } + } + } + + return output; + } + + Hashes = { + /** + * @property {String} version + * @readonly + */ + VERSION: '1.0.6', + + /** + * @member Hashes + * @class Base64 + * @constructor + */ + Base64: function () { + // private properties + var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + pad = '=', + // URL encoding support @todo + utf8 = true; // by default enable UTF-8 support encoding + // public method for encoding + + this.encode = function (input) { + var i, + j, + triplet, + output = '', + len = input.length; + pad = pad || '='; + input = utf8 ? utf8Encode(input) : input; + + for (i = 0; i < len; i += 3) { + triplet = input.charCodeAt(i) << 16 | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0); + + for (j = 0; j < 4; j += 1) { + if (i * 8 + j * 6 > len * 8) { + output += pad; + } else { + output += tab.charAt(triplet >>> 6 * (3 - j) & 0x3F); + } + } + } + + return output; + }; // public method for decoding + + + this.decode = function (input) { + // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var i, + o1, + o2, + o3, + h1, + h2, + h3, + h4, + bits, + ac, + dec = '', + arr = []; + + if (!input) { + return input; + } + + i = ac = 0; + input = input.replace(new RegExp('\\' + pad, 'gi'), ''); // use '=' + //input += ''; + + do { + // unpack four hexets into three octets using index points in b64 + h1 = tab.indexOf(input.charAt(i += 1)); + h2 = tab.indexOf(input.charAt(i += 1)); + h3 = tab.indexOf(input.charAt(i += 1)); + h4 = tab.indexOf(input.charAt(i += 1)); + bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; + o1 = bits >> 16 & 0xff; + o2 = bits >> 8 & 0xff; + o3 = bits & 0xff; + ac += 1; + + if (h3 === 64) { + arr[ac] = String.fromCharCode(o1); + } else if (h4 === 64) { + arr[ac] = String.fromCharCode(o1, o2); + } else { + arr[ac] = String.fromCharCode(o1, o2, o3); + } + } while (i < input.length); + + dec = arr.join(''); + dec = utf8 ? utf8Decode(dec) : dec; + return dec; + }; // set custom pad string + + + this.setPad = function (str) { + pad = str || pad; + return this; + }; // set custom tab string characters + + + this.setTab = function (str) { + tab = str || tab; + return this; + }; + + this.setUTF8 = function (bool) { + if (typeof bool === 'boolean') { + utf8 = bool; + } + + return this; + }; + }, + + /** + * CRC-32 calculation + * @member Hashes + * @method CRC32 + * @static + * @param {String} str Input String + * @return {String} + */ + CRC32: function (str) { + var crc = 0, + x = 0, + y = 0, + table, + i, + iTop; + str = utf8Encode(str); + table = ['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(''); + crc = crc ^ -1; + + for (i = 0, iTop = str.length; i < iTop; i += 1) { + y = (crc ^ str.charCodeAt(i)) & 0xFF; + x = '0x' + table.substr(y * 9, 8); + crc = crc >>> 8 ^ x; + } // always return a positive number (that's what >>> 0 does) + + + return (crc ^ -1) >>> 0; + }, + + /** + * @member Hashes + * @class MD5 + * @constructor + * @param {Object} [config] + * + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * See for more infHashes. + */ + MD5: function (options) { + /** + * Private config properties. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase} + */ + var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, + // hexadecimal output case format. false - lowercase; true - uppercase + b64pad = options && typeof options.pad === 'string' ? options.pad : '=', + // base-64 pad character. Defaults to '=' for strict RFC compliance + utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true; // enable/disable utf8 encoding + // privileged (public) methods + + this.hex = function (s) { + return rstr2hex(rstr(s), hexcase); + }; + + this.b64 = function (s) { + return rstr2b64(rstr(s), b64pad); + }; + + this.any = function (s, e) { + return rstr2any(rstr(s), e); + }; + + this.raw = function (s) { + return rstr(s); + }; + + this.hex_hmac = function (k, d) { + return rstr2hex(rstr_hmac(k, d), hexcase); + }; + + this.b64_hmac = function (k, d) { + return rstr2b64(rstr_hmac(k, d), b64pad); + }; + + this.any_hmac = function (k, d, e) { + return rstr2any(rstr_hmac(k, d), e); + }; + /** + * Perform a simple self-test to see if the VM is working + * @return {String} Hexadecimal hash sample + */ + + + this.vm_test = function () { + return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; + }; + /** + * Enable/disable uppercase hexadecimal returned string + * @param {Boolean} + * @return {Object} this + */ + + + this.setUpperCase = function (a) { + if (typeof a === 'boolean') { + hexcase = a; + } + + return this; + }; + /** + * Defines a base64 pad string + * @param {String} Pad + * @return {Object} this + */ + + + this.setPad = function (a) { + b64pad = a || b64pad; + return this; + }; + /** + * Defines a base64 pad string + * @param {Boolean} + * @return {Object} [this] + */ + + + this.setUTF8 = function (a) { + if (typeof a === 'boolean') { + utf8 = a; + } + + return this; + }; // private methods + + /** + * Calculate the MD5 of a raw string + */ + + + function rstr(s) { + s = utf8 ? utf8Encode(s) : s; + return binl2rstr(binl(rstr2binl(s), s.length * 8)); + } + /** + * Calculate the HMAC-MD5, of a key and some data (raw strings) + */ + + + function rstr_hmac(key, data) { + var bkey, ipad, opad, hash, i; + key = utf8 ? utf8Encode(key) : key; + data = utf8 ? utf8Encode(data) : data; + bkey = rstr2binl(key); + + if (bkey.length > 16) { + bkey = binl(bkey, key.length * 8); + } + + ipad = Array(16), opad = Array(16); + + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binl(opad.concat(hash), 512 + 128)); + } + /** + * Calculate the MD5 of an array of little-endian words, and a bit length. + */ + + + function binl(x, len) { + var i, + olda, + oldb, + oldc, + oldd, + a = 1732584193, + b = -271733879, + c = -1732584194, + d = 271733878; + /* append padding */ + + x[len >> 5] |= 0x80 << len % 32; + x[(len + 64 >>> 9 << 4) + 14] = len; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936); + d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329); + a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734); + a = md5_hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651); + a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844); + d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551); + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + + return Array(a, b, c, d); + } + /** + * These functions implement the four basic operations the algorithm uses. + */ + + + function md5_cmn(q, a, b, x, s, t) { + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); + } + + function md5_ff(a, b, c, d, x, s, t) { + return md5_cmn(b & c | ~b & d, a, b, x, s, t); + } + + function md5_gg(a, b, c, d, x, s, t) { + return md5_cmn(b & d | c & ~d, a, b, x, s, t); + } + + function md5_hh(a, b, c, d, x, s, t) { + return md5_cmn(b ^ c ^ d, a, b, x, s, t); + } + + function md5_ii(a, b, c, d, x, s, t) { + return md5_cmn(c ^ (b | ~d), a, b, x, s, t); + } + }, + + /** + * @member Hashes + * @class Hashes.SHA1 + * @param {Object} [config] + * @constructor + * + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1 + * Version 2.2 Copyright Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * See http://pajhome.org.uk/crypt/md5 for details. + */ + SHA1: function (options) { + /** + * Private config properties. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase} + */ + var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, + // hexadecimal output case format. false - lowercase; true - uppercase + b64pad = options && typeof options.pad === 'string' ? options.pad : '=', + // base-64 pad character. Defaults to '=' for strict RFC compliance + utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true; // enable/disable utf8 encoding + // public methods + + this.hex = function (s) { + return rstr2hex(rstr(s), hexcase); + }; + + this.b64 = function (s) { + return rstr2b64(rstr(s), b64pad); + }; + + this.any = function (s, e) { + return rstr2any(rstr(s), e); + }; + + this.raw = function (s) { + return rstr(s); + }; + + this.hex_hmac = function (k, d) { + return rstr2hex(rstr_hmac(k, d)); + }; + + this.b64_hmac = function (k, d) { + return rstr2b64(rstr_hmac(k, d), b64pad); + }; + + this.any_hmac = function (k, d, e) { + return rstr2any(rstr_hmac(k, d), e); + }; + /** + * Perform a simple self-test to see if the VM is working + * @return {String} Hexadecimal hash sample + * @public + */ + + + this.vm_test = function () { + return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; + }; + /** + * @description Enable/disable uppercase hexadecimal returned string + * @param {boolean} + * @return {Object} this + * @public + */ + + + this.setUpperCase = function (a) { + if (typeof a === 'boolean') { + hexcase = a; + } + + return this; + }; + /** + * @description Defines a base64 pad string + * @param {string} Pad + * @return {Object} this + * @public + */ + + + this.setPad = function (a) { + b64pad = a || b64pad; + return this; + }; + /** + * @description Defines a base64 pad string + * @param {boolean} + * @return {Object} this + * @public + */ + + + this.setUTF8 = function (a) { + if (typeof a === 'boolean') { + utf8 = a; + } + + return this; + }; // private methods + + /** + * Calculate the SHA-512 of a raw string + */ + + + function rstr(s) { + s = utf8 ? utf8Encode(s) : s; + return binb2rstr(binb(rstr2binb(s), s.length * 8)); + } + /** + * Calculate the HMAC-SHA1 of a key and some data (raw strings) + */ + + + function rstr_hmac(key, data) { + var bkey, ipad, opad, i, hash; + key = utf8 ? utf8Encode(key) : key; + data = utf8 ? utf8Encode(data) : data; + bkey = rstr2binb(key); + + if (bkey.length > 16) { + bkey = binb(bkey, key.length * 8); + } + + ipad = Array(16), opad = Array(16); + + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8); + return binb2rstr(binb(opad.concat(hash), 512 + 160)); + } + /** + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ + + + function binb(x, len) { + var i, + j, + t, + olda, + oldb, + oldc, + oldd, + olde, + w = Array(80), + a = 1732584193, + b = -271733879, + c = -1732584194, + d = 271733878, + e = -1009589776; + /* append padding */ + + x[len >> 5] |= 0x80 << 24 - len % 32; + x[(len + 64 >> 9 << 4) + 15] = len; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + olde = e; + + for (j = 0; j < 80; j += 1) { + if (j < 16) { + w[j] = x[i + j]; + } else { + w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); + } + + t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = bit_rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + + return Array(a, b, c, d, e); + } + /** + * Perform the appropriate triplet combination function for the current + * iteration + */ + + + function sha1_ft(t, b, c, d) { + if (t < 20) { + return b & c | ~b & d; + } + + if (t < 40) { + return b ^ c ^ d; + } + + if (t < 60) { + return b & c | b & d | c & d; + } + + return b ^ c ^ d; + } + /** + * Determine the appropriate additive constant for the current iteration + */ + + + function sha1_kt(t) { + return t < 20 ? 1518500249 : t < 40 ? 1859775393 : t < 60 ? -1894007588 : -899497514; + } + }, + + /** + * @class Hashes.SHA256 + * @param {config} + * + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2 + * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * See http://pajhome.org.uk/crypt/md5 for details. + * Also http://anmar.eu.org/projects/jssha2/ + */ + SHA256: function (options) { + /** + * Private properties configuration variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + * @see this.setUpperCase() method + * @see this.setPad() method + */ + options && typeof options.uppercase === 'boolean' ? options.uppercase : false; + var // hexadecimal output case format. false - lowercase; true - uppercase */ + b64pad = options && typeof options.pad === 'string' ? options.pad : '=', + + /* base-64 pad character. Default '=' for strict RFC compliance */ + utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true, + + /* enable/disable utf8 encoding */ + sha256_K; + /* privileged (public) methods */ + + this.hex = function (s) { + return rstr2hex(rstr(s, utf8)); + }; + + this.b64 = function (s) { + return rstr2b64(rstr(s, utf8), b64pad); + }; + + this.any = function (s, e) { + return rstr2any(rstr(s, utf8), e); + }; + + this.raw = function (s) { + return rstr(s, utf8); + }; + + this.hex_hmac = function (k, d) { + return rstr2hex(rstr_hmac(k, d)); + }; + + this.b64_hmac = function (k, d) { + return rstr2b64(rstr_hmac(k, d), b64pad); + }; + + this.any_hmac = function (k, d, e) { + return rstr2any(rstr_hmac(k, d), e); + }; + /** + * Perform a simple self-test to see if the VM is working + * @return {String} Hexadecimal hash sample + * @public + */ + + + this.vm_test = function () { + return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; + }; + /** + * Enable/disable uppercase hexadecimal returned string + * @param {boolean} + * @return {Object} this + * @public + */ + + + this.setUpperCase = function (a) { + + return this; + }; + /** + * @description Defines a base64 pad string + * @param {string} Pad + * @return {Object} this + * @public + */ + + + this.setPad = function (a) { + b64pad = a || b64pad; + return this; + }; + /** + * Defines a base64 pad string + * @param {boolean} + * @return {Object} this + * @public + */ + + + this.setUTF8 = function (a) { + if (typeof a === 'boolean') { + utf8 = a; + } + + return this; + }; // private methods + + /** + * Calculate the SHA-512 of a raw string + */ + + + function rstr(s, utf8) { + s = utf8 ? utf8Encode(s) : s; + return binb2rstr(binb(rstr2binb(s), s.length * 8)); + } + /** + * Calculate the HMAC-sha256 of a key and some data (raw strings) + */ + + + function rstr_hmac(key, data) { + key = utf8 ? utf8Encode(key) : key; + data = utf8 ? utf8Encode(data) : data; + var hash, + i = 0, + bkey = rstr2binb(key), + ipad = Array(16), + opad = Array(16); + + if (bkey.length > 16) { + bkey = binb(bkey, key.length * 8); + } + + for (; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8); + return binb2rstr(binb(opad.concat(hash), 512 + 256)); + } + /* + * Main sha256 function, with its support functions + */ + + + function sha256_S(X, n) { + return X >>> n | X << 32 - n; + } + + function sha256_R(X, n) { + return X >>> n; + } + + function sha256_Ch(x, y, z) { + return x & y ^ ~x & z; + } + + function sha256_Maj(x, y, z) { + return x & y ^ x & z ^ y & z; + } + + function sha256_Sigma0256(x) { + return sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22); + } + + function sha256_Sigma1256(x) { + return sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25); + } + + function sha256_Gamma0256(x) { + return sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3); + } + + function sha256_Gamma1256(x) { + return sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10); + } + + sha256_K = [1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993, -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987, 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885, -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872, -1866530822, -1538233109, -1090935817, -965641998]; + + function binb(m, l) { + var HASH = [1779033703, -1150833019, 1013904242, -1521486534, 1359893119, -1694144372, 528734635, 1541459225]; + var W = new Array(64); + var a, b, c, d, e, f, g, h; + var i, j, T1, T2; + /* append padding */ + + m[l >> 5] |= 0x80 << 24 - l % 32; + m[(l + 64 >> 9 << 4) + 15] = l; + + for (i = 0; i < m.length; i += 16) { + a = HASH[0]; + b = HASH[1]; + c = HASH[2]; + d = HASH[3]; + e = HASH[4]; + f = HASH[5]; + g = HASH[6]; + h = HASH[7]; + + for (j = 0; j < 64; j += 1) { + if (j < 16) { + W[j] = m[j + i]; + } else { + W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]), sha256_Gamma0256(W[j - 15])), W[j - 16]); + } + + T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)), sha256_K[j]), W[j]); + T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c)); + h = g; + g = f; + f = e; + e = safe_add(d, T1); + d = c; + c = b; + b = a; + a = safe_add(T1, T2); + } + + HASH[0] = safe_add(a, HASH[0]); + HASH[1] = safe_add(b, HASH[1]); + HASH[2] = safe_add(c, HASH[2]); + HASH[3] = safe_add(d, HASH[3]); + HASH[4] = safe_add(e, HASH[4]); + HASH[5] = safe_add(f, HASH[5]); + HASH[6] = safe_add(g, HASH[6]); + HASH[7] = safe_add(h, HASH[7]); + } + + return HASH; + } + }, + + /** + * @class Hashes.SHA512 + * @param {config} + * + * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2 + * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * See http://pajhome.org.uk/crypt/md5 for details. + */ + SHA512: function (options) { + /** + * Private properties configuration variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + * @see this.setUpperCase() method + * @see this.setPad() method + */ + options && typeof options.uppercase === 'boolean' ? options.uppercase : false; + + var /* hexadecimal output case format. false - lowercase; true - uppercase */ + b64pad = options && typeof options.pad === 'string' ? options.pad : '=', + + /* base-64 pad character. Default '=' for strict RFC compliance */ + utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true, + + /* enable/disable utf8 encoding */ + sha512_k; + /* privileged (public) methods */ + + this.hex = function (s) { + return rstr2hex(rstr(s)); + }; + + this.b64 = function (s) { + return rstr2b64(rstr(s), b64pad); + }; + + this.any = function (s, e) { + return rstr2any(rstr(s), e); + }; + + this.raw = function (s) { + return rstr(s); + }; + + this.hex_hmac = function (k, d) { + return rstr2hex(rstr_hmac(k, d)); + }; + + this.b64_hmac = function (k, d) { + return rstr2b64(rstr_hmac(k, d), b64pad); + }; + + this.any_hmac = function (k, d, e) { + return rstr2any(rstr_hmac(k, d), e); + }; + /** + * Perform a simple self-test to see if the VM is working + * @return {String} Hexadecimal hash sample + * @public + */ + + + this.vm_test = function () { + return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; + }; + /** + * @description Enable/disable uppercase hexadecimal returned string + * @param {boolean} + * @return {Object} this + * @public + */ + + + this.setUpperCase = function (a) { + + return this; + }; + /** + * @description Defines a base64 pad string + * @param {string} Pad + * @return {Object} this + * @public + */ + + + this.setPad = function (a) { + b64pad = a || b64pad; + return this; + }; + /** + * @description Defines a base64 pad string + * @param {boolean} + * @return {Object} this + * @public + */ + + + this.setUTF8 = function (a) { + if (typeof a === 'boolean') { + utf8 = a; + } + + return this; + }; + /* private methods */ + + /** + * Calculate the SHA-512 of a raw string + */ + + + function rstr(s) { + s = utf8 ? utf8Encode(s) : s; + return binb2rstr(binb(rstr2binb(s), s.length * 8)); + } + /* + * Calculate the HMAC-SHA-512 of a key and some data (raw strings) + */ + + + function rstr_hmac(key, data) { + key = utf8 ? utf8Encode(key) : key; + data = utf8 ? utf8Encode(data) : data; + var hash, + i = 0, + bkey = rstr2binb(key), + ipad = Array(32), + opad = Array(32); + + if (bkey.length > 32) { + bkey = binb(bkey, key.length * 8); + } + + for (; i < 32; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8); + return binb2rstr(binb(opad.concat(hash), 1024 + 512)); + } + /** + * Calculate the SHA-512 of an array of big-endian dwords, and a bit length + */ + + + function binb(x, len) { + var j, + i, + l, + W = new Array(80), + hash = new Array(16), + //Initial hash values + H = [new int64(0x6a09e667, -205731576), new int64(-1150833019, -2067093701), new int64(0x3c6ef372, -23791573), new int64(-1521486534, 0x5f1d36f1), new int64(0x510e527f, -1377402159), new int64(-1694144372, 0x2b3e6c1f), new int64(0x1f83d9ab, -79577749), new int64(0x5be0cd19, 0x137e2179)], + T1 = new int64(0, 0), + T2 = new int64(0, 0), + a = new int64(0, 0), + b = new int64(0, 0), + c = new int64(0, 0), + d = new int64(0, 0), + e = new int64(0, 0), + f = new int64(0, 0), + g = new int64(0, 0), + h = new int64(0, 0), + //Temporary variables not specified by the document + s0 = new int64(0, 0), + s1 = new int64(0, 0), + Ch = new int64(0, 0), + Maj = new int64(0, 0), + r1 = new int64(0, 0), + r2 = new int64(0, 0), + r3 = new int64(0, 0); + + if (sha512_k === undefined) { + //SHA512 constants + sha512_k = [new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd), new int64(-1245643825, -330482897), new int64(-373957723, -2121671748), new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031), new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736), new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe), new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302), new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1), new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428), new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3), new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65), new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483), new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459), new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210), new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340), new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395), new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70), new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926), new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473), new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8), new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b), new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023), new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30), new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910), new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8), new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53), new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016), new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893), new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397), new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60), new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec), new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047), new int64(-1090935817, -1295615723), new int64(-965641998, -479046869), new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207), new int64(-354779690, -840897762), new int64(-176337025, -294727304), new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026), new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b), new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493), new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620), new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430), new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)]; + } + + for (i = 0; i < 80; i += 1) { + W[i] = new int64(0, 0); + } // append padding to the source string. The format is described in the FIPS. + + + x[len >> 5] |= 0x80 << 24 - (len & 0x1f); + x[(len + 128 >> 10 << 5) + 31] = len; + l = x.length; + + for (i = 0; i < l; i += 32) { + //32 dwords is the block size + int64copy(a, H[0]); + int64copy(b, H[1]); + int64copy(c, H[2]); + int64copy(d, H[3]); + int64copy(e, H[4]); + int64copy(f, H[5]); + int64copy(g, H[6]); + int64copy(h, H[7]); + + for (j = 0; j < 16; j += 1) { + W[j].h = x[i + 2 * j]; + W[j].l = x[i + 2 * j + 1]; + } + + for (j = 16; j < 80; j += 1) { + //sigma1 + int64rrot(r1, W[j - 2], 19); + int64revrrot(r2, W[j - 2], 29); + int64shr(r3, W[j - 2], 6); + s1.l = r1.l ^ r2.l ^ r3.l; + s1.h = r1.h ^ r2.h ^ r3.h; //sigma0 + + int64rrot(r1, W[j - 15], 1); + int64rrot(r2, W[j - 15], 8); + int64shr(r3, W[j - 15], 7); + s0.l = r1.l ^ r2.l ^ r3.l; + s0.h = r1.h ^ r2.h ^ r3.h; + int64add4(W[j], s1, W[j - 7], s0, W[j - 16]); + } + + for (j = 0; j < 80; j += 1) { + //Ch + Ch.l = e.l & f.l ^ ~e.l & g.l; + Ch.h = e.h & f.h ^ ~e.h & g.h; //Sigma1 + + int64rrot(r1, e, 14); + int64rrot(r2, e, 18); + int64revrrot(r3, e, 9); + s1.l = r1.l ^ r2.l ^ r3.l; + s1.h = r1.h ^ r2.h ^ r3.h; //Sigma0 + + int64rrot(r1, a, 28); + int64revrrot(r2, a, 2); + int64revrrot(r3, a, 7); + s0.l = r1.l ^ r2.l ^ r3.l; + s0.h = r1.h ^ r2.h ^ r3.h; //Maj + + Maj.l = a.l & b.l ^ a.l & c.l ^ b.l & c.l; + Maj.h = a.h & b.h ^ a.h & c.h ^ b.h & c.h; + int64add5(T1, h, s1, Ch, sha512_k[j], W[j]); + int64add(T2, s0, Maj); + int64copy(h, g); + int64copy(g, f); + int64copy(f, e); + int64add(e, d, T1); + int64copy(d, c); + int64copy(c, b); + int64copy(b, a); + int64add(a, T1, T2); + } + + int64add(H[0], H[0], a); + int64add(H[1], H[1], b); + int64add(H[2], H[2], c); + int64add(H[3], H[3], d); + int64add(H[4], H[4], e); + int64add(H[5], H[5], f); + int64add(H[6], H[6], g); + int64add(H[7], H[7], h); + } //represent the hash as an array of 32-bit dwords + + + for (i = 0; i < 8; i += 1) { + hash[2 * i] = H[i].h; + hash[2 * i + 1] = H[i].l; + } + + return hash; + } //A constructor for 64-bit numbers + + + function int64(h, l) { + this.h = h; + this.l = l; //this.toString = int64toString; + } //Copies src into dst, assuming both are 64-bit numbers + + + function int64copy(dst, src) { + dst.h = src.h; + dst.l = src.l; + } //Right-rotates a 64-bit number by shift + //Won't handle cases of shift>=32 + //The function revrrot() is for that + + + function int64rrot(dst, x, shift) { + dst.l = x.l >>> shift | x.h << 32 - shift; + dst.h = x.h >>> shift | x.l << 32 - shift; + } //Reverses the dwords of the source and then rotates right by shift. + //This is equivalent to rotation by 32+shift + + + function int64revrrot(dst, x, shift) { + dst.l = x.h >>> shift | x.l << 32 - shift; + dst.h = x.l >>> shift | x.h << 32 - shift; + } //Bitwise-shifts right a 64-bit number by shift + //Won't handle shift>=32, but it's never needed in SHA512 + + + function int64shr(dst, x, shift) { + dst.l = x.l >>> shift | x.h << 32 - shift; + dst.h = x.h >>> shift; + } //Adds two 64-bit numbers + //Like the original implementation, does not rely on 32-bit operations + + + function int64add(dst, x, y) { + var w0 = (x.l & 0xffff) + (y.l & 0xffff); + var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16); + var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16); + var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16); + dst.l = w0 & 0xffff | w1 << 16; + dst.h = w2 & 0xffff | w3 << 16; + } //Same, except with 4 addends. Works faster than adding them one by one. + + + function int64add4(dst, a, b, c, d) { + var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff); + var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16); + var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16); + var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16); + dst.l = w0 & 0xffff | w1 << 16; + dst.h = w2 & 0xffff | w3 << 16; + } //Same, except with 5 addends + + + function int64add5(dst, a, b, c, d, e) { + var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff), + w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16), + w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16), + w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16); + dst.l = w0 & 0xffff | w1 << 16; + dst.h = w2 & 0xffff | w3 << 16; + } + }, + + /** + * @class Hashes.RMD160 + * @constructor + * @param {Object} [config] + * + * A JavaScript implementation of the RIPEMD-160 Algorithm + * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * See http://pajhome.org.uk/crypt/md5 for details. + * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/ + */ + RMD160: function (options) { + /** + * Private properties configuration variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + * @see this.setUpperCase() method + * @see this.setPad() method + */ + options && typeof options.uppercase === 'boolean' ? options.uppercase : false; + + var /* hexadecimal output case format. false - lowercase; true - uppercase */ + b64pad = options && typeof options.pad === 'string' ? options.pa : '=', + + /* base-64 pad character. Default '=' for strict RFC compliance */ + utf8 = options && typeof options.utf8 === 'boolean' ? options.utf8 : true, + + /* enable/disable utf8 encoding */ + rmd160_r1 = [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], + rmd160_r2 = [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], + rmd160_s1 = [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], + rmd160_s2 = [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]; + /* privileged (public) methods */ + + this.hex = function (s) { + return rstr2hex(rstr(s)); + }; + + this.b64 = function (s) { + return rstr2b64(rstr(s), b64pad); + }; + + this.any = function (s, e) { + return rstr2any(rstr(s), e); + }; + + this.raw = function (s) { + return rstr(s); + }; + + this.hex_hmac = function (k, d) { + return rstr2hex(rstr_hmac(k, d)); + }; + + this.b64_hmac = function (k, d) { + return rstr2b64(rstr_hmac(k, d), b64pad); + }; + + this.any_hmac = function (k, d, e) { + return rstr2any(rstr_hmac(k, d), e); + }; + /** + * Perform a simple self-test to see if the VM is working + * @return {String} Hexadecimal hash sample + * @public + */ + + + this.vm_test = function () { + return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; + }; + /** + * @description Enable/disable uppercase hexadecimal returned string + * @param {boolean} + * @return {Object} this + * @public + */ + + + this.setUpperCase = function (a) { + + return this; + }; + /** + * @description Defines a base64 pad string + * @param {string} Pad + * @return {Object} this + * @public + */ + + + this.setPad = function (a) { + if (typeof a !== 'undefined') { + b64pad = a; + } + + return this; + }; + /** + * @description Defines a base64 pad string + * @param {boolean} + * @return {Object} this + * @public + */ + + + this.setUTF8 = function (a) { + if (typeof a === 'boolean') { + utf8 = a; + } + + return this; + }; + /* private methods */ + + /** + * Calculate the rmd160 of a raw string + */ + + + function rstr(s) { + s = utf8 ? utf8Encode(s) : s; + return binl2rstr(binl(rstr2binl(s), s.length * 8)); + } + /** + * Calculate the HMAC-rmd160 of a key and some data (raw strings) + */ + + + function rstr_hmac(key, data) { + key = utf8 ? utf8Encode(key) : key; + data = utf8 ? utf8Encode(data) : data; + var i, + hash, + bkey = rstr2binl(key), + ipad = Array(16), + opad = Array(16); + + if (bkey.length > 16) { + bkey = binl(bkey, key.length * 8); + } + + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binl(opad.concat(hash), 512 + 160)); + } + /** + * Convert an array of little-endian words to a string + */ + + + function binl2rstr(input) { + var i, + output = '', + l = input.length * 32; + + for (i = 0; i < l; i += 8) { + output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xFF); + } + + return output; + } + /** + * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length. + */ + + + function binl(x, len) { + var T, + j, + i, + l, + h0 = 0x67452301, + h1 = 0xefcdab89, + h2 = 0x98badcfe, + h3 = 0x10325476, + h4 = 0xc3d2e1f0, + A1, + B1, + C1, + D1, + E1, + A2, + B2, + C2, + D2, + E2; + /* append padding */ + + x[len >> 5] |= 0x80 << len % 32; + x[(len + 64 >>> 9 << 4) + 14] = len; + l = x.length; + + for (i = 0; i < l; i += 16) { + A1 = A2 = h0; + B1 = B2 = h1; + C1 = C2 = h2; + D1 = D2 = h3; + E1 = E2 = h4; + + for (j = 0; j <= 79; j += 1) { + T = safe_add(A1, rmd160_f(j, B1, C1, D1)); + T = safe_add(T, x[i + rmd160_r1[j]]); + T = safe_add(T, rmd160_K1(j)); + T = safe_add(bit_rol(T, rmd160_s1[j]), E1); + A1 = E1; + E1 = D1; + D1 = bit_rol(C1, 10); + C1 = B1; + B1 = T; + T = safe_add(A2, rmd160_f(79 - j, B2, C2, D2)); + T = safe_add(T, x[i + rmd160_r2[j]]); + T = safe_add(T, rmd160_K2(j)); + T = safe_add(bit_rol(T, rmd160_s2[j]), E2); + A2 = E2; + E2 = D2; + D2 = bit_rol(C2, 10); + C2 = B2; + B2 = T; + } + + T = safe_add(h1, safe_add(C1, D2)); + h1 = safe_add(h2, safe_add(D1, E2)); + h2 = safe_add(h3, safe_add(E1, A2)); + h3 = safe_add(h4, safe_add(A1, B2)); + h4 = safe_add(h0, safe_add(B1, C2)); + h0 = T; + } + + return [h0, h1, h2, h3, h4]; + } // specific algorithm methods + + + function rmd160_f(j, x, y, z) { + return 0 <= j && j <= 15 ? x ^ y ^ z : 16 <= j && j <= 31 ? x & y | ~x & z : 32 <= j && j <= 47 ? (x | ~y) ^ z : 48 <= j && j <= 63 ? x & z | y & ~z : 64 <= j && j <= 79 ? x ^ (y | ~z) : 'rmd160_f: j out of range'; + } + + function rmd160_K1(j) { + return 0 <= j && j <= 15 ? 0x00000000 : 16 <= j && j <= 31 ? 0x5a827999 : 32 <= j && j <= 47 ? 0x6ed9eba1 : 48 <= j && j <= 63 ? 0x8f1bbcdc : 64 <= j && j <= 79 ? 0xa953fd4e : 'rmd160_K1: j out of range'; + } + + function rmd160_K2(j) { + return 0 <= j && j <= 15 ? 0x50a28be6 : 16 <= j && j <= 31 ? 0x5c4dd124 : 32 <= j && j <= 47 ? 0x6d703ef3 : 48 <= j && j <= 63 ? 0x7a6d76e9 : 64 <= j && j <= 79 ? 0x00000000 : 'rmd160_K2: j out of range'; + } + } + }; // exposes Hashes + + (function (window, undefined$1) { + var freeExports = false; + + { + freeExports = exports; + + if (exports && typeof commonjsGlobal === 'object' && commonjsGlobal && commonjsGlobal === commonjsGlobal.global) { + window = commonjsGlobal; + } + } + + if (typeof undefined$1 === 'function' && typeof undefined$1.amd === 'object' && undefined$1.amd) { + // define as an anonymous module, so, through path mapping, it can be aliased + undefined$1(function () { + return Hashes; + }); + } else if (freeExports) { + // in Node.js or RingoJS v0.8.0+ + if (module && module.exports === freeExports) { + module.exports = Hashes; + } // in Narwhal or RingoJS v0.7.0- + else { + freeExports.Hashes = Hashes; + } + } else { + // in a browser or Rhino + window.Hashes = Hashes; + } + })(this); + })(); // IIFE + + }); + + const server$1 = 'https://upload.wikimedia.org/wikipedia/commons/'; + + const encodeTitle = function (file) { + let title = file.replace(/^(image|file?)\:/i, ''); //titlecase it + + title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores + + title = title.trim().replace(/ /g, '_'); + return title; + }; //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 () { + let file = this.data.file; + let title = encodeTitle(file); + let hash = new hashes.MD5().hex(title); + let path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'; + title = encodeURIComponent(title); + path += title; + return server$1 + path; + }; + + var urlHash = commonsURL; + + const request = function (url, opts = {}) { + return new Promise((resolve, reject) => { + https__default['default'].get(url, opts, resp => { + let status = String(resp.statusCode) || ''; + let bool = /^[23]/.test(status); + resolve(bool); + }).on('error', err => { + reject(err); + }); + }); + }; + + var server = request; + + const imgExists = function (callback) { + return server(this.url(), { + method: 'HEAD' + }).then(function (bool) { + //support callback non-promise form + if (callback) { + callback(null, bool); + } + + return bool; + }).catch(e => { + console.error(e); + + if (callback) { + callback(e, null); + } + }); + }; + + var imgExists_1 = imgExists; + + // is there a good image of this + 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.prototype.mainImage = mainImage_1; // add a new method to Image class + + models.Image.prototype.commonsURL = urlHash; + models.Image.prototype.exists = imgExists_1; + }; + + var src = addMethod; + + return src; }))); //# sourceMappingURL=wtf-plugin-image.js.map diff --git a/plugins/image/builds/wtf-plugin-image.js.map b/plugins/image/builds/wtf-plugin-image.js.map index 83bfad00..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/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')\r\n\r\nconst server = 'https://upload.wikimedia.org/wikipedia/commons/'\r\n\r\nconst encodeTitle = function(file) {\r\n let title = file.replace(/^(image|file?)\\:/i, '')\r\n //titlecase it\r\n title = title.charAt(0).toUpperCase() + title.substring(1)\r\n //spaces to underscores\r\n title = title.trim().replace(/ /g, '_')\r\n return title\r\n}\r\n\r\n//the wikimedia image url is a little silly:\r\n//https://commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths.3F\r\nconst commonsURL = function() {\r\n let file = this.data.file\r\n let title = encodeTitle(file)\r\n let hash = new Hashes.MD5().hex(title)\r\n let path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'\r\n title = encodeURIComponent(title)\r\n path += title\r\n return server + path\r\n}\r\nmodule.exports = commonsURL\r\n","const https = require('https')\r\n\r\n// use the native nodejs request function\r\nconst request = function(url, opts = {}) {\r\n return new Promise((resolve, reject) => {\r\n https\r\n .get(url, opts, resp => {\r\n let status = String(resp.statusCode) || ''\r\n let bool = /^[23]/.test(status)\r\n resolve(bool)\r\n })\r\n .on('error', err => {\r\n reject(err)\r\n })\r\n })\r\n}\r\nmodule.exports = request\r\n","const http = require('./http/server')\r\n\r\n// test if the image url exists or not\r\nconst imgExists = function(callback) {\r\n return http(this.url(), {\r\n method: 'HEAD'\r\n })\r\n .then(function(bool) {\r\n //support callback non-promise form\r\n if (callback) {\r\n callback(null, bool)\r\n }\r\n return bool\r\n })\r\n .catch(e => {\r\n console.error(e)\r\n if (callback) {\r\n callback(e, null)\r\n }\r\n })\r\n}\r\nmodule.exports = imgExists\r\n","const commonsURL = require('./url-hash')\r\nconst imgExists = require('./img-exists')\r\n\r\nconst addMethod = function(models) {\r\n // add a new method to Image class\r\n models.Image.prototype.commonsURL = commonsURL\r\n models.Image.prototype.exists = imgExists\r\n}\r\nmodule.exports = addMethod\r\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","console","error","addMethod","models","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 60ee5112..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=n||self).wtfImage=t(n.https)}(this,(function(n){"use strict";function t(n){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(n)}n=n&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n;var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var r=function(n,t){return n(t={exports:{}},t.exports),t.exports}((function(n,r){!function(){var o;function u(n){var t,e,r,o="",u=-1;if(n&&n.length)for(r=n.length;(u+=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 i(n,t){return n<>>32-t}function f(n,t){for(var e,r=t?"0123456789ABCDEF":"0123456789abcdef",o="",u=0,h=n.length;u>>4&15)+r.charAt(15&e);return o}function c(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 l(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 B(n,t){var e,r,o,u,h,i,f,c,a=t.length,l=Array();for(u=(i=Array(Math.ceil(n.length/2))).length,e=0;e0;){for(h=Array(),o=0,e=0;e0||r>0)&&(h[h.length]=r);l[l.length]=o,i=h}for(f="",e=l.length-1;e>=0;e--)f+=t.charAt(l[e]);for(c=Math.ceil(8*n.length/(Math.log(t.length)/Math.log(2))),e=f.length;e8*n.length?u+=t:u+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(o>>>6*(3-r)&63);return u}o={VERSION:"1.0.6",Base64:function(){var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="=",e=!0;this.encode=function(r){var o,h,i,f="",c=r.length;for(t=t||"=",r=e?u(r):r,o=0;o8*c?t:n.charAt(i>>>6*(3-h)&63);return f},this.decode=function(r){var o,u,h,i,f,c,a,l,D="",B=[];if(!r)return r;o=l=0,r=r.replace(new RegExp("\\"+t,"gi"),"");do{u=(a=n.indexOf(r.charAt(o+=1))<<18|n.indexOf(r.charAt(o+=1))<<12|(f=n.indexOf(r.charAt(o+=1)))<<6|(c=n.indexOf(r.charAt(o+=1))))>>16&255,h=a>>8&255,i=255&a,B[l+=1]=64===f?String.fromCharCode(u):64===c?String.fromCharCode(u,h):String.fromCharCode(u,h,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),u=n.charCodeAt(t+2),i[e]=String.fromCharCode((15&r)<<12|(63&o)<<6|63&u),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,o=0,h=0;for(n=u(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(""),o^=-1,e=0,r=n.length;e>>8^"0x"+t.substr(9*h,8);return(-1^o)>>>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 o(n){return a(D(l(n=r?u(n):n),8*n.length))}function c(n,t){var e,o,h,i,f;for(n=r?u(n):n,t=r?u(t):t,(e=l(n)).length>16&&(e=D(e,8*n.length)),o=Array(16),h=Array(16),f=0;f<16;f+=1)o[f]=909522486^e[f],h[f]=1549556828^e[f];return i=D(o.concat(l(t)),512+8*t.length),a(D(h.concat(i),640))}function D(n,t){var e,r,o,u,i,f=1732584193,c=-271733879,a=-1732584194,l=271733878;for(n[t>>5]|=128<>>9<<4)]=t,e=0;e16&&(e=l(e,8*n.length)),o=Array(16),h=Array(16),i=0;i<16;i+=1)o[i]=909522486^e[i],h[i]=1549556828^e[i];return f=l(o.concat(D(t)),512+8*t.length),c(l(h.concat(f),672))}function l(n,t){var e,r,o,u,f,c,a,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&&(h=p(h,8*n.length));o<16;o+=1)i[o]=909522486^h[o],f[o]=1549556828^h[o];return e=p(i.concat(D(t)),512+8*t.length),c(p(f.concat(e),768))}function a(n,t){return n>>>t|n<<32-t}function l(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 a(n,2)^a(n,13)^a(n,22)}function F(n){return a(n,6)^a(n,11)^a(n,25)}function E(n){return a(n,7)^a(n,18)^l(n,3)}function p(n,e){var r,o,u,i,f,c,D,B,s,p,d,g,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,s=0;s32&&(h=i(h,8*n.length));o<32;o+=1)f[o]=909522486^h[o],a[o]=1549556828^h[o];return e=i(f.concat(D(t)),1024+8*t.length),c(i(a.concat(e),1536))}function i(n,e){var r,o,u,h=new Array(80),i=new Array(16),f=[new a(1779033703,-205731576),new a(-1150833019,-2067093701),new a(1013904242,-23791573),new a(-1521486534,1595750129),new a(1359893119,-1377402159),new a(-1694144372,725511199),new a(528734635,-79577749),new a(1541459225,327033209)],c=new a(0,0),D=new a(0,0),B=new a(0,0),s=new a(0,0),d=new a(0,0),g=new a(0,0),y=new a(0,0),b=new a(0,0),m=new a(0,0),v=new a(0,0),x=new a(0,0),S=new a(0,0),_=new a(0,0),U=new a(0,0),j=new a(0,0),T=new a(0,0),M=new a(0,0);for(void 0===t&&(t=[new a(1116352408,-685199838),new a(1899447441,602891725),new a(-1245643825,-330482897),new a(-373957723,-2121671748),new a(961987163,-213338824),new a(1508970993,-1241133031),new a(-1841331548,-1357295717),new a(-1424204075,-630357736),new a(-670586216,-1560083902),new a(310598401,1164996542),new a(607225278,1323610764),new a(1426881987,-704662302),new a(1925078388,-226784913),new a(-2132889090,991336113),new a(-1680079193,633803317),new a(-1046744716,-815192428),new a(-459576895,-1628353838),new a(-272742522,944711139),new a(264347078,-1953704523),new a(604807628,2007800933),new a(770255983,1495990901),new a(1249150122,1856431235),new a(1555081692,-1119749164),new a(1996064986,-2096016459),new a(-1740746414,-295247957),new a(-1473132947,766784016),new a(-1341970488,-1728372417),new a(-1084653625,-1091629340),new a(-958395405,1034457026),new a(-710438585,-1828018395),new a(113926993,-536640913),new a(338241895,168717936),new a(666307205,1188179964),new a(773529912,1546045734),new a(1294757372,1522805485),new a(1396182291,-1651133473),new a(1695183700,-1951439906),new a(1986661051,1014477480),new a(-2117940946,1206759142),new a(-1838011259,344077627),new a(-1564481375,1290863460),new a(-1474664885,-1136513023),new a(-1035236496,-789014639),new a(-949202525,106217008),new a(-778901479,-688958952),new a(-694614492,1432725776),new a(-200395387,1467031594),new a(275423344,851169720),new a(430227734,-1194143544),new a(506948616,1363258195),new a(659060556,-544281703),new a(883997877,-509917016),new a(958139571,-976659869),new a(1322822218,-482243893),new a(1537002063,2003034995),new a(1747873779,-692930397),new a(1955562222,1575990012),new a(2024104815,1125592928),new a(-2067236844,-1578062990),new a(-1933114872,442776044),new a(-1866530822,593698344),new a(-1538233109,-561857047),new a(-1090935817,-1295615723),new a(-965641998,-479046869),new a(-903397682,-366583396),new a(-779700025,566280711),new a(-354779690,-840897762),new a(-176337025,-294727304),new a(116418474,1914138554),new a(174292421,-1563912026),new a(289380356,-1090974290),new a(460393269,320620315),new a(685471733,587496836),new a(852142971,1086792851),new a(1017036298,365543100),new a(1126000580,-1676669620),new a(1288033470,-885112138),new a(1501505948,-60457430),new a(1607167915,987167468),new a(1816402316,1246189591)]),o=0;o<80;o+=1)h[o]=new a(0,0);for(n[e>>5]|=128<<24-(31&e),n[31+(e+128>>10<<5)]=e,u=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),u=(65535&t.h)+(65535&e.h)+(o>>>16),h=(t.h>>>16)+(e.h>>>16)+(u>>>16);n.l=65535&r|o<<16,n.h=65535&u|h<<16}function E(n,t,e,r,o){var u=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l),h=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(u>>>16),i=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(h>>>16),f=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(i>>>16);n.l=65535&u|h<<16,n.h=65535&i|f<<16}function p(n,t,e,r,o,u){var h=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l)+(65535&u.l),i=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(u.l>>>16)+(h>>>16),f=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(65535&u.h)+(i>>>16),c=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(u.h>>>16)+(f>>>16);n.l=65535&h|i<<16,n.h=65535&f|c<<16}this.hex=function(n){return f(o(n))},this.b64=function(n){return s(o(n),e)},this.any=function(n,t){return B(o(n),t)},this.raw=function(n){return o(n)},this.hex_hmac=function(n,t){return f(h(n,t))},this.b64_hmac=function(n,t){return s(h(n,t),e)},this.any_hmac=function(n,t,e){return B(h(n,t),e)},this.vm_test=function(){return"900150983cd24fb0d6963f7d28e17f72"===hex("abc").toLowerCase()},this.setUpperCase=function(n){return"boolean"==typeof n&&n,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],o=[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],c=[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],a=[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 D(n){return A(w(l(n=e?u(n):n),8*n.length))}function C(n,t){n=e?u(n):n,t=e?u(t):t;var r,o,h=l(n),i=Array(16),f=Array(16);for(h.length>16&&(h=w(h,8*n.length)),r=0;r<16;r+=1)i[r]=909522486^h[r],f[r]=1549556828^h[r];return o=w(i.concat(l(t)),512+8*t.length),A(w(f.concat(o),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,u,f,l,D,B,s,C,A,w,d,g,y,b,m=1732584193,v=4023233417,x=2562383102,S=271733878,_=3285377520;for(n[t>>5]|=128<>>9<<4)]=t,l=n.length,f=0;f1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(r,o){n.get(t,e,(function(n){var t=String(n.statusCode)||"",e=/^[23]/.test(t);r(e)})).on("error",(function(n){o(n)}))}))},h=function(n){return u(this.url(),{method:"HEAD"}).then((function(t){return n&&n(null,t),t})).catch((function(t){console.error(t),n&&n(t,null)}))};return function(n){n.Image.prototype.commonsURL=o,n.Image.prototype.exists=h}})); +!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 b85782b5..66032dbf 100644 --- a/plugins/image/builds/wtf-plugin-image.mjs +++ b/plugins/image/builds/wtf-plugin-image.mjs @@ -1,22 +1,6 @@ -/* wtf-plugin-image 0.2.0 MIT */ +/* wtf-plugin-image 0.3.0 MIT */ import https from 'https'; -function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); -} - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function createCommonjsModule(fn, module) { @@ -336,7 +320,7 @@ var hashes = createCommonjsModule(function (module, exports) { * @class Base64 * @constructor */ - Base64: function Base64() { + Base64: function () { // private properties var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', pad = '=', @@ -447,7 +431,7 @@ var hashes = createCommonjsModule(function (module, exports) { * @param {String} str Input String * @return {String} */ - CRC32: function CRC32(str) { + CRC32: function (str) { var crc = 0, x = 0, y = 0, @@ -480,7 +464,7 @@ var hashes = createCommonjsModule(function (module, exports) { * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * See for more infHashes. */ - MD5: function MD5(options) { + MD5: function (options) { /** * Private config properties. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. @@ -737,7 +721,7 @@ var hashes = createCommonjsModule(function (module, exports) { * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * See http://pajhome.org.uk/crypt/md5 for details. */ - SHA1: function SHA1(options) { + SHA1: function (options) { /** * Private config properties. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. @@ -961,15 +945,15 @@ var hashes = createCommonjsModule(function (module, exports) { * See http://pajhome.org.uk/crypt/md5 for details. * Also http://anmar.eu.org/projects/jssha2/ */ - SHA256: function SHA256(options) { + SHA256: function (options) { /** * Private properties configuration variables. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. * @see this.setUpperCase() method * @see this.setPad() method */ - var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, - // hexadecimal output case format. false - lowercase; true - uppercase */ + options && typeof options.uppercase === 'boolean' ? options.uppercase : false; + var // hexadecimal output case format. false - lowercase; true - uppercase */ b64pad = options && typeof options.pad === 'string' ? options.pad : '=', /* base-64 pad character. Default '=' for strict RFC compliance */ @@ -1025,9 +1009,6 @@ var hashes = createCommonjsModule(function (module, exports) { this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } return this; }; @@ -1195,16 +1176,16 @@ var hashes = createCommonjsModule(function (module, exports) { * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * See http://pajhome.org.uk/crypt/md5 for details. */ - SHA512: function SHA512(options) { + SHA512: function (options) { /** * Private properties configuration variables. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. * @see this.setUpperCase() method * @see this.setPad() method */ - var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, + options && typeof options.uppercase === 'boolean' ? options.uppercase : false; - /* hexadecimal output case format. false - lowercase; true - uppercase */ + var /* hexadecimal output case format. false - lowercase; true - uppercase */ b64pad = options && typeof options.pad === 'string' ? options.pad : '=', /* base-64 pad character. Default '=' for strict RFC compliance */ @@ -1260,9 +1241,6 @@ var hashes = createCommonjsModule(function (module, exports) { this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } return this; }; @@ -1535,16 +1513,16 @@ var hashes = createCommonjsModule(function (module, exports) { * See http://pajhome.org.uk/crypt/md5 for details. * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/ */ - RMD160: function RMD160(options) { + RMD160: function (options) { /** * Private properties configuration variables. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. * @see this.setUpperCase() method * @see this.setPad() method */ - var hexcase = options && typeof options.uppercase === 'boolean' ? options.uppercase : false, + options && typeof options.uppercase === 'boolean' ? options.uppercase : false; - /* hexadecimal output case format. false - lowercase; true - uppercase */ + var /* hexadecimal output case format. false - lowercase; true - uppercase */ b64pad = options && typeof options.pad === 'string' ? options.pa : '=', /* base-64 pad character. Default '=' for strict RFC compliance */ @@ -1603,9 +1581,6 @@ var hashes = createCommonjsModule(function (module, exports) { this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } return this; }; @@ -1783,19 +1758,19 @@ var hashes = createCommonjsModule(function (module, exports) { { freeExports = exports; - if (exports && _typeof(commonjsGlobal) === 'object' && commonjsGlobal && commonjsGlobal === commonjsGlobal.global) { + if (exports && typeof commonjsGlobal === 'object' && commonjsGlobal && commonjsGlobal === commonjsGlobal.global) { window = commonjsGlobal; } } - if (typeof undefined$1 === 'function' && _typeof(undefined$1.amd) === 'object' && undefined$1.amd) { + if (typeof undefined$1 === 'function' && typeof undefined$1.amd === 'object' && undefined$1.amd) { // define as an anonymous module, so, through path mapping, it can be aliased undefined$1(function () { return Hashes; }); } else if (freeExports) { // in Node.js or RingoJS v0.8.0+ - if ( module && module.exports === freeExports) { + if (module && module.exports === freeExports) { module.exports = Hashes; } // in Narwhal or RingoJS v0.7.0- else { @@ -1810,10 +1785,10 @@ var hashes = createCommonjsModule(function (module, exports) { }); -var server = 'https://upload.wikimedia.org/wikipedia/commons/'; +const server$1 = 'https://upload.wikimedia.org/wikipedia/commons/'; -var encodeTitle = function encodeTitle(file) { - var title = file.replace(/^(image|file?)\:/i, ''); //titlecase it +const encodeTitle = function (file) { + let title = file.replace(/^(image|file?)\:/i, ''); //titlecase it title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores @@ -1823,35 +1798,34 @@ var encodeTitle = function encodeTitle(file) { //https://commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths.3F -var commonsURL = function commonsURL() { - var file = this.data.file; - var title = encodeTitle(file); - var hash = new hashes.MD5().hex(title); - var path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'; +const commonsURL = function () { + let file = this.data.file; + let title = encodeTitle(file); + let hash = new hashes.MD5().hex(title); + let path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'; title = encodeURIComponent(title); path += title; - return server + path; + return server$1 + path; }; var urlHash = commonsURL; -var request = function request(url) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return new Promise(function (resolve, reject) { - https.get(url, opts, function (resp) { - var status = String(resp.statusCode) || ''; - var bool = /^[23]/.test(status); +const request = function (url, opts = {}) { + return new Promise((resolve, reject) => { + https.get(url, opts, resp => { + let status = String(resp.statusCode) || ''; + let bool = /^[23]/.test(status); resolve(bool); - }).on('error', function (err) { + }).on('error', err => { reject(err); }); }); }; -var server$1 = request; +var server = request; -var imgExists = function imgExists(callback) { - return server$1(this.url(), { +const imgExists = function (callback) { + return server(this.url(), { method: 'HEAD' }).then(function (bool) { //support callback non-promise form @@ -1860,7 +1834,7 @@ var imgExists = function imgExists(callback) { } return bool; - })["catch"](function (e) { + }).catch(e => { console.error(e); if (callback) { @@ -1871,8 +1845,33 @@ var imgExists = function imgExists(callback) { var imgExists_1 = imgExists; -var addMethod = function addMethod(models) { - // add a new method to Image class +// is there a good image of this +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.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-lock.json b/plugins/image/package-lock.json index c3193d28..9b1ccbcf 100644 --- a/plugins/image/package-lock.json +++ b/plugins/image/package-lock.json @@ -1,446 +1,3427 @@ { "name": "wtf-plugin-image", "version": "0.2.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-image", + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "jshashes": "^1.0.8" + }, + "devDependencies": { + "@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", + "rollup-plugin-json": "4.0.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", + "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jshashes": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/jshashes/-/jshashes-1.0.8.tgz", + "integrity": "sha512-btmQZ/w1rj8Lb6nEwvhjM7nBYoj54yaEFo2PWh3RkxZ8qNwuvOxvQYN/JxVuwoMmdIluL+XwYVJ+pEEZoSYybQ==", + "bin": { + "hashes": "bin/hashes" + }, + "engines": { + "node": "*" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "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": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@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.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.9.0", + "@babel/types": "^7.13.0", "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "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.12.11", "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.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.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.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.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.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-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@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.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.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@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.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.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.8.3", - "@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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -452,6 +3433,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3451,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 +3469,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 +3488,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 +3524,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,63 +3935,49 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, @@ -1012,16 +4008,61 @@ "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.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" + } + }, + "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-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==", + "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": { - "object.assign": "^4.1.0" + "@babel/helper-define-polyfill-provider": "^0.1.5" } }, "balanced-match": { @@ -1041,15 +4082,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "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.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1070,10 +4112,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { @@ -1102,6 +4154,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1124,12 +4182,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.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.8.3", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1148,26 +4206,43 @@ "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { + "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.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.4", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "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" + }, + "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 +4270,57 @@ } }, "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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 +4334,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 +4358,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 +4367,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 +4380,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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 }, @@ -1286,11 +4393,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.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", + "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", @@ -1320,6 +4438,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", @@ -1327,9 +4451,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": { @@ -1348,39 +4472,75 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "is-bigint": { + "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.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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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 +4551,27 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, + "is-set": { + "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": { + "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 +4581,31 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 +4613,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,61 +4658,25 @@ "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": { - "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 }, - "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" - } + "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": { "version": "0.25.7", @@ -1534,9 +4703,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 +4715,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "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.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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } }, "object-keys": { "version": "1.1.1", @@ -1581,15 +4743,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 +4763,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 +4775,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 +4812,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,35 +4827,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +4866,15 @@ } }, "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": { - "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" @@ -1782,12 +4907,12 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "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": { @@ -1842,16 +4967,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": { @@ -1870,16 +4994,30 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { "version": "0.5.7", @@ -1888,9 +5026,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", @@ -1920,44 +5058,44 @@ "through": "2" } }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "safe-buffer": "~5.1.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.trim": { + "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", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.2" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimend": { + "version": "1.0.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", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "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==", + "string.prototype.trimstart": { + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -1970,13 +5108,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 +5181,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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.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 } } @@ -2051,6 +5254,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", @@ -2085,11 +5300,57 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "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.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": { + "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.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", + "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" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/image/package.json b/plugins/image/package.json index f4dc6b58..229b7b87 100644 --- a/plugins/image/package.json +++ b/plugins/image/package.json @@ -1,12 +1,16 @@ { "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", "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", @@ -30,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.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", "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.2.2" }, - "licence": "MIT" + "license": "MIT" } 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..3cd6b3b4 100644 --- a/plugins/image/src/index.js +++ b/plugins/image/src/index.js @@ -1,7 +1,9 @@ const commonsURL = require('./url-hash') const imgExists = require('./img-exists') +const mainImage = require('./mainImage') -const addMethod = function(models) { +const addMethod = function (models) { + models.Doc.prototype.mainImage = mainImage // add a new method to Image class models.Image.prototype.commonsURL = commonsURL models.Image.prototype.exists = imgExists diff --git a/plugins/image/src/mainImage.js b/plugins/image/src/mainImage.js new file mode 100644 index 00000000..4152df01 --- /dev/null +++ b/plugins/image/src/mainImage.js @@ -0,0 +1,17 @@ +// is there a good image of this +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 +} +module.exports = mainImage 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/image/tests/image.test.js b/plugins/image/tests/image.test.js index 3836b449..c595fbb7 100644 --- a/plugins/image/tests/image.test.js +++ b/plugins/image/tests/image.test.js @@ -1,13 +1,41 @@ const test = require('tape') const wtf = require('./_lib') +const path = require('path') +const fs = require('fs') + +test('mainImage', function (t) { + let arr = [ + ['toronto', 'https://wikipedia.org/wiki/Special:Redirect/file/Montage_of_Toronto_7.jpg'], + [ + 'United-Kingdom', + 'https://wikipedia.org/wiki/Special:Redirect/file/Flag_of_the_United_Kingdom.svg' + ], + ['Allen-R.-Morris', 'https://wikipedia.org/wiki/Special:Redirect/file/AllenMorrisHeadShot.jpg'], + [ + 'Arts_Club_of_Chicago', + 'https://wikipedia.org/wiki/Special:Redirect/file/20070701_Arts_Club_of_Chicago.JPG' + ], + ['Britt-Morgan', 'https://wikipedia.org/wiki/Special:Redirect/file/Britt_Morgan.jpg'] + // ['', ''] + ] + arr.forEach((a) => { + let abs = path.join(__dirname, `../../../tests/cache/${a[0]}.txt`) + let txt = fs.readFileSync(abs).toString() + let doc = wtf(txt) + let img = doc.mainImage().src() + t.equal(img, a[1], a[0]) + }) + t.end() +}) test('image-methods', function (t) { wtf - .fetch('casa', 'it', { + .fetch('casa', { + lang: 'it', 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/package-lock.json b/plugins/latex/package-lock.json index 9b0d7f0b..035adf4c 100644 --- a/plugins/latex/package-lock.json +++ b/plugins/latex/package-lock.json @@ -1,394 +1,3413 @@ { "name": "wtf-plugin-latex", "version": "0.2.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-latex", + "version": "0.2.0", + "license": "MIT", + "devDependencies": { + "@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", + "rollup-plugin-json": "4.0.0", + "rollup-plugin-node-resolve": "5.2.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", + "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "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": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" } }, "@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.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.9.0", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "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.9.0", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "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.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.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.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.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.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-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@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.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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -400,6 +3419,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3437,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 +3455,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 +3474,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 +3510,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,50 +3921,49 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" + "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" } }, @@ -937,15 +3997,60 @@ "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" } }, + "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", @@ -963,15 +4068,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "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.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -992,10 +4098,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { @@ -1024,6 +4140,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1046,12 +4168,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.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.8.3", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1070,26 +4192,43 @@ "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { + "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.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.4", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "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" + }, + "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 +4256,57 @@ } }, "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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 +4320,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 +4344,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 +4353,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 +4366,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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 }, @@ -1208,11 +4379,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.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", + "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", @@ -1242,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", @@ -1249,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": { @@ -1270,39 +4458,75 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "is-bigint": { + "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.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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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 +4537,27 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, + "is-set": { + "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": { + "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 +4567,31 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 +4599,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,53 +4639,25 @@ "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==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "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" - } + "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": { "version": "0.25.7", @@ -1455,36 +4696,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "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.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.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "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.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -1494,15 +4724,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 +4744,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 +4756,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 +4793,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,35 +4808,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +4847,15 @@ } }, "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": { - "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" @@ -1695,12 +4888,12 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "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": { @@ -1755,16 +4948,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": { @@ -1783,16 +4975,30 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { "version": "0.5.7", @@ -1833,66 +5039,44 @@ "through": "2" } }, - "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" - } - }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "safe-buffer": "~5.1.0" } }, - "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==", + "string.prototype.trim": { + "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.17.5", - "string.prototype.trimstart": "^1.0.0" + "es-abstract": "^1.18.0-next.2" } }, - "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==", + "string.prototype.trimend": { + "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.17.5", - "string.prototype.trimend": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "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==", + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -1905,13 +5089,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 +5162,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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.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 } } @@ -1986,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", @@ -2020,11 +5281,57 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "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.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": { + "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.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", + "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" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/latex/package.json b/plugins/latex/package.json index c26f75da..2405d39c 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", @@ -23,22 +27,21 @@ "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", + "@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", "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.2.2" }, - "licence": "MIT" + "license": "MIT" } 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 cf8202c0..9ce1591b 100644 --- a/plugins/latex/src/02-section.js +++ b/plugins/latex/src/02-section.js @@ -6,72 +6,71 @@ const defaults = { 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' + 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' } + //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'; } - //make a out tablew + + //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 + + //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' } - // 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/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/latex/tests/_lib.js b/plugins/latex/tests/_lib.js index e7c10f86..446cf771 100644 --- a/plugins/latex/tests/_lib.js +++ b/plugins/latex/tests/_lib.js @@ -3,7 +3,7 @@ if (typeof process !== undefined && typeof module !== undefined) { if (process.env.TESTENV === 'prod') { console.log('🧢 - testing production') wtf = require('../../../') - wtf.extend(require(`../`)) + wtf.extend(require(`..`)) } else { wtf = require('../../../src') wtf.extend(require(`../src`)) diff --git a/plugins/latex/tests/latex.test.js b/plugins/latex/tests/latex.test.js index 8ef9edff..3e9968f5 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]`).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') 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/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/package-lock.json b/plugins/markdown/package-lock.json index 75a939f0..86208661 100644 --- a/plugins/markdown/package-lock.json +++ b/plugins/markdown/package-lock.json @@ -1,394 +1,3413 @@ { "name": "wtf-plugin-markdown", "version": "0.2.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-markdown", + "version": "0.2.0", + "license": "MIT", + "devDependencies": { + "@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", + "rollup-plugin-json": "4.0.0", + "rollup-plugin-node-resolve": "5.2.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", + "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "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": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" } }, "@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.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.9.0", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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.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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "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.9.0", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "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.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.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.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.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@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.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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@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.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.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.8.3", - "@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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -400,6 +3419,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3437,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 +3455,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 +3474,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 +3510,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,50 +3921,49 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" + "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" } }, @@ -934,16 +3994,61 @@ "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.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" + } + }, + "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-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==", + "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": { - "object.assign": "^4.1.0" + "@babel/helper-define-polyfill-provider": "^0.1.5" } }, "balanced-match": { @@ -963,15 +4068,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "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.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -992,10 +4098,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { @@ -1024,6 +4140,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1046,12 +4168,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.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.8.3", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1070,26 +4192,43 @@ "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { + "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.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.4", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "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" + }, + "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 +4256,57 @@ } }, "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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 +4320,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 +4344,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 +4353,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 +4366,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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 }, @@ -1208,11 +4379,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.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", + "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", @@ -1242,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", @@ -1249,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": { @@ -1270,39 +4458,75 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "is-bigint": { + "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.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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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 +4537,27 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, + "is-set": { + "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": { + "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 +4567,31 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 +4599,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,61 +4639,25 @@ "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": { - "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 }, - "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" - } + "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": { "version": "0.25.7", @@ -1451,9 +4684,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 +4696,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "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.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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } }, "object-keys": { "version": "1.1.1", @@ -1498,15 +4724,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 +4744,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 +4756,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 +4793,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,35 +4808,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +4847,15 @@ } }, "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": { - "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" @@ -1699,12 +4888,12 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "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": { @@ -1759,16 +4948,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": { @@ -1787,16 +4975,30 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { "version": "0.5.7", @@ -1805,9 +5007,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", @@ -1837,44 +5039,44 @@ "through": "2" } }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "safe-buffer": "~5.1.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.trim": { + "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", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.2" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimend": { + "version": "1.0.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", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "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==", + "string.prototype.trimstart": { + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -1887,13 +5089,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 +5162,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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.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 } } @@ -1968,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", @@ -2002,11 +5281,57 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "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.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": { + "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.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", + "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" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/markdown/package.json b/plugins/markdown/package.json index 4c3a667f..78c68f22 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", @@ -23,22 +27,21 @@ "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", + "@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", "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.2.2" }, - "licence": "MIT" + "license": "MIT" } 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 3e991779..83e895b4 100644 --- a/plugins/markdown/src/02-section.js +++ b/plugins/markdown/src/02-section.js @@ -6,53 +6,59 @@ const defaults = { 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() if (images.length > 0) { - md += images.map(img => img.markdown()).join('\n') + md += images.map((img) => img.markdown()).join('\n') md += '\n' } } - //make a mardown table + + //make a markdown table if (options.tables === true) { 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' } } - //make a mardown bullet-list + + //make a markdown bullet-list 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' } } + //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') } + return md } module.exports = doSection 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..7d1ded91 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.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/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/markdown/tests/_lib.js b/plugins/markdown/tests/_lib.js index e7c10f86..446cf771 100644 --- a/plugins/markdown/tests/_lib.js +++ b/plugins/markdown/tests/_lib.js @@ -3,7 +3,7 @@ if (typeof process !== undefined && typeof module !== undefined) { if (process.env.TESTENV === 'prod') { console.log('🧢 - testing production') wtf = require('../../../') - wtf.extend(require(`../`)) + wtf.extend(require(`..`)) } else { wtf = require('../../../src') wtf.extend(require(`../src`)) 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/builds/wtf-plugin-person.js b/plugins/person/builds/wtf-plugin-person.js index 943da111..19c3cafd 100644 --- a/plugins/person/builds/wtf-plugin-person.js +++ b/plugins/person/builds/wtf-plugin-person.js @@ -1,8 +1,8 @@ -/* 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) : - (global = global || self, global.wtfPerson = factory()); + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfPerson = factory()); }(this, (function () { 'use strict'; // from ./plugins/classify/infobox, April 15 2020 @@ -133,17 +133,17 @@ 'us cabinet official': true }; - var byInfobox = function byInfobox(doc, prop) { - var infoboxes = doc.infoboxes(); + const byInfobox = function (doc, prop) { + let infoboxes = doc.infoboxes(); - for (var i = 0; i < infoboxes.length; i++) { - var inf = infoboxes[i]; - var type = inf.type(); + for (let i = 0; i < infoboxes.length; i++) { + let inf = infoboxes[i]; + let type = inf.type(); type = type.toLowerCase(); type = type.trim(); if (_infoboxes.hasOwnProperty(type)) { - var s = inf.get(prop); + let s = inf.get(prop); if (s) { return s.text(); @@ -156,172 +156,105 @@ var getInfobox = byInfobox; - /* spencermountain/spacetime 6.4.3 Apache 2.0 */ - function createCommonjsModule(fn, module) { - return module = { - exports: {} - }, fn(module, module.exports), module.exports; - } - - function getCjsExportFromNamespace(n) { - return n && n['default'] || n; - } - - var fns = createCommonjsModule(function (module, exports) { - //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html - exports.isLeapYear = function (year) { - return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; - }; // unsurprisingly-nasty `typeof date` call - - - exports.isDate = function (d) { - return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf()); - }; + /* spencermountain/spacetime 6.14.0 Apache 2.0 */ + function _typeof(obj) { + "@babel/helpers - typeof"; - exports.isArray = function (input) { - return Object.prototype.toString.call(input) === '[object Array]'; - }; - - exports.isObject = function (input) { - return Object.prototype.toString.call(input) === '[object Object]'; - }; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } - exports.zeroPad = function (str) { - var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; - var pad = '0'; - str = str + ''; - return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str; - }; + return _typeof(obj); + } - exports.titleCase = function (str) { - if (!str) { - return ''; - } + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } - return str[0].toUpperCase() + str.substr(1); - }; + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } - exports.ordinal = function (i) { - var j = i % 10; - var k = i % 100; + function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; - if (j === 1 && k !== 11) { - return i + 'st'; - } + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); - if (j === 2 && k !== 12) { - return i + 'nd'; + if (i && _arr.length === i) break; } - - if (j === 3 && k !== 13) { - return i + 'rd'; + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; } + } - return i + 'th'; - }; //strip 'st' off '1st'.. - - - exports.toCardinal = function (str) { - str = String(str); - str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1'); - return parseInt(str, 10); - }; //used mostly for cleanup of unit names, like 'months' - - - exports.normalize = function () { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - str = str.toLowerCase().trim(); - str = str.replace(/ies$/, 'y'); //'centuries' - - str = str.replace(/s$/, ''); - str = str.replace(/-/g, ''); + return _arr; + } - if (str === 'day') { - return 'date'; - } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } - return str; - }; + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; - exports.getEpoch = function (tmp) { - //support epoch - if (typeof tmp === 'number') { - return tmp; - } //suport date objects + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; + } - if (exports.isDate(tmp)) { - return tmp.getTime(); - } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } - if (tmp.epoch) { - return tmp.epoch; - } + var MSEC_IN_HOUR = 60 * 60 * 1000; //convert our local date syntax a javascript UTC date - return null; - }; //make sure this input is a spacetime obj + var toUtc = function toUtc(dstChange, offset, year) { + var _dstChange$split = dstChange.split('/'), + _dstChange$split2 = _slicedToArray(_dstChange$split, 2), + month = _dstChange$split2[0], + rest = _dstChange$split2[1]; + var _rest$split = rest.split(':'), + _rest$split2 = _slicedToArray(_rest$split, 2), + day = _rest$split2[0], + hour = _rest$split2[1]; - exports.beADate = function (d, s) { - if (exports.isObject(d) === false) { - return s.clone().set(d); - } + return Date.UTC(year, month - 1, day, hour) - offset * MSEC_IN_HOUR; + }; // compare epoch with dst change events (in utc) - return d; - }; - exports.formatTimezone = function (offset) { - var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var absOffset = Math.abs(offset); - var sign = offset > 0 ? '+' : '-'; - return "".concat(sign).concat(exports.zeroPad(absOffset)).concat(delimiter, "00"); - }; - }); - var fns_1 = fns.isLeapYear; - var fns_2 = fns.isDate; - var fns_3 = fns.isArray; - var fns_4 = fns.isObject; - var fns_5 = fns.zeroPad; - var fns_6 = fns.titleCase; - var fns_7 = fns.ordinal; - var fns_8 = fns.toCardinal; - var fns_9 = fns.normalize; - var fns_10 = fns.getEpoch; - var fns_11 = fns.beADate; - var fns_12 = fns.formatTimezone; - var zeroPad = fns.zeroPad; - - var serialize = function serialize(d) { - return zeroPad(d.getMonth() + 1) + '/' + zeroPad(d.getDate()) + ':' + zeroPad(d.getHours()); - }; // a timezone will begin with a specific offset in january - // then some will switch to something else between november-march - - - var shouldChange = function shouldChange(epoch, start, end, defaultOffset) { - //note: this has a cray order-of-operations issue - //we can't get the date, without knowing the timezone, and vice-versa - //it's possible that we can miss a dst-change by a few hours. - var d = new Date(epoch); //(try to mediate this a little?) - - var bias = d.getTimezoneOffset() || 0; - var shift = bias + defaultOffset * 60; //in minutes - - shift = shift * 60 * 1000; //in ms - - d = new Date(epoch + shift); - var current = serialize(d); //eg. is it after ~november? - - if (current >= start) { - //eg. is it before ~march~ too? - if (current < end) { - return true; - } - } + var inSummerTime = function inSummerTime(epoch, start, end, summerOffset, winterOffset) { + var year = new Date(epoch).getUTCFullYear(); + var startUtc = toUtc(start, winterOffset, year); + var endUtc = toUtc(end, summerOffset, year); // simple number comparison now - return false; + return epoch >= startUtc && epoch < endUtc; }; - var summerTime = shouldChange; // it reproduces some things in ./index.js, but speeds up spacetime considerably + var summerTime = inSummerTime; // it reproduces some things in ./index.js, but speeds up spacetime considerably var quickOffset = function quickOffset(s) { var zones = s.timezones; @@ -345,7 +278,7 @@ } var split = obj.dst.split('->'); - var inSummer = summerTime(s.epoch, split[0], split[1], jul); + var inSummer = summerTime(s.epoch, split[0], split[1], jul, dec); if (inSummer === true) { return jul; @@ -358,96 +291,96 @@ var _build = { "9|s": "2/dili,2/jayapura", "9|n": "2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau", - "9.5|s|04/05:03->10/04:02": "4/adelaide,4/broken_hill,4/south,4/yancowinna", + "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": "12/casey,2/kuala_lumpur,2/makassar,2/singapore,4/perth,4/west", - "8|n|03/25:03->09/29:23": "2/ulan_bator", - "8|n": "2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar", + "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/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane", + "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/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/thimbu,2/thimphu,2/urumqi,9/chagos", - "6.5|n": "2/rangoon,2/yangon,9/cocos", + "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/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives", - "5.75|n": "2/kathmandu,2/katmandu", + "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/21:00->09/20:24": "2/tehran", + "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/29:03->10/25:04": "2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye", - "3|n|03/29:02->10/25:03": "8/chisinau,8/tiraspol", - "3|n|03/29:00->10/24:24": "2/beirut", - "3|n|03/27:02->10/25:02": "2/jerusalem,2/tel_aviv", - "3|n|03/27:00->10/31:01": "2/gaza,2/hebron", - "3|n|03/27:00->10/30:01": "2/amman", - "3|n|03/27:00->10/29:24": "2/damascus", - "3|n": "0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte", - "2|s|03/29:02->10/25:02": "12/troll", + "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/29:02->10/25:03": "0/ceuta,arctic/longyearbyen,3/jan_mayen,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", + "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|04/02:01->09/03:03": "0/windhoek", - "1|s": "0/kinshasa,0/luanda", - "1|n|04/19:03->05/24:02": "0/casablanca,0/el_aaiun", - "1|n|03/29:01->10/25:02": "3/canary,3/faeroe,3/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london", - "1|n": "0/algiers,0/bangui,0/brazzaville,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis", + "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/05:04->09/27:03": "11/apia", + "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/05:03->09/27:02": "12/mcmurdo,12/south_pole,11/auckland", - "12|s|01/12:03->11/08:02": "11/fiji", + "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/05:03->04/05:02": "11/chatham", - "11|s": "12/macquarie,11/bougainville", - "11|n": "2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape", - "11.5|n|04/05:03->10/04:02": "11/norfolk", - "10|s|04/05:03->10/04:02": "4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria", - "10|s": "12/dumontdurville,4/brisbane,4/lindeman,4/queensland", - "10|n": "2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap", - "10.5|s|04/05:01->10/04:02": "4/lhi,4/lord_howe", - "0|n|03/29:00->10/25: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,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu", - "-9|n|03/08:02->11/01:02": "1/adak,1/atka", + "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/08:02->11/01:02": "1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat", + "-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/08:02->11/01:02": "1/dawson,1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/whitehorse,6/pacific,6/yukon,10/bajanorte", - "-7|n": "1/creston,1/dawson_creek,1/hermosillo,1/phoenix", - "-6|s|04/04:22->09/05:22": "7/easterisland,11/easter", - "-6|n|04/05:02->10/25:02": "1/chihuahua,1/mazatlan,10/bajasur", - "-6|n|03/08:02->11/01:02": "1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/shiprock,1/yellowknife,6/mountain", - "-6|n": "1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos", - "-5|s": "1/lima,1/rio_branco,5/acre", - "-5|n|04/05:02->10/25:02": "1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general", + "-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|03/08:02->11/01:02": "1/chicago,1/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central", - "-5|n": "1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre", + "-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/04:24->09/06:00": "1/santiago,7/continental", - "-4|s|03/21:24->10/04:00": "1/asuncion", + "-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|03/08:02->11/01:02": "1/detroit,1/fort_wayne,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,6/eastern", - "-4|n|03/08:00->11/01:01": "1/havana", "-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/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east", - "-3|n|03/08:02->11/01: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/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem", - "-2|s": "5/denoronha", - "-2|n|03/28:22->10/24:23": "1/godthab", - "-2|n|03/08:02->11/01:02": "1/miquelon", - "-2|n": "1/noronha,3/south_georgia", - "-2.5|n|03/08:02->11/01:02": "1/st_johns,6/newfoundland", + "-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", - "-10|n": "11/honolulu,11/johnston,11/rarotonga,11/tahiti" + "-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" }; var _build$1 = /*#__PURE__*/Object.freeze({ @@ -457,7 +390,18 @@ var _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc']; - var data = getCjsExportFromNamespace(_build$1); + + function createCommonjsModule(fn, module) { + return module = { + exports: {} + }, fn(module, module.exports), module.exports; + } + + function getCjsExportFromNamespace$1(n) { + return n && n['default'] || n; + } + + var data = getCjsExportFromNamespace$1(_build$1); var all = {}; Object.keys(data).forEach(function (k) { var split = k.split('|'); @@ -481,7 +425,7 @@ }); all['utc'] = { offset: 0, - hem: 'n' //(sorry) + hem: 'n' //default to northern hemisphere - (sorry!) }; //add etc/gmt+n @@ -505,9 +449,7 @@ offset: i * -1, hem: 'n' }; - } // console.log(all) - // console.log(Object.keys(all).length) - + } var unpack = all; //find the implicit iana code for this machine. //safely query the Intl object @@ -556,7 +498,7 @@ var toIana = function toIana(num) { num = Number(num); - if (num > -13 && num < 13) { + if (num >= -13 && num <= 13) { num = num * -1; //it's opposite! num = (num > 0 ? '+' : '') + num; //add plus sign @@ -567,7 +509,7 @@ return null; }; - var parseOffset = function parseOffset(tz) { + var parseOffset$1 = function parseOffset(tz) { // '+5hrs' var m = tz.match(isOffset); @@ -600,7 +542,7 @@ return null; }; - var parseOffset_1 = parseOffset; + var parseOffset_1$1 = parseOffset$1; var local = guessTz_1(); //add all the city names by themselves var cities = Object.keys(unpack).reduce(function (h, k) { @@ -626,13 +568,16 @@ return local; } - var tz = str.trim(); - var split = str.split('/'); //support long timezones like 'America/Argentina/Rio_Gallegos' - - if (split.length > 2 && zones.hasOwnProperty(tz) === false) { - tz = split[0] + '/' + split[1]; + if (typeof str !== 'string') { + console.error("Timezone must be a string - recieved: '", str, "'\n"); } + var tz = str.trim(); // let split = str.split('/') + //support long timezones like 'America/Argentina/Rio_Gallegos' + // if (split.length > 2 && zones.hasOwnProperty(tz) === false) { + // tz = split[0] + '/' + split[1] + // } + tz = tz.toLowerCase(); if (zones.hasOwnProperty(tz) === true) { @@ -653,7 +598,7 @@ if (/[0-9]/.test(tz) === true) { - var id = parseOffset_1(tz); + var id = parseOffset_1$1(tz); if (id) { return id; @@ -697,12 +642,20 @@ var diff = n - current; s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative + // console.log(unit, diff) - if (unit === 'day' && Math.abs(diff) > 28) { + if (unit === 'day') { + // s.epoch -= ms.minute //but don't push it over a month - if (n < 28) { + if (Math.abs(diff) > 28 && n < 28) { s.epoch += milliseconds.hour; } + } // 1st time: oops, did we change previous unit? revert it. + + + if (previous !== null && startUnit !== s.d[previous]()) { + // console.warn('spacetime warning: missed setting ' + unit) + s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...? } //repair it if we've gone too far or something //(go by half-steps, just in case) @@ -715,19 +668,17 @@ while (s.d[fn]() > n) { s.epoch -= halfStep; - } //oops, did we change previous unit? revert it. + } // 2nd time: did we change previous unit? revert it. if (previous !== null && startUnit !== s.d[previous]()) { // console.warn('spacetime warning: missed setting ' + unit) - s.epoch = original; // i mean, but make it close... - - s.epoch += milliseconds[unit] * diff * 0.89; // i guess? + s.epoch = original; } }; //find the desired date by a increment/check while loop - var units = { + var units$3 = { year: { valid: function valid(n) { return n > -4000 && n < 4000; @@ -757,7 +708,7 @@ if (startUnit !== s.d.getFullYear()) { s.epoch = original; - } //incriment by day + } //increment by day while (s.d.getMonth() < n) { @@ -814,7 +765,7 @@ }; var walkTo = function walkTo(s, wants) { - var keys = Object.keys(units); + var keys = Object.keys(units$3); var old = s.clone(); for (var i = 0; i < keys.length; i++) { @@ -830,7 +781,7 @@ } //make-sure it's valid - if (!units[k].valid(n)) { + if (!units$3[k].valid(n)) { s.epoch = null; if (s.silent === false) { @@ -838,10 +789,9 @@ } return; - } // console.log(k, n) - + } - units[k].walkTo(s, n); + units$3[k].walkTo(s, n); } return; @@ -868,11 +818,11 @@ return obj; } - var months = { - "short": function _short() { + var months$1 = { + "short": function short() { return shortMonths; }, - "long": function _long() { + "long": function long() { return longMonths; }, mapping: function mapping() { @@ -884,13 +834,13 @@ } }; //pull-apart ISO offsets, like "+0100" - var parseOffset$1 = function parseOffset(s, offset) { + var parseOffset = function parseOffset(s, offset) { if (!offset) { return s; } //this is a fancy-move - if (offset === 'Z') { + if (offset === 'Z' || offset === 'z') { offset = '+0000'; } // according to ISO8601, tz could be hh:mm, hhmm or hh // so need few more steps before the calculation. @@ -942,7 +892,7 @@ return s; }; - var parseOffset_1$1 = parseOffset$1; + var parseOffset_1 = parseOffset; var parseTime = function parseTime(s) { var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; @@ -965,6 +915,11 @@ return s.startOf('day'); } + if (arr[4] > 999) { + // fix overflow issue with milliseconds, if input is longer than standard (e.g. 2017-08-06T09:00:00.123456Z) + arr[4] = parseInt("".concat(arr[4]).substring(0, 3), 10); + } + s = s.hour(h); s = s.minute(m); s = s.seconds(arr[3] || 0); @@ -1015,8 +970,142 @@ 30, // November - 30 days 31 // December - 31 days ]; - var monthLengths_1 = monthLengths; - var isLeapYear = fns.isLeapYear; //given a month, return whether day number exists in it + var monthLengths_1 = monthLengths; // 28 - feb + + var fns = createCommonjsModule(function (module, exports) { + //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html + exports.isLeapYear = function (year) { + return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; + }; // unsurprisingly-nasty `typeof date` call + + + exports.isDate = function (d) { + return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf()); + }; + + exports.isArray = function (input) { + return Object.prototype.toString.call(input) === '[object Array]'; + }; + + exports.isObject = function (input) { + return Object.prototype.toString.call(input) === '[object Object]'; + }; + + exports.isBoolean = function (input) { + return Object.prototype.toString.call(input) === '[object Boolean]'; + }; + + exports.zeroPad = function (str) { + var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; + var pad = '0'; + str = str + ''; + return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str; + }; + + exports.titleCase = function (str) { + if (!str) { + return ''; + } + + return str[0].toUpperCase() + str.substr(1); + }; + + exports.ordinal = function (i) { + var j = i % 10; + var 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'; + }; //strip 'st' off '1st'.. + + + exports.toCardinal = function (str) { + str = String(str); + str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1'); + return parseInt(str, 10); + }; //used mostly for cleanup of unit names, like 'months' + + + exports.normalize = function () { + var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + str = str.toLowerCase().trim(); + str = str.replace(/ies$/, 'y'); //'centuries' + + str = str.replace(/s$/, ''); + str = str.replace(/-/g, ''); + + if (str === 'day' || str === 'days') { + return 'date'; + } + + if (str === 'min' || str === 'mins') { + return 'minute'; + } + + return str; + }; + + exports.getEpoch = function (tmp) { + //support epoch + if (typeof tmp === 'number') { + return tmp; + } //suport date objects + + + if (exports.isDate(tmp)) { + return tmp.getTime(); + } + + if (tmp.epoch) { + return tmp.epoch; + } + + return null; + }; //make sure this input is a spacetime obj + + + exports.beADate = function (d, s) { + if (exports.isObject(d) === false) { + return s.clone().set(d); + } + + return d; + }; + + exports.formatTimezone = function (offset) { + var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + var sign = offset > 0 ? '+' : '-'; + var absOffset = Math.abs(offset); + var hours = exports.zeroPad(parseInt('' + absOffset, 10)); + var minutes = exports.zeroPad(absOffset % 1 * 60); + return "".concat(sign).concat(hours).concat(delimiter).concat(minutes); + }; + }); + fns.isLeapYear; + fns.isDate; + fns.isArray; + fns.isObject; + fns.isBoolean; + fns.zeroPad; + fns.titleCase; + fns.ordinal; + fns.toCardinal; + fns.normalize; + fns.getEpoch; + fns.beADate; + fns.formatTimezone; + var isLeapYear$2 = fns.isLeapYear; //given a month, return whether day number exists in it var hasDate = function hasDate(obj) { //invalid values @@ -1026,7 +1115,7 @@ if (obj.month === 1) { - if (isLeapYear(obj.year) && obj.date <= 29) { + if (isLeapYear$2(obj.year) && obj.date <= 29) { return true; } else { return obj.date <= 28; @@ -1044,21 +1133,25 @@ }; var hasDate_1 = hasDate; - var months$1 = months.mapping(); + var months = months$1.mapping(); var parseYear = function parseYear() { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; //support '18 -> 2018 - // str = str.replace(/^'([0-9]{2})/, '20$1') - // str = str.replace('([0-9]+) ?b\.?c\.?$', '-$1') + var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + var today = arguments.length > 1 ? arguments[1] : undefined; + var year = parseInt(str.trim(), 10); // use a given year from options.today + + if (!year && today) { + year = today.year; + } // fallback to this year + - var year = parseInt(str.trim(), 10); year = year || new Date().getFullYear(); return year; }; var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700 { - reg: /^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/, + reg: /^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i, parse: function parse(s, arr, givenTz, options) { var month = parseInt(arr[2], 10) - 1; var obj = { @@ -1072,14 +1165,14 @@ return s; } - parseOffset_1$1(s, arr[5]); + parseOffset_1(s, arr[5]); walk_1(s, obj); s = parseTime_1(s, arr[4]); return s; } }, //iso "2015-03-25" or "2015/03/25" or "2015/03/25 12:26:14 PM" { - 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, + 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 parse(s, arr) { var obj = { year: arr[1], @@ -1087,38 +1180,80 @@ date: parseInt(arr[3], 10) }; - if (obj.month >= 12) { - //support yyyy/dd/mm (weird, but ok) - obj.date = parseInt(arr[2], 10); - obj.month = parseInt(arr[3], 10) - 1; - } - + if (obj.month >= 12) { + //support yyyy/dd/mm (weird, but ok) + obj.date = parseInt(arr[2], 10); + obj.month = parseInt(arr[3], 10) - 1; + } + + if (hasDate_1(obj) === false) { + s.epoch = null; + return s; + } + + walk_1(s, obj); + s = parseTime_1(s, arr[4]); + return s; + } + }, //mm/dd/yyyy - uk/canada "6/28/2019, 12:26:14 PM" + { + 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 parse(s, arr) { + var month = parseInt(arr[1], 10) - 1; + var date = parseInt(arr[2], 10); //support dd/mm/yyy + + if (s.british || month >= 12) { + date = parseInt(arr[1], 10); + month = parseInt(arr[2], 10) - 1; + } + + var year = parseYear(arr[3], s._today) || new Date().getFullYear(); + var obj = { + year: year, + month: month, + date: date + }; + + if (hasDate_1(obj) === false) { + s.epoch = null; + return s; + } + + walk_1(s, obj); + s = parseTime_1(s, arr[4]); + return s; + } + }, // '2012-06' last attempt at iso-like format + { + reg: /^([0-9]{4})[\-\/]([0-9]{2})$/i, + parse: function parse(s, arr, givenTz, options) { + var month = parseInt(arr[2], 10) - 1; + var obj = { + year: arr[1], + month: month, + date: 1 + }; + if (hasDate_1(obj) === false) { s.epoch = null; return s; } + parseOffset_1(s, arr[5]); walk_1(s, obj); s = parseTime_1(s, arr[4]); return s; } - }, //mm/dd/yyyy - uk/canada "6/28/2019, 12:26:14 PM" + }, //common british format - "25-feb-2015" { - 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, + reg: /^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i, parse: function parse(s, arr) { - var month = parseInt(arr[1], 10) - 1; - var date = parseInt(arr[2], 10); //support dd/mm/yyy - - if (s.british || month >= 12) { - date = parseInt(arr[1], 10); - month = parseInt(arr[2], 10) - 1; - } - - var year = arr[3] || new Date().getFullYear(); + var month = months[arr[2].toLowerCase()]; + var year = parseYear(arr[3], s._today); var obj = { year: year, month: month, - date: date + date: fns.toCardinal(arr[1] || '') }; if (hasDate_1(obj) === false) { @@ -1130,16 +1265,16 @@ s = parseTime_1(s, arr[4]); return s; } - }, //common british format - "25-feb-2015" + }, //alt short format - "feb-25-2015" { - reg: /^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i, + reg: /^([a-z]+)[\-\/]([0-9]{1,2})[\-\/]?([0-9]{4})?$/i, parse: function parse(s, arr) { - var month = months$1[arr[2].toLowerCase()]; - var year = parseYear(arr[3]); + var month = months[arr[1].toLowerCase()]; + var year = parseYear(arr[3], s._today); var obj = { year: year, month: month, - date: fns.toCardinal(arr[1] || '') + date: fns.toCardinal(arr[2] || '') }; if (hasDate_1(obj) === false) { @@ -1156,8 +1291,8 @@ { reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i, parse: function parse(s, arr) { - var month = months$1[arr[1].toLowerCase()]; - var year = parseYear(arr[3]); + var month = months[arr[1].toLowerCase()]; + var year = parseYear(arr[3], s._today); var obj = { year: year, month: month, @@ -1177,12 +1312,12 @@ { reg: /^([a-z]+) ([0-9]{4})$/i, parse: function parse(s, arr) { - var month = months$1[arr[1].toLowerCase()]; - var year = parseYear(arr[2]); + var month = months[arr[1].toLowerCase()]; + var year = parseYear(arr[2], s._today); var obj = { year: year, month: month, - date: 1 + date: s._today.date || 1 }; if (hasDate_1(obj) === false) { @@ -1198,13 +1333,13 @@ { 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 parse(s, arr) { - var month = months$1[arr[2].toLowerCase()]; + var month = months[arr[2].toLowerCase()]; if (!month) { return null; } - var year = parseYear(arr[3]); + var year = parseYear(arr[3], s._today); var obj = { year: year, month: month, @@ -1221,6 +1356,36 @@ return s; } }, { + // 'q2 2002' + reg: /^(q[0-9])( of)?( [0-9]{4})?/i, + parse: function parse(s, arr) { + var quarter = arr[1] || ''; + s = s.quarter(quarter); + var year = arr[3] || ''; + + if (year) { + year = year.trim(); + s = s.year(year); + } + + return s; + } + }, { + // 'summer 2002' + reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i, + parse: function parse(s, arr) { + var season = arr[1] || ''; + s = s.season(season); + var year = arr[3] || ''; + + if (year) { + year = year.trim(); + s = s.year(year); + } + + return s; + } + }, { // '200bc' reg: /^[0-9,]+ ?b\.?c\.?$/i, parse: function parse(s, arr) { @@ -1274,12 +1439,18 @@ // '1992' reg: /^[0-9]{4}( ?a\.?d\.?)?$/i, parse: function parse(s, arr) { - var year = parseYear(arr[0]); - var d = new Date(); + var today = s._today; + var year = parseYear(arr[0], today); + var d = new Date(); // using today's date, but a new month is awkward. + + if (today.month && !today.date) { + today.date = 1; + } + var obj = { year: year, - month: d.getMonth(), - date: d.getDate() + month: today.month || d.getMonth(), + date: today.date || d.getDate() }; if (hasDate_1(obj) === false) { @@ -1292,41 +1463,51 @@ return s; } }]; - var strParse = strFmt; + var strParse = strFmt; // pull in 'today' data for the baseline moment + + var getNow = function getNow(s) { + s.epoch = Date.now(); + Object.keys(s._today || {}).forEach(function (k) { + if (typeof s[k] === 'function') { + s = s[k](s._today[k]); + } + }); + return s; + }; + var dates = { now: function now(s) { - s.epoch = Date.now(); - return s; - }, - tonight: function tonight(s) { - s.epoch = Date.now(); - s = s.hour(18); - return s; + return getNow(s); }, today: function today(s) { - s.epoch = Date.now(); + return getNow(s); + }, + tonight: function tonight(s) { + s = getNow(s); + s = s.hour(18); //6pm + return s; }, tomorrow: function tomorrow(s) { - s.epoch = Date.now(); + s = getNow(s); s = s.add(1, 'day'); s = s.startOf('day'); return s; }, yesterday: function yesterday(s) { - s.epoch = Date.now(); + s = getNow(s); s = s.subtract(1, 'day'); s = s.startOf('day'); return s; }, christmas: function christmas(s) { - var year = new Date().getFullYear(); + var year = getNow(s).year(); s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25 return s; }, 'new years': function newYears(s) { - var year = new Date().getFullYear(); + var year = getNow(s).year(); s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31 return s; @@ -1353,11 +1534,15 @@ date: 1 }; //support [2016, 03, 01] format - var handleArray = function handleArray(s, arr) { + var handleArray = function handleArray(s, arr, today) { + if (arr.length === 0) { + return s; + } + var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; for (var i = 0; i < order.length; i++) { - var num = arr[i] || defaults[order[i]] || 0; + var num = arr[i] || today[order[i]] || defaults[order[i]] || 0; s = s[order[i]](num); } @@ -1365,8 +1550,13 @@ }; //support {year:2016, month:3} format - var handleObject = function handleObject(s, obj) { - obj = Object.assign({}, defaults, obj); + var handleObject = function handleObject(s, obj, today) { + // if obj is empty, do nothing + if (Object.keys(obj).length === 0) { + return s; + } + + obj = Object.assign({}, defaults, today, obj); var keys = Object.keys(obj); for (var i = 0; i < keys.length; i++) { @@ -1381,7 +1571,7 @@ continue; } - var num = obj[unit] || defaults[unit] || 0; + var num = obj[unit] || today[unit] || defaults[unit] || 0; s = s[unit](num); } @@ -1390,7 +1580,8 @@ var parseInput = function parseInput(s, input, givenTz) { - //if we've been given a epoch number, it's easy + var today = s._today || defaults; //if we've been given a epoch number, it's easy + if (typeof input === 'number') { if (input > 0 && input < minimumEpoch && s.silent === false) { console.warn(' - Warning: You are setting the date to January 1970.'); @@ -1402,9 +1593,18 @@ } //set tmp time - s.epoch = Date.now(); + s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists + + if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) { + var res = handleObject(s, today, defaults); + + if (res.isValid()) { + s.epoch = res.epoch; + } + } // null input means 'now' + - if (input === null || input === undefined) { + if (input === null || input === undefined || input === '') { return s; //k, we're good. } //support input of Date() object @@ -1416,7 +1616,7 @@ if (fns.isArray(input) === true) { - s = handleArray(s, input); + s = handleArray(s, input, today); return s; } //support {year:2016, month:3} format @@ -1429,7 +1629,7 @@ return s; } - s = handleObject(s, input); + s = handleObject(s, input, today); return s; } //input as a string.. @@ -1453,10 +1653,11 @@ var m = input.match(strParse[i].reg); if (m) { - var res = strParse[i].parse(s, m, givenTz); + // console.log(strFmt[i].reg) + var _res = strParse[i].parse(s, m, givenTz); - if (res !== null) { - return res; + if (_res !== null && _res.isValid()) { + return _res; } } } @@ -1473,60 +1674,63 @@ var shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; var longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; var days = { - "short": function _short2() { + "short": function short() { return shortDays; }, - "long": function _long2() { + "long": function long() { return longDays; }, set: function set(i18n) { shortDays = i18n["short"] || shortDays; longDays = i18n["long"] || longDays; + }, + aliases: { + mo: 1, + tu: 2, + we: 3, + th: 4, + fr: 5, + sa: 6, + su: 7, + tues: 2, + weds: 3, + wedn: 3, + thur: 4, + thurs: 4 + } + }; + var titleCaseEnabled = true; + var caseFormat = { + useTitleCase: function useTitleCase() { + return titleCaseEnabled; + }, + set: function set(useTitleCase) { + titleCaseEnabled = useTitleCase; } }; // it's kind of nuts how involved this is // "+01:00", "+0100", or simply "+01" var isoOffset = function isoOffset(s) { var offset = s.timezone().current.offset; - var isNegative = offset < 0; - var minute = '00'; //handle 5.5 → '5:30' - - if (Math.abs(offset % 1) === 0.5) { - minute = '30'; - - if (offset >= 0) { - offset = Math.floor(offset); - } else { - offset = Math.ceil(offset); - } - } - - if (isNegative) { - //handle negative sign - offset *= -1; - offset = fns.zeroPad(offset, 2); - offset = '-' + offset; - } else { - offset = fns.zeroPad(offset, 2); - offset = '+' + offset; - } + return !offset ? 'Z' : fns.formatTimezone(offset, ':'); + }; - offset = offset + ':' + minute; //'Z' means 00 + var _offset = isoOffset; - if (offset === '+00:00') { - offset = 'Z'; + var applyCaseFormat = function applyCaseFormat(str) { + if (caseFormat.useTitleCase()) { + return fns.titleCase(str); } - return offset; + return str; }; - var _offset = isoOffset; var format = { day: function day(s) { - return fns.titleCase(s.dayName()); + return applyCaseFormat(s.dayName()); }, 'day-short': function dayShort(s) { - return fns.titleCase(days["short"]()[s.day()]); + return applyCaseFormat(days["short"]()[s.day()]); }, 'day-number': function dayNumber(s) { return s.day(); @@ -1547,10 +1751,10 @@ return fns.zeroPad(s.date()); }, month: function month(s) { - return fns.titleCase(s.monthName()); + return applyCaseFormat(s.monthName()); }, 'month-short': function monthShort(s) { - return fns.titleCase(months["short"]()[s.month()]); + return applyCaseFormat(months$1["short"]()[s.month()]); }, 'month-number': function monthNumber(s) { return s.month(); @@ -1691,16 +1895,22 @@ }, //i made these up nice: function nice(s) { - return "".concat(months["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); + return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); + }, + 'nice-24': function nice24(s) { + return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); }, 'nice-year': function niceYear(s) { - return "".concat(months["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.year()); + return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.year()); }, 'nice-day': function niceDay(s) { - return "".concat(days["short"]()[s.day()], " ").concat(fns.titleCase(months["short"]()[s.month()]), " ").concat(fns.ordinal(s.date())); + return "".concat(days["short"]()[s.day()], " ").concat(applyCaseFormat(months$1["short"]()[s.month()]), " ").concat(fns.ordinal(s.date())); }, 'nice-full': function niceFull(s) { - return "".concat(s.dayName(), " ").concat(fns.titleCase(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); + return "".concat(s.dayName(), " ").concat(applyCaseFormat(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); + }, + 'nice-full-24': function niceFull24(s) { + return "".concat(s.dayName(), " ").concat(applyCaseFormat(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); } }; //aliases @@ -1717,6 +1927,7 @@ 'month-iso': 'iso-month', 'year-iso': 'iso-year', 'nice-short': 'nice', + 'nice-short-24': 'nice-24', mdy: 'numeric-us', dmy: 'numeric-uk', ymd: 'numeric', @@ -1746,7 +1957,7 @@ out = String(out); if (str !== 'ampm') { - out = fns.titleCase(out); + out = applyCaseFormat(out); } } @@ -1760,7 +1971,13 @@ fmt = fmt.toLowerCase().trim(); if (format.hasOwnProperty(fmt)) { - return String(format[fmt](s) || ''); + var _out = String(format[fmt](s)); + + if (fmt !== 'ampm') { + return applyCaseFormat(_out); + } + + return _out; } return ''; @@ -1982,38 +2199,76 @@ addAlias('K', 'h', 2); addAlias('S', 's', 2); addAlias('v', 'z', 4); - addAlias('V', 'Z', 4); + addAlias('V', 'Z', 4); // support unix-style escaping with ' character + + var escapeChars = function escapeChars(arr) { + for (var i = 0; i < arr.length; i += 1) { + if (arr[i] === "'") { + // greedy-search for next apostrophe + for (var o = i + 1; o < arr.length; o += 1) { + if (arr[o]) { + arr[i] += arr[o]; + } - var unixFmt = function unixFmt(s, str) { - var chars = str.split(''); //combine consecutive chars, like 'yyyy' as one. + if (arr[o] === "'") { + arr[o] = null; + break; + } + + arr[o] = null; + } + } + } + + return arr.filter(function (ch) { + return ch; + }); + }; //combine consecutive chars, like 'yyyy' as one. - var arr = [chars[0]]; - var quoteOn = false; - for (var i = 1; i < chars.length; i += 1) { - //support quoted substrings - if (chars[i] === "'") { - quoteOn = !quoteOn; //support '', meaning one tick + var combineRepeated = function combineRepeated(arr) { + for (var i = 0; i < arr.length; i += 1) { + var c = arr[i]; // greedy-forward - if (quoteOn === true && chars[i + 1] && chars[i + 1] === "'") { - quoteOn = true; + for (var o = i + 1; o < arr.length; o += 1) { + if (arr[o] === c) { + arr[i] += arr[o]; + arr[o] = null; } else { - continue; + break; } - } //merge it with the last one + } + } // '' means one apostrophe - if (quoteOn === true || chars[i] === arr[arr.length - 1][0]) { - arr[arr.length - 1] += chars[i]; - } else { - arr.push(chars[i]); + arr = arr.filter(function (ch) { + return ch; + }); + arr = arr.map(function (str) { + if (str === "''") { + str = "'"; } - } + return str; + }); + return arr; + }; + + var unixFmt = function unixFmt(s, str) { + var arr = str.split(''); // support character escaping + + arr = escapeChars(arr); //combine 'yyyy' as string. + + arr = combineRepeated(arr); return arr.reduce(function (txt, c) { if (mapping[c] !== undefined) { txt += mapping[c](s) || ''; } else { + // 'unescape' + if (/^'.{1,}'$/.test(c)) { + c = c.replace(/'/g, ''); + } + txt += c; } @@ -2022,7 +2277,7 @@ }; var unixFmt_1 = unixFmt; - var units$1 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute']; + var units$2 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute']; var doUnit = function doUnit(s, k) { var start = s.clone().startOf(k); @@ -2040,7 +2295,7 @@ } var obj = {}; - units$1.forEach(function (k) { + units$2.forEach(function (k) { obj[k] = doUnit(s, k); }); return obj; @@ -2120,7 +2375,7 @@ // ... then ms-math for any very-small units - var diff = function diff(a, b) { + var diff$1 = function diff(a, b) { // an hour is always the same # of milliseconds // so these units can be 'pre-calculated' var msDiff = b.epoch - a.epoch; @@ -2150,7 +2405,7 @@ return obj; }; - var waterfall = diff; + var waterfall = diff$1; var reverseDiff = function reverseDiff(obj) { Object.keys(obj).forEach(function (k) { @@ -2162,7 +2417,7 @@ // '1 year' means 366 days in a leap year - var main = function main(a, b, unit) { + var main$1 = function main(a, b, unit) { b = fns.beADate(b, a); //reverse values, if necessary var reversed = false; @@ -2200,7 +2455,7 @@ return obj; }; - var diff$1 = main; //our conceptual 'break-points' for each unit + var diff = main$1; //our conceptual 'break-points' for each unit var qualifiers = { months: { @@ -2363,7 +2618,7 @@ [6, 1], //july 1 [9, 1] //oct 1 ]; - var units$2 = { + var units$1 = { minute: function minute(s) { walk_1(s, { second: 0, @@ -2508,19 +2763,19 @@ return s; } }; - units$2.date = units$2.day; + units$1.date = units$1.day; var startOf = function startOf(a, unit) { var s = a.clone(); unit = fns.normalize(unit); - if (units$2[unit]) { - return units$2[unit](s); + if (units$1[unit]) { + return units$1[unit](s); } if (unit === 'summer' || unit === 'winter') { s = s.season(unit); - return units$2.season(s); + return units$1.season(s); } return s; @@ -2531,10 +2786,12 @@ var s = a.clone(); unit = fns.normalize(unit); - if (units$2[unit]) { - s = units$2[unit](s); + if (units$1[unit]) { + // go to beginning, go to next one, step back 1ms + s = units$1[unit](s); // startof + s = s.add(1, unit); - s = s.subtract(1, 'milliseconds'); + s = s.subtract(1, 'millisecond'); return s; } @@ -2682,7 +2939,7 @@ if (result.hasDst === false) { result.current.offset = summer; result.current.isDST = false; - } else if (summerTime(s.epoch, result.change.start, result.change.back, summer) === true) { + } else if (summerTime(s.epoch, result.change.start, result.change.back, summer, winter) === true) { result.current.offset = summer; result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north } else { @@ -2695,12 +2952,12 @@ }; var timezone_1 = timezone; - var units$3 = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API) + var units = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API) - var methods = { + var methods$4 = { set: function set(input$1, tz) { var s = this.clone(); - s = input(s, input$1); + s = input(s, input$1, null); if (tz) { this.tz = find(tz); @@ -2745,8 +3002,8 @@ nearest: function nearest(unit) { return nearest_1(this, unit); }, - diff: function diff(d, unit) { - return diff$1(this, d, unit); + diff: function diff$1(d, unit) { + return diff(this, d, unit); }, since: function since(d) { if (!d) { @@ -2773,7 +3030,7 @@ return !isNaN(this.d.getTime()); }, //travel to this timezone - "goto": function _goto(tz) { + "goto": function goto(tz) { var s = this.clone(); s.tz = find(tz, s.timezones); //science! @@ -2781,6 +3038,13 @@ }, //get each week/month/day between a -> b every: function every(unit, to) { + // allow swapping these params: + if (_typeof(unit) === 'object' && typeof to === 'string') { + var tmp = to; + to = unit; + unit = tmp; + } + return every_1(this, unit, to); }, isAwake: function isAwake() { @@ -2809,7 +3073,7 @@ json: function json() { var _this = this; - return units$3.reduce(function (h, unit) { + return units.reduce(function (h, unit) { h[unit] = _this[unit](); return h; }, {}); @@ -2859,10 +3123,12 @@ } }; // aliases - methods.inDST = methods.isDST; - methods.round = methods.nearest; - methods.each = methods.every; - var methods_1 = methods; //these methods wrap around them. + methods$4.inDST = methods$4.isDST; + methods$4.round = methods$4.nearest; + methods$4.each = methods$4.every; + var methods_1 = methods$4; //these methods wrap around them. + + var isLeapYear$1 = fns.isLeapYear; var validate = function validate(n) { //handle number as a string @@ -2873,11 +3139,11 @@ return n; }; - var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond + var order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond var confirm = function confirm(s, tmp, unit) { - var n = order.indexOf(unit); - var arr = order.slice(n, order.length); + var n = order$1.indexOf(unit); + var arr = order$1.slice(n, order$1.length); for (var i = 0; i < arr.length; i++) { var want = tmp[arr[i]](); @@ -2906,7 +3172,14 @@ var old = s.clone(); var diff = s.minute() - n; var shift = diff * milliseconds.minute; - s.epoch -= shift; + s.epoch -= shift; // check against a screw-up + // if (old.hour() != s.hour()) { + // walkTo(old, { + // minute: n + // }) + // return old.epoch + // } + confirm(s, old, 'second'); return s.epoch; }, @@ -2922,7 +3195,23 @@ var old = s.clone(); var diff = s.hour() - n; var shift = diff * milliseconds.hour; - s.epoch -= shift; + s.epoch -= shift; // oops, did we change the day? + + if (s.date() !== old.date()) { + s = old.clone(); + + if (diff > 1) { + diff -= 1; + } + + if (diff < 1) { + diff += 1; + } + + shift = diff * milliseconds.hour; + s.epoch -= shift; + } + walk_1(s, { hour: n }); @@ -2931,17 +3220,19 @@ }, //support setting time by '4:25pm' - this isn't very-well developed.. time: function time(s, str) { - var m = str.match(/([0-9]{1,2}):([0-9]{1,2})(am|pm)?/); + var m = str.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/); if (!m) { //fallback to support just '2am' - m = str.match(/([0-9]{1,2})(am|pm)/); + m = str.match(/([0-9]{1,2}) ?(am|pm)/); if (!m) { return s.epoch; } m.splice(2, 0, '0'); //add implicit 0 minutes + + m.splice(3, 0, ''); //add implicit seconds } var h24 = false; @@ -2954,20 +3245,24 @@ if (h24 === false) { - if (m[3] === 'am' && hour === 12) { + if (m[4] === 'am' && hour === 12) { //12am is midnight hour = 0; } - if (m[3] === 'pm' && hour < 12) { + if (m[4] === 'pm' && hour < 12) { //12pm is noon hour += 12; } - } + } // handle seconds + + m[3] = m[3] || ''; + m[3] = m[3].replace(/:/, ''); + var sec = parseInt(m[3], 10) || 0; s = s.hour(hour); s = s.minute(minute); - s = s.second(0); + s = s.second(sec); s = s.millisecond(0); return s.epoch; }, @@ -2975,7 +3270,12 @@ n = validate(n); //avoid setting february 31st if (n > 28) { - var max = monthLengths_1[s.month()]; + var month = s.month(); + var max = monthLengths_1[month]; // support leap day in february + + if (month === 1 && n === 29 && isLeapYear$1(s.year())) { + max = 29; + } if (n > max) { n = max; @@ -2995,7 +3295,7 @@ //this one's tricky month: function month(s, n) { if (typeof n === 'string') { - n = months.mapping()[n.toLowerCase()]; + n = months$1.mapping()[n.toLowerCase()]; } n = validate(n); //don't go past december @@ -3022,6 +3322,20 @@ return s.epoch; }, year: function year(s, n) { + // support '97 + if (typeof n === 'string' && /^'[0-9]{2}$/.test(n)) { + n = n.replace(/'/, '').trim(); + n = Number(n); // '89 is 1989 + + if (n > 30) { + //change this in 10y + n = 1900 + n; + } else { + // '12 is 2012 + n = 2000 + n; + } + } + n = validate(n); walk_1(s, { year: n @@ -3045,7 +3359,7 @@ return s.epoch; } }; - var methods$1 = { + var methods$3 = { millisecond: function millisecond(num) { if (num !== undefined) { var s = this.clone(); @@ -3145,6 +3459,7 @@ time: function time(str) { if (str !== undefined) { var s = this.clone(); + str = str.toLowerCase().trim(); s.epoch = set.time(s, str); return s; } @@ -3239,13 +3554,18 @@ return this.format('iso'); } }; - var _01Time = methods$1; + var _01Time = methods$3; var methods$2 = { // # day in the month date: function date(num) { if (num !== undefined) { var s = this.clone(); - s.epoch = set.date(s, num); + num = parseInt(num, 10); + + if (num) { + s.epoch = set.date(s, num); + } + return s; } @@ -3262,17 +3582,22 @@ if (typeof input === 'string') { input = input.toLowerCase(); - want = days["short"]().indexOf(input); - if (want === -1) { - want = days["long"]().indexOf(input); + if (days.aliases.hasOwnProperty(input)) { + want = days.aliases[input]; + } else { + want = days["short"]().indexOf(input); + + if (want === -1) { + want = days["long"]().indexOf(input); + } } } //move approx var day = this.d.getDay(); var diff = day - want; - var s = this.subtract(diff * 24, 'hours'); //tighten it back up + var s = this.subtract(diff, 'days'); //tighten it back up walk_1(s, { hour: original.hour(), @@ -3311,7 +3636,7 @@ return s; }; - var methods$3 = { + var methods$1 = { // day 0-366 dayOfYear: function dayOfYear(num) { if (num !== undefined) { @@ -3348,9 +3673,11 @@ s = s.month(0); s = s.date(1); s = s.day('monday'); - s = clearMinutes(s); //don't go into last-year + s = clearMinutes(s); //first week starts first Thurs in Jan + // so mon dec 28th is 1st week + // so mon dec 29th is not the week - if (s.monthName() === 'december') { + if (s.monthName() === 'december' && s.date() >= 28) { s = s.add(1, 'week'); } @@ -3367,7 +3694,7 @@ tmp = clearMinutes(tmp); tmp = tmp.day('monday'); //don't go into last-year - if (tmp.monthName() === 'december') { + if (tmp.monthName() === 'december' && tmp.date() >= 28) { tmp = tmp.add(1, 'week'); } // is first monday the 1st? @@ -3391,7 +3718,7 @@ tmp.epoch += milliseconds.week * skipWeeks; i += skipWeeks; - for (; i < 52; i++) { + for (; i <= 52; i++) { if (tmp.epoch > thisOne) { return i + toAdd; } @@ -3404,7 +3731,7 @@ //'january' monthName: function monthName(input) { if (input === undefined) { - return months["long"]()[this.month()]; + return months$1["long"]()[this.month()]; } var s = this.clone(); @@ -3622,60 +3949,38 @@ return num; } }; - var _03Year = methods$3; - var methods$4 = Object.assign({}, _01Time, _02Date, _03Year); //aliases - - methods$4.milliseconds = methods$4.millisecond; - methods$4.seconds = methods$4.second; - methods$4.minutes = methods$4.minute; - methods$4.hours = methods$4.hour; - methods$4.hour24 = methods$4.hour; - methods$4.h12 = methods$4.hour12; - methods$4.h24 = methods$4.hour24; - methods$4.days = methods$4.day; - - var addMethods = function addMethods(Space) { + var _03Year = methods$1; + var methods = Object.assign({}, _01Time, _02Date, _03Year); //aliases + + methods.milliseconds = methods.millisecond; + methods.seconds = methods.second; + methods.minutes = methods.minute; + methods.hours = methods.hour; + methods.hour24 = methods.hour; + methods.h12 = methods.hour12; + methods.h24 = methods.hour24; + methods.days = methods.day; + + var addMethods$4 = function addMethods(Space) { //hook the methods into prototype - Object.keys(methods$4).forEach(function (k) { - Space.prototype[k] = methods$4[k]; + Object.keys(methods).forEach(function (k) { + Space.prototype[k] = methods[k]; }); }; - var query = addMethods; - var order$1 = ['millisecond', 'second', 'minute', 'hour', 'date', 'month']; - var keep = { - second: order$1.slice(0, 1), - minute: order$1.slice(0, 2), - quarterhour: order$1.slice(0, 2), - hour: order$1.slice(0, 3), - date: order$1.slice(0, 4), - month: order$1.slice(0, 4), - quarter: order$1.slice(0, 4), - season: order$1.slice(0, 4), - year: order$1, - decade: order$1, - century: order$1 - }; - keep.week = keep.hour; - keep.season = keep.date; - keep.quarter = keep.date; // Units need to be dst adjuested + var query = addMethods$4; + var isLeapYear = fns.isLeapYear; - var dstAwareUnits = { - year: true, - quarter: true, - season: true, - month: true, - week: true, - day: true - }; - var keepDate = { - month: true, - quarter: true, - season: true, - year: true - }; //month is the only thing we 'model/compute' + var getMonthLength = function getMonthLength(month, year) { + if (month === 1 && isLeapYear(year)) { + return 29; + } + + return monthLengths_1[month]; + }; //month is the one thing we 'model/compute' //- because ms-shifting can be off by enough + var rollMonth = function rollMonth(want, old) { //increment year if (want.month > 0) { @@ -3697,10 +4002,97 @@ } } + return want; + }; // briefly support day=-2 (this does not need to be perfect.) + + + var rollDaysDown = function rollDaysDown(want, old, sum) { + want.year = old.year(); + want.month = old.month(); + var date = old.date(); + want.date = date - Math.abs(sum); + + while (want.date < 1) { + want.month -= 1; + + if (want.month < 0) { + want.month = 11; + want.year -= 1; + } + + var max = getMonthLength(want.month, want.year); + want.date += max; + } + + return want; + }; // briefly support day=33 (this does not need to be perfect.) + + + var rollDaysUp = function rollDaysUp(want, old, sum) { + var year = old.year(); + var month = old.month(); + var max = getMonthLength(month, year); + + while (sum > max) { + sum -= max; + month += 1; + + if (month >= 12) { + month -= 12; + year += 1; + } + + max = getMonthLength(month, year); + } + + want.month = month; + want.date = sum; return want; }; - var addMethods$1 = function addMethods(SpaceTime) { + var _model = { + months: rollMonth, + days: rollDaysUp, + daysBack: rollDaysDown + }; // but briefly: + // millisecond-math, and some post-processing covers most-things + // we 'model' the calendar here only a little bit + // and that usually works-out... + + var order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month']; + var keep = { + second: order.slice(0, 1), + minute: order.slice(0, 2), + quarterhour: order.slice(0, 2), + hour: order.slice(0, 3), + date: order.slice(0, 4), + month: order.slice(0, 4), + quarter: order.slice(0, 4), + season: order.slice(0, 4), + year: order, + decade: order, + century: order + }; + keep.week = keep.hour; + keep.season = keep.date; + keep.quarter = keep.date; // Units need to be dst adjuested + + var dstAwareUnits = { + year: true, + quarter: true, + season: true, + month: true, + week: true, + day: true + }; + var keepDate = { + month: true, + quarter: true, + season: true, + year: true + }; + + var addMethods$3 = function addMethods(SpaceTime) { SpaceTime.prototype.add = function (num, unit) { var s = this.clone(); @@ -3709,16 +4101,26 @@ } var old = this.clone(); - unit = fns.normalize(unit); //move forward by the estimated milliseconds (rough) + unit = fns.normalize(unit); + + if (unit === 'millisecond') { + s.epoch += num; + return s; + } // support 'fortnight' alias + + + if (unit === 'fortnight') { + num *= 2; + unit = 'week'; + } //move forward by the estimated milliseconds (rough) + if (milliseconds[unit]) { s.epoch += milliseconds[unit] * num; } else if (unit === 'week') { s.epoch += milliseconds.day * (num * 7); } else if (unit === 'quarter' || unit === 'season') { - s.epoch += milliseconds.month * (num * 4); - } else if (unit === 'season') { - s.epoch += milliseconds.month * (num * 4); + s.epoch += milliseconds.month * (num * 3); } else if (unit === 'quarterhour') { s.epoch += milliseconds.minute * 15 * num; } //now ensure our milliseconds/etc are in-line @@ -3741,7 +4143,7 @@ if (unit === 'month') { want.month = old.month() + num; //month is the one unit we 'model' directly - want = rollMonth(want, old); + want = _model.months(want, old); } //support coercing a week, too @@ -3753,24 +4155,54 @@ } } //support 25-hour day-changes on dst-changes else if (unit === 'date') { - //specify a naive date number, if it's easy to do... - var _sum = old.date() + num; - - if (_sum <= 28 && _sum > 1) { - want.date = _sum; - } //or if we haven't moved at all.. - else if (num !== 0 && old.isSame(s, 'day')) { - want.date = old.date() + num; + if (num < 0) { + want = _model.daysBack(want, old, num); + } else { + //specify a naive date number, if it's easy to do... + var _sum = old.date() + num; // ok, model this one too + + + want = _model.days(want, old, _sum); + } //manually punt it if we haven't moved at all.. + + + if (num !== 0 && old.isSame(s, 'day')) { + want.date = old.date() + num; + } + } // ensure a quarter is 3 months over + else if (unit === 'quarter') { + want.month = old.month() + num * 3; + want.year = old.year(); // handle rollover + + if (want.month < 0) { + var years = Math.floor(want.month / 12); + var remainder = want.month + Math.abs(years) * 12; + want.month = remainder; + want.year += years; + } else if (want.month >= 12) { + var _years = Math.floor(want.month / 12); + + want.month = want.month % 12; + want.year += _years; } - } //ensure year has changed (leap-years) - else if (unit === 'year' && s.year() === old.year()) { - s.epoch += milliseconds.week; - } //these are easier - else if (unit === 'decade') { - want.year = s.year() + 10; - } else if (unit === 'century') { - want.year = s.year() + 100; - } //keep current date, unless the month doesn't have it. + + want.date = old.date(); + } //ensure year has changed (leap-years) + else if (unit === 'year') { + var wantYear = old.year() + num; + var haveYear = s.year(); + + if (haveYear < wantYear) { + s.epoch += milliseconds.day; + } else if (haveYear > wantYear) { + s.epoch += milliseconds.day; + } + } //these are easier + else if (unit === 'decade') { + want.year = s.year() + 10; + } else if (unit === 'century') { + want.year = s.year() + 100; + } //keep current date, unless the month doesn't have it. if (keepDate[unit]) { @@ -3782,7 +4214,10 @@ } } - walk_1(s, want); + if (Object.keys(want).length > 1) { + walk_1(s, want); + } + return s; }; //subtract is only add *-1 @@ -3797,7 +4232,7 @@ SpaceTime.prototype.plus = SpaceTime.prototype.add; }; - var add = addMethods$1; //make a string, for easy comparison between dates + var add = addMethods$3; //make a string, for easy comparison between dates var print = { millisecond: function millisecond(s) { @@ -3832,10 +4267,18 @@ var addMethods$2 = function addMethods(SpaceTime) { SpaceTime.prototype.isSame = function (b, unit) { + var tzAware = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var a = this; if (!unit) { return null; + } // support swapped params + + + if (typeof b === 'string' && _typeof(unit) === 'object') { + var tmp = b; + b = unit; + unit = tmp; } if (typeof b === 'string' || typeof b === 'number') { @@ -3843,7 +4286,12 @@ } //support 'seconds' aswell as 'second' - unit = unit.replace(/s$/, ''); + unit = unit.replace(/s$/, ''); // make them the same timezone for proper comparison + + if (tzAware === true && a.tz !== b.tz) { + b = b.clone(); + b.tz = a.tz; + } if (print[unit]) { return print[unit](a) === print[unit](b); @@ -3855,7 +4303,7 @@ var same = addMethods$2; - var addMethods$3 = function addMethods(SpaceTime) { + var addMethods$1 = function addMethods(SpaceTime) { var methods = { isAfter: function isAfter(d) { d = fns.beADate(d, this); @@ -3916,9 +4364,9 @@ }); }; - var compare = addMethods$3; + var compare = addMethods$1; - var addMethods$4 = function addMethods(SpaceTime) { + var addMethods = function addMethods(SpaceTime) { var methods = { i18n: function i18n(data) { //change the day names @@ -3928,7 +4376,12 @@ if (fns.isObject(data.months)) { - months.set(data.months); + months$1.set(data.months); + } // change the the display style of the month / day names + + + if (fns.isBoolean(data.useTitleCase)) { + caseFormat.set(data.useTitleCase); } } }; //hook them into proto @@ -3938,7 +4391,7 @@ }); }; - var i18n = addMethods$4; + var i18n = addMethods; var timezones = unpack; //fake timezone-support, for fakers (es5 class) var SpaceTime = function SpaceTime(input$1, tz) { @@ -3956,6 +4409,13 @@ if (options.weekStart !== undefined) { this._weekStart = options.weekStart; + } // the reference today date object, (for testing) + + + this._today = {}; + + if (options.today !== undefined) { + this._today = options.today; } //add getter/setters @@ -3987,10 +4447,8 @@ } }); //parse the various formats - if (input$1 !== undefined || input$1 === null) { - var tmp = input(this, input$1, tz); - this.epoch = tmp.epoch; - } + var tmp = input(this, input$1, tz); + this.epoch = tmp.epoch; }; //(add instance methods to prototype) @@ -4001,7 +4459,8 @@ SpaceTime.prototype.clone = function () { return new SpaceTime(this.epoch, this.tz, { silent: this.silent, - weekStart: this._weekStart + weekStart: this._weekStart, + today: this._today }); }; //return native date object at the same epoch @@ -4016,11 +4475,11 @@ same(SpaceTime); compare(SpaceTime); i18n(SpaceTime); - var spacetime = SpaceTime; + var spacetime$1 = SpaceTime; var whereIts = function whereIts(a, b) { - var start = new spacetime(null); - var end = new spacetime(null); + var start = new spacetime$1(null); + var end = new spacetime$1(null); start = start.time(a); //if b is undefined, use as 'within one hour' if (b) { @@ -4036,7 +4495,7 @@ return false; } - var m = new spacetime(null, tz); + var m = new spacetime$1(null, tz); var hour = m.hour(); //do 'calendar-compare' not real-time-compare if (hour >= startHour && hour <= endHour) { @@ -4058,66 +4517,97 @@ }; var whereIts_1 = whereIts; - var _version = '6.4.3'; + var _version = '6.14.0'; + + var main = function main(input, tz, options) { + return new spacetime$1(input, tz, options); + }; // set all properties of a given 'today' object - var main$1 = function main(input, tz, options) { - return new spacetime(input, tz, options); + + var setToday = function setToday(s) { + var today = s._today || {}; + Object.keys(today).forEach(function (k) { + s = s[k](today[k]); + }); + return s; }; //some helper functions on the main method - main$1.now = function (tz, options) { - return new spacetime(new Date().getTime(), tz, options); + main.now = function (tz, options) { + var s = new spacetime$1(new Date().getTime(), tz, options); + s = setToday(s); + return s; }; - main$1.today = function (tz, options) { - var s = new spacetime(new Date().getTime(), tz, options); + main.today = function (tz, options) { + var s = new spacetime$1(new Date().getTime(), tz, options); + s = setToday(s); return s.startOf('day'); }; - main$1.tomorrow = function (tz, options) { - var s = new spacetime(new Date().getTime(), tz, options); + main.tomorrow = function (tz, options) { + var s = new spacetime$1(new Date().getTime(), tz, options); + s = setToday(s); return s.add(1, 'day').startOf('day'); }; - main$1.yesterday = function (tz, options) { - var s = new spacetime(new Date().getTime(), tz, options); + main.yesterday = function (tz, options) { + var s = new spacetime$1(new Date().getTime(), tz, options); + s = setToday(s); return s.subtract(1, 'day').startOf('day'); }; - main$1.extend = function (obj) { + main.extend = function (obj) { Object.keys(obj).forEach(function (k) { - spacetime.prototype[k] = obj[k]; + spacetime$1.prototype[k] = obj[k]; }); return this; + }; + + main.timezones = function () { + var s = new spacetime$1(); + return s.timezones; + }; + + main.max = function (tz, options) { + var s = new spacetime$1(null, tz, options); + s.epoch = 8640000000000000; + return s; + }; + + main.min = function (tz, options) { + var s = new spacetime$1(null, tz, options); + s.epoch = -8640000000000000; + return s; }; //find tz by time - main$1.whereIts = whereIts_1; - main$1.version = _version; //aliases: + main.whereIts = whereIts_1; + main.version = _version; //aliases: - main$1.plugin = main$1.extend; - var src = main$1; + main.plugin = main.extend; + var src$1 = main; - var spacetime$1 = /*#__PURE__*/Object.freeze({ + var spacetime$2 = /*#__PURE__*/Object.freeze({ __proto__: null, - 'default': src + 'default': src$1 }); - function getCjsExportFromNamespace$1 (n) { + function getCjsExportFromNamespace (n) { return n && n['default'] || n; } - var spacetime$2 = getCjsExportFromNamespace$1(spacetime$1); + var spacetime = getCjsExportFromNamespace(spacetime$2); - var parseSentence = function parseSentence(doc) { - var s = doc.sentences(0); + const parseSentence = function (doc) { + let s = doc.sentence(); if (!s) { return null; } - var txt = s.text() || ''; - var paren = txt.match(/\(.*\)/); + let txt = s.text() || ''; + let paren = txt.match(/\(.*\)/); if (!paren || !paren[0]) { return null; @@ -4127,10 +4617,8 @@ txt = txt.trim(); txt = txt.replace(/^\(/, ''); txt = txt.replace(/\)$/, ''); - var split = txt.split(/ – /); - split = split.filter(function (str) { - return str; - }); // got birth/death info + let split = txt.split(/ – /); + split = split.filter(str => str); // got birth/death info if (split[0] && split[1] && split.length === 2) { return { @@ -4141,8 +4629,8 @@ if (split[0]) { - var str = split[0].replace(/^(born|ne) (c\.)?/, ''); - var d = spacetime$2(str); + let str = split[0].replace(/^(born|ne) (c\.)?/, ''); + let d = spacetime(str); if (d.isValid()) { return { @@ -4156,14 +4644,14 @@ var getSentence = parseSentence; - var byCategory = function byCategory(doc) { - var cats = doc.categories(); + const byCategory$2 = function (doc) { + let cats = doc.categories(); - for (var i = 0; i < cats.length; i += 1) { - var m = cats[i].match(/([0-9]{4}) births/); + for (let i = 0; i < cats.length; i += 1) { + let m = cats[i].match(/([0-9]{4}) births/); if (m && m[1]) { - var year = parseInt(m[1], 10); + let year = parseInt(m[1], 10); if (year && year > 1000) { return year; @@ -4174,9 +4662,9 @@ return null; }; - var byCategory_1 = byCategory; + var byCategory_1$1 = byCategory$2; - var parseDate = function parseDate(str) { + const parseDate = function (str) { if (!str) { return null; } // remove parentheses @@ -4192,7 +4680,7 @@ } // parse the full date - var s = spacetime$2(str); + let s = spacetime(str); return { year: s.year(), month: s.month(), @@ -4202,8 +4690,8 @@ var parseDate_1 = parseDate; - var birthDate = function birthDate(doc) { - var res = getInfobox(doc, 'birth_date'); + const birthDate = function (doc) { + let res = getInfobox(doc, 'birth_date'); if (res) { return parseDate_1(res); @@ -4217,7 +4705,7 @@ } // try to get year from 'Category:1955 births' - var year = byCategory_1(doc); + let year = byCategory_1$1(doc); if (year) { return { @@ -4230,8 +4718,8 @@ var birthDate_1 = birthDate; - var birthPlace = function birthPlace(doc) { - var res = getInfobox(doc, 'birth_place'); + const birthPlace = function (doc) { + let res = getInfobox(doc, 'birth_place'); if (res) { return res; @@ -4242,7 +4730,7 @@ var birthPlace_1 = birthPlace; - var aliveCats = { + const aliveCats = { 'Living people': true, 'Year of birth missing (living people)': true, 'Date of birth missing (living people)': true, @@ -4250,7 +4738,7 @@ 'Active politicians': true, 'Biography articles of living people': true }; - var didDie = { + const didDie = { 'Dead people': true, 'Date of death missing': true, 'Date of death unknown': true, @@ -4285,19 +4773,15 @@ 'Deaths by drowning‎': true }; - var byCat = function byCat(doc) { - var cats = doc.categories(); //confirmed alive categories + const byCat = function (doc) { + let cats = doc.categories(); //confirmed alive categories - if (cats.find(function (c) { - return aliveCats.hasOwnProperty(c); - })) { + if (cats.find(c => aliveCats.hasOwnProperty(c))) { return true; } //confirmed death categories - if (cats.find(function (c) { - return didDie.hasOwnProperty(c); - })) { + if (cats.find(c => didDie.hasOwnProperty(c))) { return false; } @@ -4309,7 +4793,7 @@ // blp = biography of living persons // {{WikiProject Biography}} (with living=yes parameter) // {{WikiProject banner shell}} (with blp=y parameter) - var isAlive = { + const isAlive$1 = { blp: true, 'blp unsourced': true, 'blp unsourced section': true, @@ -4326,7 +4810,7 @@ activepol: true, 'current person': true }; - var isDead = { + const isDead = { 'recent death': true, 'recent death presumed': true, 'recent death confirmed': true, @@ -4337,14 +4821,14 @@ memorial: true }; - var byTemplate = function byTemplate(doc) { - var templates = doc.templates(); + const byTemplate = function (doc) { + let templates = doc.templates().map(tmpl => tmpl.json()); - for (var i = 0; i < templates.length; i++) { - var title = templates[i].template || ''; + for (let i = 0; i < templates.length; i++) { + let title = templates[i].template || ''; title = title.toLowerCase().trim(); - if (isAlive.hasOwnProperty(title)) { + if (isAlive$1.hasOwnProperty(title)) { return true; } @@ -4354,10 +4838,11 @@ } // `{{WikiProject Biography|living=yes|activepol=yes}}` - var bio = doc.template('WikiProject Biography'); + 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; } @@ -4372,40 +4857,40 @@ var byTemplate_1 = byTemplate; - var d = new Date(); - var minYear = d.getFullYear() - 105; + let d = new Date(); + const minYear = d.getFullYear() - 105; - var isAlive$1 = function isAlive(doc) { + const isAlive = function (doc) { // if we have a death date - var death = doc.deathDate(); + let death = doc.deathDate(); if (death) { return false; } // if we have a death place - var deathPlace = doc.deathPlace(); + let deathPlace = doc.deathPlace(); if (deathPlace) { return false; } // does it have a good category? - var fromCat = byCategory$1(doc); + let fromCat = byCategory$1(doc); if (fromCat === true || fromCat === false) { return fromCat; } // does it have a good template? - var fromTemplate = byTemplate_1(doc); + let fromTemplate = byTemplate_1(doc); if (fromTemplate === true || fromTemplate === false) { return fromTemplate; } // were they born in 1900? - var birth = doc.birthDate(); + let birth = doc.birthDate(); if (birth && birth.year && birth.year < minYear) { return true; @@ -4414,16 +4899,16 @@ return null; }; - var isAlive_1 = isAlive$1; + var isAlive_1 = isAlive; - var byCategory$2 = function byCategory(doc) { - var cats = doc.categories(); + const byCategory = function (doc) { + let cats = doc.categories(); - for (var i = 0; i < cats.length; i += 1) { - var m = cats[i].match(/([0-9]{4}) deaths/); + for (let i = 0; i < cats.length; i += 1) { + let m = cats[i].match(/([0-9]{4}) deaths/); if (m && m[1]) { - var year = parseInt(m[1], 10); + let year = parseInt(m[1], 10); if (year && year > 1000) { return year; @@ -4434,10 +4919,10 @@ return null; }; - var byCategory_1$1 = byCategory$2; + var byCategory_1 = byCategory; - var deathDate = function deathDate(doc) { - var res = getInfobox(doc, 'death_date'); + const deathDate = function (doc) { + let res = getInfobox(doc, 'death_date'); if (res) { return parseDate_1(res); @@ -4451,7 +4936,7 @@ } // try to get year from 'Category:1955 deaths' - var year = byCategory_1$1(doc); + let year = byCategory_1(doc); if (year) { return { @@ -4464,8 +4949,8 @@ var deathDate_1 = deathDate; - var deathPlace = function deathPlace(doc) { - var res = getInfobox(doc, 'death_place'); + const deathPlace = function (doc) { + let res = getInfobox(doc, 'death_place'); if (res) { return res; @@ -4476,8 +4961,8 @@ var deathPlace_1 = deathPlace; - var getNationality = function getNationality(doc) { - var res = getInfobox(doc, 'nationality'); + const getNationality = function (doc) { + let res = getInfobox(doc, 'nationality'); if (res) { return res; @@ -4488,7 +4973,7 @@ var nationality = getNationality; - var addMethod = function addMethod(models) { + const addMethod = function (models) { models.Doc.prototype.birthDate = function () { return birthDate_1(this); }; @@ -4514,9 +4999,9 @@ }; }; - var src$1 = addMethod; + var src = addMethod; - return src$1; + return src; }))); //# sourceMappingURL=wtf-plugin-person.js.map diff --git a/plugins/person/builds/wtf-plugin-person.js.map b/plugins/person/builds/wtf-plugin-person.js.map index e7c7fea7..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\r\n// https://en.wikipedia.org/wiki/Category:People_and_person_infobox_templates\r\nmodule.exports = {\r\n actor: true,\r\n adult_biography: true,\r\n afl_biography: true,\r\n alpine_ski_racer: true,\r\n archbishop: true,\r\n architect: true,\r\n artist: true,\r\n athlete: true,\r\n baseball_biography: true,\r\n basketball_biography: true,\r\n boxer: true,\r\n canadianmp: true,\r\n cfl_player: true,\r\n chef: true,\r\n chess_player: true,\r\n christian_leader: true,\r\n college_coach: true,\r\n college_football_player: true,\r\n comedian: true,\r\n comics_creator: true,\r\n cricketer: true,\r\n criminal: true,\r\n cyclist: true,\r\n economist: true,\r\n engineer: true,\r\n fashion_designer: true,\r\n field_hockey_player: true,\r\n figure_skater: true,\r\n football_biography: true,\r\n gaa_player: true,\r\n golfer: true,\r\n governor: true,\r\n gridiron_football_person: true,\r\n gymnast: true,\r\n handball_biography: true,\r\n hindu_leader: true,\r\n horseracing_personality: true,\r\n ice_hockey_player: true,\r\n indian_politician: true,\r\n judge: true,\r\n lacrosse_player: true,\r\n martial_artist: true,\r\n mass_murderer: true,\r\n medical_person: true,\r\n military_person: true,\r\n minister: true,\r\n mlb_player: true,\r\n model: true,\r\n monarch: true,\r\n mp: true,\r\n nascar_driver: true,\r\n nba_biography: true,\r\n nfl_biography: true,\r\n nfl_player: true,\r\n officeholder: true,\r\n person: true,\r\n philosopher: true,\r\n police_officer: true,\r\n politician: true,\r\n 'politician_(general)': true,\r\n presenter: true,\r\n president: true,\r\n professional_wrestler: true,\r\n racing_driver: true,\r\n religious_biography: true,\r\n roman_emperor: true,\r\n royalty: true,\r\n rugby_biography: true,\r\n rugby_league_biography: true,\r\n saint: true,\r\n scholar: true,\r\n scientist: true,\r\n skier: true,\r\n sportsperson: true,\r\n squash_player: true,\r\n state_representative: true,\r\n state_senator: true,\r\n swimmer: true,\r\n tennis_biography: true,\r\n volleyball_biography: true,\r\n volleyball_player: true,\r\n wrc_driver: true,\r\n writer: true,\r\n 'hockey team player': true,\r\n 'snooker player': true,\r\n bishop: true,\r\n 'football biography': true,\r\n 'military person': true,\r\n 'baseball biography': true,\r\n 'ice hockey player': true,\r\n 'nfl player': true,\r\n 'christian leader': true,\r\n congressman: true,\r\n 'basketball biography': true,\r\n 'comics creator': true,\r\n 'professional wrestler': true,\r\n 'college coach': true,\r\n 'tennis biography': true,\r\n 'afl biography': true,\r\n 'nfl biography': true,\r\n 'rugby biography': true,\r\n 'rugby league biography': true,\r\n 'prime minister': true,\r\n 'nba biography': true,\r\n 'figure skater': true,\r\n 'f1 driver': true,\r\n 'gridiron football person': true,\r\n 'indian politician': true,\r\n 'racing driver': true,\r\n 'martial artist': true,\r\n 'chinese-language singer and actor': true,\r\n astronaut: true,\r\n senator: true,\r\n 'nascar driver': true,\r\n 'adult biography': true,\r\n 'state representative': true,\r\n 'state senator': true,\r\n 'coa wide': true,\r\n 'religious biography': true,\r\n 'chess player': true,\r\n 'pageant titleholder': true,\r\n 'gaa player': true,\r\n 'us cabinet official': true\r\n}\r\n","const mapping = require('./_lib/_infoboxes')\r\n\r\nconst byInfobox = function (doc, prop) {\r\n let infoboxes = doc.infoboxes()\r\n for (let i = 0; i < infoboxes.length; i++) {\r\n let inf = infoboxes[i]\r\n let type = inf.type()\r\n type = type.toLowerCase()\r\n type = type.trim()\r\n\r\n if (mapping.hasOwnProperty(type)) {\r\n let s = inf.get(prop)\r\n if (s) {\r\n return s.text()\r\n }\r\n }\r\n }\r\n return null\r\n}\r\nmodule.exports = byInfobox\r\n","/* spencermountain/spacetime 6.4.3 Apache 2.0 */\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 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.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') {\n return 'date';\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 absOffset = Math.abs(offset);\n var sign = offset > 0 ? '+' : '-';\n return \"\".concat(sign).concat(exports.zeroPad(absOffset)).concat(delimiter, \"00\");\n };\n});\nvar fns_1 = fns.isLeapYear;\nvar fns_2 = fns.isDate;\nvar fns_3 = fns.isArray;\nvar fns_4 = fns.isObject;\nvar fns_5 = fns.zeroPad;\nvar fns_6 = fns.titleCase;\nvar fns_7 = fns.ordinal;\nvar fns_8 = fns.toCardinal;\nvar fns_9 = fns.normalize;\nvar fns_10 = fns.getEpoch;\nvar fns_11 = fns.beADate;\nvar fns_12 = fns.formatTimezone;\n\nvar zeroPad = fns.zeroPad;\n\nvar serialize = function serialize(d) {\n return zeroPad(d.getMonth() + 1) + '/' + zeroPad(d.getDate()) + ':' + zeroPad(d.getHours());\n}; // a timezone will begin with a specific offset in january\n// then some will switch to something else between november-march\n\n\nvar shouldChange = function shouldChange(epoch, start, end, defaultOffset) {\n //note: this has a cray order-of-operations issue\n //we can't get the date, without knowing the timezone, and vice-versa\n //it's possible that we can miss a dst-change by a few hours.\n var d = new Date(epoch); //(try to mediate this a little?)\n\n var bias = d.getTimezoneOffset() || 0;\n var shift = bias + defaultOffset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n\n d = new Date(epoch + shift);\n var current = serialize(d); //eg. is it after ~november?\n\n if (current >= start) {\n //eg. is it before ~march~ too?\n if (current < end) {\n return true;\n }\n }\n\n return false;\n};\n\nvar summerTime = shouldChange;\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);\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/05:03->10/04:02\": \"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\n\t\"9.5|s\": \"4/darwin,4/north\",\n\t\"8|s\": \"12/casey,2/kuala_lumpur,2/makassar,2/singapore,4/perth,4/west\",\n\t\"8|n|03/25:03->09/29:23\": \"2/ulan_bator\",\n\t\"8|n\": \"2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar\",\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/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane\",\n\t\"6|s\": \"12/vostok\",\n\t\"6|n\": \"2/almaty,2/bishkek,2/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/thimbu,2/thimphu,2/urumqi,9/chagos\",\n\t\"6.5|n\": \"2/rangoon,2/yangon,9/cocos\",\n\t\"5|s\": \"12/mawson,9/kerguelen\",\n\t\"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives\",\n\t\"5.75|n\": \"2/kathmandu,2/katmandu\",\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/21:00->09/20:24\": \"2/tehran\",\n\t\"4.5|n\": \"2/kabul\",\n\t\"3|s\": \"12/syowa,9/antananarivo\",\n\t\"3|n|03/29:03->10/25:04\": \"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye\",\n\t\"3|n|03/29:02->10/25:03\": \"8/chisinau,8/tiraspol\",\n\t\"3|n|03/29:00->10/24:24\": \"2/beirut\",\n\t\"3|n|03/27:02->10/25:02\": \"2/jerusalem,2/tel_aviv\",\n\t\"3|n|03/27:00->10/31:01\": \"2/gaza,2/hebron\",\n\t\"3|n|03/27:00->10/30:01\": \"2/amman\",\n\t\"3|n|03/27:00->10/29:24\": \"2/damascus\",\n\t\"3|n\": \"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte\",\n\t\"2|s|03/29:02->10/25: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/29:02->10/25:03\": \"0/ceuta,arctic/longyearbyen,3/jan_mayen,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\",\n\t\"2|n\": \"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\n\t\"1|s|04/02:01->09/03:03\": \"0/windhoek\",\n\t\"1|s\": \"0/kinshasa,0/luanda\",\n\t\"1|n|04/19:03->05/24:02\": \"0/casablanca,0/el_aaiun\",\n\t\"1|n|03/29:01->10/25:02\": \"3/canary,3/faeroe,3/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london\",\n\t\"1|n\": \"0/algiers,0/bangui,0/brazzaville,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/05:04->09/27: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/05:03->09/27:02\": \"12/mcmurdo,12/south_pole,11/auckland\",\n\t\"12|s|01/12:03->11/08: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/05:03->04/05:02\": \"11/chatham\",\n\t\"11|s\": \"12/macquarie,11/bougainville\",\n\t\"11|n\": \"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape\",\n\t\"11.5|n|04/05:03->10/04:02\": \"11/norfolk\",\n\t\"10|s|04/05:03->10/04:02\": \"4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria\",\n\t\"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,4/queensland\",\n\t\"10|n\": \"2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap\",\n\t\"10.5|s|04/05:01->10/04:02\": \"4/lhi,4/lord_howe\",\n\t\"0|n|03/29:00->10/25: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,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu\",\n\t\"-9|n|03/08:02->11/01:02\": \"1/adak,1/atka\",\n\t\"-9|n\": \"11/gambier\",\n\t\"-9.5|n\": \"11/marquesas\",\n\t\"-8|n|03/08:02->11/01:02\": \"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat\",\n\t\"-8|n\": \"11/pitcairn\",\n\t\"-7|n|03/08:02->11/01:02\": \"1/dawson,1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/whitehorse,6/pacific,6/yukon,10/bajanorte\",\n\t\"-7|n\": \"1/creston,1/dawson_creek,1/hermosillo,1/phoenix\",\n\t\"-6|s|04/04:22->09/05:22\": \"7/easterisland,11/easter\",\n\t\"-6|n|04/05:02->10/25:02\": \"1/chihuahua,1/mazatlan,10/bajasur\",\n\t\"-6|n|03/08:02->11/01:02\": \"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/shiprock,1/yellowknife,6/mountain\",\n\t\"-6|n\": \"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos\",\n\t\"-5|s\": \"1/lima,1/rio_branco,5/acre\",\n\t\"-5|n|04/05:02->10/25:02\": \"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general\",\n\t\"-5|n|03/12:03->11/05:01\": \"1/north_dakota\",\n\t\"-5|n|03/08:02->11/01:02\": \"1/chicago,1/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central\",\n\t\"-5|n\": \"1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre\",\n\t\"-4|s|05/13:23->08/13:01\": \"12/palmer\",\n\t\"-4|s|04/04:24->09/06:00\": \"1/santiago,7/continental\",\n\t\"-4|s|03/21:24->10/04: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/12:03->11/05:01\": \"1/indiana,1/kentucky\",\n\t\"-4|n|03/08:02->11/01:02\": \"1/detroit,1/fort_wayne,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,6/eastern\",\n\t\"-4|n|03/08:00->11/01:01\": \"1/havana\",\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/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east\",\n\t\"-3|n|03/08:02->11/01: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/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem\",\n\t\"-2|s\": \"5/denoronha\",\n\t\"-2|n|03/28:22->10/24:23\": \"1/godthab\",\n\t\"-2|n|03/08:02->11/01:02\": \"1/miquelon\",\n\t\"-2|n\": \"1/noronha,3/south_georgia\",\n\t\"-2.5|n|03/08:02->11/01: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\",\n\t\"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti\"\n};\n\nvar _build$1 = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\t'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\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' //(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} // console.log(all)\n// console.log(Object.keys(all).length)\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 = 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 = parseOffset;\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 var tz = str.trim();\n var split = str.split('/'); //support long timezones like 'America/Argentina/Rio_Gallegos'\n\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(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\n if (unit === 'day' && Math.abs(diff) > 28) {\n //but don't push it over a month\n if (n < 28) {\n s.epoch += milliseconds.hour;\n }\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 } //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; // i mean, but make it close...\n\n s.epoch += milliseconds[unit] * diff * 0.89; // i guess?\n }\n}; //find the desired date by a increment/check while loop\n\n\nvar units = {\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 } //incriment 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);\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[k].valid(n)) {\n s.epoch = null;\n\n if (s.silent === false) {\n console.warn('invalid ' + k + ': ' + n);\n }\n\n return;\n } // console.log(k, n)\n\n\n units[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 = {\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$1 = function parseOffset(s, offset) {\n if (!offset) {\n return s;\n } //this is a fancy-move\n\n\n if (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$1 = parseOffset$1;\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 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;\n\nvar isLeapYear = 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(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$1 = months.mapping();\n\nvar parseYear = function parseYear() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n //support '18 -> 2018\n // str = str.replace(/^'([0-9]{2})/, '20$1')\n // str = str.replace('([0-9]+) ?b\\.?c\\.?$', '-$1')\n var year = parseInt(str.trim(), 10);\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\\-\\+:]+)?$/,\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$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 = arr[3] || 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}, //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$1[arr[2].toLowerCase()];\n var year = parseYear(arr[3]);\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}, //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$1[arr[1].toLowerCase()];\n var year = parseYear(arr[3]);\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$1[arr[1].toLowerCase()];\n var year = parseYear(arr[2]);\n var obj = {\n year: year,\n month: month,\n 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$1[arr[2].toLowerCase()];\n\n if (!month) {\n return null;\n }\n\n var year = parseYear(arr[3]);\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 // '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 year = parseYear(arr[0]);\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}];\nvar strParse = strFmt;\n\nvar dates = {\n now: function now(s) {\n s.epoch = Date.now();\n return s;\n },\n tonight: function tonight(s) {\n s.epoch = Date.now();\n s = s.hour(18);\n return s;\n },\n today: function today(s) {\n s.epoch = Date.now();\n return s;\n },\n tomorrow: function tomorrow(s) {\n s.epoch = Date.now();\n s = s.add(1, 'day');\n s = s.startOf('day');\n return s;\n },\n yesterday: function yesterday(s) {\n s.epoch = Date.now();\n s = s.subtract(1, 'day');\n s = s.startOf('day');\n return s;\n },\n christmas: function christmas(s) {\n var year = new Date().getFullYear();\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 = new Date().getFullYear();\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) {\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] || 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) {\n obj = Object.assign({}, defaults, 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] || 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 //if we've been given a epoch number, it's easy\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();\n\n if (input === null || input === undefined) {\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);\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);\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 var res = strParse[i].parse(s, m, givenTz);\n\n if (res !== null) {\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};\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 var isNegative = offset < 0;\n var minute = '00'; //handle 5.5 → '5:30'\n\n if (Math.abs(offset % 1) === 0.5) {\n minute = '30';\n\n if (offset >= 0) {\n offset = Math.floor(offset);\n } else {\n offset = Math.ceil(offset);\n }\n }\n\n if (isNegative) {\n //handle negative sign\n offset *= -1;\n offset = fns.zeroPad(offset, 2);\n offset = '-' + offset;\n } else {\n offset = fns.zeroPad(offset, 2);\n offset = '+' + offset;\n }\n\n offset = offset + ':' + minute; //'Z' means 00\n\n if (offset === '+00:00') {\n offset = 'Z';\n }\n\n return offset;\n};\n\nvar _offset = isoOffset;\n\nvar format = {\n day: function day(s) {\n return fns.titleCase(s.dayName());\n },\n 'day-short': function dayShort(s) {\n return fns.titleCase(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 fns.titleCase(s.monthName());\n },\n 'month-short': function monthShort(s) {\n return fns.titleCase(months[\"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[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-year': function niceYear(s) {\n return \"\".concat(months[\"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(fns.titleCase(months[\"short\"]()[s.month()]), \" \").concat(fns.ordinal(s.date()));\n },\n 'nice-full': function niceFull(s) {\n return \"\".concat(s.dayName(), \" \").concat(fns.titleCase(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\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 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 = fns.titleCase(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 return String(format[fmt](s) || '');\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);\n\nvar unixFmt = function unixFmt(s, str) {\n var chars = str.split(''); //combine consecutive chars, like 'yyyy' as one.\n\n var arr = [chars[0]];\n var quoteOn = false;\n\n for (var i = 1; i < chars.length; i += 1) {\n //support quoted substrings\n if (chars[i] === \"'\") {\n quoteOn = !quoteOn; //support '', meaning one tick\n\n if (quoteOn === true && chars[i + 1] && chars[i + 1] === \"'\") {\n quoteOn = true;\n } else {\n continue;\n }\n } //merge it with the last one\n\n\n if (quoteOn === true || chars[i] === arr[arr.length - 1][0]) {\n arr[arr.length - 1] += chars[i];\n } else {\n arr.push(chars[i]);\n }\n }\n\n return arr.reduce(function (txt, c) {\n if (mapping[c] !== undefined) {\n txt += mapping[c](s) || '';\n } else {\n txt += c;\n }\n\n return txt;\n }, '');\n};\n\nvar unixFmt_1 = unixFmt;\n\nvar units$1 = ['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$1.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 = 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;\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 = 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$1 = main;\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$2 = {\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$2.date = units$2.day;\n\nvar startOf = function startOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$2[unit]) {\n return units$2[unit](s);\n }\n\n if (unit === 'summer' || unit === 'winter') {\n s = s.season(unit);\n return units$2.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$2[unit]) {\n s = units$2[unit](s);\n s = s.add(1, unit);\n s = s.subtract(1, 'milliseconds');\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) === 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$3 = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API)\n\nvar methods = {\n set: function set(input$1, tz) {\n var s = this.clone();\n s = input(s, input$1);\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(d, unit) {\n return diff$1(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 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$3.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.inDST = methods.isDST;\nmethods.round = methods.nearest;\nmethods.each = methods.every;\nvar methods_1 = methods;\n\n//these methods wrap around them.\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 = ['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.indexOf(unit);\n var arr = order.slice(n, order.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;\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;\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}):([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\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[3] === 'am' && hour === 12) {\n //12am is midnight\n hour = 0;\n }\n\n if (m[3] === 'pm' && hour < 12) {\n //12pm is noon\n hour += 12;\n }\n }\n\n s = s.hour(hour);\n s = s.minute(minute);\n s = s.second(0);\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 max = monthLengths_1[s.month()];\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.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 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$1 = {\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 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$1;\n\nvar methods$2 = {\n // # day in the month\n date: function date(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.date(s, num);\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 want = days[\"short\"]().indexOf(input);\n\n if (want === -1) {\n want = days[\"long\"]().indexOf(input);\n }\n } //move approx\n\n\n var day = this.d.getDay();\n var diff = day - want;\n var s = this.subtract(diff * 24, 'hours'); //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$3 = {\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); //don't go into last-year\n\n if (s.monthName() === 'december') {\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') {\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[\"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$3;\n\nvar methods$4 = Object.assign({}, _01Time, _02Date, _03Year); //aliases\n\nmethods$4.milliseconds = methods$4.millisecond;\nmethods$4.seconds = methods$4.second;\nmethods$4.minutes = methods$4.minute;\nmethods$4.hours = methods$4.hour;\nmethods$4.hour24 = methods$4.hour;\nmethods$4.h12 = methods$4.hour12;\nmethods$4.h24 = methods$4.hour24;\nmethods$4.days = methods$4.day;\n\nvar addMethods = function addMethods(Space) {\n //hook the methods into prototype\n Object.keys(methods$4).forEach(function (k) {\n Space.prototype[k] = methods$4[k];\n });\n};\n\nvar query = addMethods;\n\nvar order$1 = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\nvar keep = {\n second: order$1.slice(0, 1),\n minute: order$1.slice(0, 2),\n quarterhour: order$1.slice(0, 2),\n hour: order$1.slice(0, 3),\n date: order$1.slice(0, 4),\n month: order$1.slice(0, 4),\n quarter: order$1.slice(0, 4),\n season: order$1.slice(0, 4),\n year: order$1,\n decade: order$1,\n century: order$1\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}; //month is the only thing we 'model/compute'\n//- because ms-shifting can be off by enough\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};\n\nvar addMethods$1 = 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); //move forward by the estimated milliseconds (rough)\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 * 4);\n } else if (unit === 'season') {\n s.epoch += milliseconds.month * (num * 4);\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 = rollMonth(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 //specify a naive date number, if it's easy to do...\n var _sum = old.date() + num;\n\n if (_sum <= 28 && _sum > 1) {\n want.date = _sum;\n } //or if we haven't moved at all..\n else if (num !== 0 && old.isSame(s, 'day')) {\n want.date = old.date() + num;\n }\n } //ensure year has changed (leap-years)\n else if (unit === 'year' && s.year() === old.year()) {\n s.epoch += milliseconds.week;\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 walk_1(s, want);\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$1;\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 a = this;\n\n if (!unit) {\n return null;\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$/, '');\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$3 = 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$3;\n\nvar addMethods$4 = 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.set(data.months);\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$4;\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 } //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 if (input$1 !== undefined || input$1 === null) {\n var tmp = input(this, input$1, tz);\n this.epoch = tmp.epoch;\n }\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 });\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.4.3';\n\nvar main$1 = function main(input, tz, options) {\n return new spacetime(input, tz, options);\n}; //some helper functions on the main method\n\n\nmain$1.now = function (tz, options) {\n return new spacetime(new Date().getTime(), tz, options);\n};\n\nmain$1.today = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n return s.startOf('day');\n};\n\nmain$1.tomorrow = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n return s.add(1, 'day').startOf('day');\n};\n\nmain$1.yesterday = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n return s.subtract(1, 'day').startOf('day');\n};\n\nmain$1.extend = function (obj) {\n Object.keys(obj).forEach(function (k) {\n spacetime.prototype[k] = obj[k];\n });\n return this;\n}; //find tz by time\n\n\nmain$1.whereIts = whereIts_1;\nmain$1.version = _version; //aliases:\n\nmain$1.plugin = main$1.extend;\nvar src = main$1;\n\nexport default src;\n","const spacetime = require('spacetime')\r\n\r\nconst parseSentence = function (doc) {\r\n let s = doc.sentences(0)\r\n if (!s) {\r\n return null\r\n }\r\n let txt = s.text() || ''\r\n let paren = txt.match(/\\(.*\\)/)\r\n if (!paren || !paren[0]) {\r\n return null\r\n }\r\n txt = paren[0] || ''\r\n txt = txt.trim()\r\n txt = txt.replace(/^\\(/, '')\r\n txt = txt.replace(/\\)$/, '')\r\n let split = txt.split(/ – /)\r\n split = split.filter((str) => str)\r\n // got birth/death info\r\n if (split[0] && split[1] && split.length === 2) {\r\n return {\r\n birth: split[0],\r\n death: split[1]\r\n }\r\n }\r\n // try for just birth date in parentheses\r\n if (split[0]) {\r\n let str = split[0].replace(/^(born|ne) (c\\.)?/, '')\r\n let d = spacetime(str)\r\n if (d.isValid()) {\r\n return {\r\n birth: str\r\n }\r\n }\r\n }\r\n return null\r\n}\r\nmodule.exports = parseSentence\r\n","const byCategory = function (doc) {\r\n let cats = doc.categories()\r\n for (let i = 0; i < cats.length; i += 1) {\r\n let m = cats[i].match(/([0-9]{4}) births/)\r\n if (m && m[1]) {\r\n let year = parseInt(m[1], 10)\r\n if (year && year > 1000) {\r\n return year\r\n }\r\n }\r\n }\r\n return null\r\n}\r\nmodule.exports = byCategory\r\n","const spacetime = require('spacetime')\r\n\r\nconst parseDate = function (str) {\r\n if (!str) {\r\n return null\r\n }\r\n // remove parentheses\r\n str = str.replace(/\\(.*\\)/, '')\r\n str = str.trim()\r\n // just the year\r\n if (str.match(/^[0-9]{4}$/)) {\r\n return {\r\n year: parseInt(str, 10)\r\n }\r\n }\r\n // parse the full date\r\n let s = spacetime(str)\r\n return {\r\n year: s.year(),\r\n month: s.month(),\r\n date: s.date()\r\n }\r\n}\r\nmodule.exports = parseDate\r\n","const byInfobox = require('../getInfobox')\r\nconst bySentence = require('../getSentence')\r\nconst byCategory = require('./byCategory')\r\nconst parseDate = require('../parseDate')\r\n\r\nconst birthDate = function (doc) {\r\n let res = byInfobox(doc, 'birth_date')\r\n if (res) {\r\n return parseDate(res)\r\n }\r\n\r\n // try parentheses in first sentence\r\n res = bySentence(doc)\r\n if (res && res.birth) {\r\n return parseDate(res.birth)\r\n }\r\n\r\n // try to get year from 'Category:1955 births'\r\n let year = byCategory(doc)\r\n if (year) {\r\n return { year: year }\r\n }\r\n return null\r\n}\r\nmodule.exports = birthDate\r\n","const byInfobox = require('../getInfobox')\r\n\r\nconst birthPlace = function (doc) {\r\n let res = byInfobox(doc, 'birth_place')\r\n if (res) {\r\n return res\r\n }\r\n return null\r\n}\r\nmodule.exports = birthPlace\r\n","const aliveCats = {\r\n 'Living people': true,\r\n 'Year of birth missing (living people)': true,\r\n 'Date of birth missing (living people)': true,\r\n 'Place of birth missing (living people)': true,\r\n 'Active politicians': true,\r\n 'Biography articles of living people': true\r\n}\r\n\r\nconst didDie = {\r\n 'Dead people': true,\r\n 'Date of death missing': true,\r\n 'Date of death unknown': true,\r\n 'Place of death missing': true,\r\n 'Place of death unknown': true,\r\n 'Year of death missing': true,\r\n 'Year of death unknown': true,\r\n 'Year of death uncertain': true,\r\n 'Recent deaths': true,\r\n 'People declared dead in absentia': true,\r\n 'Politicians elected posthumously': true,\r\n 'People who died in office': true,\r\n 'Assassinated heads of state‎ ': true,\r\n 'Assassinated heads of government': true,\r\n 'Assassinated mayors': true,\r\n 'People who died in Nazi concentration camps': true,\r\n 'People executed in Nazi concentration camps': true,\r\n 'Politicians who died in Nazi concentration camps': true,\r\n 'People who have received posthumous pardons': true,\r\n 'People lost at sea‎': true,\r\n 'Deaths due to shipwreck': true,\r\n 'People who died at sea': true,\r\n 'Unsolved deaths‎': true,\r\n 'Deaths by horse-riding accident‎': true,\r\n 'Deaths from falls‎': true,\r\n 'Deaths by poisoning‎‎': true,\r\n 'Deaths from cerebrovascular disease‎': true,\r\n 'Deaths from asphyxiation‎': true,\r\n 'Deaths from sepsis‎': true,\r\n 'Deaths from pneumonia‎': true,\r\n 'Deaths from dysentery‎‎': true,\r\n 'Deaths by drowning‎': true\r\n}\r\n\r\nconst byCat = function (doc) {\r\n let cats = doc.categories()\r\n\r\n //confirmed alive categories\r\n if (cats.find((c) => aliveCats.hasOwnProperty(c))) {\r\n return true\r\n }\r\n //confirmed death categories\r\n if (cats.find((c) => didDie.hasOwnProperty(c))) {\r\n return false\r\n }\r\n return null\r\n}\r\nmodule.exports = byCat\r\n","// blp = biography of living persons\r\n\r\n// {{WikiProject Biography}} (with living=yes parameter)\r\n// {{WikiProject banner shell}} (with blp=y parameter)\r\n\r\nconst isAlive = {\r\n blp: true,\r\n 'blp unsourced': true,\r\n 'blp unsourced section': true,\r\n 'blp primary sources': true,\r\n 'blp self-published': true,\r\n 'blp sources': true,\r\n 'blp sources section': true,\r\n 'blp imdb-only refimprove': true,\r\n 'blp imdb refimprove': true,\r\n 'blp no footnotes': true,\r\n 'blp more footnotes': true,\r\n 'blp one source': true,\r\n 'active politician': true,\r\n activepol: true,\r\n 'current person': true\r\n}\r\n\r\nconst isDead = {\r\n 'recent death': true,\r\n 'recent death presumed': true,\r\n 'recent death confirmed': true,\r\n obituary: true,\r\n elegy: true,\r\n eulogy: true,\r\n panegyric: true,\r\n memorial: true\r\n}\r\nconst byTemplate = function (doc) {\r\n let templates = doc.templates()\r\n for (let i = 0; i < templates.length; i++) {\r\n let title = templates[i].template || ''\r\n title = title.toLowerCase().trim()\r\n if (isAlive.hasOwnProperty(title)) {\r\n return true\r\n }\r\n if (isDead.hasOwnProperty(title)) {\r\n return false\r\n }\r\n }\r\n // `{{WikiProject Biography|living=yes|activepol=yes}}`\r\n let bio = doc.template('WikiProject Biography')\r\n if (bio) {\r\n //living blp BLP\r\n if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') {\r\n return true\r\n }\r\n if (bio.living === 'no' || bio.blp === 'no' || bio.BLP === 'no') {\r\n return false\r\n }\r\n }\r\n return null\r\n}\r\nmodule.exports = byTemplate\r\n","const byCat = require('./byCategory')\r\nconst byTemplate = require('./byTemplate')\r\n\r\n// maximum age of a person\r\nlet d = new Date()\r\nconst minYear = d.getFullYear() - 105\r\n\r\nconst isAlive = function (doc) {\r\n // if we have a death date\r\n let death = doc.deathDate()\r\n if (death) {\r\n return false\r\n }\r\n // if we have a death place\r\n let deathPlace = doc.deathPlace()\r\n if (deathPlace) {\r\n return false\r\n }\r\n // does it have a good category?\r\n let fromCat = byCat(doc)\r\n if (fromCat === true || fromCat === false) {\r\n return fromCat\r\n }\r\n // does it have a good template?\r\n let fromTemplate = byTemplate(doc)\r\n if (fromTemplate === true || fromTemplate === false) {\r\n return fromTemplate\r\n }\r\n // were they born in 1900?\r\n let birth = doc.birthDate()\r\n if (birth && birth.year && birth.year < minYear) {\r\n return true\r\n }\r\n return null\r\n}\r\nmodule.exports = isAlive\r\n","const byCategory = function (doc) {\r\n let cats = doc.categories()\r\n for (let i = 0; i < cats.length; i += 1) {\r\n let m = cats[i].match(/([0-9]{4}) deaths/)\r\n if (m && m[1]) {\r\n let year = parseInt(m[1], 10)\r\n if (year && year > 1000) {\r\n return year\r\n }\r\n }\r\n }\r\n return null\r\n}\r\nmodule.exports = byCategory\r\n","const byInfobox = require('../getInfobox')\r\nconst bySentence = require('../getSentence')\r\nconst byCategory = require('./byCategory')\r\nconst parseDate = require('../parseDate')\r\n\r\nconst deathDate = function (doc) {\r\n let res = byInfobox(doc, 'death_date')\r\n if (res) {\r\n return parseDate(res)\r\n }\r\n // try parentheses in first sentence\r\n res = bySentence(doc)\r\n if (res && res.death) {\r\n return parseDate(res.death)\r\n }\r\n\r\n // try to get year from 'Category:1955 deaths'\r\n let year = byCategory(doc)\r\n if (year) {\r\n return { year: year }\r\n }\r\n return null\r\n}\r\nmodule.exports = deathDate\r\n","const byInfobox = require('../getInfobox')\r\n\r\nconst deathPlace = function (doc) {\r\n let res = byInfobox(doc, 'death_place')\r\n if (res) {\r\n return res\r\n }\r\n return null\r\n}\r\nmodule.exports = deathPlace\r\n","const byInfobox = require('../getInfobox')\r\n\r\nconst getNationality = function (doc) {\r\n let res = byInfobox(doc, 'nationality')\r\n if (res) {\r\n return res\r\n }\r\n return null\r\n}\r\nmodule.exports = getNationality\r\n","const birthDate = require('./birthDate')\r\nconst birthPlace = require('./birthPlace')\r\nconst isAlive = require('./isAlive')\r\nconst deathDate = require('./deathDate')\r\nconst deathPlace = require('./deathPlace')\r\nconst nationality = require('./nationality')\r\n\r\nconst addMethod = function (models) {\r\n models.Doc.prototype.birthDate = function () {\r\n return birthDate(this)\r\n }\r\n models.Doc.prototype.birthPlace = function () {\r\n return birthPlace(this)\r\n }\r\n models.Doc.prototype.isAlive = function () {\r\n return isAlive(this)\r\n }\r\n models.Doc.prototype.deathDate = function () {\r\n return deathDate(this)\r\n }\r\n models.Doc.prototype.deathPlace = function () {\r\n return deathPlace(this)\r\n }\r\n models.Doc.prototype.nationality = function () {\r\n return nationality(this)\r\n }\r\n}\r\nmodule.exports = addMethod\r\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","createCommonjsModule","fn","module","exports","getCjsExportFromNamespace","n","fns","isLeapYear","year","isDate","d","Object","prototype","toString","call","isNaN","valueOf","isArray","input","isObject","zeroPad","str","len","arguments","undefined","pad","Array","join","titleCase","toUpperCase","substr","ordinal","j","k","toCardinal","String","replace","parseInt","normalize","getEpoch","tmp","getTime","epoch","beADate","clone","set","formatTimezone","offset","delimiter","absOffset","Math","abs","sign","concat","fns_1","fns_2","fns_3","fns_4","fns_5","fns_6","fns_7","fns_8","fns_9","fns_10","fns_11","fns_12","serialize","getMonth","getDate","getHours","shouldChange","start","end","defaultOffset","Date","bias","getTimezoneOffset","shift","current","summerTime","quickOffset","zones","timezones","obj","tz","console","warn","dst","jul","dec","hem","split","inSummer","quick","_build","_build$1","freeze","__proto__","_prefixes","data","all","keys","forEach","Number","names","before","num","name","unpack","fallbackTZ","safeIntl","Intl","DateTimeFormat","format","resolvedOptions","timezone","timeZone","guessTz","guessTz_1","isOffset","isNumber","utcOffset","gmtOffset","toIana","parseOffset","m","match","parseOffset_1","local","cities","reduce","h","city","lookupTz","test","id","Error","find","o","millisecond","second","minute","hour","day","date","month","week","milliseconds","walk","unit","previous","startUnit","original","diff","halfStep","units","valid","walkTo","getFullYear","seconds","wants","old","silent","walk_1","shortMonths","longMonths","buildMapping","sep","_i","months","short","long","i18n","parseOffset$1","parseFloat","parseOffset_1$1","parseTime","arr","startOf","ampm","_h","parseTime_1","monthLengths","monthLengths_1","hasDate","max","hasDate_1","months$1","parseYear","strFmt","reg","parse","givenTz","options","british","strParse","dates","now","tonight","today","tomorrow","add","yesterday","subtract","christmas","newYears","namedDates","minimumEpoch","defaults","handleArray","order","handleObject","assign","parseInput","res","shortDays","longDays","days","isoOffset","isNegative","floor","ceil","_offset","dayName","dayShort","dayNumber","dayOrdinal","dayPad","dateOrdinal","datePad","monthName","monthShort","monthNumber","monthOrdinal","monthPad","isoMonth","yearShort","isoYear","time","time24","hour24","hour12","hourPad","hour24Pad","minutePad","secondPad","quarter","season","era","json","numeric","numericUs","numericUk","mmDd","iso","h24","ms","isoShort","isoUtc","toISOString","nice","niceYear","niceDay","niceFull","aliases","mdy","dmy","ymd","printFormat","isValid","out","indexOf","sections","_","fmt","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","_s","ss","A","z","zz","zzz","zzzz","Z","ZZ","ZZZ","ZZZZ","addAlias","_char","to","toName","unixFmt","chars","quoteOn","push","txt","c","unixFmt_1","units$1","doUnit","endOf","duration","percent","toFixed","progress","progress_1","nearest","prog","nearest_1","climb","b","isBefore","isAfter","diffOne","one","fastYear","years","msDiff","minutes","hours","weeks","waterfall","reverseDiff","main","reversed","diff$1","qualifiers","almost","over","getDiff","later","earlier","isSame","u","pluralize","value","slice","since","isNow","every","rounded","qualified","precise","englishValues","englishValue","nextUnit","nextValue","splice","since_1","seasons","north","south","quarters","units$2","quarterhour","_weekStart","q","hemisphere","decade","century","startOf_1","isDay","next","result","every_1","parseDst","epochShift","found","hasDst","Boolean","default_offset","change","back","summer","winter","isDST","timezone_1","units$3","methods","input$1","hasDST","leapYear","last","goto","isAwake","isAsleep","log","logYear","_this","debug","from","fromNow","weekStart","inDST","round","each","methods_1","validate","confirm","want","methods$1","getMilliseconds","getSeconds","getMinutes","hourFloat","_minute","_hour","which","dayTime","times","morning","breakfast","noon","lunch","afternoon","evening","dinner","night","midnight","_01Time","methods$2","getDay","_02Date","clearMinutes","methods$3","sum","setDate","setFullYear","setHours","setMinutes","setMonth","toAdd","minus","thisOne","skipWeeks","_month","millenium","_03Year","methods$4","addMethods","Space","query","order$1","keep","dstAwareUnits","keepDate","rollMonth","_years","addMethods$1","SpaceTime","_sum","plus","print","addMethods$2","same","addMethods$3","isEqual","isBetween","isInclusive","startEpoch","endEpoch","compare","addMethods$4","defineProperty","toLocalDate","spacetime","whereIts","startHour","endHour","tzs","filter","whereIts_1","_version","main$1","extend","version","plugin","src","parseSentence","sentences","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 0c9b243e..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=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},n=function(n,t){for(var r=n.infoboxes(),a=0;a1&&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,""))?"date":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=Math.abs(e),a=e>0?"+":"-";return"".concat(a).concat(n.zeroPad(r)).concat(t,"00")}})),a=(r.isLeapYear,r.isDate,r.isArray,r.isObject,r.zeroPad,r.titleCase,r.ordinal,r.toCardinal,r.normalize,r.getEpoch,r.beADate,r.formatTimezone,r.zeroPad),o=function(e,n,t,r){var o=new Date(e),i=(o.getTimezoneOffset()||0)+60*r;i=60*i*1e3;var u=function(e){return a(e.getMonth()+1)+"/"+a(e.getDate())+":"+a(e.getHours())}(o=new Date(e+i));return u>=n&&u");return!0===o(e.epoch,a[0],a[1],t)?t:r},u=["africa","america","asia","atlantic","australia","brazil","canada","chile","europe","indian","mexico","pacific","antarctica","etc"],s=(t=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/05:03->10/04:02":"4/adelaide,4/broken_hill,4/south,4/yancowinna","9.5|s":"4/darwin,4/north","8|s":"12/casey,2/kuala_lumpur,2/makassar,2/singapore,4/perth,4/west","8|n|03/25:03->09/29:23":"2/ulan_bator","8|n":"2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar","8.75|s":"4/eucla","7|s":"12/davis,2/jakarta,9/christmas","7|n":"2/bangkok,2/barnaul,2/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane","6|s":"12/vostok","6|n":"2/almaty,2/bishkek,2/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/thimbu,2/thimphu,2/urumqi,9/chagos","6.5|n":"2/rangoon,2/yangon,9/cocos","5|s":"12/mawson,9/kerguelen","5|n":"2/aqtau,2/aqtobe,2/ashgabat,2/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives","5.75|n":"2/kathmandu,2/katmandu","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/21:00->09/20:24":"2/tehran","4.5|n":"2/kabul","3|s":"12/syowa,9/antananarivo","3|n|03/29:03->10/25:04":"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye","3|n|03/29:02->10/25:03":"8/chisinau,8/tiraspol","3|n|03/29:00->10/24:24":"2/beirut","3|n|03/27:02->10/25:02":"2/jerusalem,2/tel_aviv","3|n|03/27:00->10/31:01":"2/gaza,2/hebron","3|n|03/27:00->10/30:01":"2/amman","3|n|03/27:00->10/29:24":"2/damascus","3|n":"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte","2|s|03/29:02->10/25:02":"12/troll","2|s":"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane","2|n|03/29:02->10/25:03":"0/ceuta,arctic/longyearbyen,3/jan_mayen,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","2|n":"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad","1|s|04/02:01->09/03:03":"0/windhoek","1|s":"0/kinshasa,0/luanda","1|n|04/19:03->05/24:02":"0/casablanca,0/el_aaiun","1|n|03/29:01->10/25:02":"3/canary,3/faeroe,3/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london","1|n":"0/algiers,0/bangui,0/brazzaville,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis","14|n":"11/kiritimati","13|s|04/05:04->09/27:03":"11/apia","13|s|01/15:02->11/05:03":"11/tongatapu","13|n":"11/enderbury,11/fakaofo","12|s|04/05:03->09/27:02":"12/mcmurdo,12/south_pole,11/auckland","12|s|01/12:03->11/08: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/05:03->04/05:02":"11/chatham","11|s":"12/macquarie,11/bougainville","11|n":"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape","11.5|n|04/05:03->10/04:02":"11/norfolk","10|s|04/05:03->10/04:02":"4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria","10|s":"12/dumontdurville,4/brisbane,4/lindeman,4/queensland","10|n":"2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap","10.5|s|04/05:01->10/04:02":"4/lhi,4/lord_howe","0|n|03/29:00->10/25: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,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu","-9|n|03/08:02->11/01:02":"1/adak,1/atka","-9|n":"11/gambier","-9.5|n":"11/marquesas","-8|n|03/08:02->11/01:02":"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat","-8|n":"11/pitcairn","-7|n|03/08:02->11/01:02":"1/dawson,1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/whitehorse,6/pacific,6/yukon,10/bajanorte","-7|n":"1/creston,1/dawson_creek,1/hermosillo,1/phoenix","-6|s|04/04:22->09/05:22":"7/easterisland,11/easter","-6|n|04/05:02->10/25:02":"1/chihuahua,1/mazatlan,10/bajasur","-6|n|03/08:02->11/01:02":"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/shiprock,1/yellowknife,6/mountain","-6|n":"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos","-5|s":"1/lima,1/rio_branco,5/acre","-5|n|04/05:02->10/25:02":"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general","-5|n|03/12:03->11/05:01":"1/north_dakota","-5|n|03/08:02->11/01:02":"1/chicago,1/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central","-5|n":"1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre","-4|s|05/13:23->08/13:01":"12/palmer","-4|s|04/04:24->09/06:00":"1/santiago,7/continental","-4|s|03/21:24->10/04: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/12:03->11/05:01":"1/indiana,1/kentucky","-4|n|03/08:02->11/01:02":"1/detroit,1/fort_wayne,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,6/eastern","-4|n|03/08:00->11/01:01":"1/havana","-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/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east","-3|n|03/08:02->11/01: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/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem","-2|s":"5/denoronha","-2|n|03/28:22->10/24:23":"1/godthab","-2|n|03/08:02->11/01:02":"1/miquelon","-2|n":"1/noronha,3/south_georgia","-2.5|n|03/08:02->11/01:02":"1/st_johns,6/newfoundland","-1|n":"3/cape_verde","-11|n":"11/midway,11/niue,11/pago_pago,11/samoa","-10|n":"11/honolulu,11/johnston,11/rarotonga,11/tahiti"}}))&&t.default||t,c={};Object.keys(s).forEach((function(e){var n=e.split("|"),t={offset:Number(n[0]),hem:n[1]};n[2]&&(t.dst=n[2]),s[e].split(",").forEach((function(e){e=e.replace(/(^[0-9]+)\//,(function(e,n){return n=Number(n),u[n]+"/"})),c[e]=t}))})),c.utc={offset:0,hem:"n"};for(var h=-14;h<=14;h+=.5){var l=h;l>0&&(l="+"+l);var f="etc/gmt"+l;c[f]={offset:-1*h,hem:"n"},c[f="utc/gmt"+l]={offset:-1*h,hem:"n"}}var d=c,m=/(\-?[0-9]+)h(rs)?/i,p=/(\-?[0-9]+)/,y=/utc([\-+]?[0-9]+)/i,v=/gmt([\-+]?[0-9]+)/i,g=function(e){return(e=Number(e))>-13&&e<13?"etc/gmt"+(e=((e*=-1)>0?"+":"")+e):null},b=function(e){var n=e.match(m);if(null!==n)return g(n[1]);if(null!==(n=e.match(y)))return g(n[1]);if(null!==(n=e.match(v))){var t=-1*Number(n[1]);return g(t)}return null!==(n=e.match(p))?g(n[1]):null},w=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}(),k=Object.keys(d).reduce((function(e,n){var t=n.split("/")[1]||"";return e[t=t.replace(/_/g," ")]=n,e}),{}),_=function(e,n){if(!e)return w;var t=e.trim(),r=e.split("/");if(r.length>2&&!1===n.hasOwnProperty(t)&&(t=r[0]+"/"+r[1]),t=t.toLowerCase(),!0===n.hasOwnProperty(t))return t;if(t=function(e){return e=(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===k.hasOwnProperty(t))return k[t];if(!0===/[0-9]/.test(t)){var a=b(t);if(a)return a}throw new Error("Spacetime: Cannot find timezone named: '"+e+"'. Please enter an IANA timezone id.")},z={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5};z.date=z.day,z.month=25488e5,z.week=6048e5,z.year=3154e7,Object.keys(z).forEach((function(e){z[e+"s"]=z[e]}));var D=z,j=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);for(var c=D[r]/2;e.d[t]()n;)e.epoch-=c;null!==a&&i!==e.d[a]()&&(e.epoch=u,e.epoch+=D[r]*s*.89)}},O={year:{valid:function(e){return e>-4e3&&e<4e3},walkTo:function(e,n){return j(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 j(e,n,"getDate","day","getMonth")}},hour:{valid:function(e){return e>=0&&e<24},walkTo:function(e,n){return j(e,n,"getHours","hour","getDate")}},minute:{valid:function(e){return e>=0&&e<60},walkTo:function(e,n){return j(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}}},P=function(e,n){for(var t=Object.keys(O),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},A=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");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")},T=[31,28,31,30,31,30,31,31,30,31,30,31],$=r.isLeapYear,x=function(e){if(!0!==T.hasOwnProperty(e.month))return!1;if(1===e.month)return!!($(e.year)&&e.date<=29)||e.date<=28;var n=T[e.month]||0;return e.date<=n},Y=E(),L=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=parseInt(e.trim(),10);return n=n||(new Date).getFullYear()},F=[{reg:/^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/,parse:function(e,n,t,r){var a=parseInt(n[2],10)-1,o={year:n[1],month:a,date:n[3]};return!1===x(o)?(e.epoch=null,e):(N(e,n[5]),P(e,o),e=A(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===x(t)?(e.epoch=null,e):(P(e,t),e=A(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:n[3]||(new Date).getFullYear(),month:t,date:r};return!1===x(a)?(e.epoch=null,e):(P(e,a),e=A(e,n[4]))}},{reg:/^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i,parse:function(e,n){var t=Y[n[2].toLowerCase()],a={year:L(n[3]),month:t,date:r.toCardinal(n[1]||"")};return!1===x(a)?(e.epoch=null,e):(P(e,a),e=A(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=Y[n[1].toLowerCase()],a={year:L(n[3]),month:t,date:r.toCardinal(n[2]||"")};return!1===x(a)?(e.epoch=null,e):(P(e,a),e=A(e,n[4]))}},{reg:/^([a-z]+) ([0-9]{4})$/i,parse:function(e,n){var t=Y[n[1].toLowerCase()],r={year:L(n[2]),month:t,date:1};return!1===x(r)?(e.epoch=null,e):(P(e,r),e=A(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=Y[n[2].toLowerCase()];if(!t)return null;var a={year:L(n[3]),month:t,date:r.toCardinal(n[1])};return!1===x(a)?(e.epoch=null,e):(P(e,a),e=A(e,n[4]))}},{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===x(o)?(e.epoch=null,e):(P(e,o),e=A(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===x(o)?(e.epoch=null,e):(P(e,o),e=A(e))}},{reg:/^[0-9]{4}( ?a\.?d\.?)?$/i,parse:function(e,n){var t=L(n[0]),r=new Date,a={year:t,month:r.getMonth(),date:r.getDate()};return!1===x(a)?(e.epoch=null,e):(P(e,a),e=A(e))}}],B={now:function(e){return e.epoch=Date.now(),e},tonight:function(e){return e.epoch=Date.now(),e=e.hour(18)},today:function(e){return e.epoch=Date.now(),e},tomorrow:function(e){return e.epoch=Date.now(),e=(e=e.add(1,"day")).startOf("day")},yesterday:function(e){return e.epoch=Date.now(),e=(e=e.subtract(1,"day")).startOf("day")},christmas:function(e){var n=(new Date).getFullYear();return e=e.set([n,11,25,18,0,0])},"new years":function(e){var n=(new Date).getFullYear();return e=e.set([n,11,31,18,0,0])}};B["new years eve"]=B["new years"];var Z=B,H={year:(new Date).getFullYear(),month:0,date:1},Q=function(e,n,t){if("number"==typeof n)return n>0&&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(),null==n)return e;if(!0===r.isDate(n))return e.epoch=n.getTime(),e;if(!0===r.isArray(n))return e=function(e,n){for(var t=["year","month","date","hour","minute","second","millisecond"],r=0;r=0?Math.floor(n):Math.ceil(n)),t?(n*=-1,n="-"+(n=r.zeroPad(n,2))):n="+"+(n=r.zeroPad(n,2)),"+00:00"===(n=n+":"+a)&&(n="Z"),n},R={day:function(e){return r.titleCase(e.dayName())},"day-short":function(e){return r.titleCase(W()[e.day()])},"day-number":function(e){return e.day()},"day-ordinal":function(e){return r.ordinal(e.day())},"day-pad":function(e){return r.zeroPad(e.day())},date:function(e){return e.date()},"date-ordinal":function(e){return r.ordinal(e.date())},"date-pad":function(e){return r.zeroPad(e.date())},month:function(e){return r.titleCase(e.monthName())},"month-short":function(e){return r.titleCase(q()[e.month()])},"month-number":function(e){return e.month()},"month-ordinal":function(e){return r.ordinal(e.month())},"month-pad":function(e){return r.zeroPad(e.month())},"iso-month":function(e){return r.zeroPad(e.month()+1)},year:function(e){var n=e.year();return n>0?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,a=r.zeroPad(Math.abs(n),4);return t&&(a="-"+(a=r.zeroPad(a,6))),a},time:function(e){return e.time()},"time-24":function(e){return"".concat(e.hour24(),":").concat(r.zeroPad(e.minute()))},hour:function(e){return e.hour12()},"hour-pad":function(e){return r.zeroPad(e.hour12())},"hour-24":function(e){return e.hour24()},"hour-24-pad":function(e){return r.zeroPad(e.hour24())},minute:function(e){return e.minute()},"minute-pad":function(e){return r.zeroPad(e.minute())},second:function(e){return e.second()},"second-pad":function(e){return r.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 K(e)},numeric:function(e){return"".concat(e.year(),"/").concat(r.zeroPad(e.month()+1),"/").concat(r.zeroPad(e.date()))},"numeric-us":function(e){return"".concat(r.zeroPad(e.month()+1),"/").concat(r.zeroPad(e.date()),"/").concat(e.year())},"numeric-uk":function(e){return"".concat(r.zeroPad(e.date()),"/").concat(r.zeroPad(e.month()+1),"/").concat(e.year())},"mm/dd":function(e){return"".concat(r.zeroPad(e.month()+1),"/").concat(r.zeroPad(e.date()))},iso:function(e){var n=e.format("iso-year"),t=r.zeroPad(e.month()+1),a=r.zeroPad(e.date()),o=r.zeroPad(e.h24()),i=r.zeroPad(e.minute()),u=r.zeroPad(e.second()),s=r.zeroPad(e.millisecond(),3),c=K(e);return"".concat(n,"-").concat(t,"-").concat(a,"T").concat(o,":").concat(i,":").concat(u,".").concat(s).concat(c)},"iso-short":function(e){var n=r.zeroPad(e.month()+1),t=r.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(q()[e.month()]," ").concat(r.ordinal(e.date()),", ").concat(e.time())},"nice-year":function(e){return"".concat(q()[e.month()]," ").concat(r.ordinal(e.date()),", ").concat(e.year())},"nice-day":function(e){return"".concat(W()[e.day()]," ").concat(r.titleCase(q()[e.month()])," ").concat(r.ordinal(e.date()))},"nice-full":function(e){return"".concat(e.dayName()," ").concat(r.titleCase(e.monthName())," ").concat(r.ordinal(e.date()),", ").concat(e.time())}},X={"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",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(X).forEach((function(e){return R[e]=R[X[e]]}));var ee=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!0!==e.isValid())return"";if(R.hasOwnProperty(n)){var t=R[n](e)||"";return"json"!==n&&(t=String(t),"ampm"!==n&&(t=r.titleCase(t))),t}if(-1!==n.indexOf("{")){var a=/\{(.+?)\}/g;return n=n.replace(a,(function(n,t){return t=t.toLowerCase().trim(),R.hasOwnProperty(t)?String(R[t](e)||""):""}))}return e.format("iso-short")},ne=r.zeroPad,te=r.formatTimezone,re={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 ne(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 ne(e.week())},d:function(e){return e.date()},dd:function(e){return ne(e.date())},D:function(e){return e.dayOfYear()},DD:function(e){return ne(e.dayOfYear())},DDD:function(e){return ne(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 ne(e.h12())},H:function(e){return e.hour()},HH:function(e){return ne(e.hour())},m:function(e){return e.minute()},mm:function(e){return ne(e.minute())},s:function(e){return e.second()},ss:function(e){return ne(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 te(e.timezone().current.offset)},ZZ:function(e){return te(e.timezone().current.offset)},ZZZ:function(e){return te(e.timezone().current.offset)},ZZZZ:function(e){return te(e.timezone().current.offset,":")}},ae=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},he=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},le=function(e,n,t){return e.isBefore(n)?he(e,n,t):-1*he(n,e,t)},fe=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+=le(a,n,"month"),r.weeks=52*r.years,a=e.add(r.weeks,"week"),r.weeks+=le(a,n,"week"),r.days=7*r.weeks,a=e.add(r.days,"day"),r.days+=le(a,n,"day"),r},de=function(e,n,t){n=r.beADate(n,e);var a=!1;if(e.isAfter(n)){var o=e;e=n,n=o,a=!0}var i=fe(e,n);return a&&(i=function(e){return Object.keys(e).forEach((function(n){e[n]*=-1})),e}(i)),t?(t=r.normalize(t),!0!==/s$/.test(t)&&(t+="s"),"dates"===t&&(t="days"),i[t]):i},me={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 pe(e,n){return 1===e&&(n=n.slice(0,-1)),e+" "+n}var ye=function(e,n){var t,a,o,i=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=r.beADate(n,e));if(!0===Object.keys(i).every((function(e){return!i[e]})))return{diff:i,rounded:"now",qualified:"now",precise:"now"};var u=[];return Object.keys(i).forEach((function(e,n,r){var o=Math.abs(i[e]);if(0!==o){var s=pe(o,e);if(u.push(s),!t){if(t=a=s,n>4)return;var c=r[n+1],h=Math.abs(i[c]);h>me[c].almost?(t=pe(o+1,e),a="almost "+t):h>me[c].over&&(a="over "+s)}}})),o=u.splice(0,2).join(", "),!0===e.isAfter(n)?(t+=" ago",a+=" ago",o+=" ago"):(t="in "+t,a="in "+a,o="in "+o),{diff:i,rounded:t,qualified:a,precise:o}},ve={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]]},ge=[null,[0,1],[3,1],[6,1],[9,1]],be={minute:function(e){return P(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),P(e,{second:0,millisecond:0}),e},hour:function(e){return P(e,{minute:0,second:0,millisecond:0}),e},day:function(e){return P(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")),P(e,{hour:0,minute:0,second:0,millisecond:0}),e},month:function(e){return P(e,{date:1,hour:0,minute:0,second:0,millisecond:0}),e},quarter:function(e){var n=e.quarter();return ge[n]&&P(e,{month:ge[n][0],date:ge[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=r.normalize(n),t=e.clone().set(t),e.isAfter(t)){var a=e;e=t,t=a}var o=e.clone();_e(n)?(o=o.next(n),n="week"):o=o.next(n);for(var i=[];o.isBefore(t);)i.push(o),o=o.add(1,n);return i},De=function(e){var n=e.timezones,t=e.tz;if(!1===n.hasOwnProperty(t)&&(t=_(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,i=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(i.dst),default_offset:i.offset,hemisphere:"s"===i.hem?"South":"North",current:{}};if(u.hasDst){var s=(a=i.dst)?a.split("->"):[];u.change={start:s[0],back:s[1]}}var c=i.offset,h=c;return!0===u.hasDst&&(h="North"===u.hemisphere?c-1:i.offset+1),!1===u.hasDst?(u.current.offset=c,u.current.isDST=!1):!0===o(e.epoch,u.change.start,u.change.back,c)?(u.current.offset=c,u.current.isDST="North"===u.hemisphere):(u.current.offset=h,u.current.isDST="South"===u.hemisphere),u},je=["century","decade","year","month","date","day","hour","minute","second","millisecond"],Oe={set:function(e,n){var t=this.clone();return t=Q(t,e),n&&(this.tz=_(n)),t},timezone:function(){return De(this)},isDST:function(){return De(this).current.isDST},hasDST:function(){return De(this).hasDst},offset:function(){return 60*De(this).current.offset},hemisphere:function(){return De(this).hemisphere},format:function(e){return ee(this,e)},unixFmt:function(e){return oe(this,e)},startOf:function(e){return we(this,e)},endOf:function(e){return ke(this,e)},leapYear:function(){var e=this.year();return r.isLeapYear(e)},progress:function(e){return se(this,e)},nearest:function(e){return ce(this,e)},diff:function(e,n){return de(this,e,n)},since:function(e){return e||(e=this.clone().set()),ye(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=_(e,n.timezones),n},every:function(e,n){return ze(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(ee(this,"nice-short")),this},logYear:function(){return console.log(""),console.log(ee(this,"full-short")),this},json:function(){var e=this;return je.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=W().indexOf(e);-1===n&&(n=V().indexOf(e)),-1===n&&(n=1),this._weekStart=n}else console.warn("Spacetime Error: Cannot understand .weekStart() input:",e);return this}};Oe.inDST=Oe.isDST,Oe.round=Oe.nearest,Oe.each=Oe.every;var Pe=Oe,Me=function(e){return"string"==typeof e&&(e=parseInt(e,10)),e},Se=["year","month","date","hour","minute","second","millisecond"],qe=function(e,n,t){for(var r=Se.indexOf(t),a=Se.slice(r,Se.length),o=0;o=24?n=24:n<0&&(n=0);var t=e.clone(),r=(e.hour()-n)*D.hour;return e.epoch-=r,P(e,{hour:n}),qe(e,t,"minute"),e.epoch},Ae=function(e,n){var t=n.match(/([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")}var r=!1,a=parseInt(t[1],10),o=parseInt(t[2],10);return a>12&&(r=!0),!1===r&&("am"===t[3]&&12===a&&(a=0),"pm"===t[3]&&a<12&&(a+=12)),(e=(e=(e=(e=e.hour(a)).minute(o)).second(0)).millisecond(0)).epoch},Te=function(e,n){if((n=Me(n))>28){var t=T[e.month()];n>t&&(n=t)}return n<=0&&(n=1),P(e,{date:n}),e.epoch},$e=function(e,n){"string"==typeof n&&(n=E()[n.toLowerCase()]),(n=Me(n))>=12&&(n=11),n<=0&&(n=0);var t=e.date();return t>T[n]&&(t=T[n]),P(e,{month:n,date:t}),e.epoch},xe=function(e,n){return n=Me(n),P(e,{year:n}),e.epoch},Ye=function(e,n){n=Me(n);var t=e.clone();return(n-=1)<=0?n=0:n>=365&&(n=364),e=(e=e.startOf("year")).add(n,"day"),qe(e,t,"hour"),e.epoch},Le={millisecond:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ce(n,e),n}return this.d.getMilliseconds()},second:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ee(n,e),n}return this.d.getSeconds()},minute:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ie(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=Ne(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=Ne(n,r),n.epoch=Ie(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=Ne(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 n.epoch=Ae(n,e),n}return"".concat(this.h12(),":").concat(r.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")}},Fe={date:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Te(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(),-1===(t=W().indexOf(e))&&(t=V().indexOf(e)));var r=this.d.getDay(),a=r-t,o=this.subtract(24*a,"hours");return P(o,{hour:n.hour(),minute:n.minute(),second:n.second()}),o},dayName:function(e){if(void 0===e)return V()[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=$e(n,e),n}return this.d.getMonth()}},Be=function(e){return e=(e=(e=e.minute(0)).second(0)).millisecond(1)},Ze={dayOfYear:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ye(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=Be(n)).monthName()&&(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=Be(t)).day("monday")).monthName()&&(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 C()[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)),ge[e])){var n=this.clone(),t=ge[e][0];return n=(n=(n=n.month(t)).date(1)).startOf("day")}for(var r=this.d.getMonth(),a=1;a=ve[n][o][1]&&a0&&(n.epoch=xe(n,-1*t)),"ad"===e&&t<0&&(n.epoch=xe(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}},He=Object.assign({},Le,Fe,Ze);He.milliseconds=He.millisecond,He.seconds=He.second,He.minutes=He.minute,He.hours=He.hour,He.hour24=He.hour,He.h12=He.hour12,He.h24=He.hour24,He.days=He.day;var Qe=function(e){Object.keys(He).forEach((function(n){e.prototype[n]=He[n]}))},Ge=["millisecond","second","minute","hour","date","month"],Ue={second:Ge.slice(0,1),minute:Ge.slice(0,2),quarterhour:Ge.slice(0,2),hour:Ge.slice(0,3),date:Ge.slice(0,4),month:Ge.slice(0,4),quarter:Ge.slice(0,4),season:Ge.slice(0,4),year:Ge,decade:Ge,century:Ge};Ue.week=Ue.hour,Ue.season=Ue.date,Ue.quarter=Ue.date;var We={year:!0,quarter:!0,season:!0,month:!0,week:!0,day:!0},Ve={month:!0,quarter:!0,season:!0,year:!0},Je=function(e){e.prototype.add=function(e,n){var t=this.clone();if(!n||0===e)return t;var a=this.clone();n=r.normalize(n),D[n]?t.epoch+=D[n]*e:"week"===n?t.epoch+=D.day*(7*e):"quarter"===n||"season"===n||"season"===n?t.epoch+=D.month*(4*e):"quarterhour"===n&&(t.epoch+=15*D.minute*e);var o={};if(Ue[n]&&Ue[n].forEach((function(e){o[e]=a[e]()})),We[n]){var i=a.timezone().current.offset-t.timezone().current.offset;t.epoch+=3600*i*1e3}if("month"===n&&(o.month=a.month()+e,o=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}(o,a)),"week"===n){var u=a.date()+7*e;u<=28&&u>1&&(o.date=u)}else if("date"===n){var s=a.date()+e;s<=28&&s>1?o.date=s:0!==e&&a.isSame(t,"day")&&(o.date=a.date()+e)}else"year"===n&&t.year()===a.year()?t.epoch+=D.week:"decade"===n?o.year=t.year()+10:"century"===n&&(o.year=t.year()+100);if(Ve[n]){var c=T[o.month];o.date=a.date(),o.date>c&&(o.date=c)}return P(t,o),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},Ke={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()}};Ke.date=Ke.day;var Re=function(e){e.prototype.isSame=function(n,t){return t?("string"!=typeof n&&"number"!=typeof n||(n=new e(n,this.timezone.name)),t=t.replace(/s$/,""),Ke[t]?Ke[t](this)===Ke[t](n):null):null}},Xe=function(e){var n={isAfter:function(e){e=r.beADate(e,this);var n=r.getEpoch(e);return null===n?null:this.epoch>n},isBefore:function(e){e=r.beADate(e,this);var n=r.getEpoch(e);return null===n?null:this.epoch2&&void 0!==arguments[2]&&arguments[2];e=r.beADate(e,this),n=r.beADate(n,this);var a=r.getEpoch(e);if(null===a)return null;var o=r.getEpoch(n);return null===o?null:t?this.isBetween(e,n)||this.isEqual(e)||this.isEqual(n):a2&&void 0!==arguments[2]?arguments[2]:{};if(this.epoch=null,this.tz=_(n,nn),this.silent=t.silent||!0,this.british=t.dmy||t.british,this._weekStart=1,void 0!==t.weekStart&&(this._weekStart=t.weekStart),Object.defineProperty(this,"d",{get:function(){var e=i(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 nn},set:function(e){return nn=e,e}}),void 0!==e||null===e){var r=Q(this,e,n);this.epoch=r.epoch}};Object.keys(Pe).forEach((function(e){tn.prototype[e]=Pe[e]})),tn.prototype.clone=function(){return new tn(this.epoch,this.tz,{silent:this.silent,weekStart:this._weekStart})},tn.prototype.toLocalDate=function(){return new Date(this.epoch)},Qe(tn),Je(tn),Re(tn),Xe(tn),en(tn);var rn=tn,an=function(e,n){var t=new rn(null),r=new rn(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 rn(null,e),i=n.hour();return i>=a&&i<=o&&(!(i===a&&n.minute()r.minute()))}))},on=function(e,n,t){return new rn(e,n,t)};on.now=function(e,n){return new rn((new Date).getTime(),e,n)},on.today=function(e,n){return new rn((new Date).getTime(),e,n).startOf("day")},on.tomorrow=function(e,n){return new rn((new Date).getTime(),e,n).add(1,"day").startOf("day")},on.yesterday=function(e,n){return new rn((new Date).getTime(),e,n).subtract(1,"day").startOf("day")},on.extend=function(e){return Object.keys(e).forEach((function(n){rn.prototype[n]=e[n]})),this},on.whereIts=an,on.version="6.4.3",on.plugin=on.extend;var un=on;var sn=function(e){return e&&e.default||e}(Object.freeze({__proto__:null,default:un})),cn=function(e){var n=e.sentences(0);if(!n)return null;var t=n.text()||"",r=t.match(/\(.*\)/);if(!r||!r[0])return null;var a=(t=(t=(t=(t=r[0]||"").trim()).replace(/^\(/,"")).replace(/\)$/,"")).split(/ – /);if((a=a.filter((function(e){return e})))[0]&&a[1]&&2===a.length)return{birth:a[0],death:a[1]};if(a[0]){var o=a[0].replace(/^(born|ne) (c\.)?/,"");if(sn(o).isValid())return{birth:o}}return null},hn=function(e){for(var n=e.categories(),t=0;t1e3)return a}}return null},ln=function(e){if(!e)return null;if((e=(e=e.replace(/\(.*\)/,"")).trim()).match(/^[0-9]{4}$/))return{year:parseInt(e,10)};var n=sn(e);return{year:n.year(),month:n.month(),date:n.date()}},fn=function(e){var t=n(e,"birth_date");if(t)return ln(t);if((t=cn(e))&&t.birth)return ln(t.birth);var r=hn(e);return r?{year:r}:null},dn=function(e){var t=n(e,"birth_place");return t||null},mn={"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},pn={"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},yn=function(e){var n=e.categories();return!!n.find((function(e){return mn.hasOwnProperty(e)}))||!n.find((function(e){return pn.hasOwnProperty(e)}))&&null},vn={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},gn={"recent death":!0,"recent death presumed":!0,"recent death confirmed":!0,obituary:!0,elegy:!0,eulogy:!0,panegyric:!0,memorial:!0},bn=function(e){for(var n=e.templates(),t=0;t1e3)return a}}return null},zn=function(e){var t=n(e,"death_date");if(t)return ln(t);if((t=cn(e))&&t.death)return ln(t.death);var r=_n(e);return r?{year:r}:null},Dn=function(e){var t=n(e,"death_place");return t||null},jn=function(e){var t=n(e,"nationality");return t||null};return function(e){e.Doc.prototype.birthDate=function(){return fn(this)},e.Doc.prototype.birthPlace=function(){return dn(this)},e.Doc.prototype.isAlive=function(){return kn(this)},e.Doc.prototype.deathDate=function(){return zn(this)},e.Doc.prototype.deathPlace=function(){return Dn(this)},e.Doc.prototype.nationality=function(){return jn(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 3eaaa495..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 = { @@ -127,17 +127,17 @@ var _infoboxes = { 'us cabinet official': true }; -var byInfobox = function byInfobox(doc, prop) { - var infoboxes = doc.infoboxes(); +const byInfobox = function (doc, prop) { + let infoboxes = doc.infoboxes(); - for (var i = 0; i < infoboxes.length; i++) { - var inf = infoboxes[i]; - var type = inf.type(); + for (let i = 0; i < infoboxes.length; i++) { + let inf = infoboxes[i]; + let type = inf.type(); type = type.toLowerCase(); type = type.trim(); if (_infoboxes.hasOwnProperty(type)) { - var s = inf.get(prop); + let s = inf.get(prop); if (s) { return s.text(); @@ -150,172 +150,105 @@ var byInfobox = function byInfobox(doc, prop) { var getInfobox = byInfobox; -/* spencermountain/spacetime 6.4.3 Apache 2.0 */ -function createCommonjsModule(fn, module) { - return module = { - exports: {} - }, fn(module, module.exports), module.exports; -} - -function getCjsExportFromNamespace(n) { - return n && n['default'] || n; -} - -var fns = createCommonjsModule(function (module, exports) { - //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html - exports.isLeapYear = function (year) { - return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; - }; // unsurprisingly-nasty `typeof date` call - - - exports.isDate = function (d) { - return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf()); - }; +/* spencermountain/spacetime 6.14.0 Apache 2.0 */ +function _typeof(obj) { + "@babel/helpers - typeof"; - exports.isArray = function (input) { - return Object.prototype.toString.call(input) === '[object Array]'; - }; - - exports.isObject = function (input) { - return Object.prototype.toString.call(input) === '[object Object]'; - }; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } - exports.zeroPad = function (str) { - var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; - var pad = '0'; - str = str + ''; - return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str; - }; + return _typeof(obj); +} - exports.titleCase = function (str) { - if (!str) { - return ''; - } +function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); +} - return str[0].toUpperCase() + str.substr(1); - }; +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} - exports.ordinal = function (i) { - var j = i % 10; - var k = i % 100; +function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; - if (j === 1 && k !== 11) { - return i + 'st'; - } + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); - if (j === 2 && k !== 12) { - return i + 'nd'; + if (i && _arr.length === i) break; } - - if (j === 3 && k !== 13) { - return i + 'rd'; + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; } + } - return i + 'th'; - }; //strip 'st' off '1st'.. - - - exports.toCardinal = function (str) { - str = String(str); - str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1'); - return parseInt(str, 10); - }; //used mostly for cleanup of unit names, like 'months' - - - exports.normalize = function () { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - str = str.toLowerCase().trim(); - str = str.replace(/ies$/, 'y'); //'centuries' - - str = str.replace(/s$/, ''); - str = str.replace(/-/g, ''); + return _arr; +} - if (str === 'day') { - return 'date'; - } +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); +} - return str; - }; +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; - exports.getEpoch = function (tmp) { - //support epoch - if (typeof tmp === 'number') { - return tmp; - } //suport date objects + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; +} - if (exports.isDate(tmp)) { - return tmp.getTime(); - } +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} - if (tmp.epoch) { - return tmp.epoch; - } +var MSEC_IN_HOUR = 60 * 60 * 1000; //convert our local date syntax a javascript UTC date - return null; - }; //make sure this input is a spacetime obj +var toUtc = function toUtc(dstChange, offset, year) { + var _dstChange$split = dstChange.split('/'), + _dstChange$split2 = _slicedToArray(_dstChange$split, 2), + month = _dstChange$split2[0], + rest = _dstChange$split2[1]; + var _rest$split = rest.split(':'), + _rest$split2 = _slicedToArray(_rest$split, 2), + day = _rest$split2[0], + hour = _rest$split2[1]; - exports.beADate = function (d, s) { - if (exports.isObject(d) === false) { - return s.clone().set(d); - } + return Date.UTC(year, month - 1, day, hour) - offset * MSEC_IN_HOUR; +}; // compare epoch with dst change events (in utc) - return d; - }; - exports.formatTimezone = function (offset) { - var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var absOffset = Math.abs(offset); - var sign = offset > 0 ? '+' : '-'; - return "".concat(sign).concat(exports.zeroPad(absOffset)).concat(delimiter, "00"); - }; -}); -var fns_1 = fns.isLeapYear; -var fns_2 = fns.isDate; -var fns_3 = fns.isArray; -var fns_4 = fns.isObject; -var fns_5 = fns.zeroPad; -var fns_6 = fns.titleCase; -var fns_7 = fns.ordinal; -var fns_8 = fns.toCardinal; -var fns_9 = fns.normalize; -var fns_10 = fns.getEpoch; -var fns_11 = fns.beADate; -var fns_12 = fns.formatTimezone; -var zeroPad = fns.zeroPad; - -var serialize = function serialize(d) { - return zeroPad(d.getMonth() + 1) + '/' + zeroPad(d.getDate()) + ':' + zeroPad(d.getHours()); -}; // a timezone will begin with a specific offset in january -// then some will switch to something else between november-march - - -var shouldChange = function shouldChange(epoch, start, end, defaultOffset) { - //note: this has a cray order-of-operations issue - //we can't get the date, without knowing the timezone, and vice-versa - //it's possible that we can miss a dst-change by a few hours. - var d = new Date(epoch); //(try to mediate this a little?) - - var bias = d.getTimezoneOffset() || 0; - var shift = bias + defaultOffset * 60; //in minutes - - shift = shift * 60 * 1000; //in ms - - d = new Date(epoch + shift); - var current = serialize(d); //eg. is it after ~november? - - if (current >= start) { - //eg. is it before ~march~ too? - if (current < end) { - return true; - } - } +var inSummerTime = function inSummerTime(epoch, start, end, summerOffset, winterOffset) { + var year = new Date(epoch).getUTCFullYear(); + var startUtc = toUtc(start, winterOffset, year); + var endUtc = toUtc(end, summerOffset, year); // simple number comparison now - return false; + return epoch >= startUtc && epoch < endUtc; }; -var summerTime = shouldChange; // it reproduces some things in ./index.js, but speeds up spacetime considerably +var summerTime = inSummerTime; // it reproduces some things in ./index.js, but speeds up spacetime considerably var quickOffset = function quickOffset(s) { var zones = s.timezones; @@ -339,7 +272,7 @@ var quickOffset = function quickOffset(s) { } var split = obj.dst.split('->'); - var inSummer = summerTime(s.epoch, split[0], split[1], jul); + var inSummer = summerTime(s.epoch, split[0], split[1], jul, dec); if (inSummer === true) { return jul; @@ -352,96 +285,96 @@ var quick = quickOffset; var _build = { "9|s": "2/dili,2/jayapura", "9|n": "2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau", - "9.5|s|04/05:03->10/04:02": "4/adelaide,4/broken_hill,4/south,4/yancowinna", + "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": "12/casey,2/kuala_lumpur,2/makassar,2/singapore,4/perth,4/west", - "8|n|03/25:03->09/29:23": "2/ulan_bator", - "8|n": "2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar", + "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/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane", + "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/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/thimbu,2/thimphu,2/urumqi,9/chagos", - "6.5|n": "2/rangoon,2/yangon,9/cocos", + "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/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives", - "5.75|n": "2/kathmandu,2/katmandu", + "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/21:00->09/20:24": "2/tehran", + "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/29:03->10/25:04": "2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye", - "3|n|03/29:02->10/25:03": "8/chisinau,8/tiraspol", - "3|n|03/29:00->10/24:24": "2/beirut", - "3|n|03/27:02->10/25:02": "2/jerusalem,2/tel_aviv", - "3|n|03/27:00->10/31:01": "2/gaza,2/hebron", - "3|n|03/27:00->10/30:01": "2/amman", - "3|n|03/27:00->10/29:24": "2/damascus", - "3|n": "0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte", - "2|s|03/29:02->10/25:02": "12/troll", + "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/29:02->10/25:03": "0/ceuta,arctic/longyearbyen,3/jan_mayen,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", + "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|04/02:01->09/03:03": "0/windhoek", - "1|s": "0/kinshasa,0/luanda", - "1|n|04/19:03->05/24:02": "0/casablanca,0/el_aaiun", - "1|n|03/29:01->10/25:02": "3/canary,3/faeroe,3/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london", - "1|n": "0/algiers,0/bangui,0/brazzaville,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis", + "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/05:04->09/27:03": "11/apia", + "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/05:03->09/27:02": "12/mcmurdo,12/south_pole,11/auckland", - "12|s|01/12:03->11/08:02": "11/fiji", + "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/05:03->04/05:02": "11/chatham", - "11|s": "12/macquarie,11/bougainville", - "11|n": "2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape", - "11.5|n|04/05:03->10/04:02": "11/norfolk", - "10|s|04/05:03->10/04:02": "4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria", - "10|s": "12/dumontdurville,4/brisbane,4/lindeman,4/queensland", - "10|n": "2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap", - "10.5|s|04/05:01->10/04:02": "4/lhi,4/lord_howe", - "0|n|03/29:00->10/25: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,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu", - "-9|n|03/08:02->11/01:02": "1/adak,1/atka", + "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/08:02->11/01:02": "1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat", + "-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/08:02->11/01:02": "1/dawson,1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/whitehorse,6/pacific,6/yukon,10/bajanorte", - "-7|n": "1/creston,1/dawson_creek,1/hermosillo,1/phoenix", - "-6|s|04/04:22->09/05:22": "7/easterisland,11/easter", - "-6|n|04/05:02->10/25:02": "1/chihuahua,1/mazatlan,10/bajasur", - "-6|n|03/08:02->11/01:02": "1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/shiprock,1/yellowknife,6/mountain", - "-6|n": "1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos", - "-5|s": "1/lima,1/rio_branco,5/acre", - "-5|n|04/05:02->10/25:02": "1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general", + "-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|03/08:02->11/01:02": "1/chicago,1/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central", - "-5|n": "1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre", + "-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/04:24->09/06:00": "1/santiago,7/continental", - "-4|s|03/21:24->10/04:00": "1/asuncion", + "-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|03/08:02->11/01:02": "1/detroit,1/fort_wayne,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,6/eastern", - "-4|n|03/08:00->11/01:01": "1/havana", "-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/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east", - "-3|n|03/08:02->11/01: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/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem", - "-2|s": "5/denoronha", - "-2|n|03/28:22->10/24:23": "1/godthab", - "-2|n|03/08:02->11/01:02": "1/miquelon", - "-2|n": "1/noronha,3/south_georgia", - "-2.5|n|03/08:02->11/01:02": "1/st_johns,6/newfoundland", + "-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", - "-10|n": "11/honolulu,11/johnston,11/rarotonga,11/tahiti" + "-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" }; var _build$1 = /*#__PURE__*/Object.freeze({ @@ -451,7 +384,18 @@ var _build$1 = /*#__PURE__*/Object.freeze({ var _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc']; -var data = getCjsExportFromNamespace(_build$1); + +function createCommonjsModule(fn, module) { + return module = { + exports: {} + }, fn(module, module.exports), module.exports; +} + +function getCjsExportFromNamespace$1(n) { + return n && n['default'] || n; +} + +var data = getCjsExportFromNamespace$1(_build$1); var all = {}; Object.keys(data).forEach(function (k) { var split = k.split('|'); @@ -475,7 +419,7 @@ Object.keys(data).forEach(function (k) { }); all['utc'] = { offset: 0, - hem: 'n' //(sorry) + hem: 'n' //default to northern hemisphere - (sorry!) }; //add etc/gmt+n @@ -499,9 +443,7 @@ for (var i = -14; i <= 14; i += 0.5) { offset: i * -1, hem: 'n' }; -} // console.log(all) -// console.log(Object.keys(all).length) - +} var unpack = all; //find the implicit iana code for this machine. //safely query the Intl object @@ -550,7 +492,7 @@ var gmtOffset = /gmt([\-+]?[0-9]+)/i; var toIana = function toIana(num) { num = Number(num); - if (num > -13 && num < 13) { + if (num >= -13 && num <= 13) { num = num * -1; //it's opposite! num = (num > 0 ? '+' : '') + num; //add plus sign @@ -561,7 +503,7 @@ var toIana = function toIana(num) { return null; }; -var parseOffset = function parseOffset(tz) { +var parseOffset$1 = function parseOffset(tz) { // '+5hrs' var m = tz.match(isOffset); @@ -594,7 +536,7 @@ var parseOffset = function parseOffset(tz) { return null; }; -var parseOffset_1 = parseOffset; +var parseOffset_1$1 = parseOffset$1; var local = guessTz_1(); //add all the city names by themselves var cities = Object.keys(unpack).reduce(function (h, k) { @@ -620,13 +562,16 @@ var lookupTz = function lookupTz(str, zones) { return local; } - var tz = str.trim(); - var split = str.split('/'); //support long timezones like 'America/Argentina/Rio_Gallegos' - - if (split.length > 2 && zones.hasOwnProperty(tz) === false) { - tz = split[0] + '/' + split[1]; + if (typeof str !== 'string') { + console.error("Timezone must be a string - recieved: '", str, "'\n"); } + var tz = str.trim(); // let split = str.split('/') + //support long timezones like 'America/Argentina/Rio_Gallegos' + // if (split.length > 2 && zones.hasOwnProperty(tz) === false) { + // tz = split[0] + '/' + split[1] + // } + tz = tz.toLowerCase(); if (zones.hasOwnProperty(tz) === true) { @@ -647,7 +592,7 @@ var lookupTz = function lookupTz(str, zones) { if (/[0-9]/.test(tz) === true) { - var id = parseOffset_1(tz); + var id = parseOffset_1$1(tz); if (id) { return id; @@ -691,12 +636,20 @@ var walk = function walk(s, n, fn, unit, previous) { var diff = n - current; s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative + // console.log(unit, diff) - if (unit === 'day' && Math.abs(diff) > 28) { + if (unit === 'day') { + // s.epoch -= ms.minute //but don't push it over a month - if (n < 28) { + if (Math.abs(diff) > 28 && n < 28) { s.epoch += milliseconds.hour; } + } // 1st time: oops, did we change previous unit? revert it. + + + if (previous !== null && startUnit !== s.d[previous]()) { + // console.warn('spacetime warning: missed setting ' + unit) + s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...? } //repair it if we've gone too far or something //(go by half-steps, just in case) @@ -709,19 +662,17 @@ var walk = function walk(s, n, fn, unit, previous) { while (s.d[fn]() > n) { s.epoch -= halfStep; - } //oops, did we change previous unit? revert it. + } // 2nd time: did we change previous unit? revert it. if (previous !== null && startUnit !== s.d[previous]()) { // console.warn('spacetime warning: missed setting ' + unit) - s.epoch = original; // i mean, but make it close... - - s.epoch += milliseconds[unit] * diff * 0.89; // i guess? + s.epoch = original; } }; //find the desired date by a increment/check while loop -var units = { +var units$3 = { year: { valid: function valid(n) { return n > -4000 && n < 4000; @@ -751,7 +702,7 @@ var units = { if (startUnit !== s.d.getFullYear()) { s.epoch = original; - } //incriment by day + } //increment by day while (s.d.getMonth() < n) { @@ -808,7 +759,7 @@ var units = { }; var walkTo = function walkTo(s, wants) { - var keys = Object.keys(units); + var keys = Object.keys(units$3); var old = s.clone(); for (var i = 0; i < keys.length; i++) { @@ -824,7 +775,7 @@ var walkTo = function walkTo(s, wants) { } //make-sure it's valid - if (!units[k].valid(n)) { + if (!units$3[k].valid(n)) { s.epoch = null; if (s.silent === false) { @@ -832,10 +783,9 @@ var walkTo = function walkTo(s, wants) { } return; - } // console.log(k, n) - + } - units[k].walkTo(s, n); + units$3[k].walkTo(s, n); } return; @@ -862,11 +812,11 @@ function buildMapping() { return obj; } -var months = { - "short": function _short() { +var months$1 = { + "short": function short() { return shortMonths; }, - "long": function _long() { + "long": function long() { return longMonths; }, mapping: function mapping() { @@ -878,13 +828,13 @@ var months = { } }; //pull-apart ISO offsets, like "+0100" -var parseOffset$1 = function parseOffset(s, offset) { +var parseOffset = function parseOffset(s, offset) { if (!offset) { return s; } //this is a fancy-move - if (offset === 'Z') { + if (offset === 'Z' || offset === 'z') { offset = '+0000'; } // according to ISO8601, tz could be hh:mm, hhmm or hh // so need few more steps before the calculation. @@ -936,7 +886,7 @@ var parseOffset$1 = function parseOffset(s, offset) { return s; }; -var parseOffset_1$1 = parseOffset$1; +var parseOffset_1 = parseOffset; var parseTime = function parseTime(s) { var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; @@ -959,6 +909,11 @@ var parseTime = function parseTime(s) { return s.startOf('day'); } + if (arr[4] > 999) { + // fix overflow issue with milliseconds, if input is longer than standard (e.g. 2017-08-06T09:00:00.123456Z) + arr[4] = parseInt("".concat(arr[4]).substring(0, 3), 10); + } + s = s.hour(h); s = s.minute(m); s = s.seconds(arr[3] || 0); @@ -1009,8 +964,142 @@ var monthLengths = [31, // January - 31 days 30, // November - 30 days 31 // December - 31 days ]; -var monthLengths_1 = monthLengths; -var isLeapYear = fns.isLeapYear; //given a month, return whether day number exists in it +var monthLengths_1 = monthLengths; // 28 - feb + +var fns = createCommonjsModule(function (module, exports) { + //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html + exports.isLeapYear = function (year) { + return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; + }; // unsurprisingly-nasty `typeof date` call + + + exports.isDate = function (d) { + return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf()); + }; + + exports.isArray = function (input) { + return Object.prototype.toString.call(input) === '[object Array]'; + }; + + exports.isObject = function (input) { + return Object.prototype.toString.call(input) === '[object Object]'; + }; + + exports.isBoolean = function (input) { + return Object.prototype.toString.call(input) === '[object Boolean]'; + }; + + exports.zeroPad = function (str) { + var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; + var pad = '0'; + str = str + ''; + return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str; + }; + + exports.titleCase = function (str) { + if (!str) { + return ''; + } + + return str[0].toUpperCase() + str.substr(1); + }; + + exports.ordinal = function (i) { + var j = i % 10; + var 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'; + }; //strip 'st' off '1st'.. + + + exports.toCardinal = function (str) { + str = String(str); + str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1'); + return parseInt(str, 10); + }; //used mostly for cleanup of unit names, like 'months' + + + exports.normalize = function () { + var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + str = str.toLowerCase().trim(); + str = str.replace(/ies$/, 'y'); //'centuries' + + str = str.replace(/s$/, ''); + str = str.replace(/-/g, ''); + + if (str === 'day' || str === 'days') { + return 'date'; + } + + if (str === 'min' || str === 'mins') { + return 'minute'; + } + + return str; + }; + + exports.getEpoch = function (tmp) { + //support epoch + if (typeof tmp === 'number') { + return tmp; + } //suport date objects + + + if (exports.isDate(tmp)) { + return tmp.getTime(); + } + + if (tmp.epoch) { + return tmp.epoch; + } + + return null; + }; //make sure this input is a spacetime obj + + + exports.beADate = function (d, s) { + if (exports.isObject(d) === false) { + return s.clone().set(d); + } + + return d; + }; + + exports.formatTimezone = function (offset) { + var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + var sign = offset > 0 ? '+' : '-'; + var absOffset = Math.abs(offset); + var hours = exports.zeroPad(parseInt('' + absOffset, 10)); + var minutes = exports.zeroPad(absOffset % 1 * 60); + return "".concat(sign).concat(hours).concat(delimiter).concat(minutes); + }; +}); +fns.isLeapYear; +fns.isDate; +fns.isArray; +fns.isObject; +fns.isBoolean; +fns.zeroPad; +fns.titleCase; +fns.ordinal; +fns.toCardinal; +fns.normalize; +fns.getEpoch; +fns.beADate; +fns.formatTimezone; +var isLeapYear$2 = fns.isLeapYear; //given a month, return whether day number exists in it var hasDate = function hasDate(obj) { //invalid values @@ -1020,7 +1109,7 @@ var hasDate = function hasDate(obj) { if (obj.month === 1) { - if (isLeapYear(obj.year) && obj.date <= 29) { + if (isLeapYear$2(obj.year) && obj.date <= 29) { return true; } else { return obj.date <= 28; @@ -1038,21 +1127,25 @@ var hasDate = function hasDate(obj) { }; var hasDate_1 = hasDate; -var months$1 = months.mapping(); +var months = months$1.mapping(); var parseYear = function parseYear() { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; //support '18 -> 2018 - // str = str.replace(/^'([0-9]{2})/, '20$1') - // str = str.replace('([0-9]+) ?b\.?c\.?$', '-$1') + var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + var today = arguments.length > 1 ? arguments[1] : undefined; + var year = parseInt(str.trim(), 10); // use a given year from options.today + + if (!year && today) { + year = today.year; + } // fallback to this year + - var year = parseInt(str.trim(), 10); year = year || new Date().getFullYear(); return year; }; var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700 { - reg: /^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/, + reg: /^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i, parse: function parse(s, arr, givenTz, options) { var month = parseInt(arr[2], 10) - 1; var obj = { @@ -1066,14 +1159,14 @@ var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00- return s; } - parseOffset_1$1(s, arr[5]); + parseOffset_1(s, arr[5]); walk_1(s, obj); s = parseTime_1(s, arr[4]); return s; } }, //iso "2015-03-25" or "2015/03/25" or "2015/03/25 12:26:14 PM" { - 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, + 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 parse(s, arr) { var obj = { year: arr[1], @@ -1081,38 +1174,80 @@ var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00- date: parseInt(arr[3], 10) }; - if (obj.month >= 12) { - //support yyyy/dd/mm (weird, but ok) - obj.date = parseInt(arr[2], 10); - obj.month = parseInt(arr[3], 10) - 1; - } - + if (obj.month >= 12) { + //support yyyy/dd/mm (weird, but ok) + obj.date = parseInt(arr[2], 10); + obj.month = parseInt(arr[3], 10) - 1; + } + + if (hasDate_1(obj) === false) { + s.epoch = null; + return s; + } + + walk_1(s, obj); + s = parseTime_1(s, arr[4]); + return s; + } +}, //mm/dd/yyyy - uk/canada "6/28/2019, 12:26:14 PM" +{ + 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 parse(s, arr) { + var month = parseInt(arr[1], 10) - 1; + var date = parseInt(arr[2], 10); //support dd/mm/yyy + + if (s.british || month >= 12) { + date = parseInt(arr[1], 10); + month = parseInt(arr[2], 10) - 1; + } + + var year = parseYear(arr[3], s._today) || new Date().getFullYear(); + var obj = { + year: year, + month: month, + date: date + }; + + if (hasDate_1(obj) === false) { + s.epoch = null; + return s; + } + + walk_1(s, obj); + s = parseTime_1(s, arr[4]); + return s; + } +}, // '2012-06' last attempt at iso-like format +{ + reg: /^([0-9]{4})[\-\/]([0-9]{2})$/i, + parse: function parse(s, arr, givenTz, options) { + var month = parseInt(arr[2], 10) - 1; + var obj = { + year: arr[1], + month: month, + date: 1 + }; + if (hasDate_1(obj) === false) { s.epoch = null; return s; } + parseOffset_1(s, arr[5]); walk_1(s, obj); s = parseTime_1(s, arr[4]); return s; } -}, //mm/dd/yyyy - uk/canada "6/28/2019, 12:26:14 PM" +}, //common british format - "25-feb-2015" { - 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, + reg: /^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i, parse: function parse(s, arr) { - var month = parseInt(arr[1], 10) - 1; - var date = parseInt(arr[2], 10); //support dd/mm/yyy - - if (s.british || month >= 12) { - date = parseInt(arr[1], 10); - month = parseInt(arr[2], 10) - 1; - } - - var year = arr[3] || new Date().getFullYear(); + var month = months[arr[2].toLowerCase()]; + var year = parseYear(arr[3], s._today); var obj = { year: year, month: month, - date: date + date: fns.toCardinal(arr[1] || '') }; if (hasDate_1(obj) === false) { @@ -1124,16 +1259,16 @@ var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00- s = parseTime_1(s, arr[4]); return s; } -}, //common british format - "25-feb-2015" +}, //alt short format - "feb-25-2015" { - reg: /^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i, + reg: /^([a-z]+)[\-\/]([0-9]{1,2})[\-\/]?([0-9]{4})?$/i, parse: function parse(s, arr) { - var month = months$1[arr[2].toLowerCase()]; - var year = parseYear(arr[3]); + var month = months[arr[1].toLowerCase()]; + var year = parseYear(arr[3], s._today); var obj = { year: year, month: month, - date: fns.toCardinal(arr[1] || '') + date: fns.toCardinal(arr[2] || '') }; if (hasDate_1(obj) === false) { @@ -1150,8 +1285,8 @@ var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00- { reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i, parse: function parse(s, arr) { - var month = months$1[arr[1].toLowerCase()]; - var year = parseYear(arr[3]); + var month = months[arr[1].toLowerCase()]; + var year = parseYear(arr[3], s._today); var obj = { year: year, month: month, @@ -1171,12 +1306,12 @@ var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00- { reg: /^([a-z]+) ([0-9]{4})$/i, parse: function parse(s, arr) { - var month = months$1[arr[1].toLowerCase()]; - var year = parseYear(arr[2]); + var month = months[arr[1].toLowerCase()]; + var year = parseYear(arr[2], s._today); var obj = { year: year, month: month, - date: 1 + date: s._today.date || 1 }; if (hasDate_1(obj) === false) { @@ -1192,13 +1327,13 @@ var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00- { 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 parse(s, arr) { - var month = months$1[arr[2].toLowerCase()]; + var month = months[arr[2].toLowerCase()]; if (!month) { return null; } - var year = parseYear(arr[3]); + var year = parseYear(arr[3], s._today); var obj = { year: year, month: month, @@ -1215,6 +1350,36 @@ var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00- return s; } }, { + // 'q2 2002' + reg: /^(q[0-9])( of)?( [0-9]{4})?/i, + parse: function parse(s, arr) { + var quarter = arr[1] || ''; + s = s.quarter(quarter); + var year = arr[3] || ''; + + if (year) { + year = year.trim(); + s = s.year(year); + } + + return s; + } +}, { + // 'summer 2002' + reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i, + parse: function parse(s, arr) { + var season = arr[1] || ''; + s = s.season(season); + var year = arr[3] || ''; + + if (year) { + year = year.trim(); + s = s.year(year); + } + + return s; + } +}, { // '200bc' reg: /^[0-9,]+ ?b\.?c\.?$/i, parse: function parse(s, arr) { @@ -1268,12 +1433,18 @@ var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00- // '1992' reg: /^[0-9]{4}( ?a\.?d\.?)?$/i, parse: function parse(s, arr) { - var year = parseYear(arr[0]); - var d = new Date(); + var today = s._today; + var year = parseYear(arr[0], today); + var d = new Date(); // using today's date, but a new month is awkward. + + if (today.month && !today.date) { + today.date = 1; + } + var obj = { year: year, - month: d.getMonth(), - date: d.getDate() + month: today.month || d.getMonth(), + date: today.date || d.getDate() }; if (hasDate_1(obj) === false) { @@ -1286,41 +1457,51 @@ var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00- return s; } }]; -var strParse = strFmt; +var strParse = strFmt; // pull in 'today' data for the baseline moment + +var getNow = function getNow(s) { + s.epoch = Date.now(); + Object.keys(s._today || {}).forEach(function (k) { + if (typeof s[k] === 'function') { + s = s[k](s._today[k]); + } + }); + return s; +}; + var dates = { now: function now(s) { - s.epoch = Date.now(); - return s; - }, - tonight: function tonight(s) { - s.epoch = Date.now(); - s = s.hour(18); - return s; + return getNow(s); }, today: function today(s) { - s.epoch = Date.now(); + return getNow(s); + }, + tonight: function tonight(s) { + s = getNow(s); + s = s.hour(18); //6pm + return s; }, tomorrow: function tomorrow(s) { - s.epoch = Date.now(); + s = getNow(s); s = s.add(1, 'day'); s = s.startOf('day'); return s; }, yesterday: function yesterday(s) { - s.epoch = Date.now(); + s = getNow(s); s = s.subtract(1, 'day'); s = s.startOf('day'); return s; }, christmas: function christmas(s) { - var year = new Date().getFullYear(); + var year = getNow(s).year(); s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25 return s; }, 'new years': function newYears(s) { - var year = new Date().getFullYear(); + var year = getNow(s).year(); s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31 return s; @@ -1347,11 +1528,15 @@ var defaults = { date: 1 }; //support [2016, 03, 01] format -var handleArray = function handleArray(s, arr) { +var handleArray = function handleArray(s, arr, today) { + if (arr.length === 0) { + return s; + } + var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; for (var i = 0; i < order.length; i++) { - var num = arr[i] || defaults[order[i]] || 0; + var num = arr[i] || today[order[i]] || defaults[order[i]] || 0; s = s[order[i]](num); } @@ -1359,8 +1544,13 @@ var handleArray = function handleArray(s, arr) { }; //support {year:2016, month:3} format -var handleObject = function handleObject(s, obj) { - obj = Object.assign({}, defaults, obj); +var handleObject = function handleObject(s, obj, today) { + // if obj is empty, do nothing + if (Object.keys(obj).length === 0) { + return s; + } + + obj = Object.assign({}, defaults, today, obj); var keys = Object.keys(obj); for (var i = 0; i < keys.length; i++) { @@ -1375,7 +1565,7 @@ var handleObject = function handleObject(s, obj) { continue; } - var num = obj[unit] || defaults[unit] || 0; + var num = obj[unit] || today[unit] || defaults[unit] || 0; s = s[unit](num); } @@ -1384,7 +1574,8 @@ var handleObject = function handleObject(s, obj) { var parseInput = function parseInput(s, input, givenTz) { - //if we've been given a epoch number, it's easy + var today = s._today || defaults; //if we've been given a epoch number, it's easy + if (typeof input === 'number') { if (input > 0 && input < minimumEpoch && s.silent === false) { console.warn(' - Warning: You are setting the date to January 1970.'); @@ -1396,9 +1587,18 @@ var parseInput = function parseInput(s, input, givenTz) { } //set tmp time - s.epoch = Date.now(); + s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists + + if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) { + var res = handleObject(s, today, defaults); + + if (res.isValid()) { + s.epoch = res.epoch; + } + } // null input means 'now' + - if (input === null || input === undefined) { + if (input === null || input === undefined || input === '') { return s; //k, we're good. } //support input of Date() object @@ -1410,7 +1610,7 @@ var parseInput = function parseInput(s, input, givenTz) { if (fns.isArray(input) === true) { - s = handleArray(s, input); + s = handleArray(s, input, today); return s; } //support {year:2016, month:3} format @@ -1423,7 +1623,7 @@ var parseInput = function parseInput(s, input, givenTz) { return s; } - s = handleObject(s, input); + s = handleObject(s, input, today); return s; } //input as a string.. @@ -1447,10 +1647,11 @@ var parseInput = function parseInput(s, input, givenTz) { var m = input.match(strParse[i].reg); if (m) { - var res = strParse[i].parse(s, m, givenTz); + // console.log(strFmt[i].reg) + var _res = strParse[i].parse(s, m, givenTz); - if (res !== null) { - return res; + if (_res !== null && _res.isValid()) { + return _res; } } } @@ -1467,60 +1668,63 @@ var input = parseInput; var shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; var longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; var days = { - "short": function _short2() { + "short": function short() { return shortDays; }, - "long": function _long2() { + "long": function long() { return longDays; }, set: function set(i18n) { shortDays = i18n["short"] || shortDays; longDays = i18n["long"] || longDays; + }, + aliases: { + mo: 1, + tu: 2, + we: 3, + th: 4, + fr: 5, + sa: 6, + su: 7, + tues: 2, + weds: 3, + wedn: 3, + thur: 4, + thurs: 4 + } +}; +var titleCaseEnabled = true; +var caseFormat = { + useTitleCase: function useTitleCase() { + return titleCaseEnabled; + }, + set: function set(useTitleCase) { + titleCaseEnabled = useTitleCase; } }; // it's kind of nuts how involved this is // "+01:00", "+0100", or simply "+01" var isoOffset = function isoOffset(s) { var offset = s.timezone().current.offset; - var isNegative = offset < 0; - var minute = '00'; //handle 5.5 → '5:30' - - if (Math.abs(offset % 1) === 0.5) { - minute = '30'; - - if (offset >= 0) { - offset = Math.floor(offset); - } else { - offset = Math.ceil(offset); - } - } - - if (isNegative) { - //handle negative sign - offset *= -1; - offset = fns.zeroPad(offset, 2); - offset = '-' + offset; - } else { - offset = fns.zeroPad(offset, 2); - offset = '+' + offset; - } + return !offset ? 'Z' : fns.formatTimezone(offset, ':'); +}; - offset = offset + ':' + minute; //'Z' means 00 +var _offset = isoOffset; - if (offset === '+00:00') { - offset = 'Z'; +var applyCaseFormat = function applyCaseFormat(str) { + if (caseFormat.useTitleCase()) { + return fns.titleCase(str); } - return offset; + return str; }; -var _offset = isoOffset; var format = { day: function day(s) { - return fns.titleCase(s.dayName()); + return applyCaseFormat(s.dayName()); }, 'day-short': function dayShort(s) { - return fns.titleCase(days["short"]()[s.day()]); + return applyCaseFormat(days["short"]()[s.day()]); }, 'day-number': function dayNumber(s) { return s.day(); @@ -1541,10 +1745,10 @@ var format = { return fns.zeroPad(s.date()); }, month: function month(s) { - return fns.titleCase(s.monthName()); + return applyCaseFormat(s.monthName()); }, 'month-short': function monthShort(s) { - return fns.titleCase(months["short"]()[s.month()]); + return applyCaseFormat(months$1["short"]()[s.month()]); }, 'month-number': function monthNumber(s) { return s.month(); @@ -1685,16 +1889,22 @@ var format = { }, //i made these up nice: function nice(s) { - return "".concat(months["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); + return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); + }, + 'nice-24': function nice24(s) { + return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); }, 'nice-year': function niceYear(s) { - return "".concat(months["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.year()); + return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.year()); }, 'nice-day': function niceDay(s) { - return "".concat(days["short"]()[s.day()], " ").concat(fns.titleCase(months["short"]()[s.month()]), " ").concat(fns.ordinal(s.date())); + return "".concat(days["short"]()[s.day()], " ").concat(applyCaseFormat(months$1["short"]()[s.month()]), " ").concat(fns.ordinal(s.date())); }, 'nice-full': function niceFull(s) { - return "".concat(s.dayName(), " ").concat(fns.titleCase(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); + return "".concat(s.dayName(), " ").concat(applyCaseFormat(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); + }, + 'nice-full-24': function niceFull24(s) { + return "".concat(s.dayName(), " ").concat(applyCaseFormat(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); } }; //aliases @@ -1711,6 +1921,7 @@ var aliases = { 'month-iso': 'iso-month', 'year-iso': 'iso-year', 'nice-short': 'nice', + 'nice-short-24': 'nice-24', mdy: 'numeric-us', dmy: 'numeric-uk', ymd: 'numeric', @@ -1740,7 +1951,7 @@ var printFormat = function printFormat(s) { out = String(out); if (str !== 'ampm') { - out = fns.titleCase(out); + out = applyCaseFormat(out); } } @@ -1754,7 +1965,13 @@ var printFormat = function printFormat(s) { fmt = fmt.toLowerCase().trim(); if (format.hasOwnProperty(fmt)) { - return String(format[fmt](s) || ''); + var _out = String(format[fmt](s)); + + if (fmt !== 'ampm') { + return applyCaseFormat(_out); + } + + return _out; } return ''; @@ -1976,38 +2193,76 @@ addAlias('k', 'H', 2); addAlias('K', 'h', 2); addAlias('S', 's', 2); addAlias('v', 'z', 4); -addAlias('V', 'Z', 4); +addAlias('V', 'Z', 4); // support unix-style escaping with ' character + +var escapeChars = function escapeChars(arr) { + for (var i = 0; i < arr.length; i += 1) { + if (arr[i] === "'") { + // greedy-search for next apostrophe + for (var o = i + 1; o < arr.length; o += 1) { + if (arr[o]) { + arr[i] += arr[o]; + } -var unixFmt = function unixFmt(s, str) { - var chars = str.split(''); //combine consecutive chars, like 'yyyy' as one. + if (arr[o] === "'") { + arr[o] = null; + break; + } + + arr[o] = null; + } + } + } + + return arr.filter(function (ch) { + return ch; + }); +}; //combine consecutive chars, like 'yyyy' as one. - var arr = [chars[0]]; - var quoteOn = false; - for (var i = 1; i < chars.length; i += 1) { - //support quoted substrings - if (chars[i] === "'") { - quoteOn = !quoteOn; //support '', meaning one tick +var combineRepeated = function combineRepeated(arr) { + for (var i = 0; i < arr.length; i += 1) { + var c = arr[i]; // greedy-forward - if (quoteOn === true && chars[i + 1] && chars[i + 1] === "'") { - quoteOn = true; + for (var o = i + 1; o < arr.length; o += 1) { + if (arr[o] === c) { + arr[i] += arr[o]; + arr[o] = null; } else { - continue; + break; } - } //merge it with the last one + } + } // '' means one apostrophe - if (quoteOn === true || chars[i] === arr[arr.length - 1][0]) { - arr[arr.length - 1] += chars[i]; - } else { - arr.push(chars[i]); + arr = arr.filter(function (ch) { + return ch; + }); + arr = arr.map(function (str) { + if (str === "''") { + str = "'"; } - } + return str; + }); + return arr; +}; + +var unixFmt = function unixFmt(s, str) { + var arr = str.split(''); // support character escaping + + arr = escapeChars(arr); //combine 'yyyy' as string. + + arr = combineRepeated(arr); return arr.reduce(function (txt, c) { if (mapping[c] !== undefined) { txt += mapping[c](s) || ''; } else { + // 'unescape' + if (/^'.{1,}'$/.test(c)) { + c = c.replace(/'/g, ''); + } + txt += c; } @@ -2016,7 +2271,7 @@ var unixFmt = function unixFmt(s, str) { }; var unixFmt_1 = unixFmt; -var units$1 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute']; +var units$2 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute']; var doUnit = function doUnit(s, k) { var start = s.clone().startOf(k); @@ -2034,7 +2289,7 @@ var progress = function progress(s, unit) { } var obj = {}; - units$1.forEach(function (k) { + units$2.forEach(function (k) { obj[k] = doUnit(s, k); }); return obj; @@ -2114,7 +2369,7 @@ var fastYear = function fastYear(a, b) { // ... then ms-math for any very-small units -var diff = function diff(a, b) { +var diff$1 = function diff(a, b) { // an hour is always the same # of milliseconds // so these units can be 'pre-calculated' var msDiff = b.epoch - a.epoch; @@ -2144,7 +2399,7 @@ var diff = function diff(a, b) { return obj; }; -var waterfall = diff; +var waterfall = diff$1; var reverseDiff = function reverseDiff(obj) { Object.keys(obj).forEach(function (k) { @@ -2156,7 +2411,7 @@ var reverseDiff = function reverseDiff(obj) { // '1 year' means 366 days in a leap year -var main = function main(a, b, unit) { +var main$1 = function main(a, b, unit) { b = fns.beADate(b, a); //reverse values, if necessary var reversed = false; @@ -2194,7 +2449,7 @@ var main = function main(a, b, unit) { return obj; }; -var diff$1 = main; //our conceptual 'break-points' for each unit +var diff = main$1; //our conceptual 'break-points' for each unit var qualifiers = { months: { @@ -2357,7 +2612,7 @@ var quarters = [null, [0, 1], //jan 1 [6, 1], //july 1 [9, 1] //oct 1 ]; -var units$2 = { +var units$1 = { minute: function minute(s) { walk_1(s, { second: 0, @@ -2502,19 +2757,19 @@ var units$2 = { return s; } }; -units$2.date = units$2.day; +units$1.date = units$1.day; var startOf = function startOf(a, unit) { var s = a.clone(); unit = fns.normalize(unit); - if (units$2[unit]) { - return units$2[unit](s); + if (units$1[unit]) { + return units$1[unit](s); } if (unit === 'summer' || unit === 'winter') { s = s.season(unit); - return units$2.season(s); + return units$1.season(s); } return s; @@ -2525,10 +2780,12 @@ var endOf = function endOf(a, unit) { var s = a.clone(); unit = fns.normalize(unit); - if (units$2[unit]) { - s = units$2[unit](s); + if (units$1[unit]) { + // go to beginning, go to next one, step back 1ms + s = units$1[unit](s); // startof + s = s.add(1, unit); - s = s.subtract(1, 'milliseconds'); + s = s.subtract(1, 'millisecond'); return s; } @@ -2676,7 +2933,7 @@ var timezone = function timezone(s) { if (result.hasDst === false) { result.current.offset = summer; result.current.isDST = false; - } else if (summerTime(s.epoch, result.change.start, result.change.back, summer) === true) { + } else if (summerTime(s.epoch, result.change.start, result.change.back, summer, winter) === true) { result.current.offset = summer; result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north } else { @@ -2689,12 +2946,12 @@ var timezone = function timezone(s) { }; var timezone_1 = timezone; -var units$3 = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API) +var units = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API) -var methods = { +var methods$4 = { set: function set(input$1, tz) { var s = this.clone(); - s = input(s, input$1); + s = input(s, input$1, null); if (tz) { this.tz = find(tz); @@ -2739,8 +2996,8 @@ var methods = { nearest: function nearest(unit) { return nearest_1(this, unit); }, - diff: function diff(d, unit) { - return diff$1(this, d, unit); + diff: function diff$1(d, unit) { + return diff(this, d, unit); }, since: function since(d) { if (!d) { @@ -2767,7 +3024,7 @@ var methods = { return !isNaN(this.d.getTime()); }, //travel to this timezone - "goto": function _goto(tz) { + "goto": function goto(tz) { var s = this.clone(); s.tz = find(tz, s.timezones); //science! @@ -2775,6 +3032,13 @@ var methods = { }, //get each week/month/day between a -> b every: function every(unit, to) { + // allow swapping these params: + if (_typeof(unit) === 'object' && typeof to === 'string') { + var tmp = to; + to = unit; + unit = tmp; + } + return every_1(this, unit, to); }, isAwake: function isAwake() { @@ -2803,7 +3067,7 @@ var methods = { json: function json() { var _this = this; - return units$3.reduce(function (h, unit) { + return units.reduce(function (h, unit) { h[unit] = _this[unit](); return h; }, {}); @@ -2853,10 +3117,12 @@ var methods = { } }; // aliases -methods.inDST = methods.isDST; -methods.round = methods.nearest; -methods.each = methods.every; -var methods_1 = methods; //these methods wrap around them. +methods$4.inDST = methods$4.isDST; +methods$4.round = methods$4.nearest; +methods$4.each = methods$4.every; +var methods_1 = methods$4; //these methods wrap around them. + +var isLeapYear$1 = fns.isLeapYear; var validate = function validate(n) { //handle number as a string @@ -2867,11 +3133,11 @@ var validate = function validate(n) { return n; }; -var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond +var order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond var confirm = function confirm(s, tmp, unit) { - var n = order.indexOf(unit); - var arr = order.slice(n, order.length); + var n = order$1.indexOf(unit); + var arr = order$1.slice(n, order$1.length); for (var i = 0; i < arr.length; i++) { var want = tmp[arr[i]](); @@ -2900,7 +3166,14 @@ var set = { var old = s.clone(); var diff = s.minute() - n; var shift = diff * milliseconds.minute; - s.epoch -= shift; + s.epoch -= shift; // check against a screw-up + // if (old.hour() != s.hour()) { + // walkTo(old, { + // minute: n + // }) + // return old.epoch + // } + confirm(s, old, 'second'); return s.epoch; }, @@ -2916,7 +3189,23 @@ var set = { var old = s.clone(); var diff = s.hour() - n; var shift = diff * milliseconds.hour; - s.epoch -= shift; + s.epoch -= shift; // oops, did we change the day? + + if (s.date() !== old.date()) { + s = old.clone(); + + if (diff > 1) { + diff -= 1; + } + + if (diff < 1) { + diff += 1; + } + + shift = diff * milliseconds.hour; + s.epoch -= shift; + } + walk_1(s, { hour: n }); @@ -2925,17 +3214,19 @@ var set = { }, //support setting time by '4:25pm' - this isn't very-well developed.. time: function time(s, str) { - var m = str.match(/([0-9]{1,2}):([0-9]{1,2})(am|pm)?/); + var m = str.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/); if (!m) { //fallback to support just '2am' - m = str.match(/([0-9]{1,2})(am|pm)/); + m = str.match(/([0-9]{1,2}) ?(am|pm)/); if (!m) { return s.epoch; } m.splice(2, 0, '0'); //add implicit 0 minutes + + m.splice(3, 0, ''); //add implicit seconds } var h24 = false; @@ -2948,20 +3239,24 @@ var set = { if (h24 === false) { - if (m[3] === 'am' && hour === 12) { + if (m[4] === 'am' && hour === 12) { //12am is midnight hour = 0; } - if (m[3] === 'pm' && hour < 12) { + if (m[4] === 'pm' && hour < 12) { //12pm is noon hour += 12; } - } + } // handle seconds + + m[3] = m[3] || ''; + m[3] = m[3].replace(/:/, ''); + var sec = parseInt(m[3], 10) || 0; s = s.hour(hour); s = s.minute(minute); - s = s.second(0); + s = s.second(sec); s = s.millisecond(0); return s.epoch; }, @@ -2969,7 +3264,12 @@ var set = { n = validate(n); //avoid setting february 31st if (n > 28) { - var max = monthLengths_1[s.month()]; + var month = s.month(); + var max = monthLengths_1[month]; // support leap day in february + + if (month === 1 && n === 29 && isLeapYear$1(s.year())) { + max = 29; + } if (n > max) { n = max; @@ -2989,7 +3289,7 @@ var set = { //this one's tricky month: function month(s, n) { if (typeof n === 'string') { - n = months.mapping()[n.toLowerCase()]; + n = months$1.mapping()[n.toLowerCase()]; } n = validate(n); //don't go past december @@ -3016,6 +3316,20 @@ var set = { return s.epoch; }, year: function year(s, n) { + // support '97 + if (typeof n === 'string' && /^'[0-9]{2}$/.test(n)) { + n = n.replace(/'/, '').trim(); + n = Number(n); // '89 is 1989 + + if (n > 30) { + //change this in 10y + n = 1900 + n; + } else { + // '12 is 2012 + n = 2000 + n; + } + } + n = validate(n); walk_1(s, { year: n @@ -3039,7 +3353,7 @@ var set = { return s.epoch; } }; -var methods$1 = { +var methods$3 = { millisecond: function millisecond(num) { if (num !== undefined) { var s = this.clone(); @@ -3139,6 +3453,7 @@ var methods$1 = { time: function time(str) { if (str !== undefined) { var s = this.clone(); + str = str.toLowerCase().trim(); s.epoch = set.time(s, str); return s; } @@ -3233,13 +3548,18 @@ var methods$1 = { return this.format('iso'); } }; -var _01Time = methods$1; +var _01Time = methods$3; var methods$2 = { // # day in the month date: function date(num) { if (num !== undefined) { var s = this.clone(); - s.epoch = set.date(s, num); + num = parseInt(num, 10); + + if (num) { + s.epoch = set.date(s, num); + } + return s; } @@ -3256,17 +3576,22 @@ var methods$2 = { if (typeof input === 'string') { input = input.toLowerCase(); - want = days["short"]().indexOf(input); - if (want === -1) { - want = days["long"]().indexOf(input); + if (days.aliases.hasOwnProperty(input)) { + want = days.aliases[input]; + } else { + want = days["short"]().indexOf(input); + + if (want === -1) { + want = days["long"]().indexOf(input); + } } } //move approx var day = this.d.getDay(); var diff = day - want; - var s = this.subtract(diff * 24, 'hours'); //tighten it back up + var s = this.subtract(diff, 'days'); //tighten it back up walk_1(s, { hour: original.hour(), @@ -3305,7 +3630,7 @@ var clearMinutes = function clearMinutes(s) { return s; }; -var methods$3 = { +var methods$1 = { // day 0-366 dayOfYear: function dayOfYear(num) { if (num !== undefined) { @@ -3342,9 +3667,11 @@ var methods$3 = { s = s.month(0); s = s.date(1); s = s.day('monday'); - s = clearMinutes(s); //don't go into last-year + s = clearMinutes(s); //first week starts first Thurs in Jan + // so mon dec 28th is 1st week + // so mon dec 29th is not the week - if (s.monthName() === 'december') { + if (s.monthName() === 'december' && s.date() >= 28) { s = s.add(1, 'week'); } @@ -3361,7 +3688,7 @@ var methods$3 = { tmp = clearMinutes(tmp); tmp = tmp.day('monday'); //don't go into last-year - if (tmp.monthName() === 'december') { + if (tmp.monthName() === 'december' && tmp.date() >= 28) { tmp = tmp.add(1, 'week'); } // is first monday the 1st? @@ -3385,7 +3712,7 @@ var methods$3 = { tmp.epoch += milliseconds.week * skipWeeks; i += skipWeeks; - for (; i < 52; i++) { + for (; i <= 52; i++) { if (tmp.epoch > thisOne) { return i + toAdd; } @@ -3398,7 +3725,7 @@ var methods$3 = { //'january' monthName: function monthName(input) { if (input === undefined) { - return months["long"]()[this.month()]; + return months$1["long"]()[this.month()]; } var s = this.clone(); @@ -3616,60 +3943,38 @@ var methods$3 = { return num; } }; -var _03Year = methods$3; -var methods$4 = Object.assign({}, _01Time, _02Date, _03Year); //aliases - -methods$4.milliseconds = methods$4.millisecond; -methods$4.seconds = methods$4.second; -methods$4.minutes = methods$4.minute; -methods$4.hours = methods$4.hour; -methods$4.hour24 = methods$4.hour; -methods$4.h12 = methods$4.hour12; -methods$4.h24 = methods$4.hour24; -methods$4.days = methods$4.day; - -var addMethods = function addMethods(Space) { +var _03Year = methods$1; +var methods = Object.assign({}, _01Time, _02Date, _03Year); //aliases + +methods.milliseconds = methods.millisecond; +methods.seconds = methods.second; +methods.minutes = methods.minute; +methods.hours = methods.hour; +methods.hour24 = methods.hour; +methods.h12 = methods.hour12; +methods.h24 = methods.hour24; +methods.days = methods.day; + +var addMethods$4 = function addMethods(Space) { //hook the methods into prototype - Object.keys(methods$4).forEach(function (k) { - Space.prototype[k] = methods$4[k]; + Object.keys(methods).forEach(function (k) { + Space.prototype[k] = methods[k]; }); }; -var query = addMethods; -var order$1 = ['millisecond', 'second', 'minute', 'hour', 'date', 'month']; -var keep = { - second: order$1.slice(0, 1), - minute: order$1.slice(0, 2), - quarterhour: order$1.slice(0, 2), - hour: order$1.slice(0, 3), - date: order$1.slice(0, 4), - month: order$1.slice(0, 4), - quarter: order$1.slice(0, 4), - season: order$1.slice(0, 4), - year: order$1, - decade: order$1, - century: order$1 -}; -keep.week = keep.hour; -keep.season = keep.date; -keep.quarter = keep.date; // Units need to be dst adjuested +var query = addMethods$4; +var isLeapYear = fns.isLeapYear; -var dstAwareUnits = { - year: true, - quarter: true, - season: true, - month: true, - week: true, - day: true -}; -var keepDate = { - month: true, - quarter: true, - season: true, - year: true -}; //month is the only thing we 'model/compute' +var getMonthLength = function getMonthLength(month, year) { + if (month === 1 && isLeapYear(year)) { + return 29; + } + + return monthLengths_1[month]; +}; //month is the one thing we 'model/compute' //- because ms-shifting can be off by enough + var rollMonth = function rollMonth(want, old) { //increment year if (want.month > 0) { @@ -3691,10 +3996,97 @@ var rollMonth = function rollMonth(want, old) { } } + return want; +}; // briefly support day=-2 (this does not need to be perfect.) + + +var rollDaysDown = function rollDaysDown(want, old, sum) { + want.year = old.year(); + want.month = old.month(); + var date = old.date(); + want.date = date - Math.abs(sum); + + while (want.date < 1) { + want.month -= 1; + + if (want.month < 0) { + want.month = 11; + want.year -= 1; + } + + var max = getMonthLength(want.month, want.year); + want.date += max; + } + + return want; +}; // briefly support day=33 (this does not need to be perfect.) + + +var rollDaysUp = function rollDaysUp(want, old, sum) { + var year = old.year(); + var month = old.month(); + var max = getMonthLength(month, year); + + while (sum > max) { + sum -= max; + month += 1; + + if (month >= 12) { + month -= 12; + year += 1; + } + + max = getMonthLength(month, year); + } + + want.month = month; + want.date = sum; return want; }; -var addMethods$1 = function addMethods(SpaceTime) { +var _model = { + months: rollMonth, + days: rollDaysUp, + daysBack: rollDaysDown +}; // but briefly: +// millisecond-math, and some post-processing covers most-things +// we 'model' the calendar here only a little bit +// and that usually works-out... + +var order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month']; +var keep = { + second: order.slice(0, 1), + minute: order.slice(0, 2), + quarterhour: order.slice(0, 2), + hour: order.slice(0, 3), + date: order.slice(0, 4), + month: order.slice(0, 4), + quarter: order.slice(0, 4), + season: order.slice(0, 4), + year: order, + decade: order, + century: order +}; +keep.week = keep.hour; +keep.season = keep.date; +keep.quarter = keep.date; // Units need to be dst adjuested + +var dstAwareUnits = { + year: true, + quarter: true, + season: true, + month: true, + week: true, + day: true +}; +var keepDate = { + month: true, + quarter: true, + season: true, + year: true +}; + +var addMethods$3 = function addMethods(SpaceTime) { SpaceTime.prototype.add = function (num, unit) { var s = this.clone(); @@ -3703,16 +4095,26 @@ var addMethods$1 = function addMethods(SpaceTime) { } var old = this.clone(); - unit = fns.normalize(unit); //move forward by the estimated milliseconds (rough) + unit = fns.normalize(unit); + + if (unit === 'millisecond') { + s.epoch += num; + return s; + } // support 'fortnight' alias + + + if (unit === 'fortnight') { + num *= 2; + unit = 'week'; + } //move forward by the estimated milliseconds (rough) + if (milliseconds[unit]) { s.epoch += milliseconds[unit] * num; } else if (unit === 'week') { s.epoch += milliseconds.day * (num * 7); } else if (unit === 'quarter' || unit === 'season') { - s.epoch += milliseconds.month * (num * 4); - } else if (unit === 'season') { - s.epoch += milliseconds.month * (num * 4); + s.epoch += milliseconds.month * (num * 3); } else if (unit === 'quarterhour') { s.epoch += milliseconds.minute * 15 * num; } //now ensure our milliseconds/etc are in-line @@ -3735,7 +4137,7 @@ var addMethods$1 = function addMethods(SpaceTime) { if (unit === 'month') { want.month = old.month() + num; //month is the one unit we 'model' directly - want = rollMonth(want, old); + want = _model.months(want, old); } //support coercing a week, too @@ -3747,24 +4149,54 @@ var addMethods$1 = function addMethods(SpaceTime) { } } //support 25-hour day-changes on dst-changes else if (unit === 'date') { - //specify a naive date number, if it's easy to do... - var _sum = old.date() + num; - - if (_sum <= 28 && _sum > 1) { - want.date = _sum; - } //or if we haven't moved at all.. - else if (num !== 0 && old.isSame(s, 'day')) { - want.date = old.date() + num; + if (num < 0) { + want = _model.daysBack(want, old, num); + } else { + //specify a naive date number, if it's easy to do... + var _sum = old.date() + num; // ok, model this one too + + + want = _model.days(want, old, _sum); + } //manually punt it if we haven't moved at all.. + + + if (num !== 0 && old.isSame(s, 'day')) { + want.date = old.date() + num; + } + } // ensure a quarter is 3 months over + else if (unit === 'quarter') { + want.month = old.month() + num * 3; + want.year = old.year(); // handle rollover + + if (want.month < 0) { + var years = Math.floor(want.month / 12); + var remainder = want.month + Math.abs(years) * 12; + want.month = remainder; + want.year += years; + } else if (want.month >= 12) { + var _years = Math.floor(want.month / 12); + + want.month = want.month % 12; + want.year += _years; } - } //ensure year has changed (leap-years) - else if (unit === 'year' && s.year() === old.year()) { - s.epoch += milliseconds.week; - } //these are easier - else if (unit === 'decade') { - want.year = s.year() + 10; - } else if (unit === 'century') { - want.year = s.year() + 100; - } //keep current date, unless the month doesn't have it. + + want.date = old.date(); + } //ensure year has changed (leap-years) + else if (unit === 'year') { + var wantYear = old.year() + num; + var haveYear = s.year(); + + if (haveYear < wantYear) { + s.epoch += milliseconds.day; + } else if (haveYear > wantYear) { + s.epoch += milliseconds.day; + } + } //these are easier + else if (unit === 'decade') { + want.year = s.year() + 10; + } else if (unit === 'century') { + want.year = s.year() + 100; + } //keep current date, unless the month doesn't have it. if (keepDate[unit]) { @@ -3776,7 +4208,10 @@ var addMethods$1 = function addMethods(SpaceTime) { } } - walk_1(s, want); + if (Object.keys(want).length > 1) { + walk_1(s, want); + } + return s; }; //subtract is only add *-1 @@ -3791,7 +4226,7 @@ var addMethods$1 = function addMethods(SpaceTime) { SpaceTime.prototype.plus = SpaceTime.prototype.add; }; -var add = addMethods$1; //make a string, for easy comparison between dates +var add = addMethods$3; //make a string, for easy comparison between dates var print = { millisecond: function millisecond(s) { @@ -3826,10 +4261,18 @@ print.date = print.day; var addMethods$2 = function addMethods(SpaceTime) { SpaceTime.prototype.isSame = function (b, unit) { + var tzAware = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var a = this; if (!unit) { return null; + } // support swapped params + + + if (typeof b === 'string' && _typeof(unit) === 'object') { + var tmp = b; + b = unit; + unit = tmp; } if (typeof b === 'string' || typeof b === 'number') { @@ -3837,7 +4280,12 @@ var addMethods$2 = function addMethods(SpaceTime) { } //support 'seconds' aswell as 'second' - unit = unit.replace(/s$/, ''); + unit = unit.replace(/s$/, ''); // make them the same timezone for proper comparison + + if (tzAware === true && a.tz !== b.tz) { + b = b.clone(); + b.tz = a.tz; + } if (print[unit]) { return print[unit](a) === print[unit](b); @@ -3849,7 +4297,7 @@ var addMethods$2 = function addMethods(SpaceTime) { var same = addMethods$2; -var addMethods$3 = function addMethods(SpaceTime) { +var addMethods$1 = function addMethods(SpaceTime) { var methods = { isAfter: function isAfter(d) { d = fns.beADate(d, this); @@ -3910,9 +4358,9 @@ var addMethods$3 = function addMethods(SpaceTime) { }); }; -var compare = addMethods$3; +var compare = addMethods$1; -var addMethods$4 = function addMethods(SpaceTime) { +var addMethods = function addMethods(SpaceTime) { var methods = { i18n: function i18n(data) { //change the day names @@ -3922,7 +4370,12 @@ var addMethods$4 = function addMethods(SpaceTime) { if (fns.isObject(data.months)) { - months.set(data.months); + months$1.set(data.months); + } // change the the display style of the month / day names + + + if (fns.isBoolean(data.useTitleCase)) { + caseFormat.set(data.useTitleCase); } } }; //hook them into proto @@ -3932,7 +4385,7 @@ var addMethods$4 = function addMethods(SpaceTime) { }); }; -var i18n = addMethods$4; +var i18n = addMethods; var timezones = unpack; //fake timezone-support, for fakers (es5 class) var SpaceTime = function SpaceTime(input$1, tz) { @@ -3950,6 +4403,13 @@ var SpaceTime = function SpaceTime(input$1, tz) { if (options.weekStart !== undefined) { this._weekStart = options.weekStart; + } // the reference today date object, (for testing) + + + this._today = {}; + + if (options.today !== undefined) { + this._today = options.today; } //add getter/setters @@ -3981,10 +4441,8 @@ var SpaceTime = function SpaceTime(input$1, tz) { } }); //parse the various formats - if (input$1 !== undefined || input$1 === null) { - var tmp = input(this, input$1, tz); - this.epoch = tmp.epoch; - } + var tmp = input(this, input$1, tz); + this.epoch = tmp.epoch; }; //(add instance methods to prototype) @@ -3995,7 +4453,8 @@ Object.keys(methods_1).forEach(function (k) { SpaceTime.prototype.clone = function () { return new SpaceTime(this.epoch, this.tz, { silent: this.silent, - weekStart: this._weekStart + weekStart: this._weekStart, + today: this._today }); }; //return native date object at the same epoch @@ -4010,11 +4469,11 @@ add(SpaceTime); same(SpaceTime); compare(SpaceTime); i18n(SpaceTime); -var spacetime = SpaceTime; +var spacetime$1 = SpaceTime; var whereIts = function whereIts(a, b) { - var start = new spacetime(null); - var end = new spacetime(null); + var start = new spacetime$1(null); + var end = new spacetime$1(null); start = start.time(a); //if b is undefined, use as 'within one hour' if (b) { @@ -4030,7 +4489,7 @@ var whereIts = function whereIts(a, b) { return false; } - var m = new spacetime(null, tz); + var m = new spacetime$1(null, tz); var hour = m.hour(); //do 'calendar-compare' not real-time-compare if (hour >= startHour && hour <= endHour) { @@ -4052,66 +4511,97 @@ var whereIts = function whereIts(a, b) { }; var whereIts_1 = whereIts; -var _version = '6.4.3'; +var _version = '6.14.0'; + +var main = function main(input, tz, options) { + return new spacetime$1(input, tz, options); +}; // set all properties of a given 'today' object -var main$1 = function main(input, tz, options) { - return new spacetime(input, tz, options); + +var setToday = function setToday(s) { + var today = s._today || {}; + Object.keys(today).forEach(function (k) { + s = s[k](today[k]); + }); + return s; }; //some helper functions on the main method -main$1.now = function (tz, options) { - return new spacetime(new Date().getTime(), tz, options); +main.now = function (tz, options) { + var s = new spacetime$1(new Date().getTime(), tz, options); + s = setToday(s); + return s; }; -main$1.today = function (tz, options) { - var s = new spacetime(new Date().getTime(), tz, options); +main.today = function (tz, options) { + var s = new spacetime$1(new Date().getTime(), tz, options); + s = setToday(s); return s.startOf('day'); }; -main$1.tomorrow = function (tz, options) { - var s = new spacetime(new Date().getTime(), tz, options); +main.tomorrow = function (tz, options) { + var s = new spacetime$1(new Date().getTime(), tz, options); + s = setToday(s); return s.add(1, 'day').startOf('day'); }; -main$1.yesterday = function (tz, options) { - var s = new spacetime(new Date().getTime(), tz, options); +main.yesterday = function (tz, options) { + var s = new spacetime$1(new Date().getTime(), tz, options); + s = setToday(s); return s.subtract(1, 'day').startOf('day'); }; -main$1.extend = function (obj) { +main.extend = function (obj) { Object.keys(obj).forEach(function (k) { - spacetime.prototype[k] = obj[k]; + spacetime$1.prototype[k] = obj[k]; }); return this; +}; + +main.timezones = function () { + var s = new spacetime$1(); + return s.timezones; +}; + +main.max = function (tz, options) { + var s = new spacetime$1(null, tz, options); + s.epoch = 8640000000000000; + return s; +}; + +main.min = function (tz, options) { + var s = new spacetime$1(null, tz, options); + s.epoch = -8640000000000000; + return s; }; //find tz by time -main$1.whereIts = whereIts_1; -main$1.version = _version; //aliases: +main.whereIts = whereIts_1; +main.version = _version; //aliases: -main$1.plugin = main$1.extend; -var src = main$1; +main.plugin = main.extend; +var src$1 = main; -var spacetime$1 = /*#__PURE__*/Object.freeze({ +var spacetime$2 = /*#__PURE__*/Object.freeze({ __proto__: null, - 'default': src + 'default': src$1 }); -function getCjsExportFromNamespace$1 (n) { +function getCjsExportFromNamespace (n) { return n && n['default'] || n; } -var spacetime$2 = getCjsExportFromNamespace$1(spacetime$1); +var spacetime = getCjsExportFromNamespace(spacetime$2); -var parseSentence = function parseSentence(doc) { - var s = doc.sentences(0); +const parseSentence = function (doc) { + let s = doc.sentence(); if (!s) { return null; } - var txt = s.text() || ''; - var paren = txt.match(/\(.*\)/); + let txt = s.text() || ''; + let paren = txt.match(/\(.*\)/); if (!paren || !paren[0]) { return null; @@ -4121,10 +4611,8 @@ var parseSentence = function parseSentence(doc) { txt = txt.trim(); txt = txt.replace(/^\(/, ''); txt = txt.replace(/\)$/, ''); - var split = txt.split(/ – /); - split = split.filter(function (str) { - return str; - }); // got birth/death info + let split = txt.split(/ – /); + split = split.filter(str => str); // got birth/death info if (split[0] && split[1] && split.length === 2) { return { @@ -4135,8 +4623,8 @@ var parseSentence = function parseSentence(doc) { if (split[0]) { - var str = split[0].replace(/^(born|ne) (c\.)?/, ''); - var d = spacetime$2(str); + let str = split[0].replace(/^(born|ne) (c\.)?/, ''); + let d = spacetime(str); if (d.isValid()) { return { @@ -4150,14 +4638,14 @@ var parseSentence = function parseSentence(doc) { var getSentence = parseSentence; -var byCategory = function byCategory(doc) { - var cats = doc.categories(); +const byCategory$2 = function (doc) { + let cats = doc.categories(); - for (var i = 0; i < cats.length; i += 1) { - var m = cats[i].match(/([0-9]{4}) births/); + for (let i = 0; i < cats.length; i += 1) { + let m = cats[i].match(/([0-9]{4}) births/); if (m && m[1]) { - var year = parseInt(m[1], 10); + let year = parseInt(m[1], 10); if (year && year > 1000) { return year; @@ -4168,9 +4656,9 @@ var byCategory = function byCategory(doc) { return null; }; -var byCategory_1 = byCategory; +var byCategory_1$1 = byCategory$2; -var parseDate = function parseDate(str) { +const parseDate = function (str) { if (!str) { return null; } // remove parentheses @@ -4186,7 +4674,7 @@ var parseDate = function parseDate(str) { } // parse the full date - var s = spacetime$2(str); + let s = spacetime(str); return { year: s.year(), month: s.month(), @@ -4196,8 +4684,8 @@ var parseDate = function parseDate(str) { var parseDate_1 = parseDate; -var birthDate = function birthDate(doc) { - var res = getInfobox(doc, 'birth_date'); +const birthDate = function (doc) { + let res = getInfobox(doc, 'birth_date'); if (res) { return parseDate_1(res); @@ -4211,7 +4699,7 @@ var birthDate = function birthDate(doc) { } // try to get year from 'Category:1955 births' - var year = byCategory_1(doc); + let year = byCategory_1$1(doc); if (year) { return { @@ -4224,8 +4712,8 @@ var birthDate = function birthDate(doc) { var birthDate_1 = birthDate; -var birthPlace = function birthPlace(doc) { - var res = getInfobox(doc, 'birth_place'); +const birthPlace = function (doc) { + let res = getInfobox(doc, 'birth_place'); if (res) { return res; @@ -4236,7 +4724,7 @@ var birthPlace = function birthPlace(doc) { var birthPlace_1 = birthPlace; -var aliveCats = { +const aliveCats = { 'Living people': true, 'Year of birth missing (living people)': true, 'Date of birth missing (living people)': true, @@ -4244,7 +4732,7 @@ var aliveCats = { 'Active politicians': true, 'Biography articles of living people': true }; -var didDie = { +const didDie = { 'Dead people': true, 'Date of death missing': true, 'Date of death unknown': true, @@ -4279,19 +4767,15 @@ var didDie = { 'Deaths by drowning‎': true }; -var byCat = function byCat(doc) { - var cats = doc.categories(); //confirmed alive categories +const byCat = function (doc) { + let cats = doc.categories(); //confirmed alive categories - if (cats.find(function (c) { - return aliveCats.hasOwnProperty(c); - })) { + if (cats.find(c => aliveCats.hasOwnProperty(c))) { return true; } //confirmed death categories - if (cats.find(function (c) { - return didDie.hasOwnProperty(c); - })) { + if (cats.find(c => didDie.hasOwnProperty(c))) { return false; } @@ -4303,7 +4787,7 @@ var byCategory$1 = byCat; // blp = biography of living persons // {{WikiProject Biography}} (with living=yes parameter) // {{WikiProject banner shell}} (with blp=y parameter) -var isAlive = { +const isAlive$1 = { blp: true, 'blp unsourced': true, 'blp unsourced section': true, @@ -4320,7 +4804,7 @@ var isAlive = { activepol: true, 'current person': true }; -var isDead = { +const isDead = { 'recent death': true, 'recent death presumed': true, 'recent death confirmed': true, @@ -4331,14 +4815,14 @@ var isDead = { memorial: true }; -var byTemplate = function byTemplate(doc) { - var templates = doc.templates(); +const byTemplate = function (doc) { + let templates = doc.templates().map(tmpl => tmpl.json()); - for (var i = 0; i < templates.length; i++) { - var title = templates[i].template || ''; + for (let i = 0; i < templates.length; i++) { + let title = templates[i].template || ''; title = title.toLowerCase().trim(); - if (isAlive.hasOwnProperty(title)) { + if (isAlive$1.hasOwnProperty(title)) { return true; } @@ -4348,10 +4832,11 @@ var byTemplate = function byTemplate(doc) { } // `{{WikiProject Biography|living=yes|activepol=yes}}` - var bio = doc.template('WikiProject Biography'); + 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; } @@ -4366,40 +4851,40 @@ var byTemplate = function byTemplate(doc) { var byTemplate_1 = byTemplate; -var d = new Date(); -var minYear = d.getFullYear() - 105; +let d = new Date(); +const minYear = d.getFullYear() - 105; -var isAlive$1 = function isAlive(doc) { +const isAlive = function (doc) { // if we have a death date - var death = doc.deathDate(); + let death = doc.deathDate(); if (death) { return false; } // if we have a death place - var deathPlace = doc.deathPlace(); + let deathPlace = doc.deathPlace(); if (deathPlace) { return false; } // does it have a good category? - var fromCat = byCategory$1(doc); + let fromCat = byCategory$1(doc); if (fromCat === true || fromCat === false) { return fromCat; } // does it have a good template? - var fromTemplate = byTemplate_1(doc); + let fromTemplate = byTemplate_1(doc); if (fromTemplate === true || fromTemplate === false) { return fromTemplate; } // were they born in 1900? - var birth = doc.birthDate(); + let birth = doc.birthDate(); if (birth && birth.year && birth.year < minYear) { return true; @@ -4408,16 +4893,16 @@ var isAlive$1 = function isAlive(doc) { return null; }; -var isAlive_1 = isAlive$1; +var isAlive_1 = isAlive; -var byCategory$2 = function byCategory(doc) { - var cats = doc.categories(); +const byCategory = function (doc) { + let cats = doc.categories(); - for (var i = 0; i < cats.length; i += 1) { - var m = cats[i].match(/([0-9]{4}) deaths/); + for (let i = 0; i < cats.length; i += 1) { + let m = cats[i].match(/([0-9]{4}) deaths/); if (m && m[1]) { - var year = parseInt(m[1], 10); + let year = parseInt(m[1], 10); if (year && year > 1000) { return year; @@ -4428,10 +4913,10 @@ var byCategory$2 = function byCategory(doc) { return null; }; -var byCategory_1$1 = byCategory$2; +var byCategory_1 = byCategory; -var deathDate = function deathDate(doc) { - var res = getInfobox(doc, 'death_date'); +const deathDate = function (doc) { + let res = getInfobox(doc, 'death_date'); if (res) { return parseDate_1(res); @@ -4445,7 +4930,7 @@ var deathDate = function deathDate(doc) { } // try to get year from 'Category:1955 deaths' - var year = byCategory_1$1(doc); + let year = byCategory_1(doc); if (year) { return { @@ -4458,8 +4943,8 @@ var deathDate = function deathDate(doc) { var deathDate_1 = deathDate; -var deathPlace = function deathPlace(doc) { - var res = getInfobox(doc, 'death_place'); +const deathPlace = function (doc) { + let res = getInfobox(doc, 'death_place'); if (res) { return res; @@ -4470,8 +4955,8 @@ var deathPlace = function deathPlace(doc) { var deathPlace_1 = deathPlace; -var getNationality = function getNationality(doc) { - var res = getInfobox(doc, 'nationality'); +const getNationality = function (doc) { + let res = getInfobox(doc, 'nationality'); if (res) { return res; @@ -4482,7 +4967,7 @@ var getNationality = function getNationality(doc) { var nationality = getNationality; -var addMethod = function addMethod(models) { +const addMethod = function (models) { models.Doc.prototype.birthDate = function () { return birthDate_1(this); }; @@ -4508,6 +4993,6 @@ var addMethod = function addMethod(models) { }; }; -var src$1 = addMethod; +var src = addMethod; -export default src$1; +export default src; diff --git a/plugins/person/package-lock.json b/plugins/person/package-lock.json index eb28ddaf..b583dbfb 100644 --- a/plugins/person/package-lock.json +++ b/plugins/person/package-lock.json @@ -1,395 +1,3522 @@ { "name": "wtf-plugin-person", "version": "0.1.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-person", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "compromise": "13.10.5", + "spacetime": "6.14.0" + }, + "devDependencies": { + "@babel/core": "7.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "rollup": "2.44.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.1.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@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.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@rollup/plugin-node-resolve/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==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "13.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", + "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/compromise": { + "version": "13.10.5", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", + "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "dependencies": { + "efrt-unpack": "2.2.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/efrt-unpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/efrt-unpack/-/efrt-unpack-2.2.0.tgz", + "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-commonjs/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "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": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spacetime": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.14.0.tgz", + "integrity": "sha512-pz/nMIRGNSJeFfDFvhPjMHXhFU1NcrYnpydMuSS2Zsk0NEoHJc2rRKXugkmlqUv/l/fPxWVJVnj8isVS0//vbQ==" + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" } }, "@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.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.9.5", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "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.9.0", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "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.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.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.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.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.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-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.9.5" + "@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.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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -401,6 +3528,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3546,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 +3564,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 +3583,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 +3619,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.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", + "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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,75 +4030,96 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" + "globals": "^11.1.0" } }, "@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.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.5", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, "@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": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", "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.19.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,15 +4152,60 @@ "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" } }, + "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", @@ -987,25 +4222,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.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.30001038", - "electron-to-chromium": "^1.3.390", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1026,10 +4253,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { @@ -1058,6 +4295,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1065,9 +4308,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.10.5", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", + "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", "requires": { "efrt-unpack": "2.2.0" } @@ -1088,12 +4331,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.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.8.5", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1112,28 +4355,51 @@ "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { + "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.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.4", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "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" + }, + "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 +4430,57 @@ "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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 +4494,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 +4518,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 +4527,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 +4540,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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 }, @@ -1264,11 +4553,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.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", + "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", @@ -1298,6 +4598,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", @@ -1305,9 +4611,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": { @@ -1326,43 +4632,73 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "is-bigint": { + "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.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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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 +4711,27 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, + "is-set": { + "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": { + "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 +4741,31 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 +4773,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,45 +4821,17 @@ "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==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "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" - } + "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": { "version": "0.25.7", @@ -1495,16 +4848,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 +4870,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "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.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.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "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.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -1555,15 +4898,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 +4918,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 +4936,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 +4973,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,35 +4988,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +5027,15 @@ } }, "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": { - "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" @@ -1762,12 +5068,12 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "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": { @@ -1830,16 +5136,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": { @@ -1866,16 +5171,30 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { "version": "0.5.7", @@ -1884,9 +5203,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 +5227,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.14.0", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.14.0.tgz", + "integrity": "sha512-pz/nMIRGNSJeFfDFvhPjMHXhFU1NcrYnpydMuSS2Zsk0NEoHJc2rRKXugkmlqUv/l/fPxWVJVnj8isVS0//vbQ==" }, "split": { "version": "1.0.0", @@ -1921,66 +5240,44 @@ "through": "2" } }, - "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" - } - }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "safe-buffer": "~5.1.0" } }, - "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==", + "string.prototype.trim": { + "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.17.5", - "string.prototype.trimstart": "^1.0.0" + "es-abstract": "^1.18.0-next.2" } }, - "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==", + "string.prototype.trimend": { + "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.17.5", - "string.prototype.trimend": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "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==", + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -1993,13 +5290,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 +5363,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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.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,21 +5430,24 @@ "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", "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", @@ -2117,11 +5482,57 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "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.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": { + "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.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", + "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" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/person/package.json b/plugins/person/package.json index 8cc3d3f7..f68cef70 100644 --- a/plugins/person/package.json +++ b/plugins/person/package.json @@ -1,12 +1,16 @@ { "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", "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", @@ -24,25 +28,25 @@ "printWidth": 100 }, "dependencies": { - "compromise": "^13.1.1", - "spacetime": "^6.4.3" + "compromise": "13.10.5", + "spacetime": "6.14.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.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "rollup": "2.44.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.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.2.2" }, - "licence": "MIT" + "license": "MIT" } 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..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 } @@ -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..5a7cdaa2 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,10 +29,10 @@ const isDead = { elegy: true, eulogy: true, panegyric: true, - memorial: true + 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/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/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/summary/builds/wtf-plugin-summary.js b/plugins/summary/builds/wtf-plugin-summary.js index dbba9d00..996860db 100644 --- a/plugins/summary/builds/wtf-plugin-summary.js +++ b/plugins/summary/builds/wtf-plugin-summary.js @@ -1,10 +1,11 @@ -/* 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) : - (global = global || self, global.wtfSummary = factory()); + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfSummary = factory()); }(this, (function () { 'use strict'; + /* compromise 13.10.5 MIT */ function _typeof(obj) { "@babel/helpers - typeof"; @@ -21,23 +22,6 @@ return _typeof(obj); } - /* compromise 13.1.1 MIT */ - function _typeof$1(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof$1 = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof$1 = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof$1(obj); - } - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); @@ -91,6 +75,19 @@ return _setPrototypeOf(o, p); } + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } + } + function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); @@ -100,53 +97,30 @@ } function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { + if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _iterableToArrayLimit(arr, i) { - if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { - return; - } + function _createSuper(Derived) { + var hasNativeReflectConstruct = _isNativeReflectConstruct(); - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; + return function _createSuperInternal() { + var Super = _getPrototypeOf(Derived), + result; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); + if (hasNativeReflectConstruct) { + var NewTarget = _getPrototypeOf(this).constructor; - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); } - } - - return _arr; - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); + return _possibleConstructorReturn(this, result); + }; } //this is a not-well-thought-out way to reduce our dependence on `object===object` stuff @@ -223,11 +197,11 @@ var unicode_1 = killUnicode; // console.log(killUnicode('bjŏȒk—Ɏó')); var periodAcronym = /([A-Z]\.)+[A-Z]?,?$/; - var oneLetterAcronym = /^[A-Z]\.,?$/; + var oneLetterAcronym$1 = /^[A-Z]\.,?$/; var noPeriodAcronym = /[A-Z]{2,}('s|,)?$/; - var lowerCaseAcronym = /([a-z]\.){2,}[a-z]\.?$/; + var lowerCaseAcronym = /([a-z]\.)+[a-z]\.?$/; - var isAcronym = function isAcronym(str) { + var isAcronym$2 = function isAcronym(str) { //like N.D.A if (periodAcronym.test(str) === true) { return true; @@ -239,7 +213,7 @@ } //like 'F.' - if (oneLetterAcronym.test(str) === true) { + if (oneLetterAcronym$1.test(str) === true) { return true; } //like NDA @@ -251,8 +225,8 @@ return false; }; - var isAcronym_1 = isAcronym; - var hasSlash = /[a-z\u00C0-\u00FF] ?\/ ?[a-z\u00C0-\u00FF]/; + var isAcronym_1$1 = isAcronym$2; + var hasSlash$1 = /[a-z\u00C0-\u00FF] ?\/ ?[a-z\u00C0-\u00FF]/; /** some basic operations on a string to reduce noise */ var clean = function clean(str) { @@ -263,7 +237,7 @@ str = unicode_1(str); //rough handling of slashes - 'see/saw' - if (hasSlash.test(str) === true) { + if (hasSlash$1.test(str) === true) { str = str.replace(/\/.*/, ''); } //#tags, @mentions @@ -284,6 +258,11 @@ if (/^(re|un)-?[^aeiou]./.test(str) === true) { str = str.replace('-', ''); + } //compact acronyms + + + if (isAcronym_1$1(str)) { + str = str.replace(/\./g, ''); } //strip leading & trailing grammatical punctuation @@ -291,18 +270,15 @@ str = str.replace(/\.{3,}$/g, ''); str = str.replace(/[",\.!:;\?\)]+$/g, ''); str = str.replace(/^['"\(]+/g, ''); - } //do this again.. + } // remove zero-width characters + str = str.replace(/[\u200B-\u200D\uFEFF]/g, ''); //do this again.. + str = str.trim(); //oh shucks, if (str === '') { str = original; - } //compact acronyms - - - if (isAcronym_1(str)) { - str = str.replace(/\./g, ''); } //nice-numbers @@ -324,13 +300,14 @@ var reduce = reduced; //all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation //we have slightly different rules for start/end - like #hashtags. - var startings = /^[ \n\t\.’'\[\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\-?‘’;\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~|‖¦©℗®℠™¤₳฿\u0022|\uFF02|\u0027|\u201C|\u2018|\u201F|\u201B|\u201E|\u2E42|\u201A|\u00AB|\u2039|\u2035|\u2036|\u2037|\u301D|\u0060|\u301F]+/; - var endings = /[ \n\t\.’'\[\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\-?‘’;\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~|‖¦©℗®℠™¤₳฿\u0022|\uFF02|\u0027|\u201D|\u2019|\u201D|\u2019|\u201D|\u201D|\u2019|\u00BB|\u203A|\u2032|\u2033|\u2034|\u301E|\u00B4|\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥ + var startings = /^[ \n\t\.\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u0027\u201C\u201F\u201B\u201E\u2E42\u201A\u2035\u2036\u2037\u301D\u0060\u301F]+/; + var endings = /[ \n\t\.'\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u201D\u00B4\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥ - var hasSlash$1 = /\//; + var hasSlash = /\//; var hasApostrophe = /['’]/; var hasAcronym = /^[a-z]\.([a-z]\.)+/i; var minusNumber = /^[-+\.][0-9]/; + var shortYear = /^'[0-9]{2}/; /** turn given text into a parsed-up object * seperate the 'meat' of the word from the whitespace+punctuation */ @@ -345,6 +322,12 @@ if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) { pre = ''; return found; + } // support years like '97 + + + if (pre === "'" && shortYear.test(str)) { + pre = ''; + return found; } return ''; @@ -387,8 +370,8 @@ post: post }; // support aliases for slashes - if (hasSlash$1.test(str)) { - str.split(hasSlash$1).forEach(function (word) { + if (hasSlash.test(str)) { + str.split(hasSlash).forEach(function (word) { parsed.alias = parsed.alias || {}; parsed.alias[word.trim()] = true; }); @@ -397,12 +380,13 @@ return parsed; }; - var parse = parseTerm; + var parse$2 = parseTerm; - function createCommonjsModule(fn, module) { - return module = { + function createCommonjsModule(fn) { + var module = { exports: {} - }, fn(module, module.exports), module.exports; + }; + return fn(module, module.exports), module.exports; } var _01Case = createCommonjsModule(function (module, exports) { @@ -449,14 +433,7 @@ exports.titleCase = exports.isTitleCase; }); - var _01Case_1 = _01Case.toUpperCase; - var _01Case_2 = _01Case.toLowerCase; - var _01Case_3 = _01Case.toTitleCase; - var _01Case_4 = _01Case.isUpperCase; - var _01Case_5 = _01Case.isTitleCase; - var _01Case_6 = _01Case.titleCase; - - var _02Punctuation = createCommonjsModule(function (module, exports) { + var _02Punctuation$1 = createCommonjsModule(function (module, exports) { // these methods are called with '@hasComma' in the match syntax // various unicode quotation-mark formats var startQuote = /(\u0022|\uFF02|\u0027|\u201C|\u2018|\u201F|\u201B|\u201E|\u2E42|\u201A|\u00AB|\u2039|\u2035|\u2036|\u2037|\u301D|\u0060|\u301F)/; @@ -525,7 +502,7 @@ exports.hasHyphen = function () { - var hyphen = /(-|–|—)/; + var hyphen = /^(-|–|—)$/; return hyphen.test(this.post) || hyphen.test(this.pre); }; /** a dash separates words - like that */ @@ -553,23 +530,101 @@ this.post = punct + this.post; return this; }; - }); + }); // fuzzy-match (damerau-levenshtein) + // Based on tad-lispy /node-damerau-levenshtein + // https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js + // count steps (insertions, deletions, substitutions, or transpositions) + + + var editDistance = function editDistance(strA, strB) { + var aLength = strA.length, + bLength = strB.length; // fail-fast + + if (aLength === 0) { + return bLength; + } + + if (bLength === 0) { + return aLength; + } // If the limit is not defined it will be calculate from this and that args. + + + var limit = (bLength > aLength ? bLength : aLength) + 1; + + if (Math.abs(aLength - bLength) > (limit || 100)) { + return limit || 100; + } // init the array + + + var matrix = []; + + for (var i = 0; i < limit; i++) { + matrix[i] = [i]; + matrix[i].length = limit; + } + + for (var _i = 0; _i < limit; _i++) { + matrix[0][_i] = _i; + } // Calculate matrix. + + + var j, a_index, b_index, cost, min, t; + + for (var _i2 = 1; _i2 <= aLength; ++_i2) { + a_index = strA[_i2 - 1]; - var _02Punctuation_1 = _02Punctuation.hasPost; - var _02Punctuation_2 = _02Punctuation.hasPre; - var _02Punctuation_3 = _02Punctuation.hasQuote; - var _02Punctuation_4 = _02Punctuation.hasQuotation; - var _02Punctuation_5 = _02Punctuation.hasComma; - var _02Punctuation_6 = _02Punctuation.hasPeriod; - var _02Punctuation_7 = _02Punctuation.hasExclamation; - var _02Punctuation_8 = _02Punctuation.hasQuestionMark; - var _02Punctuation_9 = _02Punctuation.hasEllipses; - var _02Punctuation_10 = _02Punctuation.hasSemicolon; - var _02Punctuation_11 = _02Punctuation.hasSlash; - var _02Punctuation_12 = _02Punctuation.hasHyphen; - var _02Punctuation_13 = _02Punctuation.hasDash; - var _02Punctuation_14 = _02Punctuation.hasContraction; - var _02Punctuation_15 = _02Punctuation.addPunctuation; //declare it up here + for (j = 1; j <= bLength; ++j) { + // Check the jagged distance total so far + if (_i2 === j && matrix[_i2][j] > 4) { + return aLength; + } + + b_index = strB[j - 1]; + cost = a_index === b_index ? 0 : 1; // Step 5 + // Calculate the minimum (much faster than Math.min(...)). + + min = matrix[_i2 - 1][j] + 1; // Deletion. + + if ((t = matrix[_i2][j - 1] + 1) < min) min = t; // Insertion. + + if ((t = matrix[_i2 - 1][j - 1] + cost) < min) min = t; // Substitution. + // Update matrix. + + var shouldUpdate = _i2 > 1 && j > 1 && a_index === strB[j - 2] && strA[_i2 - 2] === b_index && (t = matrix[_i2 - 2][j - 2] + cost) < min; + + if (shouldUpdate) { + matrix[_i2][j] = t; + } else { + matrix[_i2][j] = min; + } + } + } // return number of steps + + + return matrix[aLength][bLength]; + }; // score similarity by from 0-1 (steps/length) + + + var fuzzyMatch = function fuzzyMatch(strA, strB) { + var minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; + + if (strA === strB) { + return 1; + } //don't even bother on tiny strings + + + if (strA.length < minLength || strB.length < minLength) { + return 0; + } + + var steps = editDistance(strA, strB); + var length = Math.max(strA.length, strB.length); + var relative = length === 0 ? 0 : steps / length; + var similarity = 1 - relative; + return similarity; + }; + + var _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match var wrapMatch = function wrapMatch() {}; /** ignore optional/greedy logic, straight-up term match*/ @@ -611,6 +666,24 @@ if (reg.soft === true && reg.word === t.root) { return true; + } // support fuzzy match param + + + if (reg.fuzzy !== undefined) { + var score = _fuzzy(reg.word, t.reduced); + + if (score > reg.fuzzy) { + return true; + } // support fuzzy + soft match + + + if (reg.soft === true) { + score = _fuzzy(reg.word, t.root); + + if (score > reg.fuzzy) { + return true; + } + } } //match either .clean or .text @@ -637,9 +710,13 @@ } // support optimized (one|two) - if (reg.oneOf !== undefined) { - return reg.oneOf.hasOwnProperty(t.reduced) || reg.oneOf.hasOwnProperty(t.text); - } //support (one|two) + if (reg.fastOr !== undefined) { + if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) { + return true; + } + + return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text); + } //support slower (one|two) if (reg.choices !== undefined) { @@ -681,8 +758,8 @@ /** does this term look like an acronym? */ - var isAcronym_1$1 = function isAcronym_1$1() { - return isAcronym_1(this.text); + var isAcronym_1 = function isAcronym_1() { + return isAcronym_1$1(this.text); }; /** is this term implied by a contraction? */ @@ -732,12 +809,12 @@ var _03Misc = { doesMatch: doesMatch_1, - isAcronym: isAcronym_1$1, + isAcronym: isAcronym_1, isImplicit: isImplicit, isKnown: isKnown, setRoot: setRoot }; - var hasSpace = /[\s-]/; + var hasSpace$1 = /[\s-]/; var isUpperCase = /^[A-Z-]+$/; // const titleCase = str => { // return str.charAt(0).toUpperCase() + str.substr(1) // } @@ -798,7 +875,7 @@ before = ''; after = ' '; - if ((hasSpace.test(this.post) === false || options.last) && !this.implicit) { + if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) { after = ''; } } @@ -890,7 +967,7 @@ }; /** return various metadata for this term */ - var json = function json(options, world) { + var json$1 = function json(options, world) { options = options || {}; options = Object.assign({}, jsonDefault, options); var result = {}; // default on @@ -900,7 +977,7 @@ } if (options.normal) { - result.normal = this.normal; + result.normal = this.clean; } if (options.tags) { @@ -932,10 +1009,10 @@ return result; }; - var _05Json = { - json: json + var _05Json$1 = { + json: json$1 }; - var methods = Object.assign({}, _01Case, _02Punctuation, _03Misc, _04Text, _05Json); + var methods$8 = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1); function isClientSide() { return typeof window !== 'undefined' && window.document; @@ -989,19 +1066,19 @@ console.log(log); }; - var isArray = function isArray(arr) { + var isArray$3 = function isArray(arr) { return Object.prototype.toString.call(arr) === '[object Array]'; }; - var titleCase = function titleCase(str) { + var titleCase$4 = function titleCase(str) { return str.charAt(0).toUpperCase() + str.substr(1); }; - var fns = { + var fns$1 = { logTag: logTag, logUntag: logUntag, - isArray: isArray, - titleCase: titleCase + isArray: isArray$3, + titleCase: titleCase$4 }; /** add a tag, and its descendents, to a term */ @@ -1016,7 +1093,7 @@ tag = tag.replace(/^#/, ''); } - tag = fns.titleCase(tag); //if we already got this one + tag = fns$1.titleCase(tag); //if we already got this one if (t.tags[tag] === true) { return; @@ -1026,7 +1103,7 @@ var isVerbose = world.isVerbose(); if (isVerbose === true) { - fns.logTag(t, tag, reason); + fns$1.logTag(t, tag, reason); } //add tag @@ -1039,7 +1116,7 @@ t.tags[down] = true; if (isVerbose === true) { - fns.logTag(t, '→ ' + down); + fns$1.logTag(t, '→ ' + down); } }); //remove any contrary tags @@ -1061,14 +1138,26 @@ }; var add = addTags; + var lowerCase = /^[a-z]/; + + var titleCase$3 = function titleCase(str) { + return str.charAt(0).toUpperCase() + str.substr(1); + }; /** remove this tag, and its descentents from the term */ - var unTag = function unTag(t, tag, reason, world) { + + var unTag$1 = function unTag(t, tag, reason, world) { var isVerbose = world.isVerbose(); //support '*' for removing all tags if (tag === '*') { t.tags = {}; return t; + } + + tag = tag.replace(/^#/, ''); + + if (lowerCase.test(tag) === true) { + tag = titleCase$3(tag); } // remove the tag @@ -1076,7 +1165,7 @@ delete t.tags[tag]; //log in verbose-mode if (isVerbose === true) { - fns.logUntag(t, tag, reason); + fns$1.logUntag(t, tag, reason); } } //delete downstream tags too @@ -1091,7 +1180,7 @@ delete t.tags[lineage[i]]; if (isVerbose === true) { - fns.logUntag(t, ' - ' + lineage[i]); + fns$1.logUntag(t, ' - ' + lineage[i]); } } } @@ -1104,18 +1193,18 @@ var untagAll = function untagAll(term, tags, reason, world) { if (typeof tags !== 'string' && tags) { for (var i = 0; i < tags.length; i++) { - unTag(term, tags[i], reason, world); + unTag$1(term, tags[i], reason, world); } return; } - unTag(term, tags, reason, world); + unTag$1(term, tags, reason, world); }; - var unTag_1 = untagAll; + var unTag_1$1 = untagAll; - var canBe = function canBe(term, tag, world) { + var canBe$2 = function canBe(term, tag, world) { var tagset = world.tags; // cleanup tag if (tag[0] === '#') { @@ -1143,7 +1232,7 @@ return true; }; - var canBe_1 = canBe; + var canBe_1$1 = canBe$2; /** add a tag or tags, and their descendents to this term * @param {string | string[]} tags - a tag or tags * @param {string?} [reason] a clue for debugging @@ -1156,8 +1245,8 @@ /** only tag this term if it's consistent with it's current tags */ - var tagSafe = function tagSafe(tags, reason, world) { - if (canBe_1(this, tags, world)) { + var tagSafe$1 = function tagSafe(tags, reason, world) { + if (canBe_1$1(this, tags, world)) { add(this, tags, reason, world); } @@ -1169,8 +1258,8 @@ */ - var unTag_1$1 = function unTag_1$1(tags, reason, world) { - unTag_1(this, tags, reason, world); + var unTag_1 = function unTag_1(tags, reason, world) { + unTag_1$1(this, tags, reason, world); return this; }; /** is this tag consistent with the word's current tags? @@ -1179,15 +1268,15 @@ */ - var canBe_1$1 = function canBe_1$1(tags, world) { - return canBe_1(this, tags, world); + var canBe_1 = function canBe_1(tags, world) { + return canBe_1$1(this, tags, world); }; - var tag = { + var tag$1 = { tag: tag_1, - tagSafe: tagSafe, - unTag: unTag_1$1, - canBe: canBe_1$1 + tagSafe: tagSafe$1, + unTag: unTag_1, + canBe: canBe_1 }; var Term = /*#__PURE__*/function () { @@ -1197,7 +1286,7 @@ _classCallCheck(this, Term); text = String(text); - var obj = parse(text); // the various forms of our text + var obj = parse$2(text); // the various forms of our text this.text = obj.text || ''; this.clean = obj.clean; @@ -1223,7 +1312,7 @@ _createClass(Term, [{ key: "set", value: function set(str) { - var obj = parse(str); + var obj = parse$2(str); this.text = obj.text; this.clean = obj.clean; return this; @@ -1239,14 +1328,18 @@ var term = new Term(this.text); term.pre = this.pre; term.post = this.post; + term.clean = this.clean; + term.reduced = this.reduced; + term.root = this.root; + term.implicit = this.implicit; term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc) // term.id = this.id return term; }; - Object.assign(Term.prototype, methods); - Object.assign(Term.prototype, tag); + Object.assign(Term.prototype, methods$8); + Object.assign(Term.prototype, tag$1); var Term_1 = Term; /** return a flat array of Term objects */ @@ -1296,7 +1389,7 @@ /** return a shallow or deep copy of this phrase */ - var clone = function clone(isShallow) { + var clone$1 = function clone(isShallow) { var _this = this; if (isShallow) { @@ -1309,7 +1402,8 @@ var terms = this.terms(); var newTerms = terms.map(function (t) { return t.clone(); - }); //connect these new ids up + }); // console.log(newTerms) + //connect these new ids up newTerms.forEach(function (t, i) { //add it to the pool.. @@ -1407,9 +1501,9 @@ return this.buildFrom(start, len); }; - var _01Utils = { + var _01Utils$1 = { terms: terms, - clone: clone, + clone: clone$1, lastTerm: lastTerm, hasId: hasId, wordCount: wordCount, @@ -1422,7 +1516,7 @@ /** produce output in the given format */ - var text = function text() { + var text$1 = function text() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var isFirst = arguments.length > 1 ? arguments[1] : undefined; var isLast = arguments.length > 2 ? arguments[2] : undefined; @@ -1446,19 +1540,27 @@ punctuation: true, whitespace: true, unicode: true, - implicit: true + implicit: true, + normal: true }; } else if (options === 'reduced') { options = { + punctuation: false, + //Hmm: is this reversed? titlecase: false, lowercase: true, - punctuation: false, - //FIXME: reversed? whitespace: true, unicode: true, implicit: true, reduced: true }; + } else if (options === 'implicit') { + options = { + punctuation: true, + implicit: true, + whitespace: true, + trim: true + }; } else if (options === 'root') { options = { titlecase: false, @@ -1483,6 +1585,11 @@ } var text = terms.reduce(function (str, t, i) { + // don't output intro space for a contraction-match i'm good => "[am] good" + if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) { + return str; + } + options.last = isLast && i === terms.length - 1; var showPre = true; var showPost = true; @@ -1499,7 +1606,8 @@ } } - var txt = t.textOut(options, showPre, showPost); // if (options.titlecase && i === 0) { + var txt = t.textOut(options, showPre, showPost); // console.log(terms) + // if (options.titlecase && i === 0) { // txt = titleCase(txt) // } @@ -1518,7 +1626,7 @@ }; var _02Text = { - text: text + text: text$1 }; /** remove start and end whitespace */ @@ -1552,7 +1660,7 @@ }; //add whitespace to the start of the second bit - var addWhitespace = function addWhitespace(beforeTerms, newTerms) { + var addWhitespace$1 = function addWhitespace(beforeTerms, newTerms) { // add any existing pre-whitespace to beginning newTerms[0].pre = beforeTerms[0].pre; var lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms @@ -1568,7 +1676,7 @@ }; //insert this segment into the linked-list - var stitchIn = function stitchIn(beforeTerms, newTerms, pool) { + var stitchIn$1 = function stitchIn(beforeTerms, newTerms, pool) { var lastBefore = beforeTerms[beforeTerms.length - 1]; var lastNew = newTerms[newTerms.length - 1]; var afterId = lastBefore.next; //connect ours in (main → newPhrase) @@ -1593,7 +1701,7 @@ }; // avoid stretching a phrase twice. - var unique = function unique(list) { + var unique$5 = function unique(list) { return list.filter(function (o, i) { return list.indexOf(o) === i; }); @@ -1604,9 +1712,9 @@ var beforeTerms = before.terms(); var newTerms = newPhrase.terms(); //spruce-up the whitespace issues - addWhitespace(beforeTerms, newTerms); //insert this segment into the linked-list + addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list - stitchIn(beforeTerms, newTerms, before.pool); // stretch! + stitchIn$1(beforeTerms, newTerms, before.pool); // stretch! // make each effected phrase longer var toStretch = [before]; @@ -1622,7 +1730,7 @@ toStretch = toStretch.concat(shouldChange); }); // don't double-count a phrase - toStretch = unique(toStretch); + toStretch = unique$5(toStretch); toStretch.forEach(function (p) { p.length += newPhrase.length; }); @@ -1631,15 +1739,15 @@ }; var append = appendPhrase; - var hasSpace$1 = / /; //a new space needs to be added, either on the new phrase, or the old one + var hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one // '[new] [◻old]' -or- '[old] [◻new] [old]' - var addWhitespace$1 = function addWhitespace(newTerms) { + var addWhitespace = function addWhitespace(newTerms) { //add a space before our new text? // add a space after our text var lastTerm = newTerms[newTerms.length - 1]; - if (hasSpace$1.test(lastTerm.post) === false) { + if (hasSpace.test(lastTerm.post) === false) { lastTerm.post += ' '; } @@ -1647,7 +1755,7 @@ }; //insert this segment into the linked-list - var stitchIn$1 = function stitchIn(main, newPhrase, newTerms) { + var stitchIn = function stitchIn(main, newPhrase, newTerms) { // [newPhrase] → [main] var lastTerm = newTerms[newTerms.length - 1]; lastTerm.next = main.start; // [before] → [main] @@ -1667,7 +1775,7 @@ main.terms(0).prev = lastTerm.id; }; - var unique$1 = function unique(list) { + var unique$4 = function unique(list) { return list.filter(function (o, i) { return list.indexOf(o) === i; }); @@ -1678,9 +1786,9 @@ var starterId = original.start; var newTerms = newPhrase.terms(); //spruce-up the whitespace issues - addWhitespace$1(newTerms); //insert this segment into the linked-list + addWhitespace(newTerms); //insert this segment into the linked-list - stitchIn$1(original, newPhrase, newTerms); //increase the length of our phrases + stitchIn(original, newPhrase, newTerms); //increase the length of our phrases var toStretch = [original]; var docs = [doc]; @@ -1693,7 +1801,7 @@ toStretch = toStretch.concat(shouldChange); }); // don't double-count - toStretch = unique$1(toStretch); // stretch these phrases + toStretch = unique$4(toStretch); // stretch these phrases toStretch.forEach(function (p) { p.length += newPhrase.length; // change the start too, if necessary @@ -1773,7 +1881,7 @@ }; - var _delete = deletePhrase; + var _delete$1 = deletePhrase; /** put this text at the end */ var append_1 = function append_1(newPhrase, doc) { @@ -1788,14 +1896,14 @@ return this; }; - var delete_1 = function delete_1(doc) { - _delete(this, doc); + var _delete = function _delete(doc) { + _delete$1(this, doc); return this; }; // stich-in newPhrase, stretch 'doc' + parents - var replace = function replace(newPhrase, doc) { + var replace$1 = function replace(newPhrase, doc) { //add it do the end var firstLength = this.length; append(this, newPhrase, doc); //delete original terms @@ -1803,7 +1911,7 @@ var tmp = this.buildFrom(this.start, this.length); tmp.length = firstLength; - _delete(tmp, doc); + _delete$1(tmp, doc); }; /** * Turn this phrase object into 3 phrase objects @@ -1850,13 +1958,13 @@ var _04Insert = { append: append_1, prepend: prepend_1, - "delete": delete_1, - replace: replace, + "delete": _delete, + replace: replace$1, splitOn: splitOn }; /** return json metadata for this phrase */ - var json$1 = function json() { + var json = function json() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var world = arguments.length > 1 ? arguments[1] : undefined; var res = {}; // text data @@ -1877,6 +1985,10 @@ res.reduced = this.text('reduced'); } + if (options.implicit) { + res.implicit = this.text('implicit'); + } + if (options.root) { res.root = this.text('root'); } @@ -1909,8 +2021,8 @@ return res; }; - var _05Json$1 = { - json: json$1 + var _05Json = { + json: json }; /** match any terms after this phrase */ @@ -1993,9 +2105,9 @@ lookAhead: lookAhead, lookBehind: lookBehind }; - var methods$1 = Object.assign({}, _01Utils, _02Text, _03Change, _04Insert, _05Json$1, _06Lookahead); // try to avoid doing the match + var methods$7 = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead); // try to avoid doing the match - var failFast = function failFast(p, regs) { + var failFast$1 = function failFast(p, regs) { if (regs.length === 0) { return true; } @@ -2019,207 +2131,399 @@ return false; }; - var _02FailFast = failFast; //found a match? it's greedy? keep going! + var _02FailFast = failFast$1; + + var _matchLogic = createCommonjsModule(function (module, exports) { + //found a match? it's greedy? keep going! + exports.getGreedy = function (state, endReg) { + // for greedy checking, we no longer care about the reg.start + // value, and leaving it can cause failures for anchored greedy + // matches. ditto for end-greedy matches: we need an earlier non- + // ending match to succceed until we get to the actual end. + var reg = Object.assign({}, state.regs[state.r], { + start: false, + end: false + }); + var start = state.t; + + for (; state.t < state.terms.length; state.t += 1) { + //stop for next-reg match + if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) { + return state.t; + } + + var count = state.t - start + 1; // is it max-length now? + + if (reg.max !== undefined && count === reg.max) { + return state.t; + } //stop here + - var getGreedy = function getGreedy(terms, t, reg, until, index, length) { - var start = t; + if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) { + // is it too short? + if (reg.min !== undefined && count < reg.min) { + return null; + } - for (; t < terms.length; t += 1) { - //stop for next-reg match - if (until && terms[t].doesMatch(until, index + t, length)) { - return t; + return state.t; + } } - var count = t - start + 1; // is it max-length now? + return state.t; + }; //'unspecific greedy' is a weird situation. - if (reg.max !== undefined && count === reg.max) { - return t; - } //stop here + exports.greedyTo = function (state, nextReg) { + var t = state.t; //if there's no next one, just go off the end! - if (terms[t].doesMatch(reg, index + t, length) === false) { - // is it too short? - if (reg.min !== undefined && count < reg.min) { - return null; + if (!nextReg) { + return state.terms.length; + } //otherwise, we're looking for the next one + + + for (; t < state.terms.length; t += 1) { + if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) { + return t; } + } //guess it doesn't exist, then. + + + return null; + }; //we have a special case where an end-anchored greedy match may need to + //start matching before the actual end; we do this by (temporarily!) + //removing the "end" property from the matching token... since this is + //very situation-specific, we *only* do this when we really need to. + + + exports.isEndGreedy = function (reg, state) { + if (reg.end === true && reg.greedy === true) { + if (state.start_i + state.t < state.phrase_length - 1) { + var tmpReg = Object.assign({}, reg, { + end: false + }); - return t; + if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) { + return true; + } + } } - } - return t; - }; //'unspecific greedy' is a weird situation. + return false; + }; // match complex OR cases like (a|b|foo bar) + + + exports.doOrBlock = function (state) { + var skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var block = state.regs[state.r]; + var wasFound = false; // do each multiword sequence + + for (var c = 0; c < block.choices.length; c += 1) { + // try to match this list of tokens + var regs = block.choices[c]; + wasFound = regs.every(function (cr, w_index) { + var extra = 0; + var t = state.t + w_index + skipN + extra; + + if (state.terms[t] === undefined) { + return false; + } + var foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)' + + if (foundBlock === true && cr.greedy === true) { + for (var i = 1; i < state.terms.length; i += 1) { + var term = state.terms[t + i]; + + if (term) { + var keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length); + + if (keepGoing === true) { + extra += 1; + } else { + break; + } + } + } + } + + skipN += extra; + return foundBlock; + }); - var greedyTo = function greedyTo(terms, t, nextReg, index, length) { - //if there's no next one, just go off the end! - if (!nextReg) { - return terms.length; - } //otherwise, we're looking for the next one + if (wasFound) { + skipN += regs.length; + break; + } + } // we found a match - is it greedy though? - for (; t < terms.length; t += 1) { - if (terms[t].doesMatch(nextReg, index + t, length) === true) { - return t; + if (wasFound && block.greedy === true) { + return exports.doOrBlock(state, skipN); // try it again! } - } //guess it doesn't exist, then. + return skipN; + }; // match AND cases like (#Noun && foo) - return null; - }; // get or create named group + exports.doAndBlock = function (state) { + var longest = 0; // all blocks must match, and we return the greediest match - var getOrCreateGroup = function getOrCreateGroup(namedGroups, namedGroupId, terms, startIndex, group) { - var g = namedGroups[namedGroupId]; + var reg = state.regs[state.r]; + var allDidMatch = reg.choices.every(function (block) { + // for multi-word blocks, all must match + var allWords = block.every(function (cr, w_index) { + var tryTerm = state.t + w_index; - if (g) { - return g; - } + if (state.terms[tryTerm] === undefined) { + return false; + } - var id = terms[startIndex].id; - namedGroups[namedGroupId] = { - group: String(group), - start: id, - length: 0 - }; - return namedGroups[namedGroupId]; - }; - /** tries to match a sequence of terms, starting from here */ + return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length); + }); + + if (allWords === true && block.length > longest) { + longest = block.length; + } + + return allWords; + }); + + if (allDidMatch === true) { + return longest; + } + return false; + }; // get or create named group - var tryHere = function tryHere(terms, regs, index, length) { - var namedGroups = {}; - var previousGroupId = null; - var t = 0; // we must satisfy each rule in 'regs' - for (var r = 0; r < regs.length; r += 1) { - var reg = regs[r]; // Check if this reg has a named capture group + exports.getGroup = function (state, term_index, name) { + if (state.groups[state.groupId]) { + return state.groups[state.groupId]; + } - var isNamedGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; - var namedGroupId = null; // Reuse previous capture group if same + var termId = state.terms[term_index].id; + state.groups[state.groupId] = { + group: String(name), + start: termId, + length: 0 + }; + return state.groups[state.groupId]; + }; + }); + /** tries to match a sequence of terms, starting from here */ - if (isNamedGroup) { - var prev = regs[r - 1]; - if (prev && prev.named === reg.named && previousGroupId) { - namedGroupId = previousGroupId; + var tryHere = function tryHere(terms, regs, start_i, phrase_length) { + // all the variables that matter + var state = { + t: 0, + //the term index we're on + terms: terms, + //the working slice of term objects + r: 0, + // the reg index we're on + regs: regs, + //our match conditions + groups: {}, + //all named-group matches + start_i: start_i, + // term index we're starting from + phrase_length: phrase_length, + // # of terms in the sentence + hasGroup: false, + groupId: null, + previousGroup: null + }; // we must satisfy each rule in 'regs' + + for (; state.r < regs.length; state.r += 1) { + var reg = regs[state.r]; // Check if this reg has a named capture group + + state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same + + if (state.hasGroup === true) { + var prev = regs[state.r - 1]; + + if (prev && prev.named === reg.named && state.previousGroup) { + state.groupId = state.previousGroup; } else { - namedGroupId = _id(reg.named); - previousGroupId = namedGroupId; + state.groupId = _id(reg.named); + state.previousGroup = state.groupId; } - } //should we fail here? + } //have we run-out of terms? - if (!terms[t]) { - //are all remaining regs optional? - var hasNeeds = regs.slice(r).some(function (remain) { + if (!state.terms[state.t]) { + //are all remaining regs optional or negative? + var haveNeeds = regs.slice(state.r).some(function (remain) { return !remain.optional; }); - if (hasNeeds === false) { - break; - } // have unmet needs - + if (haveNeeds === false) { + break; //done! + } - return [false, null]; + return null; // die } //support 'unspecific greedy' .* properly if (reg.anything === true && reg.greedy === true) { - var skipto = greedyTo(terms, t, regs[r + 1], reg, index); // ensure it's long enough + var skipto = _matchLogic.greedyTo(state, regs[state.r + 1]); // ensure it's long enough + - if (reg.min !== undefined && skipto - t < reg.min) { - return [false, null]; + if (reg.min !== undefined && skipto - state.t < reg.min) { + return null; } // reduce it back, if it's too long - if (reg.max !== undefined && skipto - t > reg.max) { - t = t + reg.max; + if (reg.max !== undefined && skipto - state.t > reg.max) { + state.t = state.t + reg.max; continue; } if (skipto === null) { - return [false, null]; //couldn't find it + return null; //couldn't find it } // is it really this easy?.... - if (isNamedGroup) { - var g = getOrCreateGroup(namedGroups, namedGroupId, terms, t, reg.named); // Update group + if (state.hasGroup === true) { + var g = _matchLogic.getGroup(state, state.t, reg.named); - g.length = skipto - t; + g.length = skipto - state.t; } - t = skipto; + state.t = skipto; continue; - } //if it looks like a match, continue - //we have a special case where an end-anchored greedy match may need to - //start matching before the actual end; we do this by (temporarily!) - //removing the "end" property from the matching token... since this is - //very situation-specific, we *only* do this when we really need to. + } // support multi-word OR (a|b|foo bar) - if (reg.anything === true || reg.end === true && reg.greedy === true && index + t < length - 1 && terms[t].doesMatch(Object.assign({}, reg, { - end: false - }), index + t, length) === true || terms[t].doesMatch(reg, index + t, length) === true) { - var startAt = t; // okay, it was a match, but if it optional too, + if (reg.choices !== undefined && reg.operator === 'or') { + var skipNum = _matchLogic.doOrBlock(state); + + if (skipNum) { + // handle 'not' logic + if (reg.negative === true) { + return null; // die + } + + if (state.hasGroup === true) { + var _g = _matchLogic.getGroup(state, state.t, reg.named); + + _g.length += skipNum; + } + + state.t += skipNum; + continue; + } else if (!reg.optional) { + return null; //die + } + } // support AND (#Noun && foo) blocks + + + if (reg.choices !== undefined && reg.operator === 'and') { + var _skipNum = _matchLogic.doAndBlock(state); + + if (_skipNum) { + // handle 'not' logic + if (reg.negative === true) { + return null; // die + } + + if (state.hasGroup === true) { + var _g2 = _matchLogic.getGroup(state, state.t, reg.named); + + _g2.length += _skipNum; + } + + state.t += _skipNum; + continue; + } else if (!reg.optional) { + return null; //die + } + } // ok, finally test the term/reg + + + var term = state.terms[state.t]; + var doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length); + + if (reg.anything === true || doesMatch === true || _matchLogic.isEndGreedy(reg, state)) { + var startAt = state.t; // if it's a negative optional match... :0 + + if (reg.optional && regs[state.r + 1] && reg.negative) { + continue; + } // okay, it was a match, but if it's optional too, // we should check the next reg too, to skip it? - if (reg.optional && regs[r + 1]) { + + if (reg.optional && regs[state.r + 1]) { // does the next reg match it too? - if (terms[t].doesMatch(regs[r + 1], index + t, length) === true) { + var nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length); + + if (reg.negative || nextRegMatched) { // but does the next reg match the next term?? // only skip if it doesn't - if (!terms[t + 1] || terms[t + 1].doesMatch(regs[r + 1], index + t, length) === false) { - r += 1; + var nextTerm = state.terms[state.t + 1]; + + if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) { + state.r += 1; } } } //advance to the next term! - t += 1; //check any ending '$' flags + state.t += 1; //check any ending '$' flags if (reg.end === true) { //if this isn't the last term, refuse the match - if (t !== terms.length && reg.greedy !== true) { - return [false, null]; + if (state.t !== state.terms.length && reg.greedy !== true) { + return null; //die } } //try keep it going! if (reg.greedy === true) { - // for greedy checking, we no longer care about the reg.start - // value, and leaving it can cause failures for anchored greedy - // matches. ditto for end-greedy matches: we need an earlier non- - // ending match to succceed until we get to the actual end. - t = getGreedy(terms, t, Object.assign({}, reg, { - start: false, - end: false - }), regs[r + 1], index, length); + state.t = _matchLogic.getGreedy(state, regs[state.r + 1]); + + if (state.t === null) { + return null; //greedy was too short + } - if (t === null) { - return [false, null]; //greedy was too short + if (reg.min && reg.min > state.t) { + return null; //greedy was too short } // if this was also an end-anchor match, check to see we really // reached the end - if (reg.end === true && index + t !== length) { - return [false, null]; //greedy didn't reach the end + if (reg.end === true && state.start_i + state.t !== phrase_length) { + return null; //greedy didn't reach the end } } - if (isNamedGroup) { + if (state.hasGroup === true) { // Get or create capture group - var _g = getOrCreateGroup(namedGroups, namedGroupId, terms, startAt, reg.named); // Update group - add greedy or increment length + var _g3 = _matchLogic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length - if (t > 1 && reg.greedy) { - _g.length += t - startAt; + if (state.t > 1 && reg.greedy) { + _g3.length += state.t - startAt; } else { - _g.length++; + _g3.length++; } } continue; + } // ok, it doesn't match. + // did it *actually match* a negative? + + + if (reg.negative) { + var tmpReg = Object.assign({}, reg); + tmpReg.negative = false; // try removing it + + var foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length); + + if (foundNeg === true) { + return null; //bye! + } } //bah, who cares, keep going @@ -2228,25 +2532,32 @@ } // should we skip-over an implicit word? - if (terms[t].isImplicit() && regs[r - 1] && terms[t + 1]) { - // does the next one match? - if (terms[t + 1].doesMatch(reg, index + t, length)) { - t += 2; + if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) { + // if the last match was implicit too, we're missing a word. + if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) { + return null; + } // does the next one match? + + + if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) { + state.t += 2; continue; } - } // console.log(' ❌\n\n') - + } - return [false, null]; + return null; //die } //return our result - return [terms.slice(0, t), namedGroups]; + return { + match: state.terms.slice(0, state.t), + groups: state.groups + }; }; - var _03TryMatch = tryHere; + var _03TryMatch = tryHere; // final checks on the validity of our results - var postProcess = function postProcess(terms, regs, matches) { + var postProcess$1 = function postProcess(terms, regs, matches) { if (!matches || matches.length === 0) { return matches; } // ensure end reg has the end term @@ -2267,19 +2578,80 @@ return matches; }; - var _04PostProcess = postProcess; - /* break-down a match expression into this: - { - word:'', - tag:'', - regex:'', + var _04PostProcess = postProcess$1; // supported suffix-flags: + // suffixes: ? ] + * $ {2,6} ~ + // [\?\]\+\*\$~]* + // prefixes: ! [ ^ + // [\!\[\^]* + // match 'foo /yes/' and not 'foo/no/bar' - start:false, - end:false, - negative:false, - anything:false, - greedy:false, - optional:false, + var bySlashes = /(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/; // match '(yes) but not foo(no)bar' + + var byParentheses = /([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/; // okay + + var byWord = / /g; + + var isBlock = function isBlock(str) { + return /^[\!\[\^]*(<[^<]*>)?\(/.test(str) && /\)[\?\]\+\*\$~]*$/.test(str); + }; + + var isReg = function isReg(str) { + return /^[\!\[\^]*(<[^<]*>)?\//.test(str) && /\/[\?\]\+\*\$~]*$/.test(str); + }; + + var cleanUp$1 = function cleanUp(arr) { + arr = arr.map(function (str) { + return str.trim(); + }); + arr = arr.filter(function (str) { + return str; + }); + return arr; + }; + + var parseBlocks = function parseBlocks(txt) { + // parse by /regex/ first + var arr = txt.split(bySlashes); + var res = []; // parse by (blocks), next + + arr.forEach(function (str) { + if (isReg(str)) { + res.push(str); + return; + } + + res = res.concat(str.split(byParentheses)); + }); + res = cleanUp$1(res); // split by spaces, now + + var _final = []; + res.forEach(function (str) { + if (isBlock(str)) { + _final.push(str); + } else if (isReg(str)) { + _final.push(str); + } else { + _final = _final.concat(str.split(byWord)); + } + }); + _final = cleanUp$1(_final); + return _final; + }; + + var _01ParseBlocks = parseBlocks; // console.log('(one two) (upto) [#Date+]'.split(byParentheses)) + + /* break-down a match expression into this: + { + word:'', + tag:'', + regex:'', + + start:false, + end:false, + negative:false, + anything:false, + greedy:false, + optional:false, named:'', choices:[], @@ -2288,9 +2660,9 @@ var hasMinMax = /\{([0-9]+,?[0-9]*)\}/; var andSign = /&&/; - var captureName = new RegExp(/^<(\S+)>/); + var captureName = new RegExp(/^<\s*?(\S+)\s*?>/); - var titleCase$1 = function titleCase(str) { + var titleCase$2 = function titleCase(str) { return str.charAt(0).toUpperCase() + str.substr(1); }; @@ -2373,7 +2745,8 @@ } if (start(w) === '!') { - obj.negative = true; + obj.negative = true; // obj.optional = true + w = stripStart(w); } //wrapped-flags @@ -2400,7 +2773,9 @@ return s; }); //recursion alert! - obj.choices = obj.choices.map(parseToken); + obj.choices = obj.choices.map(function (str) { + return str.split(/ /g).map(parseToken); + }); w = ''; } //regex @@ -2419,7 +2794,7 @@ obj.word = w; return obj; } - } // support #Tag{0,9} + } // support #Tag{1,9} if (hasMinMax.test(w) === true) { @@ -2435,9 +2810,12 @@ // '{3,}' Three or more times obj.min = Number(arr[0]); obj.max = Number(arr[1] || 999); - } + } // use same method as '+' - obj.greedy = true; + + obj.greedy = true; // 0 as min means the same as '?' + + obj.optional = true; return ''; }); } //do the actual token content @@ -2445,7 +2823,7 @@ if (start(w) === '#') { obj.tag = stripStart(w); - obj.tag = titleCase$1(obj.tag); + obj.tag = titleCase$2(obj.tag); return obj; } //dynamic function on a term object @@ -2478,32 +2856,28 @@ return obj; }; - var parseToken_1 = parseToken; - - var isNamed = function isNamed(capture) { - return typeof capture === 'string' || typeof capture === 'number'; - }; + var _02ParseToken = parseToken; // name any [unnamed] capture-groups with a number - var fillGroups = function fillGroups(tokens) { + var nameGroups = function nameGroups(tokens) { var convert = false; var index = -1; var current; //'fill in' capture groups between start-end for (var i = 0; i < tokens.length; i++) { - var n = tokens[i]; // Give name to un-named single tokens + var token = tokens[i]; // Give name to un-named single tokens - if (n.groupType === 'single' && n.named === true) { + if (token.groupType === 'single' && token.named === true) { index += 1; - n.named = index; + token.named = index; continue; } // Start converting tokens - if (n.groupType === 'start') { + if (token.groupType === 'start') { convert = true; - if (isNamed(n.named)) { - current = n.named; + if (typeof token.named === 'string' || typeof token.named === 'number') { + current = token.named; } else { index += 1; current = index; @@ -2512,137 +2886,190 @@ if (convert) { - n.named = current; + token.named = current; } // Stop converting tokens - if (n.groupType === 'end') { + if (token.groupType === 'end') { convert = false; } } return tokens; - }; + }; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word - var useOneOf = function useOneOf(tokens) { + + var doFastOrMode = function doFastOrMode(tokens) { return tokens.map(function (token) { if (token.choices !== undefined) { - // are they all straight non-optional words? - var shouldPack = token.choices.every(function (c) { - return c.optional !== true && c.negative !== true && c.word !== undefined; + // are they all straight-up words? then optimize them. + var shouldPack = token.choices.every(function (block) { + if (block.length !== 1) { + return false; + } + + var reg = block[0]; + + if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) { + return true; //reg is simple-enough + } + + return false; }); if (shouldPack === true) { var oneOf = {}; - token.choices.forEach(function (c) { - return oneOf[c.word] = true; + token.choices.forEach(function (block) { + oneOf[block[0].word] = true; }); - token.oneOf = oneOf; + token.fastOr = oneOf; delete token.choices; } } return token; }); - }; + }; // allow multiword OR (foo|one two) + // const doMultiWord = function (tokens) { + // return tokens.map(token => { + // if (token.choices !== undefined) { + // let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false + // if (isMulti !== false) { + // token.multiword = true + // // turn all choices into arrays + // token.choices = token.choices.map(choice => { + // if (choice.word) { + // choice.sequence = choice.word.split(hasASpace) + // delete choice.word + // } + // return choice + // }) + // } + // } + // return token + // }) + // } + // const doBlockMode = function (tokens) { + // return tokens.map(token => { + // // we've already setup fastOr mode + // if (token.choices !== undefined) { + // // console.log(token) + // } + // return token + // }) + // } + - var postProcess$1 = function postProcess(tokens) { - // ensure all capture groups are filled between start and end + var postProcess = function postProcess(tokens) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // ensure all capture groups are filled between start and end // give all capture groups names + var count = tokens.filter(function (t) { return t.groupType; }).length; if (count > 0) { - tokens = fillGroups(tokens); - } // convert 'choices' format to 'oneOf' format + tokens = nameGroups(tokens); + } // convert 'choices' format to 'fastOr' format + + if (!opts.fuzzy) { + tokens = doFastOrMode(tokens); + } // support multiword OR (foo bar|baz) + // tokens = doMultiWord(tokens) + // support (one two three) + // tokens = doBlockMode(tokens) - tokens = useOneOf(tokens); // console.log(tokens) return tokens; }; - var postProcess_1 = postProcess$1; + var _03PostProcess = postProcess; - var isArray$1 = function isArray(arr) { + var isArray$2 = function isArray(arr) { return Object.prototype.toString.call(arr) === '[object Array]'; - }; //split-up by (these things) - - - var byParentheses = function byParentheses(str) { - var arr = str.split(/([\^\[\!]*(?:<\S+>)?\(.*?\)[?+*]*\]?\$?)/); - arr = arr.map(function (s) { - return s.trim(); - }); - return arr; - }; - - var byWords = function byWords(arr) { - var words = []; - arr.forEach(function (a) { - //keep brackets lumped together - if (/^[[^_/]?\(/.test(a[0])) { - words.push(a); - return; - } - - var list = a.split(' '); - list = list.filter(function (w) { - return w; - }); - words = words.concat(list); - }); - return words; }; //turn an array into a 'choices' list var byArray = function byArray(arr) { + var blocks = arr.map(function (s) { + return [{ + word: s + }]; + }); return [{ - choices: arr.map(function (s) { - return { - word: s - }; - }) + choices: blocks, + operator: 'or' }]; - }; + }; // turn a Doc object into a reg of ids to lookup + var fromDoc = function fromDoc(doc) { if (!doc || !doc.list || !doc.list[0]) { return []; } - var ids = []; + var regs = []; doc.list.forEach(function (p) { + var ids = []; p.terms().forEach(function (t) { - ids.push({ - id: t.id - }); + ids.push(t.id); }); + regs.push(ids); }); return [{ - choices: ids, - greedy: true + idBlocks: regs }]; + }; // add fuzziness etc to each reg + + + var addOptions = function addOptions(tokens, opts) { + // add default fuzzy-search limit + if (opts.fuzzy === true) { + opts.fuzzy = 0.85; + } + + if (typeof opts.fuzzy === 'number') { + tokens = tokens.map(function (reg) { + // add a fuzzy-match on 'word' tokens + if (opts.fuzzy > 0 && reg.word) { + reg.fuzzy = opts.fuzzy; + } //add it to or|and choices too + + + if (reg.choices) { + reg.choices.forEach(function (block) { + block.forEach(function (r) { + r.fuzzy = opts.fuzzy; + }); + }); + } + + return reg; + }); + } + + return tokens; }; /** parse a match-syntax string into json */ var syntax = function syntax(input) { - // fail-fast + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // fail-fast + if (input === null || input === undefined || input === '') { return []; } //try to support a ton of different formats: - if (_typeof$1(input) === 'object') { - if (isArray$1(input)) { + if (_typeof(input) === 'object') { + if (isArray$2(input)) { if (input.length === 0 || !input[0]) { return []; } //is it a pre-parsed reg-list? - if (_typeof$1(input[0]) === 'object') { + if (_typeof(input[0]) === 'object') { return input; } //support a flat array of normalized words @@ -2664,23 +3091,66 @@ input = String(input); //go for it? } - var tokens = byParentheses(input); - tokens = byWords(tokens); - tokens = tokens.map(parseToken_1); //clean up anything weird + var tokens = _01ParseBlocks(input); //turn them into objects + - tokens = postProcess_1(tokens); // console.log(JSON.stringify(tokens, null, 2)) + tokens = tokens.map(function (str) { + return _02ParseToken(str); + }); //clean up anything weird + + tokens = _03PostProcess(tokens, opts); // add fuzzy limits, etc + + tokens = addOptions(tokens, opts); // console.log(tokens) return tokens; }; - var syntax_1 = syntax; + var matchSyntax = syntax; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)')) + // match an explicit sequence of term ids + // take a phrase and find any of the idBlocks in it + + var idLookup = function idLookup(terms, regs) { + var matches = []; + var blocklist = regs[0].idBlocks; + + var _loop = function _loop(_t) { + blocklist.forEach(function (block) { + if (block.length === 0) { + t = _t; + return; + } + + var foundAll = block.every(function (id, i) { + t = _t; + return terms[_t + i].id === id; + }); + + if (foundAll) { + matches.push({ + match: terms.slice(_t, _t + block.length) + }); // skip top-loop forward + + _t += block.length - 1; + } + }); + t = _t; + }; + + for (var t = 0; t < terms.length; t += 1) { + _loop(t); + } + + return matches; + }; + + var idLookup_1 = idLookup; /** returns a simple array of arrays */ var matchAll = function matchAll(p, regs) { var matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; //if we forgot to parse it.. if (typeof regs === 'string') { - regs = syntax_1(regs); + regs = matchSyntax(regs); } //try to dismiss it, at-once @@ -2690,25 +3160,28 @@ var minLength = regs.filter(function (r) { - return r.optional !== true; + return r.optional !== true && r.negative !== true; }).length; var terms = p.terms(); - var matches = []; //optimisation for '^' start logic + var matches = []; // these id-lookups can be super-fast + + if (regs[0].idBlocks) { + var res = idLookup_1(terms, regs); + + if (res && res.length > 0) { + return _04PostProcess(terms, regs, res); + } + } //optimisation for '^' start logic + if (regs[0].start === true) { - var _tryMatch = _03TryMatch(terms, regs, 0, terms.length), - _tryMatch2 = _slicedToArray(_tryMatch, 2), - match = _tryMatch2[0], - groups = _tryMatch2[1]; + var _res = _03TryMatch(terms, regs, 0, terms.length); - if (match !== false && match.length > 0) { - match = match.filter(function (m) { + if (_res && _res.match && _res.match.length > 0) { + _res.match = _res.match.filter(function (m) { return m; }); - matches.push({ - match: match, - groups: groups - }); + matches.push(_res); } return _04PostProcess(terms, regs, matches); @@ -2722,22 +3195,16 @@ } //try it! - var _tryMatch3 = _03TryMatch(terms.slice(i), regs, i, terms.length), - _tryMatch4 = _slicedToArray(_tryMatch3, 2), - _match = _tryMatch4[0], - _groups = _tryMatch4[1]; + var _res2 = _03TryMatch(terms.slice(i), regs, i, terms.length); - if (_match !== false && _match.length > 0) { + if (_res2 && _res2.match && _res2.match.length > 0) { //zoom forward! - i += _match.length - 1; //[capture-groups] return some null responses + i += _res2.match.length - 1; //[capture-groups] return some null responses - _match = _match.filter(function (m) { + _res2.match = _res2.match.filter(function (m) { return m; }); - matches.push({ - match: _match, - groups: _groups - }); //ok, maybe that's enough? + matches.push(_res2); //ok, maybe that's enough? if (matchOne === true) { return _04PostProcess(terms, regs, matches); @@ -2788,7 +3255,7 @@ return result; }; - var not = notMatch; + var not$1 = notMatch; /** return an array of matching phrases */ var match_1 = function match_1(regs) { @@ -2821,10 +3288,10 @@ /** remove all matches from the result */ - var not$1 = function not$1(regs) { + var not = function not(regs) { var _this2 = this; - var matches = not(this, regs); //make them phrase objects + var matches = not$1(this, regs); //make them phrase objects matches = matches.map(function (list) { return _this2.buildFrom(list[0].id, list.length); @@ -2868,7 +3335,7 @@ var match = { match: match_1, has: has, - not: not$1, + not: not, canBe: canBe$1 }; @@ -2912,13 +3379,13 @@ Object.assign(Phrase.prototype, match); - Object.assign(Phrase.prototype, methods$1); //apply aliases + Object.assign(Phrase.prototype, methods$7); //apply aliases - var aliases = { + var aliases$1 = { term: 'terms' }; - Object.keys(aliases).forEach(function (k) { - return Phrase.prototype[k] = Phrase.prototype[aliases[k]]; + Object.keys(aliases$1).forEach(function (k) { + return Phrase.prototype[k] = Phrase.prototype[aliases$1[k]]; }); var Phrase_1 = Phrase; /** a key-value store of all terms in our Document */ @@ -3024,7 +3491,7 @@ var hasEllipse = /(?:\u2026|\.{2,}) *$/; var newLine = /((?:\r?\n|\r)+)/; // Match different new-line formats - var hasLetter = /[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i; + var hasLetter = /[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i; var startWhitespace = /^\s+/; // Start with a regex: var naiive_split = function naiive_split(text) { @@ -3087,8 +3554,10 @@ if (!text || typeof text !== 'string' || hasSomething.test(text) === false) { return sentences; - } // Start somewhere: + } // cleanup unicode-spaces + + text = text.replace('\xa0', ' '); // Start somewhere: var splits = naiive_split(text); // Filter-out the crap ones @@ -3155,31 +3624,31 @@ var wordlike = /\S/; var isBoundary = /^[!?.]+$/; var naiiveSplit = /(\S+)/; - var isSlash = /\/\W*$/; - var notWord = { - '.': true, - '-': true, - //dash - '–': true, - //en-dash - '—': true, - //em-dash - '--': true, - '...': true // '/': true, // 'one / two' - - }; + var isSlash = /[a-z] ?\/ ?[a-z]*$/; + var notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '"', "'", '`']; + notWord = notWord.reduce(function (h, c) { + h[c] = true; + return h; + }, {}); var hasHyphen = function hasHyphen(str) { //dont split 're-do' if (/^(re|un)-?[^aeiou]./.test(str) === true) { return false; - } //letter-number + } //letter-number 'aug-20' var reg = /^([a-z\u00C0-\u00FF`"'/]+)(-|–|—)([a-z0-9\u00C0-\u00FF].*)/i; if (reg.test(str) === true) { return true; + } //number-letter '20-aug' + + + var reg2 = /^([0-9]{1,4})(-|–|—)([a-z\u00C0-\u00FF`"'/-]+$)/i; + + if (reg2.test(str) === true) { + return true; } //support weird number-emdash combo '2010–2011' // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i // if (reg2.test(str)) { @@ -3223,6 +3692,10 @@ } return arr; + }; + + var isArray$1 = function isArray(arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; }; //turn a string into an array of strings (naiive for now, lumped later) @@ -3236,6 +3709,10 @@ str = String(str); } + if (isArray$1(str)) { + return str; + } + var words = str.split(naiiveSplit); for (var i = 0; i < words.length; i++) { @@ -3289,22 +3766,29 @@ }; var _02Words = splitWords; + + var isArray = function isArray(arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; + }; /** turn a string into an array of Phrase objects */ + var fromText = function fromText() { var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var world = arguments.length > 1 ? arguments[1] : undefined; - var pool = arguments.length > 2 ? arguments[2] : undefined; //a bit of validation, first + var pool = arguments.length > 2 ? arguments[2] : undefined; + var sentences = null; //a bit of validation, first if (typeof text !== 'string') { if (typeof text === 'number') { text = String(text); + } else if (isArray(text)) { + sentences = text; } } //tokenize into words - var sentences = _01Sentences(text, world); - + sentences = sentences || _01Sentences(text, world); sentences = sentences.map(function (str) { return _02Words(str); }); //turn them into proper objects @@ -3370,61 +3854,9 @@ }; var fromJSON_1 = fromJSON; - var _version = '13.1.1'; - var _data = { - "Comparative": "true¦better", - "Superlative": "true¦earlier", - "PresentTense": "true¦is,sounds", - "Value": "true¦a few", - "Noun": "true¦a8b7c5e3f2here,ie,lit,m1no doubt,p0tce,vs;d,l;a,d;t,y;g,sp,tc,x0;!p;a,ca,o0;l,rp;a,c,l;d,l,rc", - "Copula": "true¦a1is,w0;as,ere;m,re", - "PastTense": "true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan", - "Condition": "true¦if,unless", - "Gerund": "true¦accord0be0develop0go0result0stain0;ing", - "Negative": "true¦n0;ever,o0;!n,t", - "QuestionWord": "true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s", - "Plural": "true¦records", - "Conjunction": "true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh", - "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", - "Singular": "true¦0:0X;1:10;a0Wb0Kc0Bd04e02fXgShOici1jel0kitty,lNmJnIoHpDquestion mark,rBs7t4u2womW;nc0Rs 2;doll0Dst0F; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;ist0Pky,omeone,t2uper bowl,yst0W;ep3ri1u2;de0Pff;faMmoM;al0i1o2;om,se;a4i0Jl05r3u2;dLrpoD;erogaVobl0O;rt,te0I;bjSceGthers;othi1umb0E;a4ee04o2;del,m2nopo0th0C;!my;n,yf0;i0unch;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em", - "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;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", - "Honorific": "true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;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", - "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", - "Uncountable": "true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics", - "Infinitive": "true¦0:6K;1:6Y;2:57;3:6V;4:6W;5:5Z;6:67;7:6Q;8:6I;9:6U;A:6P;B:6S;C:6D;D:6Z;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tCve;n,raD;d0t;aIiGo9;eGsA;!w;l6Cry;nHpGr3se;gra4Mli3Z;dGi9lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi7;ne,rn;aGe0Mi5Nu7y;de,in,nsf0p,v5F;r2XuC;ank,reat2N;nd,st;lk,rg1Ps9;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitC;bmAck,ff0gge7ppHrGspe5;ge,pri1rou4Vvi4;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi4;ngth2Dss,tC;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arCem,le5n1r4tt6;aHo2rG;atCew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi7oItG;!o2rG;i5uc1Y;l4rt;mb6nt,r4;e7i2;air,eHlGo3ZreseD;a8y;at;aEemb0i3Vo4;aHeGi4y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei4k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiDoG;cGdu8greBhibAmi1te7vi2T;eBlaim;di5pa2ss,veD;iDp,rtr3ZsGur;e,t;aHuG;g,n3;n,y;ck,le;fo30mAsi7;ck,iDrt4Fss,u1;bJccur,ff0pera9utweIverGwe;co40lap,ta20u1wG;helm;igh;ser4taE;eHotG;e,i8;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr3;intaEna3rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mAnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nC;iGno2Z;ck,ll,ss;am,oEuG;d3mp;gno2mQnGss3C;cOdica9flu0MhNsKtIvG;eGol4;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abAibA;lu1Er1C;agi22pG;lemeDo20ro4;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloBove1MrIuG;arGeBi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca7m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte17;a16eHi2laEoGreB;rt,se;ct,riG;en8;ci1t;el,han3;abGima9;liF;ab6couXdHfor8ga3han8j03riCsu2t0vG;isi2Qy;!u2;body,er3pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeBiG;ft;g,in;d3ubt;ff0p,re5sHvG;iYor8;aKcHliGmiBpl16tinguiF;ke;oGuB;uGv0;ra3;gr1TppG;ear,ro4;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er4iHtrG;oy;gn,re;a09e08i5osA;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma3n8re,te;a0Ae09h06i9l04oJrG;aHeGoBuFy;a9dA;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aEin0SrG;a7ibu9ol;iGtitu9;d0st;iHoGroD;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen3n3r3se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a7mb,o7rrGth0un8;ow;ck;ar,lHnefAtrG;ay;ie4ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waA;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri4;ue;!i4;eaJlIroG;aCve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e3ow;ee;rd;aRdIju7mAoR;it;st;!reB;ss;cJhie4knowled3tiva9;te;ge;ve;eIouDu1;se;nt;pt;on", - "Unit": "true¦0:16;a11b0Zc0Ld0Ke0If0Dg09h06in0Ejoule0k00lYmNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Kb,d0Qears old,o1;tt0E;att0b;able4b3e2on1sp;!ne0;a2r0A;!l,sp;spo01; ft,uare 1;c0Fd0Ef3i0Ckilo0Gm1ya0B;e0Jil1;e0li0E;eet0o0A;t,uart0;ascals,e2i1ou0Mt;c0Jnt0;rcent,tZ;hms,uVz;an0GewtQ;/s,b,e7g,i3l,m2p1²,³;h,s;!²;!/h,cro3l1;e1li05;! DsC²;g05s0A;gPter1;! 2s1;! 1;per second;b,iZm,u1x;men0x0;b,elvin0g,ilo2m1nQ;!/h,ph,²;byYgWmeter1;! 2s1;! 1;per hour;e1g,z;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", - "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", - "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", - "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", - "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", - "City": "true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", - "Abbreviation": "true¦a08b05cZdXeUfSgRhQiPjNkanMlKmGnEoDpCque,rAs6t4u3v2w0;is0y00;!c;a,s,t;niv,safa,t;ce,e0;nn,x;ask,e1fc,gt,ir,r,t,u0;pt,rg;nDp0;!t;d,e0;pAs,v;a,d,ennGhd,l,rof,vt;ct,kla,nt,p,rd;eb0ov;!r;a2d,essrs,i1lle,me,r5s0t;!tr;nn,ster;!j,r;it,lb,t0;!d;!s;an,r,u0;l,n;a,da,e,nc;on,wy;a,en,ov;eb,l0t,y;!a;g,s1tc,x0;!p;p,q;ak,e0ist,r;c,pt,t;a3ca,l,m2o0pl,res,t;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d3l2pr,r1ss0tty,ug,ve;n,t;c,iz;!ta;!j,m,v", - "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s", - "Country": "true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;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", - "Region": "true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma", - "FemaleName": "true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:EP;6:ER;7:FS;8:GF;9:EZ;A:GB;B:E5;C:FO;D:FL;E:G8;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et5onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s7;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs7tGwa0;ia0um;a,yn;iGya;a,ka,s7;a4e4iGmCAra;!ka;a,t7;at7it7;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet5ie,y;anGi8;!a,e,nG;aDe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs7vannaD;aDi0;ra,y;aGi4;nt7ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lE;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaD;chGe,i0mo0n5EquCDvCy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et5in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t5;aQePiJoGy6;eHrG;aDeCma;ll1mi;aKcIkGla,na,s7ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s7;cy,et5;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eC;h75il9t2;a,cSgOiJjor2l6In2s7tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lEna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri5;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alEd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket5z2;a,et5;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes7na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as7is7oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stC;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s7;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlEri0y;ar5Cer5Cie,leCr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelEd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lEph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et5iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lEquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aDnaD;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolE;acHetGisel9;a,chC;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et5i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileCkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eCis,la,othGthy;ea,y;an09naDonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraDra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et5iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleC;en,t5;aIeoHotG;il4B;!pat4;ir8rIudG;et5iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot5;n1t5;!sa;d4el1PtG;al,el1O;cHlG;es5i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleCrEy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwEok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaDvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt7yl;adHiG;ce;et5iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes7;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t5;an19elG;le;aYdWeUgQiOja,nHtoGya;inet5n3;!aJeHiGmI;e,ka;!mGt5;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t5;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is7jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naD;c7da,leCmLnslKsG;haDlG;inGyW;g,n;!h;ey;ee;en;at7g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lEsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah", - "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", - "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", - "Date": "true¦t0weekend,yesterd2;mr2o0;d0morrow;ay;!w", - "FirstName": "true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is", - "LastName": "true¦0:34;1:39;2:3B;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs1;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu2;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps1;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar2lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch2dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins1;c6ve0F;ci,hards1;ir2os;aEeAh8ic6ow20;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils1guy5ix1owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin2;!o;aCe8i6op2uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen2o6u3;h6nYu3;an6ns1;ss1;ki0Es5;cks1nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs1;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr2;ayli3ub0;m2nzal2;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand2;d7insteHsposi6vaL;to;is1wards;aCeBi9omin8u6;bo6rand;is;gu2;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s1;on;eks7iy8var2;ez;ej6;ev;ams", - "MaleName": "true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:9V;6:BZ;7:AT;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde5sB;!l7t1;de,lCrr6yB;l1ne;lBt3;a93y;aEern1iB;cCha0nceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l7;lom1nA3uB;leyma8ta;dBl7Jm1;!n7;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n7olfo,ri68;co,ky;bAe9U;cBl7;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub6x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw6;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e5;a78ik;house,o03t1;e,olB;aj;ah,hBk7;a4eB;al,l;hClv2rB;le,ri5v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe5;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha5tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe5;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a5ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd6kGmFrDsCvi3yB;!d6s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d6;an,s0;lEo4FrDuBv7;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr7rge;bri4l6rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym6zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl7nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e5ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne5rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro5y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl7y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n7rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid6ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd6eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on", - "Person": "true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;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;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er", - "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", - "PhrasalVerb": "true¦0:72;1:6Q;2:7E;3:74;4:6J;5:7H;6:76;7:6P;8:6C;9:6D;A:5I;B:71;C:70;a7Hb63c5Dd5Ae58f46g3Oh38iron0j34k2Zl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit53;d 1k2R;mp0n4Ape0r8s8;eel Bip 7L;aEiD;gh 06rd0;n Br 3D;it 5Kk8lk6rm 0Qsh 74t67v4P;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Gup;ade YiDot0y 28;ckle68p 7A;ne67p Ds4D;d2o6Lup;ck FdEe Dgh5Tme0p o0Dre0;aw3ba4d2in,up;e5Ky 1;by,o6V;ink Drow 5V;ba4ov7up;aDe 4Ill4O;m 1r W;ckCke Elk D;ov7u4O;aDba4d2in,o31up;ba4ft7p4Tw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6P; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1MiD;ke 5Yn2Y;p Drm1P;by,in,o6B;n2Zr 1tc3I;c2Ymp0nd Dr6Hve6y 1;ba4d2up;d2o67up;ar2Vell0ill4UlErDurC;ingCuc8;a33it 3U;be4Crt0;ap 4Eow B;ash 4Zoke0;eep EiDow 9;c3Np 1;in,oD;ff,v7;gn Eng2Zt Dz8;d2o5up;in,o5up;aFoDu4F;ot Dut0w 5X;aw3ba4f37o5R;c2FdeAk4Sve6;e Hll0nd GtD; Dtl43;d2in,o5upD;!on;aw3ba4d2in,o1Yup;o5to;al4Lout0rap4L;il6v8;at0eKiJoGuD;b 4Ele0n Dstl8;aDba4d2in53o3Gt30u3E;c1Xw3;ot EuD;g2Knd6;a1Xf2Ro5;ng 4Op6;aDel6inAnt0;c4Yd D;o2Tu0C;aQePiOlMoKrHsyc2AuD;ll Ft D;aDba4d2in,o1Ht34up;p39w3;ap38d2in,o5t32up;attleCess EiGoD;p 1;ah1Hon;iDp 53re3Mur45wer 53;nt0;ay3ZuD;gAmp 9;ck 53g0leCn 9p3W;el 47ncilA;c3Pir 2In0ss FtEy D;ba4o4R; d2c1Y;aw3ba4o12;pDw3K;e3Jt B;arrow3Terd0oD;d6te3S;aJeHiGoEuD;ddl8ll37;c17p 1uth6ve D;al3Bd2in,o5up;ss0x 1;asur8lt 9ss D;a1Aup;ke Dn 9r30s1Lx0;do,o3Yup;aPeNiIoDuck0;a17c37g GoDse0;k Dse35;aft7ba4d2forw2Bin3Wov7uD;nd7p;in,o0J;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fl22r Dt 1;fDof;rom;in,oRu1A;cZm 1nDve it,ze1Y;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut", - "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld", - "Adjective": "true¦0:74;1:7J;2:7P;3:7I;4:7B;5:5B;6:48;7:49;8:4R;9:60;A:7G;B:6Z;C:6Y;D:72;E:5W;a6Ib64c5Qd56e4Tf49g41h3Qi35j33k32l2Rm2Gn27o1Rp1Aquack,r10s0Gt09uQvNwFyear5;arp0eJholeIiHoF;man5oFu6B;d6Dzy;despr74s5F;!sa7;eGlFste26;co1Il o4L;!k5;aGiFola4B;b7Sce versa,ol54;ca2gabo62nilla;ltWnJpGrb59su4tterF;!moC; f34b1OpGsFti1H;ca7et,ide dMtairs;er,i3N;aPbeco6Qconvin27deMeLfair,ivers4knKprecedYrIsGwF;iel20ritt5Y;i1VuF;pervis0specti3;eFu5;cognLgul6Gl6G;own;ndi3v5Sxpect0;cid0rF;!grou5NsF;iz0tood;b7ppeaLssu6FuthorF;iz0;i24ra;aJeHhough4OoGrF;i1oubl0;geth8p,rpB;en5PlFm4Zrr2U;li3;boo,lFn;ent0;aXcWeUhTiRmug,nobbi3EoPpOqueami3EtJuFymb63;bHi gener54pFrprisi3;erFre0L;! dup8b,i29;du0seq4T;anda6TeIi0PrFy38;aightFip0; fFfF;or5A;adfaCreotyp0;aEec2Gir1JlendBot on; call0le,mb8phist1XrFu0Xvi41;dBry;gnifica2nF;ceEg7;am2Pe8ocki3ut;cFda1em5lfi2Yni1Wpa68re6;o1Gr3V;at57ient28reec57;cr0me,ns serif;aMeIiGoF;buCtt4TuSy4;ghtFv4;!-29f9;ar,bel,condi1du62fres51lHpublic3VsFtard0;is47oF;lu1na2;e1Euc45;bBciF;al,st;aQeOicayu6lacBopuliCrGuF;bl59mp0;eJiGoF;!b0AfuDmi31p8;mGor,sFva1;ti6;a4Ve;ciDmF;a0IiF;er,um;ac20rFti1;feAma2Tplexi3v33;rFst;allelHtF;-tiFi4;me;!ed;bQffOkNld fashion0nMpLrg1Hth8utKvF;al,erF;!aHniGt,wF;eiFrouF;ght;ll;do0Ver,g2Lsi45;en,posi1; boa5Fg2Jli6;!ay; gua5DbFli6;eat;eHsF;cFer0Hole1;e6uE;d2Sse;ak0eMiLoFua4O;nJrGtF;ab7;thF;!eF;rn;chala2descri4Zstop;ght5;arby,cessa3Wighbor5xt;aNeLiIoFultip7;bi7derGlFnth5ot,st;dy;a1n;nFx0;iaFor;tuE;di4EnaFre;ci3;cFgenta,in,j03keshift,le,mmoth,ny,sculi6;abEho;aOeJiGoFu13;uti12vi3;mGteraF;l,te;it0;ftIgFth4;al,eGitiF;ma1;nda3C;!-0C;nguBst,tt8;ap1Sind5no0A;agg0uF;niOstifi0veni7;de4gno4Blleg4mSnHpso 1VrF;a1releF;va2; NaMbr0corLdJfluenTiTnIsHtF;aAenDoxF;ic36;a6i2R;a1er,oce2;iGoF;or;reA;deq3Jppr2Y;fFsitu,vitro;ro2;mJpF;arHerfeAoFrop8;li1rtF;a2ed;ti4;eFi0Q;d2QnD;aKelJiHoFumdr3B;neCok0rrFs07ur5;if2S;ghfalut1OspF;an2Q;liZpf9;lInHrF;d05roF;wi3;dy,gi3;f,low0;ainf9ener2Jiga22lLoKraHuF;ilFng ho;ty;cGtF;ef9is;ef9;ne,od;ea2Dob4;aUeOinNlMoHrF;a1TeFoz1K;e2Dq12tf9;oHrF; keeps,eFm8tuna1;g04ign;liF;sh;ag2Zue2;al,i1;dJmGrF;ti7;a7ini6;ne;le; up;bl0i2lDr Gux,voF;ri1uri1;oFreac1E;ff;aNfficie2lMmiLnJreAthere4veIxF;aAcess,pe1OtraGuF;be2Ll0H;!va1D;n,ryday; Fcouragi3tiE;rou1sui1;ne2;abo23dQe18i1;g8sF;t,ygF;oi3;er;aVeNiHoFrea15ue;mina2ne,ubF;le,tf9;dact1Bfficu1OsGvF;erD;creHeas0gruntl0honeCordGtF;a2ress0;er5;et; LadpKfJgene1PliHrang0spe1PtGvoF;ut;ail0ermin0;be1Mca1ghF;tf9;ia2;an;facto;i5magFngeroZs0I;ed,i3;ly;ertaRhief,ivil,oHrF;aFowd0u0H;mp0v02z0;loNmLnGoi3rrFve0P;eAu1I;cre1grIsHtF;emFra0F;po0D;ta2;ue2;mer08pleF;te,x;ni4ss4;in;aPeLizarElJoGrF;and new,isk,okP;gGna fiWttom,urgeoF;is;us;ank,iI;re;autif9hiGlov0nFst,yoG;eVt;nd;ul;ckGnkru0XrrF;en;!wards; priori,b0Nc0Kd0AfraBg05h04lZma06ntiquYpUrOsMttracti07utheLvIwF;aGkF;wa0U;ke,re;ant garGerF;age;de;ntV;leep,tonisF;hi3;ab,bitIroHtiF;fiF;ci4;ga2;raF;ry;pFt;are2etiPrF;oprF;ia1;at0;arIcohGeFiMl,oof;rt;olF;ic;mi3;ead;ainCgressiGoniF;zi3;ve;st;id; MeKuJvF;aGerD;se;nc0;ed;lt;pt,qF;ua1;hoc,infinitF;um;cuGtu4u1;al;ra1;erPlOoMruLsGuF;nda2;e2oGtraA;ct;lu1rbi3;ng;te;pt;aFve;rd;aze,e;ra2;nt", - "Comparable": "true¦0:3Z;1:4G;2:43;3:2W;4:49;5:3V;a4Mb42c3Md3Be33f2Pg2Dh22i1Tj1Sk1Pl1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell25ou4;aBe9hi1Wi7r6;o4y;ck0Mde,l6n1ry,se;d,y;a6i4Kt;k,ry;n1Rr6sI;m,y;a7e6ulgar;nge5rda2xi4;gue,in,st;g0n6pco3Kse5;like0ti1;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,t;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", - "TextValue": "true¦bMeIfChundredNmMnin9one,qu8s6t0zeroN;enMh3rLw0;e0o;l0ntC;fGve;ir0ousandIree;d,t5;e0ix7;cond,ptEven6xtE;adrDintD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en1;illion0;!th", - "Ordinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", - "Cardinal": "true¦bGeDf7hundred,mGnine9one,qu6s4t0zero;en,h2rFw0;e0o;lve,n7;irt8ousand,ree;e0ix4;ptAven3xtA;adr9int9;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion", - "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", - "Adverb": "true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", - "Preposition": "true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut", - "Determiner": "true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er" - }; + var _version = '13.10.5'; var entity = ['Person', 'Place', 'Organization']; - var nouns = { + var nouns$1 = { Noun: { notA: ['Verb', 'Adjective', 'Adverb'] }, @@ -3537,20 +3969,25 @@ } }; - var verbs = { + var verbs$1 = { Verb: { notA: ['Noun', 'Adjective', 'Adverb', 'Value'] }, // walks PresentTense: { isA: 'Verb', - notA: ['PastTense', 'Copula', 'FutureTense'] + notA: ['PastTense', 'FutureTense'] }, // neutral form - 'walk' Infinitive: { isA: 'PresentTense', notA: ['PastTense', 'Gerund'] }, + //close the door! + Imperative: { + isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'], + + }, // walking Gerund: { isA: 'PresentTense', @@ -3584,7 +4021,7 @@ }, // shown Participle: { - isA: 'Verb' + isA: 'PastTense' }, // show up PhrasalVerb: { @@ -3593,6 +4030,10 @@ //'up' part Particle: { isA: 'PhrasalVerb' + }, + //this can be an adverb + Auxiliary: { + notA: ['Noun', 'Adjective', 'Value'] } }; var values = { @@ -3607,6 +4048,10 @@ isA: 'Value', notA: ['Ordinal'] }, + Fraction: { + isA: 'Value', + notA: ['Noun'] + }, RomanNumeral: { isA: 'Cardinal', //can be a person, too @@ -3628,7 +4073,7 @@ } }; var anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord']; - var misc = { + var misc$1 = { //--Adjectives-- Adjective: { notA: ['Noun', 'Verb', 'Adverb', 'Value'] @@ -3655,7 +4100,7 @@ // Dates: //not a noun, but usually is Date: { - notA: ['Verb', 'Conjunction', 'Adverb', 'Preposition', 'Adjective'] + notA: ['Verb', 'Adverb', 'Preposition', 'Adjective'] }, Month: { isA: ['Date', 'Singular'], @@ -3664,10 +4109,15 @@ WeekDay: { isA: ['Date', 'Noun'] }, + // 'PST' + Timezone: { + isA: ['Date', 'Noun'], + notA: ['Adjective', 'ProperNoun'] + }, // '9:20pm' Time: { isA: ['Date'], - notA: ['Value'] + notA: ['AtMention'] }, //glue Determiner: { @@ -3684,7 +4134,9 @@ notA: ['Determiner'] }, // peso, euro - Currency: {}, + Currency: { + isA: ['Noun'] + }, // ughh Expression: { notA: ['Noun', 'Adjective', 'Verb', 'Adverb'] @@ -3713,9 +4165,6 @@ notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] }, //non-exclusive - Auxiliary: { - notA: ['Noun', 'Adjective', 'Value'] - }, Acronym: { notA: ['Plural', 'RomanNumeral'] }, @@ -3770,7 +4219,7 @@ var _color = addColors; - var unique$2 = function unique(arr) { + var unique$3 = function unique(arr) { return arr.filter(function (v, i, a) { return a.indexOf(v) === i; }); @@ -3791,14 +4240,14 @@ } // clean it up - tag.isA = unique$2(tag.isA); + tag.isA = unique$3(tag.isA); }); return tags; }; var _isA = inferIsA; - var unique$3 = function unique(arr) { + var unique$2 = function unique(arr) { return arr.filter(function (v, i, a) { return a.indexOf(v) === i; }); @@ -3828,7 +4277,7 @@ } // clean it up - tag.notA = unique$3(tag.notA); + tag.notA = unique$2(tag.notA); }); return tags; }; @@ -3898,19 +4347,70 @@ var build = function build() { var tags = {}; - addIn(nouns, tags); - addIn(verbs, tags); + addIn(nouns$1, tags); + addIn(verbs$1, tags); addIn(values, tags); - addIn(misc, tags); // do the graph-stuff + addIn(misc$1, tags); // do the graph-stuff tags = inference(tags); return tags; }; var tags = build(); + var _data = { + "Comparative": "true¦better", + "Superlative": "true¦earlier", + "PresentTense": "true¦is,sounds", + "Value": "true¦a few", + "Noun": "true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc", + "Copula": "true¦a1is,w0;as,ere;m,re", + "PastTense": "true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan", + "Condition": "true¦if,lest,unless", + "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", + "Gerund": "true¦accord0be0develop0go0result0stain0;ing", + "Negative": "true¦n0;ever,o0;!n,t", + "QuestionWord": "true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s", + "Plural": "true¦records", + "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", + "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", + "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", + "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", + "Date": "true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w", + "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", + "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", + "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", + "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", + "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld", + "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", + "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", + "TextOrdinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", + "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", + "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", + "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", + "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" + }; var seq = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", - cache = seq.split("").reduce(function (n, o, e) { + cache$1 = seq.split("").reduce(function (n, o, e) { return n[o] = e, n; }, {}), toAlphaCode = function toAlphaCode(n) { @@ -3930,7 +4430,7 @@ return t; }, fromAlphaCode = function fromAlphaCode(n) { - if (void 0 !== cache[n]) return cache[n]; + if (void 0 !== cache$1[n]) return cache$1[n]; var o = 0, e = 1, t = 36, @@ -4006,15 +4506,15 @@ return n.match(":") && symbols(o), toArray(o); }; - var unpack_1 = unpack, - unpack_1$1 = function unpack_1$1(n) { + var unpack_1$1 = unpack, + unpack_1$1$1 = function unpack_1$1$1(n) { var o = n.split("|").reduce(function (n, o) { var e = o.split("¦"); return n[e[0]] = e[1], n; }, {}), e = {}; return Object.keys(o).forEach(function (n) { - var t = unpack_1(o[n]); + var t = unpack_1$1(o[n]); "true" === n && (n = !0); for (var _o2 = 0; _o2 < t.length; _o2++) { @@ -4024,105 +4524,153 @@ }), e; }; - var efrtUnpack_min = unpack_1$1; //safely add it to the lexicon + var efrtUnpack_min = unpack_1$1$1; //words that can't be compressed, for whatever reason - var addWord = function addWord(word, tag, lex) { - if (lex[word] !== undefined) { - if (typeof lex[word] === 'string') { - lex[word] = [lex[word]]; - } + var misc = { + // numbers + '20th century fox': 'Organization', + // '3m': 'Organization', + '7 eleven': 'Organization', + 'motel 6': 'Organization', + g8: 'Organization', + vh1: 'Organization', + q1: 'Date', + q2: 'Date', + q3: 'Date', + q4: 'Date', + her: ['Possessive', 'Pronoun'], + his: ['Possessive', 'Pronoun'], + their: ['Possessive', 'Pronoun'], + themselves: ['Possessive', 'Pronoun'], + your: ['Possessive', 'Pronoun'], + our: ['Possessive', 'Pronoun'], + my: ['Possessive', 'Pronoun'], + its: ['Possessive', 'Pronoun'] + }; + var fancy = { + Unit: function Unit(lex, w) { + lex[w] = ['Abbreviation', 'Unit']; + }, + Cardinal: function Cardinal(lex, w) { + lex[w] = ['TextValue', 'Cardinal']; + }, + TextOrdinal: function TextOrdinal(lex, w) { + lex[w] = ['Ordinal', 'TextValue']; + lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths' + }, + // add plural/singular forms + Singular: function Singular(lex, w, world) { + lex[w] = 'Singular'; + var plural = world.transforms.toPlural(w, world); + lex[plural] = lex[plural] || 'Plural'; + }, + // conjugate these verbs + Infinitive: function Infinitive(lex, w, world) { + lex[w] = 'Infinitive'; + var conj = world.transforms.conjugate(w, world); + var tags = Object.keys(conj); - if (typeof tag === 'string') { - lex[word].push(tag); - } else { - lex[word] = lex[word].concat(tag); + for (var i = 0; i < tags.length; i++) { + var str = conj[tags[i]]; + lex[str] = lex[str] || tags[i]; // only if it's safe } - } else { - lex[word] = tag; - } - }; // blast-out more forms for some given words - - - var addMore = function addMore(word, tag, world) { - var lexicon = world.words; - var transform = world.transforms; // cache multi-words - - var words = word.split(' '); - - if (words.length > 1) { - //cache the beginning word - world.hasCompound[words[0]] = true; - } // inflect our nouns - + }, + // conjugate other Adjectival forms + Comparable: function Comparable(lex, w, world) { + lex[w] = 'Comparable'; + var conj = world.transforms.adjectives(w); + var tags = Object.keys(conj); - if (tag === 'Singular') { - var plural = transform.toPlural(word, world); - lexicon[plural] = lexicon[plural] || 'Plural'; // only if it's safe - } //conjugate our verbs + for (var i = 0; i < tags.length; i++) { + var word = conj[tags[i]]; + lex[word] = lex[word] || tags[i]; // only if it's safe + } + }, + //conjugate phrasal-verbs + PhrasalVerb: function PhrasalVerb(lex, w, world) { + // whole thing + lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form + var words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive' + // //conjugate first word - if (tag === 'Infinitive') { - var conj = transform.conjugate(word, world); + var conj = world.transforms.conjugate(words[0], world); var tags = Object.keys(conj); for (var i = 0; i < tags.length; i++) { - var w = conj[tags[i]]; - lexicon[w] = lexicon[w] || tags[i]; // only if it's safe + var str = conj[tags[i]] + ' ' + words[1]; + lex[str] = lex[str] || ['PhrasalVerb', tags[i]]; + world.hasCompound[conj[tags[i]]] = true; } - } //derive more adjective forms + }, + // inflect our demonyms - 'germans' + Demonym: function Demonym(lex, w, world) { + lex[w] = 'Demonym'; + var plural = world.transforms.toPlural(w, world); + lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe + } + }; // let a user explode their lexicon, too + var addWords = function addWords(wordsObj, lex, world) { + Object.keys(wordsObj).forEach(function (word) { + var tag = wordsObj[word]; // abbreviation-words are used in our tokenizer - if (tag === 'Comparable') { - var _conj = transform.adjectives(word); + if (tag === 'Abbreviation' || tag === 'Unit') { + world.cache.abbreviations[word] = true; + } // cache multi-words - var _tags = Object.keys(_conj); - for (var _i = 0; _i < _tags.length; _i++) { - var _w = _conj[_tags[_i]]; - lexicon[_w] = lexicon[_w] || _tags[_i]; // only if it's safe - } - } //conjugate phrasal-verbs + var multi = word.split(' '); + if (multi.length > 1) { + world.hasCompound[multi[0]] = true; + } // do some ad-hoc work before adding it - if (tag === 'PhrasalVerb') { - //add original form - addWord(word, 'Infinitive', lexicon); //conjugate first word - var _conj2 = transform.conjugate(words[0], world); + if (fancy[tag] !== undefined) { + fancy[tag](lex, word, world); + return; + } //set it in our lexicon, basic - var _tags2 = Object.keys(_conj2); - for (var _i2 = 0; _i2 < _tags2.length; _i2++) { - //add it to our cache - world.hasCompound[_conj2[_tags2[_i2]]] = true; //first + last words + if (lex[word] === undefined) { + lex[word] = tag; + return; + } // if we already have that word - var _w2 = _conj2[_tags2[_i2]] + ' ' + words[1]; - addWord(_w2, _tags2[_i2], lexicon); - addWord(_w2, 'PhrasalVerb', lexicon); + if (typeof lex[word] === 'string') { + lex[word] = [lex[word]]; } - } // inflect our demonyms - 'germans' + if (typeof tag === 'string') { + lex[word].push(tag); + } else { + lex[word] = lex[word].concat(tag); + } + }); + }; // we do some ad-hoc stuff here, building-up our word-list - if (tag === 'Demonym') { - var _plural = transform.toPlural(word, world); - lexicon[_plural] = lexicon[_plural] || ['Demonym', 'Plural']; // only if it's safe - } - }; // throw a bunch of words in our lexicon - // const doWord = function(words, tag, world) { - // let lexicon = world.words - // for (let i = 0; i < words.length; i++) { - // addWord(words[i], tag, lexicon) - // // do some fancier stuff - // addMore(words[i], tag, world) - // } - // } + var buildOut = function buildOut(world) { + //our bag of words + var lexicon = Object.assign({}, misc); // start adding words to the lex + + Object.keys(_data).forEach(function (tag) { + var wordsObj = efrtUnpack_min(_data[tag]); // this part sucks + + Object.keys(wordsObj).forEach(function (w) { + wordsObj[w] = tag; + }); + addWords(wordsObj, lexicon, world); + }); // console.log(Object.keys(lexicon).length) + return lexicon; + }; - var addWords = { - addWord: addWord, - addMore: addMore + var unpack_1 = { + buildOut: buildOut, + addWords: addWords }; // add words from plurals and conjugations data var addIrregulars = function addIrregulars(world) { @@ -4148,7 +4696,11 @@ forms = Object.assign(forms, verbs[inf]); //add the others Object.keys(forms).forEach(function (tag) { - world.words[forms[tag]] = world.words[forms[tag]] || tag; + world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle + + if (world.words[forms[tag]] === 'Participle') { + world.words[forms[tag]] = tag; + } }); }; @@ -4157,22 +4709,7 @@ } }; - var addIrregulars_1 = addIrregulars; //words that can't be compressed, for whatever reason - - var misc$1 = { - // numbers - '20th century fox': 'Organization', - // '3m': 'Organization', - '7 eleven': 'Organization', - '7-eleven': 'Organization', - g8: 'Organization', - 'motel 6': 'Organization', - vh1: 'Organization', - q1: 'Date', - q2: 'Date', - q3: 'Date', - q4: 'Date' - }; //nouns with irregular plural/singular forms + var addIrregulars_1 = addIrregulars; //nouns with irregular plural/singular forms //used in noun.inflect, and also in the lexicon. var plurals = { @@ -4221,7 +4758,7 @@ modulus: 'moduli', mosquito: 'mosquitoes', mouse: 'mice', - move: 'moves', + // move: 'moves', nebula: 'nebulae', nucleus: 'nuclei', octopus: 'octopi', @@ -4257,7 +4794,7 @@ // but also added to our lexicon //use shorter key-names - var mapping = { + var mapping$1 = { g: 'Gerund', prt: 'Participle', perf: 'PerfectTense', @@ -4267,6 +4804,7 @@ pluperf: 'Pluperfect', a: 'Actor' }; // '_' in conjugations is the infinitive form + // (order matters, to the lexicon) var conjugations = { act: { @@ -4340,8 +4878,8 @@ pst: 'bit' }, bleed: { - prt: 'bled', - pst: 'bled' + pst: 'bled', + prt: 'bled' }, blow: { prt: '_n', @@ -4360,8 +4898,8 @@ pst: 'bred' }, bring: { - prt: 'brought', - pst: 'brought' + pst: 'brought', + prt: 'brought' }, broadcast: { pst: '_' @@ -4370,8 +4908,8 @@ pst: '_ed' }, build: { - prt: 'built', - pst: 'built' + pst: 'built', + prt: 'built' }, burn: { prt: '_ed' @@ -4380,8 +4918,8 @@ prt: '_' }, buy: { - prt: 'bought', - pst: 'bought' + pst: 'bought', + prt: 'bought' }, can: { a: '', @@ -4423,8 +4961,8 @@ prt: '_' }, deal: { - prt: '_t', - pst: '_t' + pst: '_t', + prt: '_t' }, develop: { a: '_er', @@ -4437,8 +4975,8 @@ }, dig: { g: '_ging', - prt: 'dug', - pst: 'dug' + pst: 'dug', + prt: 'dug' }, dive: { prt: '_d' @@ -4474,6 +5012,7 @@ pst: 'ate' }, edit: { + pst: '_ed', g: '_ing' }, egg: { @@ -4492,8 +5031,8 @@ pst: 'felt' }, fight: { - prt: 'fought', - pst: 'fought' + pst: 'fought', + prt: 'fought' }, find: { pst: 'found' @@ -4548,19 +5087,22 @@ grow: { prt: '_n' }, + guide: { + pst: '_d' + }, hang: { - prt: 'hung', - pst: 'hung' + pst: 'hung', + prt: 'hung' }, have: { g: 'having', - prt: 'had', pst: 'had', + prt: 'had', pres: 'has' }, hear: { - prt: '_d', - pst: '_d' + pst: '_d', + prt: '_d' }, hide: { prt: 'hidden', @@ -4570,12 +5112,12 @@ prt: '_' }, hold: { - prt: 'held', - pst: 'held' + pst: 'held', + prt: 'held' }, hurt: { - prt: '_', - pst: '_' + pst: '_', + prt: '_' }, ice: { g: 'icing', @@ -4601,19 +5143,19 @@ prt: '_n' }, lay: { - prt: 'laid', - pst: 'laid' + pst: 'laid', + prt: 'laid' }, lead: { - prt: 'led', - pst: 'led' + pst: 'led', + prt: 'led' }, leap: { prt: '_t' }, leave: { - prt: 'left', - pst: 'left' + pst: 'left', + prt: 'left' }, lend: { prt: 'lent' @@ -4623,8 +5165,8 @@ pst: 'lay' }, light: { - prt: 'lit', - pst: 'lit' + pst: 'lit', + prt: 'lit' }, log: { g: '_ging', @@ -4638,18 +5180,18 @@ pst: 'lost' }, make: { - prt: 'made', - pst: 'made' + pst: 'made', + prt: 'made' }, mean: { - prt: '_t', - pst: '_t' + pst: '_t', + prt: '_t' }, meet: { a: '_er', g: '_ing', - prt: 'met', - pst: 'met' + pst: 'met', + prt: 'met' }, miss: { pres: '_' @@ -4657,9 +5199,13 @@ name: { g: 'naming' }, + patrol: { + g: '_ling', + pst: '_led' + }, pay: { - prt: 'paid', - pst: 'paid' + pst: 'paid', + prt: 'paid' }, prove: { prt: '_n' @@ -4674,15 +5220,18 @@ prt: '_' }, read: { - prt: '_', - pst: '_' + pst: '_', + prt: '_' }, ride: { prt: 'ridden' }, + reside: { + pst: '_d' + }, ring: { - prt: 'rung', - pst: 'rang' + pst: 'rang', + prt: 'rung' }, rise: { fut: 'will have _n', @@ -4701,11 +5250,12 @@ pst: 'ran' }, say: { - prt: 'said', pst: 'said', + prt: 'said', pres: '_s' }, seat: { + pst: 'sat', prt: 'sat' }, see: { @@ -4717,8 +5267,8 @@ prt: 'sought' }, sell: { - prt: 'sold', - pst: 'sold' + pst: 'sold', + prt: 'sold' }, send: { prt: 'sent' @@ -4741,12 +5291,12 @@ pres: '_s' }, shine: { - prt: 'shone', - pst: 'shone' + pst: 'shone', + prt: 'shone' }, shoot: { - prt: 'shot', - pst: 'shot' + pst: 'shot', + prt: 'shot' }, show: { pst: '_ed' @@ -4775,8 +5325,8 @@ prt: 'slept' }, slide: { - prt: 'slid', - pst: 'slid' + pst: 'slid', + prt: 'slid' }, smash: { pres: '_es' @@ -4803,8 +5353,8 @@ }, spin: { g: '_ning', - prt: 'spun', - pst: 'spun' + pst: 'spun', + prt: 'spun' }, spit: { prt: 'spat' @@ -4832,8 +5382,8 @@ pst: 'stung' }, stink: { - prt: 'stunk', - pst: 'stunk' + pst: 'stunk', + prt: 'stunk' }, stream: { a: '_er' @@ -4950,7 +5500,7 @@ var str = conjugations[inf][key]; //swap-in infinitives for '_' str = str.replace('_', inf); - var full = mapping[key]; + var full = mapping$1[key]; _final[full] = str; }); //over-write original @@ -4962,7 +5512,7 @@ } var conjugations_1 = conjugations; - var endsWith = { + var endsWith$1 = { b: [{ reg: /([^aeiou][aeiou])b$/i, repl: { @@ -5186,7 +5736,15 @@ } }], w: [{ + reg: /(.llow)$/i, + //follow, allow + repl: { + pr: '$1s', + pa: '$1ed' + } + }, { reg: /(..)(ow)$/i, + //grow repl: { pr: '$1$2s', pa: '$1ew', @@ -5195,7 +5753,7 @@ } }], y: [{ - reg: /([i|f|rr])y$/i, + reg: /(i|f|rr)y$/i, repl: { pr: '$1ies', pa: '$1ied', @@ -5211,7 +5769,7 @@ } }] }; - var suffixes = endsWith; + var suffixes$1 = endsWith$1; var posMap = { pr: 'PresentTense', pa: 'PastTense', @@ -5237,12 +5795,12 @@ var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var c = str[str.length - 1]; - if (suffixes.hasOwnProperty(c) === true) { - for (var r = 0; r < suffixes[c].length; r += 1) { - var reg = suffixes[c][r].reg; + if (suffixes$1.hasOwnProperty(c) === true) { + for (var r = 0; r < suffixes$1[c].length; r += 1) { + var reg = suffixes$1[c][r].reg; if (reg.test(str) === true) { - return doTransform(str, suffixes[c][r]); + return doTransform(str, suffixes$1[c][r]); } } } @@ -5290,7 +5848,7 @@ }; var _02Generic = generic; //we assume the input word is a proper infinitive - var conjugate = function conjugate() { + var conjugate$2 = function conjugate() { var inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var world = arguments.length > 1 ? arguments[1] : undefined; var found = {}; // 1. look at irregulars @@ -5323,12 +5881,12 @@ return found; }; - var conjugate_1 = conjugate; // console.log(conjugate('bake')) + var conjugate_1$1 = conjugate$2; // console.log(conjugate('bake')) //turn 'quick' into 'quickest' - var do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]; - var dont_rules = [/ary$/]; - var irregulars = { + var do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]; + var dont_rules$1 = [/ary$/]; + var irregulars$5 = { nice: 'nicest', late: 'latest', hard: 'hardest', @@ -5341,7 +5899,7 @@ big: 'biggest', large: 'largest' }; - var transforms = [{ + var transforms$2 = [{ reg: /y$/i, repl: 'iest' }, { @@ -5360,27 +5918,27 @@ var to_superlative = function to_superlative(str) { //irregulars - if (irregulars.hasOwnProperty(str)) { - return irregulars[str]; + if (irregulars$5.hasOwnProperty(str)) { + return irregulars$5[str]; } //known transforms - for (var i = 0; i < transforms.length; i++) { - if (transforms[i].reg.test(str)) { - return str.replace(transforms[i].reg, transforms[i].repl); + for (var i = 0; i < transforms$2.length; i++) { + if (transforms$2[i].reg.test(str)) { + return str.replace(transforms$2[i].reg, transforms$2[i].repl); } } //dont-rules - for (var _i = 0; _i < dont_rules.length; _i++) { - if (dont_rules[_i].test(str) === true) { + for (var _i = 0; _i < dont_rules$1.length; _i++) { + if (dont_rules$1[_i].test(str) === true) { return null; } } //do-rules - for (var _i2 = 0; _i2 < do_rules.length; _i2++) { - if (do_rules[_i2].test(str) === true) { + for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) { + if (do_rules$1[_i2].test(str) === true) { if (str.charAt(str.length - 1) === 'e') { return str + 'st'; } @@ -5394,9 +5952,9 @@ var toSuperlative = to_superlative; //turn 'quick' into 'quickly' - var do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]; - var dont_rules$1 = [/ary$/, /ous$/]; - var irregulars$1 = { + var do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]; + var dont_rules = [/ary$/, /ous$/]; + var irregulars$4 = { grey: 'greyer', gray: 'grayer', green: 'greener', @@ -5424,8 +5982,8 @@ var to_comparative = function to_comparative(str) { //known-irregulars - if (irregulars$1.hasOwnProperty(str)) { - return irregulars$1[str]; + if (irregulars$4.hasOwnProperty(str)) { + return irregulars$4[str]; } //known-transforms @@ -5436,15 +5994,15 @@ } //dont-patterns - for (var _i = 0; _i < dont_rules$1.length; _i++) { - if (dont_rules$1[_i].test(str) === true) { + for (var _i = 0; _i < dont_rules.length; _i++) { + if (dont_rules[_i].test(str) === true) { return null; } } //do-patterns - for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) { - if (do_rules$1[_i2].test(str) === true) { + for (var _i2 = 0; _i2 < do_rules.length; _i2++) { + if (do_rules[_i2].test(str) === true) { return str + 'er'; } } //easy-one @@ -5458,7 +6016,7 @@ }; var toComparative = to_comparative; - var fns$1 = { + var fns = { toSuperlative: toSuperlative, toComparative: toComparative }; @@ -5467,14 +6025,14 @@ var conjugate$1 = function conjugate(w) { var res = {}; // 'greatest' - var sup = fns$1.toSuperlative(w); + var sup = fns.toSuperlative(w); if (sup) { res.Superlative = sup; } // 'greater' - var comp = fns$1.toComparative(w); + var comp = fns.toComparative(w); if (comp) { res.Comparative = comp; @@ -5483,10 +6041,10 @@ return res; }; - var adjectives = conjugate$1; + var adjectives$2 = conjugate$1; /** patterns for turning 'bus' to 'buses'*/ - var suffixes$1 = { + var suffixes = { a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']], e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']], 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']], @@ -5499,18 +6057,18 @@ y: [[/([^aeiouy]|qu)y$/i, '$1ies']], z: [[/(quiz)$/i, '$1zes']] }; - var _rules = suffixes$1; + var _rules$2 = suffixes; var addE = /(x|ch|sh|s|z)$/; var trySuffix = function trySuffix(str) { var c = str[str.length - 1]; - if (_rules.hasOwnProperty(c) === true) { - for (var i = 0; i < _rules[c].length; i += 1) { - var reg = _rules[c][i][0]; + if (_rules$2.hasOwnProperty(c) === true) { + for (var i = 0; i < _rules$2[c].length; i += 1) { + var reg = _rules$2[c][i][0]; if (reg.test(str) === true) { - return str.replace(reg, _rules[c][i][1]); + return str.replace(reg, _rules$2[c][i][1]); } } } @@ -5550,7 +6108,9 @@ var toPlural = pluralize; //patterns for turning 'dwarves' to 'dwarf' var _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'], - [/(..[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, '']]; + [/(eas)es$/i, '$1e'], //diseases + [/(..[aeiou]s)es$/i, '$1'], //geniouses + [/(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, '']]; var invertObj = function invertObj(obj) { return Object.keys(obj).reduce(function (h, k) { @@ -5561,7 +6121,8 @@ var toSingular = function toSingular(str, world) { var irregulars = world.irregulars.nouns; - var invert = invertObj(irregulars); // check irregulars list + var invert = invertObj(irregulars); //(not very efficient) + // check irregulars list if (invert.hasOwnProperty(str)) { return invert[str]; @@ -5678,7 +6239,7 @@ to: '$1e' }, { //cing : bouncing, denouncing - reg: /(c)ing$/i, + reg: /(c|s)ing$/i, //dp to: '$1e' }, // { @@ -5745,6 +6306,9 @@ }, { reg: /(us)ed$/i, to: '$1e' + }, { + reg: /(dd)ed$/i, + to: '$1' }, { reg: /(..[^aeiouy])ed$/i, to: '$1e' @@ -5812,7 +6376,7 @@ return null; }; - var toInfinitive = function toInfinitive(str, world, tense) { + var toInfinitive$1 = function toInfinitive(str, world, tense) { if (!str) { return ''; } //1. look at known irregulars @@ -5841,6 +6405,7 @@ var rule = _transform[tense][_i]; if (rule.reg.test(str) === true) { + // console.log(rule.reg) return str.replace(rule.reg, rule.to); } } @@ -5849,18 +6414,18 @@ return str; }; - var toInfinitive_1 = toInfinitive; - var irregulars$2 = { + var toInfinitive_1$1 = toInfinitive$1; + var irregulars$3 = { nouns: plurals, verbs: conjugations_1 }; //these behaviours are configurable & shared across some plugins - var transforms$2 = { - conjugate: conjugate_1, - adjectives: adjectives, + var transforms = { + conjugate: conjugate_1$1, + adjectives: adjectives$2, toPlural: toPlural, toSingular: toSingular_1, - toInfinitive: toInfinitive_1 + toInfinitive: toInfinitive_1$1 }; var _isVerbose = false; /** all configurable linguistic data */ @@ -5872,7 +6437,7 @@ Object.defineProperty(this, 'words', { enumerable: false, - value: misc$1, + value: {}, writable: true }); Object.defineProperty(this, 'hasCompound', { @@ -5882,7 +6447,7 @@ }); Object.defineProperty(this, 'irregulars', { enumerable: false, - value: irregulars$2, + value: irregulars$3, writable: true }); Object.defineProperty(this, 'tags', { @@ -5892,25 +6457,25 @@ }); Object.defineProperty(this, 'transforms', { enumerable: false, - value: transforms$2, + value: transforms, writable: true }); Object.defineProperty(this, 'taggers', { enumerable: false, value: [], writable: true - }); // add our compressed data to lexicon - - this.unpackWords(_data); // add our irregulars to lexicon - - this.addIrregulars(); // cache our abbreviations for our sentence-parser + }); // cache our abbreviations for our sentence-parser Object.defineProperty(this, 'cache', { enumerable: false, value: { - abbreviations: this.getByTag('Abbreviation') + abbreviations: {} } - }); + }); // add our compressed data to lexicon + + this.words = unpack_1.buildOut(this); // add our irregulars to lexicon + + addIrregulars_1(this); } /** more logs for debugging */ @@ -5926,64 +6491,34 @@ value: function isVerbose() { return _isVerbose; } - /** get all terms in our lexicon with this tag */ + /** put new words into our lexicon, properly */ }, { - key: "getByTag", - value: function getByTag(tag) { - var lex = this.words; - var res = {}; - var words = Object.keys(lex); - - for (var i = 0; i < words.length; i++) { - if (typeof lex[words[i]] === 'string') { - if (lex[words[i]] === tag) { - res[words[i]] = true; - } - } else if (lex[words[i]].some(function (t) { - return t === tag; - })) { - res[words[i]] = true; - } - } - - return res; + key: "addWords", + value: function addWords(wordObj) { + // clean them up a bit + var cleaned = {}; + Object.keys(wordObj).forEach(function (w) { + var tag = wordObj[w]; + w = w.toLowerCase().trim(); + cleaned[w] = tag; + }); + unpack_1.addWords(cleaned, this.words, this); } - /** augment our lingustic data with new data */ + /** add new custom conjugations */ }, { - key: "unpackWords", - value: function unpackWords(lex) { - var tags = Object.keys(lex); - - for (var i = 0; i < tags.length; i++) { - var words = Object.keys(efrtUnpack_min(lex[tags[i]])); - - for (var w = 0; w < words.length; w++) { - addWords.addWord(words[w], tags[i], this.words); // do some fancier stuff - - addWords.addMore(words[w], tags[i], this); - } - } + key: "addConjugations", + value: function addConjugations(obj) { + Object.assign(this.irregulars.verbs, obj); + return this; } - /** put new words into our lexicon, properly */ - - }, { - key: "addWords", - value: function addWords$1(obj) { - var keys = Object.keys(obj); - - for (var i = 0; i < keys.length; i++) { - var word = keys[i].toLowerCase(); - addWords.addWord(word, obj[keys[i]], this.words); // do some fancier stuff + /** add new custom plural/singular pairs */ - addWords.addMore(word, obj[keys[i]], this); - } - } }, { - key: "addIrregulars", - value: function addIrregulars() { - addIrregulars_1(this); + key: "addPlurals", + value: function addPlurals(obj) { + Object.assign(this.irregulars.nouns, obj); return this; } /** extend the compromise tagset */ @@ -6024,7 +6559,7 @@ }(); // ¯\_(:/)_/¯ - var clone$1 = function clone(obj) { + var clone = function clone(obj) { return JSON.parse(JSON.stringify(obj)); }; /** produce a deep-copy of all lingustic data */ @@ -6036,8 +6571,8 @@ w2.words = Object.assign({}, this.words); w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested: - w2.irregulars = clone$1(this.irregulars); - w2.tags = clone$1(this.tags); // these are functions + w2.irregulars = clone(this.irregulars); + w2.tags = clone(this.tags); // these are functions w2.transforms = this.transforms; w2.taggers = this.taggers; @@ -6045,9 +6580,9 @@ }; var World_1 = World; + /** return the root, first document */ - var _01Utils$1 = createCommonjsModule(function (module, exports) { - /** return the root, first document */ + var _01Utils = createCommonjsModule(function (module, exports) { exports.all = function () { return this.parents()[0] || this; }; @@ -6112,16 +6647,10 @@ // this.world.verbose = bool // } }); + /** use only the first result(s) */ - var _01Utils_1 = _01Utils$1.all; - var _01Utils_2 = _01Utils$1.parent; - var _01Utils_3 = _01Utils$1.parents; - var _01Utils_4 = _01Utils$1.clone; - var _01Utils_5 = _01Utils$1.wordCount; - var _01Utils_6 = _01Utils$1.wordcount; var _02Accessors = createCommonjsModule(function (module, exports) { - /** use only the first result(s) */ exports.first = function (n) { if (n === undefined) { return this.get(0); @@ -6234,6 +6763,8 @@ return res; }; + /** lookup a named-group, by its name */ + var getOneName = function getOneName(doc, name) { var arr = []; @@ -6287,24 +6818,10 @@ }; exports.sentence = exports.sentences; - }); + }); // cache the easier conditions up-front - var _02Accessors_1 = _02Accessors.first; - var _02Accessors_2 = _02Accessors.last; - var _02Accessors_3 = _02Accessors.slice; - var _02Accessors_4 = _02Accessors.eq; - var _02Accessors_5 = _02Accessors.get; - var _02Accessors_6 = _02Accessors.firstTerms; - var _02Accessors_7 = _02Accessors.firstTerm; - var _02Accessors_8 = _02Accessors.lastTerms; - var _02Accessors_9 = _02Accessors.lastTerm; - var _02Accessors_10 = _02Accessors.termList; - var _02Accessors_11 = _02Accessors.groups; - var _02Accessors_12 = _02Accessors.group; - var _02Accessors_13 = _02Accessors.sentences; - var _02Accessors_14 = _02Accessors.sentence; // cache the easier conditions up-front - var cacheRequired = function cacheRequired(reg) { + var cacheRequired$1 = function cacheRequired(reg) { var needTags = []; var needWords = []; reg.forEach(function (obj) { @@ -6324,11 +6841,12 @@ tags: needTags, words: needWords }; - }; + }; // try to pre-fail as many matches as possible, without doing them + - var failFast$1 = function failFast(doc, regs) { + var failFast = function failFast(doc, regs) { if (doc._cache && doc._cache.set === true) { - var _cacheRequired = cacheRequired(regs), + var _cacheRequired = cacheRequired$1(regs), words = _cacheRequired.words, tags = _cacheRequired.tags; //check required words @@ -6350,30 +6868,38 @@ return true; }; - var checkCache = failFast$1; + var _failFast = failFast; var _03Match = createCommonjsModule(function (module, exports) { /** return a new Doc, with this one as a parent */ - exports.match = function (reg, name) { - //parse-up the input expression - var regs = syntax_1(reg); + exports.match = function (reg) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // support '0' shorthand for named-groups + + if (typeof opts === 'string' || typeof opts === 'number' || opts === null) { + opts = { + group: opts + }; + } //parse-up the input expression + + + var regs = matchSyntax(reg, opts); if (regs.length === 0) { return this.buildFrom([]); } //check our cache, if it exists - if (checkCache(this, regs) === false) { + if (_failFast(this, regs) === false) { return this.buildFrom([]); } //try expression on each phrase var matches = this.list.reduce(function (arr, p) { return arr.concat(p.match(regs)); - }, []); + }, []); // support returning named groups - if (name !== undefined && name !== null && name !== '') { - return this.buildFrom(matches).groups(name); + if (opts.group !== undefined && opts.group !== null && opts.group !== '') { + return this.buildFrom(matches).groups(opts.group); } return this.buildFrom(matches); @@ -6382,10 +6908,11 @@ exports.not = function (reg) { - //parse-up the input expression - var regs = syntax_1(reg); //if it's empty, return them all! + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; //parse-up the input expression + + var regs = matchSyntax(reg, opts); //if it's empty, return them all! - if (regs.length === 0 || checkCache(this, regs) === false) { + if (regs.length === 0 || _failFast(this, regs) === false) { return this; } //try expression on each phrase @@ -6399,9 +6926,10 @@ exports.matchOne = function (reg) { - var regs = syntax_1(reg); //check our cache, if it exists + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //check our cache, if it exists - if (checkCache(this, regs) === false) { + if (_failFast(this, regs) === false) { return this.buildFrom([]); } @@ -6416,9 +6944,10 @@ exports["if"] = function (reg) { - var regs = syntax_1(reg); //consult our cache, if it exists + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //consult our cache, if it exists - if (checkCache(this, regs) === false) { + if (_failFast(this, regs) === false) { return this.buildFrom([]); } @@ -6431,7 +6960,8 @@ exports.ifNo = function (reg) { - var regs = syntax_1(reg); + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); var found = this.list.filter(function (p) { return p.has(regs) === false; }); @@ -6441,9 +6971,10 @@ exports.has = function (reg) { - var regs = syntax_1(reg); //consult our cache, if it exists + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //consult our cache, if it exists - if (checkCache(this, regs) === false) { + if (_failFast(this, regs) === false) { return false; } @@ -6455,12 +6986,13 @@ exports.lookAhead = function (reg) { - // find everything afterwards, by default + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // find everything afterwards, by default + if (!reg) { reg = '.*'; } - var regs = syntax_1(reg); + var regs = matchSyntax(reg, opts); var matches = []; this.list.forEach(function (p) { matches = matches.concat(p.lookAhead(regs)); @@ -6475,12 +7007,13 @@ /** match any terms before our matches, within the sentence */ exports.lookBehind = function (reg) { - // find everything afterwards, by default + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // find everything afterwards, by default + if (!reg) { reg = '.*'; } - var regs = syntax_1(reg); + var regs = matchSyntax(reg, opts); var matches = []; this.list.forEach(function (p) { matches = matches.concat(p.lookBehind(regs)); @@ -6495,7 +7028,8 @@ /** return all terms before a match, in each phrase */ exports.before = function (reg) { - var regs = syntax_1(reg); //only the phrases we care about + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //only the phrases we care about var phrases = this["if"](regs).list; var befores = phrases.map(function (p) { @@ -6521,7 +7055,8 @@ exports.after = function (reg) { - var regs = syntax_1(reg); //only the phrases we care about + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //only the phrases we care about var phrases = this["if"](regs).list; var befores = phrases.map(function (p) { @@ -6547,27 +7082,35 @@ }); return this.buildFrom(befores); }; - }); + /** return only results with this match afterwards */ + + + exports.hasAfter = function (reg) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.filter(function (doc) { + return doc.lookAfter(reg, opts).found; + }); + }; + /** return only results with this match before it */ + - var _03Match_1 = _03Match.match; - var _03Match_2 = _03Match.not; - var _03Match_3 = _03Match.matchOne; - var _03Match_4 = _03Match.ifNo; - var _03Match_5 = _03Match.has; - var _03Match_6 = _03Match.lookAhead; - var _03Match_7 = _03Match.lookAfter; - var _03Match_8 = _03Match.lookBehind; - var _03Match_9 = _03Match.lookBefore; - var _03Match_10 = _03Match.before; - var _03Match_11 = _03Match.after; + exports.hasBefore = function (reg) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.filter(function (doc) { + return doc.lookBefore(reg, opts).found; + }); + }; + }); /** apply a tag, or tags to all terms */ + var tagTerms = function tagTerms(tag, doc, safe, reason) { var tagList = []; if (typeof tag === 'string') { tagList = tag.split(' '); - } //do indepenent tags for each term: + } // doc.parents()[0].reasons.push(reason) + //do indepenent tags for each term: doc.list.forEach(function (p) { @@ -6597,7 +7140,7 @@ var _setTag = tagTerms; /** Give all terms the given tag */ - var tag$1 = function tag(tags, why) { + var tag = function tag(tags, why) { if (!tags) { return this; } @@ -6609,7 +7152,7 @@ /** Only apply tag to terms if it is consistent with current tags */ - var tagSafe$1 = function tagSafe(tags, why) { + var tagSafe = function tagSafe(tags, why) { if (!tags) { return this; } @@ -6621,7 +7164,7 @@ /** Remove this term from the given terms */ - var unTag$1 = function unTag(tags, why) { + var unTag = function unTag(tags, why) { var _this = this; this.list.forEach(function (p) { @@ -6634,7 +7177,7 @@ /** return only the terms that can be this tag*/ - var canBe$2 = function canBe(tag) { + var canBe = function canBe(tag) { if (!tag) { return this; } @@ -6647,10 +7190,10 @@ }; var _04Tag = { - tag: tag$1, - tagSafe: tagSafe$1, - unTag: unTag$1, - canBe: canBe$2 + tag: tag, + tagSafe: tagSafe, + unTag: unTag, + canBe: canBe }; /* run each phrase through a function, and create a new document */ @@ -6684,7 +7227,7 @@ } // if it is not a list of Phrase objects, then don't try to make a Doc object - if (_typeof$1(list[0]) !== 'object' || list[0].isA !== 'Phrase') { + if (_typeof(list[0]) !== 'object' || list[0].isA !== 'Phrase') { return list; } @@ -6980,12 +7523,10 @@ exports.lookUp = exports.lookup; }); - - var _06Lookup_1 = _06Lookup.lookup; - var _06Lookup_2 = _06Lookup.lookUp; /** freeze the current state of the document, for speed-purposes*/ - var cache$1 = function cache(options) { + + var cache = function cache(options) { var _this = this; options = options || {}; @@ -7013,7 +7554,7 @@ if (options.root) { t.setRoot(_this.world); - words[t.root] = true; + words[t.root] = [i]; } }); }); @@ -7038,11 +7579,11 @@ }; var _07Cache = { - cache: cache$1, + cache: cache, uncache: uncache }; - var titleCase$2 = function titleCase(str) { + var titleCase$1 = function titleCase(str) { return str.charAt(0).toUpperCase() + str.substr(1); }; /** substitute-in new content */ @@ -7083,14 +7624,14 @@ var newPhrases; // accept a Doc object to replace - if (input && _typeof$1(input) === 'object' && input.isA === 'Doc') { + if (input && _typeof(input) === 'object' && input.isA === 'Doc') { newPhrases = input.list; _this.pool().merge(input.pool()); } else if (typeof input === 'string') { //input is a string if (options.keepCase !== false && p.terms(0).isTitleCase()) { - input = titleCase$2(input); + input = titleCase$1(input); } newPhrases = _01Tokenizer(input, _this.world, _this.pool()); //tag the new phrases @@ -7098,6 +7639,7 @@ var tmpDoc = _this.buildFrom(newPhrases); tmpDoc.tagger(); + newPhrases = tmpDoc.list; } else { return; //don't even bother } // try to keep its old tags, if appropriate @@ -7123,7 +7665,7 @@ /** search and replace match with new content */ - var replace$1 = function replace(match, _replace, options) { + var replace = function replace(match, _replace, options) { // if there's no 2nd param, use replaceWith if (_replace === undefined) { return this.replaceWith(match, options); @@ -7135,16 +7677,39 @@ var _01Replace = { replaceWith: replaceWith, - replace: replace$1 + replace: replace }; var _02Insert = createCommonjsModule(function (module, exports) { + var isObject = function isObject(obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; + }; // if it's empty, just create the phrase + + + var makeNew = function makeNew(str, doc) { + var phrase = _01Tokenizer(str, doc.world)[0]; //assume it's one sentence, for now + + + var tmpDoc = doc.buildFrom([phrase]); + tmpDoc.tagger(); + doc.list = tmpDoc.list; + return doc; + }; /** add these new terms to the end*/ - exports.append = function (str) { + + + exports.append = function () { var _this = this; + var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + if (!str) { return this; + } // if it's empty, just create the phrase + + + if (!this.found) { + return makeNew(str, this); } // clear the cache @@ -7152,8 +7717,13 @@ this.list.forEach(function (p) { //build it - var phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now - //tag it + var phrase; + + if (isObject(str) && str.isA === 'Doc') { + phrase = str.list[0].clone(); //use the first phrase + } else if (typeof str === 'string') { + phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now + } //tag it var tmpDoc = _this.buildFrom([phrase]); @@ -7174,6 +7744,11 @@ if (!str) { return this; + } // if it's empty, just create the phrase + + + if (!this.found) { + return makeNew(str, this); } // clear the cache @@ -7181,8 +7756,13 @@ this.list.forEach(function (p) { //build it - var phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now - //tag it + var phrase; + + if (isObject(str) && str.isA === 'Doc') { + phrase = str.list[0].clone(); //use the first phrase + } else if (typeof str === 'string') { + phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now + } //tag it var tmpDoc = _this2.buildFrom([phrase]); @@ -7243,13 +7823,6 @@ exports.remove = exports["delete"]; }); - var _02Insert_1 = _02Insert.append; - var _02Insert_2 = _02Insert.insertAfter; - var _02Insert_3 = _02Insert.insertAt; - var _02Insert_4 = _02Insert.prepend; - var _02Insert_5 = _02Insert.insertBefore; - var _02Insert_6 = _02Insert.concat; - var _02Insert_7 = _02Insert.remove; var shouldTrim = { clean: true, reduced: true, @@ -7257,7 +7830,7 @@ }; /** return the document as text */ - var text$1 = function text(options) { + var text = function text(options) { var _this = this; options = options || {}; //are we showing every phrase? @@ -7269,7 +7842,7 @@ } // cache roots, if necessary - if (options === 'root' || _typeof$1(options) === 'object' && options.root) { + if (options === 'root' || _typeof(options) === 'object' && options.root) { this.list.forEach(function (p) { p.terms().forEach(function (t) { if (t.root === null) { @@ -7293,7 +7866,7 @@ }; var _01Text = { - text: text$1 + text: text }; // get all character startings in doc var termOffsets = function termOffsets(doc) { @@ -7336,9 +7909,17 @@ // console.log(t.post) // return n // }, 0) - - o.offset = o.terms[0].offset; - o.offset.length = o.text.length; + // The offset information for the entire doc starts at (or just before) + // the first term, and is as long as the whole text. The code originally + // copied the entire offset value from terms[0], but since we're now + // overriding 2 of the three fields, it's cleaner to just create an all- + // new object and not pretend it's "just" the same as terms[0]. + + o.offset = { + index: o.terms[0].offset.index, + start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text), + length: o.text.length + }; }); } }; @@ -7442,9 +8023,6 @@ exports.data = exports.json; }); - var _02Json_1 = _02Json.json; - var _02Json_2 = _02Json.data; - var _debug = createCommonjsModule(function (module) { // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color var reset = '\x1b[0m'; @@ -7643,6 +8221,8 @@ terms: false }).map(function (obj) { return obj.text; + }).filter(function (str) { + return str; }); } @@ -7691,7 +8271,7 @@ debug: debug_1, out: out }; - var methods$2 = { + var methods$6 = { /** alphabetical order */ alpha: function alpha(a, b) { var left = a.text('clean'); @@ -7796,8 +8376,8 @@ }; //aliases - methods$2.alphabetical = methods$2.alpha; - methods$2.wordcount = methods$2.wordCount; // aliases for sequential ordering + methods$6.alphabetical = methods$6.alpha; + methods$6.wordcount = methods$6.wordCount; // aliases for sequential ordering var seqNames = { index: true, @@ -7820,7 +8400,7 @@ return sortSequential(this); } - input = methods$2[input] || input; // apply sort method on each phrase + input = methods$6[input] || input; // apply sort method on each phrase if (typeof input === 'function') { this.list = this.list.sort(input); @@ -7840,11 +8420,11 @@ /** remove any duplicate matches */ - var unique$4 = function unique() { + var unique$1 = function unique() { var list = [].concat(this.list); var obj = {}; list = list.filter(function (p) { - var str = p.text('reduced').trim(); + var str = p.text('reduced').trim() || p.text('implicit').trim(); if (obj.hasOwnProperty(str) === true) { return false; @@ -7859,11 +8439,11 @@ var _01Sort = { sort: sort, reverse: reverse, - unique: unique$4 + unique: unique$1 }; var isPunct = /[\[\]{}⟨⟩:,،、‒–—―…‹›«»‐\-;\/⁄·*\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g; var quotes = /['‘’“”"′″‴]+/g; - var methods$3 = { + var methods$5 = { // cleanup newlines and extra spaces whitespace: function whitespace(doc) { var termArr = doc.list.map(function (ts) { @@ -7953,8 +8533,8 @@ }); } }; - var _methods = methods$3; - var defaults = { + var _methods = methods$5; + var defaults$1 = { // light whitespace: true, unicode: true, @@ -7975,7 +8555,7 @@ honorifics: false // pronouns: true, }; - var mapping$1 = { + var mapping = { light: {}, medium: { "case": true, @@ -7985,7 +8565,7 @@ adverbs: true } }; - mapping$1.heavy = Object.assign({}, mapping$1.medium, { + mapping.heavy = Object.assign({}, mapping.medium, { possessives: true, verbs: true, nouns: true, @@ -7997,11 +8577,11 @@ options = options || {}; // support named forms if (typeof options === 'string') { - options = mapping$1[options] || {}; + options = mapping[options] || {}; } // set defaults - options = Object.assign({}, defaults, options); // clear the cache + options = Object.assign({}, defaults$1, options); // clear the cache this.uncache(); var termList = this.termList(); // lowercase things @@ -8101,7 +8681,7 @@ } //start looking for a match.. - var regs = syntax_1(reg); + var regs = matchSyntax(reg); var matches = []; this.list.forEach(function (p) { var foundEm = p.match(regs); //no match here, add full sentence @@ -8147,7 +8727,7 @@ } // start looking for our matches - var regs = syntax_1(reg); + var regs = matchSyntax(reg); var matches = []; this.list.forEach(function (p) { var foundEm = p.match(regs); //no match here, add full sentence @@ -8193,7 +8773,7 @@ } //start looking for a match.. - var regs = syntax_1(reg); + var regs = matchSyntax(reg); var matches = []; this.list.forEach(function (p) { var foundEm = p.match(regs); //no match here, add full sentence @@ -8258,12 +8838,6 @@ }; }); - var _03Split_1 = _03Split.splitOn; - var _03Split_2 = _03Split.splitAfter; - var _03Split_3 = _03Split.split; - var _03Split_4 = _03Split.splitBefore; - var _03Split_5 = _03Split.segment; - var eachTerm = function eachTerm(doc, fn) { var world = doc.world; doc.list.forEach(function (p) { @@ -8318,9 +8892,9 @@ toTitleCase: toTitleCase, toCamelCase: toCamelCase }; + /** add this punctuation or whitespace before each match: */ var _05Whitespace = createCommonjsModule(function (module, exports) { - /** add this punctuation or whitespace before each match: */ exports.pre = function (str, concat) { if (str === undefined) { return this.list[0].terms(0).pre; @@ -8438,18 +9012,9 @@ return this; }; }); - - var _05Whitespace_1 = _05Whitespace.pre; - var _05Whitespace_2 = _05Whitespace.post; - var _05Whitespace_3 = _05Whitespace.trim; - var _05Whitespace_4 = _05Whitespace.hyphenate; - var _05Whitespace_5 = _05Whitespace.dehyphenate; - var _05Whitespace_6 = _05Whitespace.deHyphenate; - var _05Whitespace_7 = _05Whitespace.toQuotations; - var _05Whitespace_8 = _05Whitespace.toQuotation; - var _05Whitespace_9 = _05Whitespace.toParentheses; /** make all phrases into one phrase */ + var join = function join(str) { // clear the cache this.uncache(); // make one large phrase - 'main' @@ -8580,12 +9145,12 @@ var _07Contract = { contract: contract }; - var methods$4 = Object.assign({}, _01Utils$1, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract); - var methods$5 = {}; // allow helper methods like .adjectives() and .adverbs() + var methods$4 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract); + var methods$3 = {}; // allow helper methods like .adjectives() and .adverbs() var 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']]; arr.forEach(function (a) { - methods$5[a[0]] = function (n) { + methods$3[a[0]] = function (n) { var m = this.match(a[1]); if (typeof n === 'number') { @@ -8596,12 +9161,12 @@ }; }); // aliases - methods$5.emojis = methods$5.emoji; - methods$5.atmentions = methods$5.atMentions; - methods$5.words = methods$5.terms; + methods$3.emojis = methods$3.emoji; + methods$3.atmentions = methods$3.atMentions; + methods$3.words = methods$3.terms; /** return anything tagged as a phone number */ - methods$5.phoneNumbers = function (n) { + methods$3.phoneNumbers = function (n) { var m = this.splitAfter('@hasComma'); m = m.match('#PhoneNumber+'); @@ -8611,10 +9176,10 @@ return m; }; - /** money + currency pair */ + /** Deprecated: please use compromise-numbers plugin */ - methods$5.money = function (n) { + methods$3.money = function (n) { var m = this.match('#Money #Currency?'); if (typeof n === 'number') { @@ -8626,7 +9191,7 @@ /** return all cities, countries, addresses, and regions */ - methods$5.places = function (n) { + methods$3.places = function (n) { // don't split 'paris, france' var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas @@ -8645,7 +9210,7 @@ /** return all schools, businesses and institutions */ - methods$5.organizations = function (n) { + methods$3.organizations = function (n) { var m = this.clauses(); m = m.match('#Organization+'); @@ -8657,7 +9222,7 @@ }; //combine them with .topics() method - methods$5.entities = function (n) { + methods$3.entities = function (n) { var r = this.clauses(); // Find people, places, and organizations var yup = r.people(); @@ -8676,9 +9241,9 @@ }; //aliases - methods$5.things = methods$5.entities; - methods$5.topics = methods$5.entities; - var _simple = methods$5; + methods$3.things = methods$3.entities; + methods$3.topics = methods$3.entities; + var _simple = methods$3; var underOver = /^(under|over)-?/; /** match a word-sequence, like 'super bowl' in the lexicon */ @@ -8767,7 +9332,9 @@ }; var _01Lexicon = checkLexicon; - var apostrophes = /[\'‘’‛‵′`´]$/; // + var apostrophes = /[\'‘’‛‵′`´]$/; + var perSec = /^(m|k|cm|km|m)\/(s|h|hr)$/; // '5 k/m' + // var checkPunctuation = function checkPunctuation(terms, i, world) { var term = terms[i]; //check hyphenation @@ -8795,6 +9362,11 @@ term.tag(['Gerund'], 'chillin', world); } } + } // '5 km/s' + + + if (perSec.test(term.text)) { + term.tag('Unit', 'per-sec', world); } // 'NASA' is, but not 'i REALLY love it.' // if (term.tags.Noun === true && isAcronym(term, world)) { // term.tag('Acronym', 'acronym-step', world) @@ -8806,22 +9378,30 @@ }; - var _02Punctuation$1 = checkPunctuation; //these are regexes applied to t.text, instead of t.clean + var _02Punctuation = checkPunctuation; //these are regexes applied to t.text, instead of t.clean // order matters. var startsWith = [//web tags - [/^\w+@\w+\.[a-z]{2,3}$/, 'Email'], //not fancy - [/^#[a-z0-9_\u00C0-\u00FF]{2,}$/, 'HashTag'], [/^@\w{2,}$/, 'AtMention'], [/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/, 'Url'], //with http/www + [/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/, 'Email'], //not fancy + [/^#[a-z0-9_\u00C0-\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm + [/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30 + [/^@\w{2,}$/, 'AtMention'], //@spencermountain + [/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/, 'Url'], //with http/www [/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain //dates/times + [/^'[0-9]{2}$/, 'Year'], //like '97 [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32 - [/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/, 'Time'], //4pm - [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/, 'Time'], //4:00pm + [/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm + [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm [/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs [/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+ [/^[a-z0-9]*? o\'?clock$/, 'Time'], //3 oclock + [/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z [/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89 [/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/, 'Date'], // 03/02/89 + [/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89 + [/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3 + [/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3 //names [/^ma?c\'.*/, 'LastName'], //mc'adams [/^o\'[drlkn].*/, 'LastName'], //o'douggan @@ -8833,24 +9413,25 @@ [/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/, 'Date'], // 03-02-89 //phone numbers [/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809 - [/^[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809 + [/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809 //money // currency regex // /[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6] //like $5.30 [/^[-+]?[\$\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$ - [/^[-+]?[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 - [/^[-+]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers + [/^[-+]?[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 + [/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers // 50 | -50 | 3.23 | 5,999.0 | 10+ - [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|th)$/, ['Ordinal', 'NumericValue']], // .73th + [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th [/^\.[0-9]+\+?$/, ['Cardinal', 'NumericValue']], //percent [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% .. [/^\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% .. //fraction - [/^[0-9]{1,4}\/[0-9]{1,4}$/, 'Fraction'], //3/2ths + [/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths //range - [/^[0-9.]{1,2}[-–][0-9]{1,2}$/, ['Value', 'NumberRange']], //7-8 - [/^[0-9.]{1,4}(st|nd|rd|th)?[-–][0-9\.]{1,4}(st|nd|rd|th)?$/, 'NumberRange'], //5-7 + [/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th + //time-range + [/^[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 //with unit [/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp //ordinal @@ -8861,7 +9442,7 @@ var 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 //try each of the ^regexes in our list - var checkRegex = function checkRegex(term, world) { + var checkRegex$1 = function checkRegex(term, world) { var str = term.text; // do them all! for (var r = 0; r < startsWith.length; r += 1) { @@ -8878,215 +9459,219 @@ } }; - var _03Prefixes = checkRegex; //regex suffix patterns and their most common parts of speech, + var _03Prefixes = checkRegex$1; //regex suffix patterns and their most common parts of speech, //built using wordnet, by spencer kelly. //this mapping shrinks-down the uglified build - var Adj = 'Adjective'; - var Inf = 'Infinitive'; - var Pres = 'PresentTense'; - var Sing = 'Singular'; - var Past = 'PastTense'; + var Adj$1 = 'Adjective'; + var Inf$1 = 'Infinitive'; + var Pres$1 = 'PresentTense'; + var Sing$1 = 'Singular'; + var Past$1 = 'PastTense'; var Adverb = 'Adverb'; var Exp = 'Expression'; - var Actor = 'Actor'; + var Actor$1 = 'Actor'; var Verb = 'Verb'; - var Noun = 'Noun'; - var Last = 'LastName'; //the order here matters. + var Noun$1 = 'Noun'; + var Last$1 = 'LastName'; //the order here matters. //regexes indexed by mandated last-character - var endsWith$1 = { - a: [[/.[aeiou]na$/, Noun], [/.[oau][wvl]ska$/, Last], //polish (female) - [/.[^aeiou]ica$/, Sing], [/^([hyj]a)+$/, Exp] //hahah + var endsWith = { + a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female) + [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah ], - c: [[/.[^aeiou]ic$/, Adj]], + c: [[/.[^aeiou]ic$/, Adj$1]], d: [//==-ed== //double-consonant - [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past], //popped, planned + [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned //double-vowel - [/.[aeo]{2}[bdgmnprvz]ed$/, Past], //beeped, mooned, veered + [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered //-hed - [/.[aeiou][sg]hed$/, Past], //stashed, sighed + [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed //-rd - [/.[aeiou]red$/, Past], //stored - [/.[aeiou]r?ried$/, Past], //buried + [/.[aeiou]red$/, Past$1], //stored + [/.[aeiou]r?ried$/, Past$1], //buried //-led - [/.[bcdgtr]led$/, Past], //startled, rumbled - [/.[aoui]f?led$/, Past], //impaled, stifled + [/.[bcdgtr]led$/, Past$1], //startled, rumbled + [/.[aoui]f?led$/, Past$1], //impaled, stifled //-sed - [/.[iao]sed$/, Past], //franchised - [/[aeiou]n?[cs]ed$/, Past], //laced, lanced + [/.[iao]sed$/, Past$1], //franchised + [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced //-med - [/[aeiou][rl]?[mnf]ed$/, Past], //warmed, attained, engulfed + [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed //-ked - [/[aeiou][ns]?c?ked$/, Past], //hooked, masked + [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked //-ged - [/[aeiou][nl]?ged$/, Past], //engaged + [/[aeiou][nl]?ged$/, Past$1], //engaged //-ted - [/.[tdbwxz]ed$/, Past], //bribed, boxed - [/[^aeiou][aeiou][tvx]ed$/, Past], //boxed + [/.[tdbwxz]ed$/, Past$1], //bribed, boxed + [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed //-ied - [/.[cdlmnprstv]ied$/, Past], //rallied - [/[^aeiou]ard$/, Sing], //card - [/[aeiou][^aeiou]id$/, Adj], [/.[vrl]id$/, Adj]], - e: [[/.[lnr]ize$/, Inf], [/.[^aeiou]ise$/, Inf], [/.[aeiou]te$/, Inf], [/.[^aeiou][ai]ble$/, Adj], [/.[^aeiou]eable$/, Adj], [/.[ts]ive$/, Adj]], - h: [[/.[^aeiouf]ish$/, Adj], [/.v[iy]ch$/, Last], //east-europe + [/.[cdlmnprstv]ied$/, Past$1], //rallied + [/[^aeiou]ard$/, Sing$1], //card + [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]], + 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]], + h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe [/^ug?h+$/, Exp], //uhh [/^uh[ -]?oh$/, Exp] //uhoh ], - i: [[/.[oau][wvl]ski$/, Last] //polish (male) + i: [[/.[oau][wvl]ski$/, Last$1] //polish (male) ], - k: [[/^(k)+$/, Exp] //kkkk + k: [[/^(k){2}$/, Exp] //kkkk ], - l: [[/.[gl]ial$/, Adj], [/.[^aeiou]ful$/, Adj], [/.[nrtumcd]al$/, Adj], [/.[^aeiou][ei]al$/, Adj]], - m: [[/.[^aeiou]ium$/, Sing], [/[^aeiou]ism$/, Sing], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm + l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]], + m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm [/^\d+ ?[ap]m$/, 'Date']], - n: [[/.[lsrnpb]ian$/, Adj], [/[^aeiou]ician$/, Actor], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin' + n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin' ], o: [[/^no+$/, Exp], //noooo [/^(yo)+$/, Exp], //yoyo [/^woo+[pt]?$/, Exp] //woo ], - r: [[/.[bdfklmst]ler$/, 'Noun'], [/.[ilk]er$/, 'Comparative'], [/[aeiou][pns]er$/, Sing], [/[^i]fer$/, Inf], [/.[^aeiou][ao]pher$/, Actor]], - t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj], [/[aeiou].*ist$/, Adj], [/^[a-z]et$/, Verb]], - s: [[/.[rln]ates$/, Pres], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing], [/.[aeiou]sks$/, Pres], //masks - [/.[aeiou]kes$/, Pres], //bakes - [/[aeiou][^aeiou]is$/, Sing], [/[a-z]\'s$/, Noun], [/^yes+$/, Exp] //yessss + r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']], + t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]], + s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks + [/.[aeiou]kes$/, Pres$1], //bakes + [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\'s$/, Noun$1], [/^yes+$/, Exp] //yessss ], - v: [[/.[^aeiou][ai][kln]ov$/, Last] //east-europe + v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe ], - y: [[/.[cts]hy$/, Adj], [/.[st]ty$/, Adj], [/.[gk]y$/, Adj], [/.[tnl]ary$/, Adj], [/.[oe]ry$/, Sing], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj], [/.(gg|bb|zz)ly$/, Adj], [/.[aeiou]my$/, Adj], [/[ea]{2}zy$/, Adj], [/.[^aeiou]ity$/, Sing]] + 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]] }; //just a foolish lookup of known suffixes - var Adj$1 = 'Adjective'; - var Inf$1 = 'Infinitive'; - var Pres$1 = 'PresentTense'; - var Sing$1 = 'Singular'; - var Past$1 = 'PastTense'; + var Adj = 'Adjective'; + var Inf = 'Infinitive'; + var Pres = 'PresentTense'; + var Sing = 'Singular'; + var Past = 'PastTense'; var Avb = 'Adverb'; var Plrl = 'Plural'; - var Actor$1 = 'Actor'; + var Actor = 'Actor'; var Vb = 'Verb'; - var Noun$1 = 'Noun'; - var Last$1 = 'LastName'; - var Modal = 'Modal'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup + var Noun = 'Noun'; + var Last = 'LastName'; + var Modal = 'Modal'; + var Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup var suffixMap = [null, //0 null, //1 { //2-letter - ea: Sing$1, - ia: Noun$1, - ic: Adj$1, + ea: Sing, + ia: Noun, + ic: Adj, ly: Avb, "'n": Vb, "'t": Vb }, { //3-letter - oed: Past$1, - ued: Past$1, - xed: Past$1, + oed: Past, + ued: Past, + xed: Past, ' so': Avb, "'ll": Modal, "'re": 'Copula', - azy: Adj$1, + azy: Adj, + eer: Noun, end: Vb, - ped: Past$1, - ffy: Adj$1, - ify: Inf$1, + ped: Past, + ffy: Adj, + ify: Inf, ing: 'Gerund', //likely to be converted to Adj after lexicon pass - ize: Inf$1, - lar: Adj$1, - mum: Adj$1, - nes: Pres$1, - nny: Adj$1, - oid: Adj$1, - ous: Adj$1, - que: Adj$1, - rmy: Adj$1, - rol: Sing$1, - sis: Sing$1, - zes: Pres$1 + ize: Inf, + lar: Adj, + mum: Adj, + nes: Pres, + nny: Adj, + oid: Adj, + ous: Adj, + que: Adj, + rol: Sing, + sis: Sing, + zes: Pres }, { //4-letter - amed: Past$1, - aped: Past$1, - ched: Past$1, - lked: Past$1, - nded: Past$1, - cted: Past$1, - dged: Past$1, - akis: Last$1, + amed: Past, + aped: Past, + ched: Past, + lked: Past, + nded: Past, + cted: Past, + dged: Past, + akis: Last, //greek - cede: Inf$1, - chuk: Last$1, + cede: Inf, + chuk: Last, //east-europe - czyk: Last$1, + czyk: Last, //polish (male) - ects: Pres$1, + ects: Pres, ends: Vb, - enko: Last$1, + enko: Last, //east-europe - ette: Sing$1, - fies: Pres$1, + ette: Sing, + fies: Pres, fore: Avb, - gate: Inf$1, - gone: Adj$1, + gate: Inf, + gone: Adj, ices: Plrl, ints: Plrl, + ines: Plrl, ions: Plrl, less: Avb, - llen: Adj$1, - made: Adj$1, - nsen: Last$1, + llen: Adj, + made: Adj, + nsen: Last, //norway - oses: Pres$1, + oses: Pres, ould: Modal, - some: Adj$1, - sson: Last$1, + some: Adj, + sson: Last, //swedish male - tage: Inf$1, + tage: Inf, teen: 'Value', - tion: Sing$1, - tive: Adj$1, - tors: Noun$1, - vice: Sing$1 + tion: Sing, + tive: Adj, + tors: Noun, + vice: Sing }, { //5-letter - tized: Past$1, - urned: Past$1, - eased: Past$1, + tized: Past, + urned: Past, + eased: Past, ances: Plrl, - bound: Adj$1, + bound: Adj, ettes: Plrl, fully: Avb, - ishes: Pres$1, + ishes: Pres, ities: Plrl, - marek: Last$1, + marek: Last, //polish (male) - nssen: Last$1, + nssen: Last, //norway - ology: Noun$1, + ology: Noun, ports: Plrl, - rough: Adj$1, - tches: Pres$1, + rough: Adj, + tches: Pres, tieth: 'Ordinal', tures: Plrl, wards: Avb, where: Avb }, { //6-letter - auskas: Last$1, + auskas: Last, //lithuania - keeper: Actor$1, - logist: Actor$1, + keeper: Actor, + logist: Actor, teenth: 'Value' }, { //7-letter - opoulos: Last$1, + opoulos: Last, //greek - sdottir: Last$1 //swedish female + borough: Place, + //Hillsborough + sdottir: Last //swedish female }]; @@ -9094,8 +9679,8 @@ var str = term.clean; var _char = str[str.length - 1]; - if (endsWith$1.hasOwnProperty(_char) === true) { - var regs = endsWith$1[_char]; + if (endsWith.hasOwnProperty(_char) === true) { + var regs = endsWith[_char]; for (var r = 0; r < regs.length; r += 1) { if (regs[r][0].test(str) === true) { @@ -9127,12 +9712,12 @@ }; //all-the-way-down! - var checkRegex$1 = function checkRegex(term, world) { + var checkRegex = function checkRegex(term, world) { knownSuffixes(term, world); endRegexs(term, world); }; - var _04Suffixes = checkRegex$1; //just some of the most common emoticons + var _04Suffixes = checkRegex; //just some of the most common emoticons //faster than //http://stackoverflow.com/questions/28077049/regex-matching-emoticons @@ -9255,7 +9840,7 @@ var _05Emoji = tagEmoji; var steps = { lexicon: _01Lexicon, - punctuation: _02Punctuation$1, + punctuation: _02Punctuation, regex: _03Prefixes, suffix: _04Suffixes, emoji: _05Emoji @@ -9461,7 +10046,7 @@ }; var _01Neighbours = checkNeighbours; - var titleCase$3 = /^[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 */ @@ -9473,7 +10058,7 @@ for (var i = 1; i < terms.length; i++) { var term = terms[i]; - if (titleCase$3.test(term.text) === true && hasNumber.test(term.text) === false) { + if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) { term.tag('ProperNoun', 'titlecase-noun', world); } } @@ -9507,13 +10092,13 @@ var _03Stem = checkPrefix; //similar to plural/singularize rules, but not the same - var 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]; //similar to plural/singularize rules, but not the same + var 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 - var 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, // sans, siens + var 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 /(^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]; - var isPlural_1 = { - isSingular: isSingular, - isPlural: isPlural + var isPlural_1$2 = { + isSingular: isSingular$1, + isPlural: isPlural$3 }; var noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday']; var notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/]; @@ -9542,7 +10127,7 @@ } // isPlural suffix rules - if (isPlural_1.isPlural.find(function (reg) { + if (isPlural_1$2.isPlural.find(function (reg) { return reg.test(str); })) { t.tag('Plural', 'plural-rules', world); @@ -9550,7 +10135,7 @@ } // isSingular suffix rules - if (isPlural_1.isSingular.find(function (reg) { + if (isPlural_1$2.isSingular.find(function (reg) { return reg.test(str); })) { t.tag('Singular', 'singular-rules', world); @@ -9642,14 +10227,14 @@ }; var _05Organizations = tagOrgs; - var oneLetterAcronym$1 = /^[A-Z]('s|,)?$/; + var oneLetterAcronym = /^[A-Z]('s|,)?$/; var periodSeperated = /([A-Z]\.){2}[A-Z]?/i; var oneLetterWord = { I: true, A: true }; - var isAcronym$2 = function isAcronym(term, world) { + var isAcronym = function isAcronym(term, world) { var str = term.reduced; // a known acronym like fbi if (term.tags.Acronym) { @@ -9662,6 +10247,11 @@ if (world.words[str]) { return false; + } // long capitalized words are not usually either + + + if (str.length > 5) { + return false; } return term.isAcronym(); @@ -9681,10 +10271,10 @@ } //non-period ones are harder - if (term.isUpperCase() && isAcronym$2(term, world)) { + if (term.isUpperCase() && isAcronym(term, world)) { term.tag('Acronym', 'acronym-step', world); term.tag('Noun', 'acronym-infer', world); - } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym$1.test(term.text)) { + } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { term.tag('Acronym', 'one-letter-acronym', world); term.tag('Noun', 'one-letter-infer', world); } //if it's a organization, @@ -9737,7 +10327,7 @@ var _02Fallbacks = fallbacks; var hasNegative = /n't$/; - var irregulars$3 = { + var irregulars$2 = { "won't": ['will', 'not'], wont: ['will', 'not'], "can't": ['can', 'not'], @@ -9767,8 +10357,8 @@ var checkNegative = function checkNegative(term, phrase) { //check named-ones - if (irregulars$3.hasOwnProperty(term.clean) === true) { - return irregulars$3[term.clean]; + if (irregulars$2.hasOwnProperty(term.clean) === true) { + return irregulars$2[term.clean]; } //this word needs it's own logic: @@ -9786,7 +10376,7 @@ }; var _01Negative = checkNegative; - var contraction = /([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 + var 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 var easy = { ll: 'will', @@ -9797,7 +10387,7 @@ }; // var checkApostrophe = function checkApostrophe(term) { - var parts = term.text.match(contraction); + var parts = term.text.match(contraction$1); if (parts === null) { return null; @@ -9811,7 +10401,7 @@ }; var _02Simple = checkApostrophe; - var irregulars$4 = { + var irregulars$1 = { wanna: ['want', 'to'], gonna: ['going', 'to'], im: ['i', 'am'], @@ -9842,8 +10432,8 @@ var checkIrregulars = function checkIrregulars(term) { //check white-list - if (irregulars$4.hasOwnProperty(term.clean)) { - return irregulars$4[term.clean]; + if (irregulars$1.hasOwnProperty(term.clean)) { + return irregulars$1[term.clean]; } return null; @@ -9851,10 +10441,15 @@ var _03Irregulars = checkIrregulars; var hasApostropheS = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i; - var blacklist = { + var banList = { that: true, there: true }; + var hereThere = { + here: true, + there: true, + everywhere: true + }; var isPossessive = function isPossessive(term, pool) { // if we already know it @@ -9867,7 +10462,7 @@ return false; } - if (blacklist.hasOwnProperty(term.clean)) { + if (banList.hasOwnProperty(term.reduced)) { return false; } //if end of sentence, it is possessive - "was spencer's" @@ -9895,6 +10490,11 @@ if (nextTerm.tags.Noun) { + // 'spencer's here' + if (hereThere.hasOwnProperty(nextTerm.reduced) === true) { + return false; + } + return true; } //rocket's red glare @@ -9988,7 +10588,8 @@ }; var _05PerfectTense = checkPerfect; - var isRange = /^([0-9]+)[-–—]([0-9]+)$/i; //split '2-4' into '2 to 4' + var isRange = /^([0-9.]{1,3}[a-z]{0,2})[-–—]([0-9]{1,3}[a-z]{0,2})$/i; + var 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' var checkRange = function checkRange(term) { if (term.tags.PhoneNumber === true) { @@ -9999,13 +10600,19 @@ if (parts !== null) { return [parts[1], 'to', parts[2]]; + } else { + parts = term.text.match(timeRange); + + if (parts !== null) { + return [parts[1], 'to', parts[4]]; + } } return null; }; var _06Ranges = checkRange; - var contraction$1 = /^(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 + var 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 // not perfect, but better than nothing, to support matching on french text. var french = { @@ -10030,7 +10637,7 @@ }; var checkFrench = function checkFrench(term) { - var parts = term.text.match(contraction$1); + var parts = term.text.match(contraction); if (parts === null || french.hasOwnProperty(parts[1]) === false) { return null; @@ -10047,6 +10654,8 @@ var _07French = checkFrench; var isNumber = /^[0-9]+$/; + var isOrdinal = /^[0-9]+(st|nd|rd|th)$/; + var isTime = /^[0-9:]+(am|pm)$/; var createPhrase = function createPhrase(found, doc) { //create phrase from ['would', 'not'] @@ -10067,8 +10676,13 @@ t.post = ''; // tag number-ranges if (isNumber.test(t.implicit)) { - t.tags.Number = true; - t.tags.Cardinal = true; + t.tag('Cardinal', 'num-range', doc.world); + } else if (isOrdinal.test(t.implicit)) { + t.tag('Ordinal', 'ord-range', doc.world); + } else if (isTime.test(t.implicit)) { + t.tag('Time', 'time-range', doc.world); + } else if (Object.keys(t.tags).length === 0) { + t.tags.Noun = true; // if no tag, give it a noun } }); return phrase; @@ -10130,18 +10744,36 @@ var miscCorrection = function miscCorrection(doc) { - //exactly like - var m = hasWord(doc, 'like'); - m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often) [like]').tag('Adverb', 'adverb-like'); //the orange. + // imperative-form + var m = hasTag(doc, 'Infinitive'); + + if (m.found) { + // you eat? + m = m.ifNo('@hasQuestionMark'); // i speak + + m = m.ifNo('(i|we|they)'); // shut the door! + + m.match('[#Infinitive] (#Determiner|#Possessive) #Noun', 0).tag('Imperative', 'shut-the'); // go-fast + + m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go + + m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it + + m.match('[#Infinitive] (it|some)', 0).tag('Imperative', 'do-it'); + } //exactly like + + + m = hasWord(doc, 'like'); + m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange. m = hasTag(doc, 'Adjective'); m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous) m = hasTag(doc, 'FirstName'); - m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('#Pronoun').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train + m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train m = hasTag(doc, 'Value'); - m = m.match('#Value #PresentTense'); + m = m.match('#Value #PresentTense').ifNo('#Copula'); if (m.found) { if (m.has('(one|1)') === true) { @@ -10152,12 +10784,16 @@ } // well i've been... - doc.match('^(well|so|okay)').tag('Expression', 'well-'); //been walking + doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second + + doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds + + doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking m = hasTag(doc, 'Gerund'); m.match("(be|been) (#Adverb|not)+? #Gerund").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse' - doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives + doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives //'her match' vs 'let her match' m = hasTag(doc, 'Possessive'); @@ -10172,7 +10808,7 @@ var fixMisc = miscCorrection; - var unique$5 = function unique(arr) { + var unique = function unique(arr) { var obj = {}; for (var i = 0; i < arr.length; i++) { @@ -10182,9 +10818,9 @@ return Object.keys(obj); }; - var _unique = unique$5; // order matters + var _unique = unique; // order matters - var list = [// ==== Mutliple tags ==== + var list$5 = [// ==== Mutliple tags ==== { match: 'too much', tag: 'Adverb Adjective', @@ -10196,9 +10832,15 @@ reason: 'u r' }, //sometimes adverbs - 'pretty good','well above' { - match: '#Copula (pretty|dead|full|well) (#Adjective|#Noun)', + match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)', tag: '#Copula #Adverb #Adjective', reason: 'sometimes-adverb' + }, //i better .. + { + match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', + group: 0, + tag: 'Modal', + reason: 'i-better' }, //walking is cool { match: '[#Gerund] #Adverb? not? #Copula', @@ -10239,12 +10881,8 @@ tag: 'Determiner', reason: 'captain-who' }, //that car goes + // { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' }, { - match: 'that #Noun [#Verb]', - group: 0, - tag: 'Determiner', - reason: 'that-determiner' - }, { match: 'a bit much', tag: 'Determiner Adverb Adjective', reason: 'bit-3' @@ -10262,7 +10900,7 @@ tag: 'Preposition', reason: 'which-copula' }, { - match: 'just [like]', + match: '#Copula just [like]', group: 0, tag: 'Preposition', reason: 'like-preposition' @@ -10273,12 +10911,8 @@ tag: 'Preposition', reason: 'noun-like' }, //fix for busted-up phrasalVerbs - { - match: '#Noun [#Particle]', - group: 0, - tag: 'Preposition', - reason: 'repair-noPhrasal' - }, // ==== Conditions ==== + // { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' }, + // ==== Conditions ==== // had he survived, { match: '[had] #Noun+ #PastTense', @@ -10307,16 +10941,9 @@ match: '^which', tag: 'QuestionWord', reason: 'which-question' - }, { - match: '[which] . (#Noun)+ #Pronoun', - group: 0, - tag: 'QuestionWord', - reason: 'which-question2' - }, { - match: 'which', - tag: 'QuestionWord', - reason: 'which-question3' - }, // ==== Conjunctions ==== + }, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' }, + // { match: 'which', tag: 'QuestionWord', reason: 'which-question3' }, + // ==== Conjunctions ==== { match: '[so] #Noun', group: 0, @@ -10328,16 +10955,32 @@ group: 0, tag: 'Conjunction', reason: 'how-he-is-x' - }, { - match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund', - group: 0, - tag: 'Conjunction', - reason: 'when i go fishing' - }]; - var _01Misc = list; //Dates: 'june' or 'may' - - var dates = '(april|june|may|jan|august|eve)'; - var list$1 = [// ==== Holiday ==== + } // { + // match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund', + // group: 0, + // tag: 'Conjunction', + // reason: 'when-i-go-fishing', + // }, + ]; + var _01Misc = list$5; + var _ambig = { + // adverbs than can be adjectives + adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'], + // names that are dates + personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'], + // names that may be months + personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'], + // names that are adjectives + personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'], + // names that are verbs + personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'], + // names that are verbs + personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'], + // names that are nouns + 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'] + }; + var dates = "(".concat(_ambig.personDate.join('|'), ")"); + var list$4 = [// ==== Holiday ==== { match: '#Holiday (day|eve)', tag: 'Holiday', @@ -10367,7 +11010,17 @@ group: 0, tag: 'WeekDay', reason: 'sat' - }, //sat november + }, { + match: "(in|by|before|during|on|until|after|of|within|all) [wed]", + group: 0, + tag: 'WeekDay', + reason: 'wed' + }, { + match: "(in|by|before|during|on|until|after|of|within|all) [march]", + group: 0, + tag: 'Month', + reason: 'march' + }, //sat november { match: '[sat] #Date', group: 0, @@ -10424,13 +11077,13 @@ { match: "#Adverb [(march|may)]", group: 0, - tag: 'Infinitive', + tag: 'Verb', reason: 'quickly-march' }, //march quickly { - match: "(march|may) [#Adverb]", + match: "[(march|may)] #Adverb", group: 0, - tag: 'Infinitive', + tag: 'Verb', reason: 'march-quickly' }, //5th of March { @@ -10487,12 +11140,12 @@ match: "by [".concat(dates, "]"), group: 0, tag: 'Date', - reason: 'in-june' + reason: 'by-june' }, { - match: "before [".concat(dates, "]"), + match: "after [".concat(dates, "]"), group: 0, tag: 'Date', - reason: 'in-june' + reason: 'after-june' }, { match: "#Date [".concat(dates, "]"), group: 0, @@ -10518,9 +11171,164 @@ match: "".concat(dates, " #Acronym? (#ProperNoun && !#Month)"), tag: 'Person', reason: 'june-smith-jr' + }, // 'second' + { + match: "#Cardinal [second]", + tag: 'Unit', + reason: 'one-second' + }, // second quarter + // { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' }, + // 'aug 20-21' + { + match: "#Month #NumberRange", + tag: 'Date', + reason: 'aug 20-21' + }, // timezones + // china standard time + { + match: "(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time", + tag: 'Timezone', + reason: 'std-time' + }, // eastern time + { + match: "(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time", + tag: 'Timezone', + reason: 'eastern-time' + }, // 5pm central + { + match: "#Time [(eastern|mountain|pacific|central|est|pst|gmt)]", + group: 0, + tag: 'Timezone', + reason: '5pm-central' + }, // central european time + { + match: "(central|western|eastern) european time", + tag: 'Timezone', + reason: 'cet' }]; - var _02Dates = list$1; - var _03Noun = [// ==== Plural ==== + var _02Dates = list$4; + var adjectives$1 = "(".concat(_ambig.personAdjective.join('|'), ")"); + var list$3 = [// all fell apart + { + match: '[all] #Determiner? #Noun', + group: 0, + tag: 'Adjective', + reason: 'all-noun' + }, // very rusty + { + match: "#Adverb [".concat(adjectives$1, "]"), + group: 0, + tag: 'Adjective', + reason: 'really-rich' + }, // rusty smith + { + match: "".concat(adjectives$1, " #Person"), + tag: 'Person', + reason: 'randy-smith' + }, // rusty a. smith + { + match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), + tag: 'Person', + reason: 'rusty-smith' + }, //sometimes not-adverbs + { + match: '#Copula [(just|alone)]$', + group: 0, + tag: 'Adjective', + reason: 'not-adverb' + }, //jack is guarded + { + match: '#Singular is #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'is-filled' + }, // smoked poutine is + { + match: '[#PastTense] #Singular is', + group: 0, + tag: 'Adjective', + reason: 'smoked-poutine' + }, // baked onions are + { + match: '[#PastTense] #Plural are', + group: 0, + tag: 'Adjective', + reason: 'baked-onions' + }, // well made + { + match: 'well [#PastTense]', + group: 0, + tag: 'Adjective', + reason: 'well-made' + }, // is f*ed up + { + match: '#Copula [fucked up?]', + tag: 'Adjective', + reason: 'swears-adjective' + }, //jack seems guarded + { + match: '#Singular (seems|appears) #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'seems-filled' + }, // Gerund-Adjectives - 'amusing, annoying' + //a staggering cost + { + match: '(a|an) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a|an' + }, //as amusing as + { + match: 'as [#Gerund] as', + group: 0, + tag: 'Adjective', + reason: 'as-gerund-as' + }, // more amusing than + { + match: 'more [#Gerund] than', + group: 0, + tag: 'Adjective', + reason: 'more-gerund-than' + }, // very amusing + { + match: '(so|very|extremely) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'so-gerund' + }, // it was amusing + { + match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'it-was-gerund' + }, // found it amusing + { + match: '(found|found) it #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'found-it-gerund' + }, // a bit amusing + { + match: 'a (little|bit|wee) bit? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a-bit-gerund' + }, // jury is out - preposition ➔ adjective + { + match: '#Copula #Adjective? [(out|in|through)]$', + group: 0, + tag: 'Adjective', + reason: 'still-out' + }, // shut the door + { + match: '^[#Adjective] (the|your) #Noun', + group: 0, + tag: 'Infinitive', + reason: 'shut-the' + }]; + var _03Adjective = list$3; + var _04Noun = [// ==== Plural ==== //there are reasons { match: 'there (are|were) #Adjective? [#PresentTense]', @@ -10542,7 +11350,7 @@ reason: 'did-a-value' }, //'the can' { - match: '#Determiner [(can|will|may)]', + match: 'the [(can|will|may)]', group: 0, tag: 'Singular', reason: 'the can' @@ -10562,12 +11370,98 @@ match: '#Place+ #Possessive', tag: 'Possessive', reason: 'place-possessive' - }, //big dreams, critical thinking + }, // assign all tasks + { + match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'all-presentTense' + }, //the above is clear + { + match: '#Determiner [#Adjective] #Copula', + group: 0, + tag: 'Noun', + reason: 'the-adj-is' + }, //real evil is { - match: '#Adjective [#PresentTense]', + match: '#Adjective [#Adjective] #Copula', + group: 0, + tag: 'Noun', + reason: 'adj-adj-is' + }, // PresentTense/Noun ambiguities + // big dreams, critical thinking + // have big dreams + { + match: '(had|have|#PastTense) #Adjective [#PresentTense]', group: 0, tag: 'Noun', reason: 'adj-presentTense' + }, // excellent answer spencer + { + match: '^#Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'start adj-presentTense' + }, // one big reason + { + match: '#Value #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'one-big-reason' + }, // won widespread support + { + match: '#PastTense #Adjective+ [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'won-wide-support' + }, // many poses + { + match: '(many|few|several|couple) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'many-poses' + }, // very big dreams + { + match: '#Adverb #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'very-big-dream' + }, // good wait staff + { + match: '#Adjective [#Infinitive] #Noun', + group: 0, + tag: 'Noun', + reason: 'good-wait-staff' + }, // adorable little store + { + match: '#Adjective #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'adorable-little-store' + }, // of basic training + { + match: '#Preposition #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'of-basic-training' + }, // early warning + { + match: '#Adjective [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'early-warning' + }, // justifiying higher costs + { + match: '#Gerund #Adverb? #Comparative [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'higher-costs' + }, // do the dance + { + match: '#Infinitive (this|that|the) [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'do-this-dance' }, //his fine { match: '(his|her|its) [#Adjective]', @@ -10601,12 +11495,24 @@ group: 0, tag: 'Noun', reason: 'bit-2' + }, // my first thought + { + match: '#Possessive #Ordinal [#PastTense]', + group: 0, + tag: 'Noun', + reason: 'first-thought' }, //running-a-show { match: '#Gerund #Determiner [#Infinitive]', group: 0, tag: 'Noun', reason: 'running-a-show' + }, //the-only-reason + { + match: '#Determiner #Adverb [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'the-reason' }, //the nice swim { match: '(the|this|those|these) #Adjective [#Verb]', @@ -10637,15 +11543,15 @@ group: 0, tag: 'Noun', reason: 'determiner7' - }, //by a bear. + }, //a nice deal { - match: '#Determiner #Adjective [#Infinitive]$', + match: '#Determiner #Adjective #Adjective? [#Infinitive]', group: 0, tag: 'Noun', - reason: 'a-inf' + reason: 'a-nice-inf' }, //the wait to vote { - match: '(the|this) [#Verb] #Preposition .', + match: 'the [#Verb] #Preposition .', group: 0, tag: 'Noun', reason: 'determiner1' @@ -10655,6 +11561,12 @@ group: 0, tag: 'Noun', reason: 'the-verb-of' + }, //next career move + { + match: '#Adjective #Noun+ [#Infinitive] #Copula', + group: 0, + tag: 'Noun', + reason: 'career-move' }, //the threat of force { match: '#Determiner #Noun of [#Verb]', @@ -10685,22 +11597,40 @@ group: 0, tag: 'Noun', reason: 'technical-noun' + }, // a blown motor + { + match: '(the|those|these|a|an) [#Participle] #Noun', + group: 0, + tag: 'Adjective', + reason: 'blown-motor' }, // walk the walk { - match: '(the|those|these) #Adjective? [#Infinitive]', + match: '(the|those|these|a|an) #Adjective? [#Infinitive]', group: 0, tag: 'Noun', reason: 'det-inf' }, { - match: '(the|those|these) #Adjective? [#PresentTense]', + match: '(the|those|these|a|an) #Adjective? [#PresentTense]', group: 0, tag: 'Noun', reason: 'det-pres' }, { - match: '(the|those|these) #Adjective? [#PastTense]', + match: '(the|those|these|a|an) #Adjective? [#PastTense]', group: 0, tag: 'Noun', reason: 'det-past' + }, // this swimming + { + match: '(this|that) [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'this-gerund' + }, // at some point + { + match: 'at some [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'at-some-inf' }, //air-flow { match: '(#Noun && @hasHyphen) #Verb', @@ -10724,17 +11654,18 @@ group: 0, tag: 'Noun', reason: 'goes-to-verb' - }, //a great run + }, //a close watch on { - match: '(a|an) #Adjective [(#Infinitive|#PresentTense)]', + match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)', + group: 0, tag: 'Noun', - reason: 'a|an2' + reason: 'a-noun-inf' }, //a tv show { - match: '(a|an) #Noun [#Infinitive]', + match: '(a|an) #Noun [#Infinitive]$', group: 0, tag: 'Noun', - reason: 'a-noun-inf' + reason: 'a-noun-inf2' }, //do so { match: 'do [so]', @@ -10747,12 +11678,6 @@ group: 0, tag: 'Noun', reason: 'is-pres-noun' - }, // - { - match: '[#Infinitive] #Copula', - group: 0, - tag: 'Noun', - reason: 'inf-copula' }, //a close { match: '#Determiner #Adverb? [close]', @@ -10765,73 +11690,43 @@ group: 0, tag: 'Noun', reason: 'swears-noun' - }]; - var adjectives$1 = '(misty|rusty|dusty|rich|randy)'; - var list$2 = [// all fell apart - { - match: '[all] #Determiner? #Noun', - group: 0, - tag: 'Adjective', - reason: 'all-noun' - }, // very rusty - { - match: "#Adverb [".concat(adjectives$1, "]"), - group: 0, - tag: 'Adjective', - reason: 'really-rich' - }, // rusty smith - { - match: "".concat(adjectives$1, " #Person"), - tag: 'Person', - reason: 'randy-smith' - }, // rusty a. smith - { - match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), - tag: 'Person', - reason: 'rusty-smith' - }, //sometimes not-adverbs + }, // the staff were { - match: '#Copula [(just|alone)]$', + match: '(the|these) [#Singular] (were|are)', group: 0, - tag: 'Adjective', - reason: 'not-adverb' - }, //jack is guarded + tag: 'Plural', + reason: 'singular-were' + }, // running for congress { - match: '#Singular is #Adverb? [#PastTense$]', + match: '#Gerund #Adjective? for [#Infinitive]', group: 0, - tag: 'Adjective', - reason: 'is-filled' - }, // smoked poutine is + tag: 'Noun', + reason: 'running-for' + }, // running to work { - match: '[#PastTense] #Singular is', + match: '#Gerund #Adjective to [#Infinitive]', group: 0, - tag: 'Adjective', - reason: 'smoked-poutine' - }, // baked onions are + tag: 'Noun', + reason: 'running-to' + }, // any questions for { - match: '[#PastTense] #Plural are', + match: '(many|any|some|several) [#PresentTense] for', group: 0, - tag: 'Adjective', - reason: 'baked-onions' - }, //a staggering cost + tag: 'Noun', + reason: 'any-verbs-for' + }, // have fun { - match: '(a|an) [#Gerund]', + match: "(have|had) [#Adjective] #Preposition .", group: 0, - tag: 'Adjective', - reason: 'a|an' - }, // is f*ed up - { - match: '#Copula [fucked up?]', - tag: 'Adjective', - reason: 'swears-adjective' - }, //jack seems guarded + tag: 'Noun', + reason: 'have-fun' + }, // co-founder { - match: '#Singular (seems|appears) #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'seems-filled' + match: "co #Noun", + tag: 'Actor', + reason: 'co-noun' }]; - var _04Adjective = list$2; + var adjectives = "(".concat(_ambig.adverbAdjective.join('|'), ")"); var _05Adverb = [//still good { match: '[still] #Adjective', @@ -10850,6 +11745,18 @@ group: 0, tag: 'Adverb', reason: 'so-adv' + }, // way hotter + { + match: '[way] #Comparative', + group: 0, + tag: 'Adverb', + reason: 'way-adj' + }, // way too hot + { + match: '[way] #Adverb #Adjective', + group: 0, + tag: 'Adverb', + reason: 'way-too-adj' }, // all singing { match: '[all] #Verb', @@ -10858,7 +11765,7 @@ reason: 'all-verb' }, // sing like an angel { - match: '#Verb [like]', + match: '(#Verb && !#Modal) [like]', group: 0, tag: 'Adverb', reason: 'verb-like' @@ -10867,9 +11774,20 @@ match: '(barely|hardly) even', tag: 'Adverb', reason: 'barely-even' + }, //even held + { + match: '[even] #Verb', + group: 0, + tag: 'Adverb', + reason: 'even-walk' + }, // even left + { + match: 'even left', + tag: '#Adverb #Verb', + reason: 'even-left' }, //cheering hard - dropped -ly's { - match: '#PresentTense [(hard|quick|long|bright|slow)]', + match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]', group: 0, tag: 'Adverb', reason: 'lazy-ly' @@ -10879,6 +11797,35 @@ group: 0, tag: 'Adverb', reason: 'bit-1' + }, // is well + { + match: '#Copula [#Adverb]$', + group: 0, + tag: 'Adjective', + reason: 'is-well' + }, // a bit cold + { + match: 'a [(little|bit|wee) bit?] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'a-bit-cold' + }, // dark green + { + match: "[".concat(adjectives, "] #Adjective"), + group: 0, + tag: 'Adverb', + reason: 'dark-green' + }, // kinda sparkly + { + match: "#Adverb [#Adverb]$", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly' + }, { + match: "#Adverb [#Adverb] (and|or|then)", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly-and' }]; var _06Value = [// ==== PhoneNumber ==== //1 800 ... @@ -10892,6 +11839,7 @@ tag: 'PhoneNumber', reason: '(800) PhoneNumber' }, // ==== Currency ==== + // chinese yuan { match: '#Demonym #Currency', tag: 'Currency', @@ -10902,11 +11850,6 @@ group: 0, tag: 'Ordinal', reason: 'second-noun' - }, // ==== Money ==== - { - match: '#Value+ #Currency', - tag: 'Money', - reason: '15 usd' }, // ==== Unit ==== //5 yan { @@ -10926,19 +11869,30 @@ reason: 'minus-value' }, //5 kg. { - match: '#Value #Abbreviation', - tag: 'Value', + match: '#Value [#Abbreviation]', + group: 0, + tag: 'Unit', reason: 'value-abbr' + }, { + match: '#Value [k]', + group: 0, + tag: 'Unit', + reason: 'value-k' + }, { + match: '#Unit an hour', + tag: 'Unit', + reason: 'unit-an-hour' }, //seven point five { match: '#Value (point|decimal) #Value', tag: 'Value', reason: 'value-point-value' - }, // ten grand + }, // ten bucks { - match: '#Value grand', - tag: 'Value', - reason: 'value-grand' + match: '(#Value|a) [(buck|bucks|grand)]', + group: 0, + tag: 'Currency', + reason: 'value-bucks' }, //quarter million { match: '#Determiner [(half|quarter)] #Ordinal', @@ -10949,6 +11903,12 @@ match: 'a #Value', tag: 'Value', reason: 'a-value' + }, // ==== Money ==== + { + match: '[#Value+] #Currency', + group: 0, + tag: 'Money', + reason: '15 usd' }, // thousand and two { match: "(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value", @@ -10956,13 +11916,57 @@ reason: 'magnitude-and-value' }, //'a/an' can mean 1 - "a hour" { - match: '[(a|an)] (#Duration|hundred|thousand|million|billion|trillion)', + match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)', group: 0, tag: 'Value', reason: 'a-is-one' }]; - var verbs$1 = '(pat|wade|ollie|will|rob|buck|bob|mark|jack)'; - var list$3 = [// ==== Tense ==== + var verbs = "(".concat(_ambig.personVerb.join('|'), ")"); + var list$2 = [// adj -> gerund + // amusing his aunt + { + match: '[#Adjective] #Possessive #Noun', + group: 0, + tag: 'Verb', + reason: 'gerund-his-noun' + }, // loving you + { + match: '[#Adjective] (us|you)', + group: 0, + tag: 'Gerund', + reason: 'loving-you' + }, // slowly stunning + { + match: '(slowly|quickly) [#Adjective]', + group: 0, + tag: 'Gerund', + reason: 'slowly-adj' + }, // like + { + match: '(#Modal|i|they|we|do) not? [like]', + group: 0, + tag: 'PresentTense', + reason: 'modal-like' + }, // do not simply like + { + match: 'do (simply|just|really|not)+ [(#Adjective|like)]', + group: 0, + tag: 'Verb', + reason: 'do-simply-like' + }, // does mean + { + match: 'does (#Adverb|not)? [#Adjective]', + group: 0, + tag: 'PresentTense', + reason: 'does-mean' + }, // i mean + { + match: 'i (#Adverb|do)? not? [mean]', + group: 0, + tag: 'PresentTense', + reason: 'i-mean' + }, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' }, + // ==== Tense ==== //he left { match: '#Noun #Adverb? [left]', @@ -10990,7 +11994,7 @@ reason: 'had-walked' }, //would walk { - match: "[(#Modal|did) (#Adverb|not)+?] #Verb", + match: "[#Adverb+? (#Modal|did)+ (#Adverb|not)+?] #Verb", group: 0, tag: 'Auxiliary', reason: 'modal-verb' @@ -11001,35 +12005,20 @@ tag: 'Auxiliary', reason: 'would-have' }, //would be walking - { - match: "#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'would-be' - }, //had been walking - { - match: "(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'had-been' - }, //was walking - { - match: "[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)", - group: 0, - tag: 'Auxiliary', - reason: 'copula-walking' - }, //support a splattering of auxillaries before a verb + // { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' }, + //had been walking + // { + // match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`, + // group: 0, + // tag: 'Auxiliary', + // reason: 'had-been', + // }, + //support a splattering of auxillaries before a verb { match: "[(has|had) (#Adverb|not)+?] #PastTense", group: 0, tag: 'Auxiliary', reason: 'had-walked' - }, //would walk - { - match: "[(#Modal|did) (#Adverb|not)+?] #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'modal-verb' }, // will walk { match: '[(do|does|will|have|had)] (not|#Adverb)? #Verb', @@ -11048,7 +12037,15 @@ group: 0, tag: 'Auxiliary', reason: 'would-be' - }, //would have had + }, //were being run + { + match: "(were|was) being [#PresentTense]", + group: 0, + tag: 'PastTense', + reason: 'was-being' + }, //have run + // { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' }, + //would have had { match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", group: 0, @@ -11060,26 +12057,28 @@ group: 0, tag: 'Auxiliary', reason: 'had-been' + }, // was being driven + { + match: '[(be|being|been)] #Participle', + group: 0, + tag: 'Auxiliary', + reason: 'being-foo' }, // ==== Phrasal ==== //'foo-up' { match: '(#Verb && @hasHyphen) up', - group: 0, tag: 'PhrasalVerb', reason: 'foo-up' }, { match: '(#Verb && @hasHyphen) off', - group: 0, tag: 'PhrasalVerb', reason: 'foo-off' }, { match: '(#Verb && @hasHyphen) over', - group: 0, tag: 'PhrasalVerb', reason: 'foo-over' }, { match: '(#Verb && @hasHyphen) out', - group: 0, tag: 'PhrasalVerb', reason: 'foo-out' }, //fall over @@ -11088,6 +12087,12 @@ group: 0, tag: 'Particle', reason: 'phrasal-particle' + }, //back it up + { + match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]', + group: 0, + tag: 'Adverb', + reason: 'phrasal-pronoun-advb' }, // ==== Copula ==== //will be running (not copula) { @@ -11121,12 +12126,8 @@ tag: 'Infinitive', reason: 'let-him-glue' }, //he quickly foo - { - match: '#Noun #Adverb [#Noun]', - group: 0, - tag: 'Verb', - reason: 'quickly-foo' - }, //will secure our + // { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' }, + //will secure our { match: 'will [#Adjective]', group: 0, @@ -11144,25 +12145,43 @@ group: 0, tag: 'Verb', reason: 'adj-to' + }, // open the door + { + match: '[open] #Determiner', + group: 0, + tag: 'Infinitive', + reason: 'open-the' + }, // compromises are possible + { + match: '[#PresentTense] (are|were|was) #Adjective', + group: 0, + tag: 'Plural', + reason: 'compromises-are-possible' }, // would wade { - match: "#Modal [".concat(verbs$1, "]"), + match: "#Modal [".concat(verbs, "]"), group: 0, tag: 'Verb', reason: 'would-mark' }, { - match: "#Adverb [".concat(verbs$1, "]"), + match: "#Adverb [".concat(verbs, "]"), group: 0, tag: 'Verb', reason: 'really-mark' + }, //to mark + { + match: '(to|#Modal) [mark]', + group: 0, + tag: 'PresentTense', + reason: 'to-mark' }, // wade smith { - match: "".concat(verbs$1, " #Person"), + match: "".concat(verbs, " #Person"), tag: 'Person', reason: 'rob-smith' }, // wade m. Cooper { - match: "".concat(verbs$1, " #Acronym? #ProperNoun"), + match: "".concat(verbs, " #Acronym #ProperNoun"), tag: 'Person', reason: 'rob-a-smith' }, // damn them @@ -11182,9 +12201,8 @@ tag: 'Verb', reason: 'swear3-verb' }]; - var _07Verbs = list$3; - var places = '(paris|alexandria|houston|kobe|salvador|sydney)'; - var list$4 = [// ==== Region ==== + var _07Verbs = list$2; + var list$1 = [// ==== Region ==== //West Norforlk { match: '(west|north|south|east|western|northern|southern|eastern)+ #Place', @@ -11192,10 +12210,16 @@ reason: 'west-norfolk' }, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..) { - match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|or|pa|sc|tn|tx|ut|vt|pr)]', + 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)]', group: 0, tag: 'Region', reason: 'us-state' + }, // portland oregon + { + match: 'portland [or]', + group: 0, + tag: 'Region', + reason: 'portland-or' }, //Foo District { match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)', @@ -11206,50 +12230,28 @@ match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun', tag: 'Region', reason: 'district-of-Foo' - }, // ==== Address ==== - { - match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)', - tag: 'Address', - reason: 'address-st' - }, // in houston + }, // in Foo California { - match: "in [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'in-paris' - }, { - match: "near [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'near-paris' - }, { - match: "at [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'at-paris' - }, { - match: "from [".concat(places, "]"), + match: 'in [#ProperNoun] #Place', group: 0, tag: 'Place', - reason: 'from-paris' - }, { - match: "to [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'to-paris' - }, { - match: "#Place [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'tokyo-paris' - }, // houston texas + reason: 'propernoun-place' + }, // ==== Address ==== { - match: "[".concat(places, "] #Place"), - group: 0, - tag: 'Place', - reason: 'paris-france' - }]; - var _08Place = list$4; + match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)', + tag: 'Address', + reason: 'address-st' + } // in houston + // { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' }, + // { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' }, + // { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' }, + // { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' }, + // { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' }, + // { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' }, + // // houston texas + // { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' }, + ]; + var _08Place = list$1; var _09Org = [//John & Joe's { match: '#Noun (&|n) #Noun', @@ -11294,10 +12296,10 @@ tag: 'School', reason: 'noun-public-school' }]; - var nouns$1 = '(rose|robin|dawn|ray|holly|bill|joy|viola|penny|sky|violet|daisy|melody|kelvin|hope|mercedes|olive|jewel|faith|van|charity|miles|lily|summer|dolly|rod|dick|cliff|lane|reed|kitty|art|jean|trinity)'; - var months = '(january|april|may|june|jan|sep)'; //summer|autumn - - var list$5 = [// ==== Honorific ==== + var nouns = "(".concat(_ambig.personNoun.join('|'), ")"); + var months = "(".concat(_ambig.personMonth.join('|'), ")"); + var places = "(".concat(_ambig.personPlace.join('|'), ")"); + var list = [// ==== Honorific ==== { match: '[(1st|2nd|first|second)] #Honorific', group: 0, @@ -11346,11 +12348,17 @@ tag: 'Person', reason: 'possessive-name' }, { - match: '#Acronym #ProperNoun', + 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', tag: 'Person', - reason: 'acronym-titlecase', + reason: 'titlecase-acronym-titlecase', safe: true }, //ludwig van beethovan + { + match: '#Acronym #LastName', + tag: 'Person', + reason: 'acronym-latname', + safe: true + }, //jk rowling { match: '#Person (jr|sr|md)', tag: 'Person', @@ -11381,14 +12389,24 @@ { match: '#Noun van der? #Noun', tag: 'Person', - reason: 'von der noun', + reason: 'van der noun', safe: true }, //king of spain { - match: '(king|queen|prince|saint|lady) of? #Noun', + match: '(king|queen|prince|saint|lady) of #Noun', tag: 'Person', reason: 'king-of-noun', safe: true + }, //lady Florence + { + match: '(prince|lady) #Place', + tag: 'Person', + reason: 'lady-place' + }, //saint Foo + { + match: '(king|queen|prince|saint) #ProperNoun', + tag: 'Person', + reason: 'saint-foo' }, //Foo U Ford { match: '[#ProperNoun] #Person', @@ -11439,13 +12457,13 @@ reason: 'bill-green' }, // faith smith { - match: "".concat(nouns$1, " #Person"), + match: "".concat(nouns, " #Person"), tag: 'Person', reason: 'ray-smith', safe: true }, // faith m. Smith { - match: "".concat(nouns$1, " #Acronym? #ProperNoun"), + match: "".concat(nouns, " #Acronym? #ProperNoun"), tag: 'Person', reason: 'ray-a-smith', safe: true @@ -11462,23 +12480,21 @@ tag: 'Person', reason: 'infinitive-person' }, // may waits for - { - match: "[".concat(months, "] #PresentTense for"), - group: 0, - tag: 'Person', - reason: 'ambig-active-for' - }, // may waits for - { - match: "[".concat(months, "] #PresentTense to"), - group: 0, - tag: 'Person', - reason: 'ambig-active-to' - }, // april will + // { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, + // may waits to + // { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, + // april will { match: "[".concat(months, "] #Modal"), group: 0, tag: 'Person', reason: 'ambig-modal' + }, // may be + { + match: "[may] be", + group: 0, + tag: 'Verb', + reason: 'may-be' }, // would april { match: "#Modal [".concat(months, "]"), @@ -11581,13 +12597,25 @@ tag: 'Person', reason: 'n-acro-noun', safe: true + }, //Anthony de Marco + { + match: '#FirstName [(de|di|du|van|von) #Person]', + group: 0, + tag: 'LastName', + reason: 'de-firstname' + }, // Paris Berelc + { + match: "[".concat(places, "] (#ProperNoun && !#Place)"), + group: 0, + tag: 'FirstName', + reason: 'place-firstname' }]; - var _10People = list$5; + var _10People = list; var matches = []; matches = matches.concat(_01Misc); matches = matches.concat(_02Dates); - matches = matches.concat(_03Noun); - matches = matches.concat(_04Adjective); + matches = matches.concat(_03Adjective); + matches = matches.concat(_04Noun); matches = matches.concat(_05Adverb); matches = matches.concat(_06Value); matches = matches.concat(_07Verbs); @@ -11595,7 +12623,7 @@ matches = matches.concat(_09Org); matches = matches.concat(_10People); // cache the easier conditions up-front - var cacheRequired$1 = function cacheRequired(reg) { + var cacheRequired = function cacheRequired(reg) { var needTags = []; var needWords = []; reg.forEach(function (obj) { @@ -11615,26 +12643,27 @@ tags: _unique(needTags), words: _unique(needWords) }; - }; + }; // for speed, enumerate (a|b|c) to three matches + var allLists = function allLists(m) { var more = []; var lists = m.reg.filter(function (r) { - return r.oneOf !== undefined; + return r.fastOr !== undefined; }); if (lists.length === 1) { var i = m.reg.findIndex(function (r) { - return r.oneOf !== undefined; + return r.fastOr !== undefined; }); - Object.keys(m.reg[i].oneOf).forEach(function (w) { + Object.keys(m.reg[i].fastOr).forEach(function (w) { var newM = Object.assign({}, m); newM.reg = newM.reg.slice(0); newM.reg[i] = Object.assign({}, newM.reg[i]); newM.reg[i].word = w; delete newM.reg[i].operator; - delete newM.reg[i].oneOf; - newM.reason += '-' + w; + delete newM.reg[i].fastOr; // newM.reason += '-' + w + more.push(newM); }); } @@ -11645,19 +12674,21 @@ var all = []; matches.forEach(function (m) { - m.reg = syntax_1(m.match); + m.reg = matchSyntax(m.match); var enumerated = allLists(m); if (enumerated.length > 0) { all = all.concat(enumerated); } else { - all.push(m); + all.push(m); // console.log(m) } }); all.forEach(function (m) { - m.required = cacheRequired$1(m.reg); + m.required = cacheRequired(m.reg); return m; - }); + }); // console.log(all.length) + // console.log(all[all.length - 1]) + var matches_1 = all; var hasEvery = function hasEvery(chances) { @@ -11753,15 +12784,17 @@ var _02Tagger = tagger; - var addMethod = function addMethod(Doc) { + var addMethod$a = function addMethod(Doc) { /** */ var Abbreviations = /*#__PURE__*/function (_Doc) { _inherits(Abbreviations, _Doc); + var _super = _createSuper(Abbreviations); + function Abbreviations() { _classCallCheck(this, Abbreviations); - return _possibleConstructorReturn(this, _getPrototypeOf(Abbreviations).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Abbreviations, [{ @@ -11806,18 +12839,20 @@ return Doc; }; - var Abbreviations = addMethod; + var Abbreviations = addMethod$a; var hasPeriod = /\./; - var addMethod$1 = function addMethod(Doc) { + var addMethod$9 = function addMethod(Doc) { /** */ var Acronyms = /*#__PURE__*/function (_Doc) { _inherits(Acronyms, _Doc); + var _super = _createSuper(Acronyms); + function Acronyms() { _classCallCheck(this, Acronyms); - return _possibleConstructorReturn(this, _getPrototypeOf(Acronyms).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Acronyms, [{ @@ -11865,15 +12900,16 @@ return Doc; }; - var Acronyms = addMethod$1; + var Acronyms = addMethod$9; - var addMethod$2 = function addMethod(Doc) { + var addMethod$8 = function addMethod(Doc) { /** split into approximate sub-sentence phrases */ Doc.prototype.clauses = function (n) { // an awkward way to disambiguate a comma use var commas = this["if"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool... .notIf('@hasComma . .? (and|or) .') //cool, and fun .notIf('(#City && @hasComma) #Country') //'toronto, canada' + .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd' .notIf('(#Date && @hasComma) #Year') //'july 6, 1992' .notIf('@hasComma (too|also)$') //at end of sentence .match('@hasComma'); @@ -11925,19 +12961,21 @@ return Doc; }; - var Clauses = addMethod$2; + var Clauses = addMethod$8; - var addMethod$3 = function addMethod(Doc) { + var addMethod$7 = function addMethod(Doc) { /** */ var Contractions = /*#__PURE__*/function (_Doc) { _inherits(Contractions, _Doc); + var _super = _createSuper(Contractions); + function Contractions(list, from, world) { var _this; _classCallCheck(this, Contractions); - _this = _possibleConstructorReturn(this, _getPrototypeOf(Contractions).call(this, list, from, world)); + _this = _super.call(this, list, from, world); _this.contracted = null; return _this; } @@ -11999,9 +13037,9 @@ return Doc; }; - var Contractions = addMethod$3; + var Contractions = addMethod$7; - var addMethod$4 = function addMethod(Doc) { + var addMethod$6 = function addMethod(Doc) { //pull it apart.. var parse = function parse(doc) { var things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?'); @@ -12019,17 +13057,19 @@ var Lists = /*#__PURE__*/function (_Doc) { _inherits(Lists, _Doc); + var _super = _createSuper(Lists); + function Lists() { _classCallCheck(this, Lists); - return _possibleConstructorReturn(this, _getPrototypeOf(Lists).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Lists, [{ key: "conjunctions", - + value: /** coordinating conjunction */ - value: function conjunctions() { + function conjunctions() { return this.match('(and|or)'); } /** split-up by list object */ @@ -12127,7 +13167,7 @@ return Doc; }; - var Lists = addMethod$4; + var Lists = addMethod$6; var noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace' var hasPlural = function hasPlural(doc) { @@ -12144,7 +13184,7 @@ }; var hasPlural_1 = hasPlural; - var irregulars$5 = { + var irregulars = { hour: 'an', heir: 'an', heirloom: 'an', @@ -12187,8 +13227,8 @@ var str = doc.text('normal').trim(); //explicit irregular forms - if (irregulars$5.hasOwnProperty(str)) { - return irregulars$5[str]; + if (irregulars.hasOwnProperty(str)) { + return irregulars[str]; } //spelled-out acronyms @@ -12215,20 +13255,20 @@ var getArticle = makeArticle; //similar to plural/singularize rules, but not the same - var isPlural$1 = [/(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 + var 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 - var 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, /(^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]; - var _rules$2 = { - isSingular: isSingular$1, - isPlural: isPlural$1 + var 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]; + var _rules = { + isSingular: isSingular, + isPlural: isPlural$2 }; var endS = /s$/; // double-check this term, if it is not plural, or singular. // (this is a partial copy of ./tagger/fallbacks/plural) // fallback plural if it ends in an 's'. - var isPlural$2 = function isPlural(str) { + var isPlural$1 = function isPlural(str) { // isSingular suffix rules - if (_rules$2.isSingular.find(function (reg) { + if (_rules.isSingular.find(function (reg) { return reg.test(str); })) { return false; @@ -12240,7 +13280,7 @@ } // is it a plural like 'fungi'? - if (_rules$2.isPlural.find(function (reg) { + if (_rules.isPlural.find(function (reg) { return reg.test(str); })) { return true; @@ -12249,7 +13289,7 @@ return null; }; - var isPlural_1$1 = isPlural$2; + var isPlural_1$1 = isPlural$1; var exceptions = { he: 'his', she: 'hers', @@ -12306,7 +13346,7 @@ }; var parse_1 = parse$1; - var methods$6 = { + var methods$2 = { /** overload the original json with noun information */ json: function json(options) { var n = null; @@ -12386,7 +13426,7 @@ var toSingular = this.world.transforms.toSingular; this.forEach(function (doc) { - if (doc.has('#Singular') || hasPlural_1(doc) === false) { + if (doc.has('^#Singular+$') || hasPlural_1(doc) === false) { return; } // double-check it isn't an un-tagged plural @@ -12423,17 +13463,19 @@ return this; } }; - var methods_1 = methods$6; + var methods_1 = methods$2; var addMethod$5 = function addMethod(Doc) { /** */ var Nouns = /*#__PURE__*/function (_Doc) { _inherits(Nouns, _Doc); + var _super = _createSuper(Nouns); + function Nouns() { _classCallCheck(this, Nouns); - return _possibleConstructorReturn(this, _getPrototypeOf(Nouns).apply(this, arguments)); + return _super.apply(this, arguments); } return Nouns; @@ -12443,20 +13485,31 @@ Object.assign(Nouns.prototype, methods_1); Doc.prototype.nouns = function (n) { - // don't split 'paris, france' + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // don't split 'paris, france' + var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas var m = this.not(keep).splitAfter('@hasComma'); // combine them back together - m = m.concat(keep); + m = m.concat(keep); // don't combine over scare-quotes + + var quotes = m.quotations(); + + if (quotes.found) { + m = m.splitOn(quotes.eq(0)); + } + m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons - m = m.not('#Pronoun'); - m = m.not('(there|these)'); - m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays - // //allow possessives like "spencer's", but not generic ones like, + if (opts.keep_anaphora !== true) { + m = m.not('#Pronoun'); + m = m.not('(there|these)'); + m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays + // //allow possessives like "spencer's", but not generic ones like, + + m = m.not('(my|our|your|their|her|his)'); + } - m = m.not('(my|our|your|their|her|his)'); m = m.not('(of|for|by|the)$'); if (typeof n === 'number') { @@ -12473,22 +13526,24 @@ var open = /\(/; var close = /\)/; - var addMethod$6 = function addMethod(Doc) { + var addMethod$4 = function addMethod(Doc) { /** anything between (these things) */ var Parentheses = /*#__PURE__*/function (_Doc) { _inherits(Parentheses, _Doc); + var _super = _createSuper(Parentheses); + function Parentheses() { _classCallCheck(this, Parentheses); - return _possibleConstructorReturn(this, _getPrototypeOf(Parentheses).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Parentheses, [{ key: "unwrap", - + value: /** remove the parentheses characters */ - value: function unwrap() { + function unwrap() { this.list.forEach(function (p) { var first = p.terms(0); first.pre = first.pre.replace(open, ''); @@ -12540,19 +13595,21 @@ return Doc; }; - var Parentheses = addMethod$6; + var Parentheses = addMethod$4; - var addMethod$7 = function addMethod(Doc) { + var addMethod$3 = function addMethod(Doc) { /** */ var Possessives = /*#__PURE__*/function (_Doc) { _inherits(Possessives, _Doc); + var _super = _createSuper(Possessives); + function Possessives(list, from, world) { var _this; _classCallCheck(this, Possessives); - _this = _possibleConstructorReturn(this, _getPrototypeOf(Possessives).call(this, list, from, world)); + _this = _super.call(this, list, from, world); _this.contracted = null; return _this; } @@ -12599,7 +13656,7 @@ return Doc; }; - var Possessives = addMethod$7; + var Possessives = addMethod$3; var pairs = { "\"": "\"", // 'StraightDoubleQuotes' @@ -12642,22 +13699,24 @@ }; var hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')'); - var addMethod$8 = function addMethod(Doc) { + var addMethod$2 = function addMethod(Doc) { /** "these things" */ var Quotations = /*#__PURE__*/function (_Doc) { _inherits(Quotations, _Doc); + var _super = _createSuper(Quotations); + function Quotations() { _classCallCheck(this, Quotations); - return _possibleConstructorReturn(this, _getPrototypeOf(Quotations).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Quotations, [{ key: "unwrap", - + value: /** remove the quote characters */ - value: function unwrap() { + function unwrap() { return this; } }]); @@ -12710,12 +13769,14 @@ return Doc; }; - var Quotations = addMethod$8; // walked => walk - turn a verb into it's root form + var Quotations = addMethod$2; // walked => walk - turn a verb into it's root form - var toInfinitive$1 = function toInfinitive(parsed, world) { - var verb = parsed.verb; //1. if it's already infinitive + var toInfinitive = function toInfinitive(parsed, world) { + var verb = parsed.verb; // console.log(parsed) + // verb.debug() + //1. if it's already infinitive - var str = verb.text('normal'); + var str = verb.text('reduced'); if (verb.has('#Infinitive')) { return str; @@ -12739,7 +13800,7 @@ return world.transforms.toInfinitive(str, world, tense); }; - var toInfinitive_1$1 = toInfinitive$1; // spencer walks -> singular + var toInfinitive_1 = toInfinitive; // spencer walks -> singular // we walk -> plural // the most-recent noun-phrase, before this verb. @@ -12751,7 +13812,7 @@ // othertimes you need its subject 'we walk' vs 'i walk' - var isPlural$3 = function isPlural(parsed) { + var isPlural$4 = function isPlural(parsed) { var vb = parsed.verb; if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) { @@ -12780,7 +13841,7 @@ return null; }; - var isPlural_1$2 = isPlural$3; // #Copula : is -> 'is not' + var isPlural_1 = isPlural$4; // #Copula : is -> 'is not' // #PastTense : walked -> did not walk // #PresentTense : walks -> does not walk // #Gerund : walking: -> not walking @@ -12795,7 +13856,12 @@ if (parsed.auxiliary.found) { - parsed.auxiliary.eq(0).append('not'); + parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have' + + if (parsed.auxiliary.has('#Modal have not')) { + parsed.auxiliary.replace('have not', 'not have'); + } + return; } // is walking -> is not walking @@ -12807,7 +13873,7 @@ if (vb.has('#PastTense')) { - var inf = toInfinitive_1$1(parsed, world); + var inf = toInfinitive_1(parsed, world); vb.replaceWith(inf, true); vb.prepend('did not'); return; @@ -12815,11 +13881,11 @@ if (vb.has('#PresentTense')) { - var _inf = toInfinitive_1$1(parsed, world); + var _inf = toInfinitive_1(parsed, world); vb.replaceWith(_inf, true); - if (isPlural_1$2(parsed)) { + if (isPlural_1(parsed)) { vb.prepend('do not'); } else { vb.prepend('does not'); @@ -12830,7 +13896,7 @@ if (vb.has('#Gerund')) { - var _inf2 = toInfinitive_1$1(parsed, world); + var _inf2 = toInfinitive_1(parsed, world); vb.replaceWith(_inf2, true); vb.prepend('not'); @@ -12838,7 +13904,7 @@ } //fallback 1: walk -> does not walk - if (isPlural_1$2(parsed)) { + if (isPlural_1(parsed)) { vb.prepend('does not'); return; } //fallback 2: walk -> do not walk @@ -12848,7 +13914,25 @@ return; }; - var toNegative_1 = toNegative; // turn 'would not really walk up' into parts + var toNegative_1 = toNegative; // who/what is doing this verb? + // get the prior verb most-likely doing this action + // (it can not-exist - 'close the door') + + var getSubject = function getSubject(vb) { + var behind = vb.lookBehind(); + var lastNoun = behind.nouns(null, { + keep_anaphora: true + }).last(); // support 'that' and 'this' + + if (!lastNoun.found) { + lastNoun = behind.match('(that|this|each)').last(); + lastNoun = lastNoun.tag('#Noun').nouns(); + } + + return lastNoun; + }; + + var getSubject_1 = getSubject; var parseVerb = function parseVerb(vb) { var parsed = { @@ -12856,11 +13940,13 @@ // 'really' negative: vb.match('#Negative'), // 'not' - auxiliary: vb.match('#Auxiliary').not('(#Negative|#Adverb)'), + auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'), // 'will' of 'will go' particle: vb.match('#Particle'), // 'up' of 'pull up' - verb: vb.match('#Verb').not('(#Adverb|#Negative|#Auxiliary|#Particle)') + verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'), + original: vb, + subject: getSubject_1(vb) }; // fallback, if no verb found if (!parsed.verb.found) { @@ -12885,12 +13971,12 @@ return parsed; }; - var parse$2 = parseVerb; + var parse = parseVerb; /** too many special cases for is/was/will be*/ var toBe = function toBe(parsed) { var isI = false; - var plural = isPlural_1$2(parsed); + var plural = isPlural_1(parsed); var isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) { // isI = true; @@ -12936,17 +14022,67 @@ return obj; }; - var toBe_1 = toBe; + var toBe_1 = toBe; // 'may/could/should' -> 'may/could/should have' + + var doModal = function doModal(parsed) { + var str = parsed.verb.text(); + var res = { + PastTense: str + ' have', + PresentTense: str, + FutureTense: str, + Infinitive: str // Gerund: , + // Actor: '', + // PerfectTense: '', + // Pluperfect: '', + + }; + return res; + }; + + var doModal_1 = doModal; - var conjugate$2 = function conjugate(parsed, world) { + var conjugate = function conjugate(parsed, world) { var verb = parsed.verb; //special handling of 'is', 'will be', etc. if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) { return toBe_1(parsed); - } + } // special handling of 'are walking' + + + if (parsed.auxiliary.has('are') && verb.has('#Gerund')) { + var og = parsed.original.clone(); + var past = og.clone().replace('are', 'were'); + var fut = og.clone().replace('are', 'will be'); + + var _infinitive = toInfinitive_1(parsed, world); + + var res = { + PastTense: past.text(), + PresentTense: og.text(), + FutureTense: fut.text(), + Infinitive: _infinitive + }; + return res; + } // special handling of 'he could.' + + + if (verb.has('#Modal')) { + return doModal_1(parsed); + } // dont conjugate imperative form - 'close the door' + // if (parsed.auxiliary.has('do')) { + // let str = parsed.original.text() + // let res = { + // PastTense: str, + // PresentTense: str, + // FutureTense: str, + // Infinitive: str, + // } + // return res + // } + var hasHyphen = parsed.verb.termList(0).hasHyphen(); - var infinitive = toInfinitive_1$1(parsed, world); + var infinitive = toInfinitive_1(parsed, world); if (!infinitive) { return {}; @@ -12962,23 +14098,16 @@ return forms[k] += space + particle; }); } //put the adverb at the end? - - - if (parsed.adverb.found) { - var adverb = parsed.adverb.text(); - - var _space = hasHyphen === true ? '-' : ' '; - - if (parsed.adverbAfter === true) { - Object.keys(forms).forEach(function (k) { - return forms[k] += _space + adverb; - }); - } else { - Object.keys(forms).forEach(function (k) { - return forms[k] = adverb + _space + forms[k]; - }); - } - } //apply negative + // if (parsed.adverb.found) { + // let adverb = parsed.adverb.text() + // let space = hasHyphen === true ? '-' : ' ' + // if (parsed.adverbAfter === true) { + // Object.keys(forms).forEach(k => (forms[k] += space + adverb)) + // } else { + // Object.keys(forms).forEach(k => (forms[k] = adverb + space + forms[k])) + // } + // } + //apply negative var isNegative = parsed.negative.found; @@ -13005,8 +14134,82 @@ return forms; }; - var conjugate_1$1 = conjugate$2; - var methods$7 = { + var conjugate_1 = conjugate; // if something is 'modal-ish' we are forced to use past-participle + // ('i could drove' is wrong) + + var useParticiple$1 = function useParticiple(parsed) { + if (parsed.auxiliary.has('(could|should|would|may|can|must)')) { + return true; + } + + if (parsed.auxiliary.has('am .+? being')) { + return true; + } + + if (parsed.auxiliary.has('had .+? been')) { + return true; + } + + return false; + }; // conjugate 'drive' ➔ 'have driven' + + + var toParticiple = function toParticiple(parsed, world) { + //is it already a participle? + if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) { + return; + } // try to swap the main verb to its participle form + + + var obj = conjugate_1(parsed, world); + var str = obj.Participle || obj.PastTense; + + if (str) { + parsed.verb.replaceWith(str, false); + } // 'am being driven' ➔ 'have been driven' + + + if (parsed.auxiliary.has('am .+? being')) { + parsed.auxiliary.remove('am'); + parsed.auxiliary.replace('being', 'have been'); + } // add a 'have' + + + if (!parsed.auxiliary.has('have')) { + parsed.auxiliary.append('have'); + } // tag it as a participle + + + parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim' + + parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been' + + parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not' + + parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right + + parsed.auxiliary.tag('Auxiliary'); + }; + + var participle = { + useParticiple: useParticiple$1, + toParticiple: toParticiple + }; + var _toParticiple = participle.toParticiple, + useParticiple = participle.useParticiple; // remove any tense-information in auxiliary verbs + + var makeNeutral = function makeNeutral(parsed) { + //remove tense-info from auxiliaries + parsed.auxiliary.remove('(will|are|am|being)'); + parsed.auxiliary.remove('(did|does)'); + parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle + + parsed.particle.remove(); + parsed.negative.remove(); + return parsed; + }; + + var methods$1 = { /** overload the original json with verb information */ json: function json(options) { var _this = this; @@ -13027,7 +14230,7 @@ var res = []; this.forEach(function (p) { var json = p.json(options)[0]; - var parsed = parse$2(p); + var parsed = parse(p); json.parts = {}; Object.keys(parsed).forEach(function (k) { if (parsed[k] && parsed[k].isA === 'Doc') { @@ -13037,7 +14240,7 @@ } }); json.isNegative = p.has('#Negative'); - json.conjugations = conjugate_1$1(parsed, _this.world); + json.conjugations = conjugate_1(parsed, _this.world); res.push(json); }); @@ -13053,7 +14256,7 @@ var list = []; // look at internal adverbs this.forEach(function (vb) { - var advb = parse$2(vb).adverb; + var advb = parse(vb).adverb; if (advb.found) { list = list.concat(advb.list); @@ -13075,6 +14278,7 @@ return this.buildFrom(list); }, + /// Verb Inflection /**return verbs like 'we walk' and not 'spencer walks' */ isPlural: function isPlural() { @@ -13082,9 +14286,9 @@ var list = []; this.forEach(function (vb) { - var parsed = parse$2(vb); + var parsed = parse(vb); - if (isPlural_1$2(parsed, _this2.world) === true) { + if (isPlural_1(parsed, _this2.world) === true) { list.push(vb.list[0]); } }); @@ -13097,50 +14301,74 @@ var list = []; this.forEach(function (vb) { - var parsed = parse$2(vb); + var parsed = parse(vb); - if (isPlural_1$2(parsed, _this3.world) === false) { + if (isPlural_1(parsed, _this3.world) === false) { list.push(vb.list[0]); } }); return this.buildFrom(list); }, + /// Conjugation - /** */ + /** return all forms of this verb */ conjugate: function conjugate() { var _this4 = this; var result = []; this.forEach(function (vb) { - var parsed = parse$2(vb); - var forms = conjugate_1$1(parsed, _this4.world); + var parsed = parse(vb); + var forms = conjugate_1(parsed, _this4.world); result.push(forms); }); return result; }, - /** */ + /** walk ➔ walked*/ toPastTense: function toPastTense() { var _this5 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var str = conjugate_1$1(parsed, _this5.world).PastTense; + var parsed = parse(vb); // should we support 'would swim' ➔ 'would have swam' + + if (useParticiple(parsed)) { + _toParticiple(parsed, _this5.world); + + return; + } + + if (vb.has('#Imperative')) { + return; + } // don't conjugate 'to be' + + + if (vb.has('be') && vb.lookBehind('to$').found) { + return; + } // handle 'is raining' -> 'was raining' + + + if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) { + vb.replace('is', 'was'); + return; + } + + var str = conjugate_1(parsed, _this5.world).PastTense; if (str) { - vb.replaceWith(str, false); // vb.tag('PastTense') + parsed = makeNeutral(parsed); + parsed.verb.replaceWith(str, false); // vb.tag('PastTense') } }); return this; }, - /** */ + /** walk ➔ walks */ toPresentTense: function toPresentTense() { var _this6 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var obj = conjugate_1$1(parsed, _this6.world); + var parsed = parse(vb); + var obj = conjugate_1(parsed, _this6.world); var str = obj.PresentTense; // 'i look', not 'i looks' if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) { @@ -13148,36 +14376,59 @@ } if (str) { - vb.replaceWith(str, false); - vb.tag('PresentTense'); + //awkward support for present-participle form + // -- should we support 'have been swimming' ➔ 'am swimming' + if (parsed.auxiliary.has('(have|had) been')) { + parsed.auxiliary.replace('(have|had) been', 'am being'); + + if (obj.Particle) { + str = obj.Particle || obj.PastTense; + } + + return; + } + + parsed.verb.replaceWith(str, false); + parsed.verb.tag('PresentTense'); + parsed = makeNeutral(parsed); // avoid 'he would walks' + + parsed.auxiliary.remove('#Modal'); } }); return this; }, - /** */ + /** walk ➔ will walk*/ toFutureTense: function toFutureTense() { var _this7 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var str = conjugate_1$1(parsed, _this7.world).FutureTense; + var parsed = parse(vb); // 'i should drive' is already future-enough + + if (useParticiple(parsed)) { + return; + } + + var str = conjugate_1(parsed, _this7.world).FutureTense; if (str) { - vb.replaceWith(str, false); - vb.tag('FutureTense'); + parsed = makeNeutral(parsed); // avoid 'he would will go' + + parsed.auxiliary.remove('#Modal'); + parsed.verb.replaceWith(str, false); + parsed.verb.tag('FutureTense'); } }); return this; }, - /** */ + /** walks ➔ walk */ toInfinitive: function toInfinitive() { var _this8 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var str = conjugate_1$1(parsed, _this8.world).Infinitive; + var parsed = parse(vb); + var str = conjugate_1(parsed, _this8.world).Infinitive; if (str) { vb.replaceWith(str, false); @@ -13187,13 +14438,13 @@ return this; }, - /** */ + /** walk ➔ walking */ toGerund: function toGerund() { var _this9 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var str = conjugate_1$1(parsed, _this9.world).Gerund; + var parsed = parse(vb); + var str = conjugate_1(parsed, _this9.world).Gerund; if (str) { vb.replaceWith(str, false); @@ -13203,6 +14454,26 @@ return this; }, + /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */ + toParticiple: function toParticiple() { + var _this10 = this; + + this.forEach(function (vb) { + var parsed = parse(vb); + var noAux = !parsed.auxiliary.found; + + _toParticiple(parsed, _this10.world); // dirty trick to ensure our new auxiliary is found + + + if (noAux) { + parsed.verb.prepend(parsed.auxiliary.text()); + parsed.auxiliary.remove(); + } + }); + return this; + }, + /// Negation + /** return only verbs with 'not'*/ isNegative: function isNegative() { return this["if"]('#Negative'); @@ -13213,14 +14484,19 @@ return this.ifNo('#Negative'); }, + /** return only commands - verbs in imperative mood */ + isImperative: function isImperative() { + return this["if"]('#Imperative'); + }, + /** add a 'not' to these verbs */ toNegative: function toNegative() { - var _this10 = this; + var _this11 = this; this.list.forEach(function (p) { - var doc = _this10.buildFrom([p]); + var doc = _this11.buildFrom([p]); - var parsed = parse$2(doc); + var parsed = parse(doc); toNegative_1(parsed, doc.world); }); return this; @@ -13235,25 +14511,40 @@ } return this.remove('#Negative'); + }, + + /** who, or what is doing this action? */ + subject: function subject() { + var list = []; + this.forEach(function (p) { + var found = getSubject_1(p); + + if (found.list[0]) { + list.push(found.list[0]); + } + }); + return this.buildFrom(list); } }; - var addMethod$9 = function addMethod(Doc) { + var addMethod$1 = function addMethod(Doc) { /** */ var Verbs = /*#__PURE__*/function (_Doc) { _inherits(Verbs, _Doc); + var _super = _createSuper(Verbs); + function Verbs() { _classCallCheck(this, Verbs); - return _possibleConstructorReturn(this, _getPrototypeOf(Verbs).apply(this, arguments)); + return _super.apply(this, arguments); } return Verbs; }(Doc); // add-in our methods - Object.assign(Verbs.prototype, methods$7); // aliases + Object.assign(Verbs.prototype, methods$1); // aliases Verbs.prototype.negate = Verbs.prototype.toNegative; @@ -13266,13 +14557,30 @@ var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas - var m = match.not(keep).splitAfter('@hasComma'); // // combine them back together + var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at... + + var gerund = m.match('#PastTense #Gerund'); + + if (!gerund.has('(been|am|#Auxiliary) #Gerund')) { + m = m.splitBefore(gerund.match('#Gerund')); + } // combine them back together + m = m.concat(keep); m.sort('index'); //handle slashes? //ensure there's actually a verb - m = m["if"]('#Verb'); //grab (n)th result + m = m["if"]('#Verb'); // the reason he will is ... + + if (m.has('(is|was)$')) { + m = m.splitBefore('(is|was)$'); + } //ensure it's not two verbs + + + if (m.has('#PresentTense #Adverb #PresentTense')) { + m = m.splitBefore('#Adverb #PresentTense'); + } //grab (n)th result + if (typeof n === 'number') { m = m.get(n); @@ -13285,17 +14593,19 @@ return Doc; }; - var Verbs = addMethod$9; + var Verbs = addMethod$1; - var addMethod$a = function addMethod(Doc) { + var addMethod = function addMethod(Doc) { /** */ var People = /*#__PURE__*/function (_Doc) { _inherits(People, _Doc); + var _super = _createSuper(People); + function People() { _classCallCheck(this, People); - return _possibleConstructorReturn(this, _getPrototypeOf(People).apply(this, arguments)); + return _super.apply(this, arguments); } return People; @@ -13315,7 +14625,7 @@ return Doc; }; - var People = addMethod$a; + var People = addMethod; var subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People]; var extend = function extend(Doc) { @@ -13331,7 +14641,7 @@ }; var Subset = extend; - var methods$8 = { + var methods = { misc: methods$4, selections: _simple }; @@ -13343,7 +14653,8 @@ _classCallCheck(this, Doc); - this.list = list; //quiet these properties in console.logs + this.list = list; // this.reasons = [] + //quiet these properties in console.logs Object.defineProperty(this, 'from', { enumerable: false, @@ -13429,28 +14740,32 @@ return this.buildFrom(list); }; - Object.assign(Doc.prototype, methods$8.misc); - Object.assign(Doc.prototype, methods$8.selections); //add sub-classes + Object.assign(Doc.prototype, methods.misc); + Object.assign(Doc.prototype, methods.selections); //add sub-classes Subset(Doc); //aliases - var aliases$1 = { + var aliases = { untag: 'unTag', and: 'match', notIf: 'ifNo', only: 'if', onlyIf: 'if' }; - Object.keys(aliases$1).forEach(function (k) { - return Doc.prototype[k] = Doc.prototype[aliases$1[k]]; + Object.keys(aliases).forEach(function (k) { + return Doc.prototype[k] = Doc.prototype[aliases[k]]; }); var Doc_1 = Doc; var smallTagger = function smallTagger(doc) { var terms = doc.termList(); - _01Lexicon(terms, doc.world); + _01Lexicon(terms, doc.world); // run any user-given tagger functions + + doc.world.taggers.forEach(function (fn) { + fn(doc); + }); return doc; }; @@ -13493,7 +14808,7 @@ var doc = new Doc_1(list, null, w); - if (lexicon) { + if (lexicon || doc.world.taggers.length > 0) { tiny(doc); } @@ -13527,31 +14842,41 @@ world.verbose(bool); return this; }; + /** grab currently-used World object */ + + + nlp.world = function () { + return world; + }; + /** pre-parse any match statements */ + + + nlp.parseMatch = function (str, opts) { + return matchSyntax(str, opts); + }; /** current version of the library */ - nlp.version = _version; // alias + nlp.version = _version; // aliases nlp["import"] = nlp.load; + nlp.plugin = nlp.extend; return nlp; } - var src = instance(new World_1()); + var src$1 = instance(new World_1()); var compromise = /*#__PURE__*/Object.freeze({ __proto__: null, - 'default': src + 'default': src$1 }); - var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - - var fromTemplate = function fromTemplate(doc) { - var tmpl = doc.template('short description'); + 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; @@ -13559,22 +14884,22 @@ var template = fromTemplate; - var preProcess = function preProcess(doc) { + const preProcess = function (doc) { doc.parentheses().remove(); return doc; }; var _00PreProcess = preProcess; - var cleanUp = function cleanUp(s) { + const cleanUp = function (s) { // 'an actor and was a politician' s.remove('and #Copula .*'); return s; }; // founded in 1952 as the flagship .. - var findPivot = function findPivot(s) { - var m = s.matchOne('#Copula+ (a|an|the|any|one) of?'); + const findPivot = function (s) { + let m = s.matchOne('#Copula+ (a|an|the|any|one) of?'); if (!m.found) { m = s.matchOne('#Copula+'); @@ -13592,10 +14917,10 @@ return null; } - var f = s.splitOn(m); - var verb = f.eq(1); - var article = verb.match("(a|an|the|any)? of?"); - verb.remove("(a|an|the|any)? of?"); + let f = s.splitOn(m); + let verb = f.eq(1); + let article = verb.match(`(a|an|the|any)? of?`); + verb.remove(`(a|an|the|any)? of?`); return { before: f.eq(0), verb: f.eq(1), @@ -13606,7 +14931,7 @@ var _01Pivot = findPivot; - var byClause = function byClause(s) { + const byClause = function (s) { // 'an actor and also a politician' s.remove('and (also|eventually) (a|an|the|#Possessive) .*'); // 'an actor who was a politician' @@ -13620,7 +14945,7 @@ var _02ByClause = byClause; - var safeCuts = function safeCuts(s) { + const safeCuts = function (s) { // 'in hamilton, Canada' if (s.has('(#Place && @hasComma) #Country+$')) { s.remove('#Country+$'); @@ -13658,7 +14983,7 @@ var _03SafeCuts = safeCuts; - var isIndependent = function isIndependent(c) { + const isIndependent = function (c) { if (c.has('^(and|the|which|who|whom|also|a|an|the)')) { return true; } // 'part of abu dabi' @@ -13691,7 +15016,7 @@ return false; }; - var hardCuts = function hardCuts(s) { + const hardCuts = function (s) { // .. in san fransisco if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) { s.remove('(located|based) in #Place+$'); @@ -13705,11 +15030,11 @@ } // by clause - var clauses = s.clauses(); + let clauses = s.clauses(); if (clauses.length > 1) { - var first = clauses.eq(0); - var second = clauses.eq(1); //can we just choose the first clause? + let first = clauses.eq(0); + let second = clauses.eq(1); //can we just choose the first clause? if (isIndependent(second)) { s = clauses.eq(0); @@ -13721,7 +15046,7 @@ s = clauses.eq(0); } else { // can we remove the last clause, atleast? - var last = clauses.last(); + let last = clauses.last(); if (isIndependent(last)) { clauses.list.pop(); @@ -13753,7 +15078,7 @@ var _04HardCuts = hardCuts; - var lastTry = function lastTry(s) { + const lastTry = function (s) { s.remove('(small|large|minor|major)'); s.remove('(extinct|retired|annual|biweekly|monthly|daily)'); s.remove('(female|male)'); @@ -13767,9 +15092,9 @@ var _05LastTry = lastTry; //check text is appropriate length - var isGood = function isGood(doc, options) { + const isGood = function (doc, options) { if (doc && typeof doc.text === 'function') { - var text = doc.text(); + let text = doc.text(); if (text && text.length > options.min && text.length < options.max) { return true; @@ -13787,7 +15112,7 @@ var nlp = getCjsExportFromNamespace(compromise); - var post = function post(s) { + const post = function (s) { s.remove('^(and|or|but)'); s.remove('(and|or|but)$'); s.post(''); // remove trailing comma @@ -13796,23 +15121,23 @@ }; // let count = 0 - var doSentence = function doSentence(doc, options) { - var sentence = doc.sentences(0); + const doSentence = function (doc, options) { + let sentence = doc.sentence(0); if (!sentence) { return ''; } - var txt = sentence.text(); - var s = nlp(txt); + let txt = sentence.text(); + let s = nlp(txt); _00PreProcess(s); - var pivot = _01Pivot(s); // if we can't pivot it properly, don't bother + let pivot = _01Pivot(s); // if we can't pivot it properly, don't bother if (!pivot || !pivot.verb || !pivot.verb.found) { return ''; } - var after = pivot.after; + let after = pivot.after; if (options.article && pivot.article && pivot.article.found) { after.prepend(pivot.article.text()); @@ -13862,39 +15187,31 @@ var sentence = doSentence; - var bad = ['living', 'births', 'former', 'deceased', 'missing', 'with', 'descent', 'award', 'winners', 'nominees', 'alumni', 'other'].map(function (str) { - return new RegExp("\\b".concat(str, "\\b"), 'i'); - }); - var good = ['male', 'female'].map(function (str) { - return new RegExp("\\b".concat(str, "\\b"), 'i'); - }); - var like = ['male', 'female', 'century'].map(function (str) { - return new RegExp("\\b".concat(str, "\\b"), 'i'); - }); - var dislike = ['people', 'place', 'from', 'in', 'people from'].map(function (str) { - return new RegExp("\\b".concat(str, "\\b")); - }, 'i'); + const bad$1 = ['living', 'births', 'former', 'deceased', 'missing', 'with', 'descent', 'award', 'winners', 'nominees', 'alumni', 'other'].map(str => new RegExp(`\\b${str}\\b`, 'i')); + const good$1 = ['male', 'female'].map(str => new RegExp(`\\b${str}\\b`, 'i')); + const like$1 = ['male', 'female', 'century'].map(str => new RegExp(`\\b${str}\\b`, 'i')); + const dislike$1 = ['people', 'place', 'from', 'in', 'people from'].map(str => new RegExp(`\\b${str}\\b`), 'i'); var regs = { - good: good, - bad: bad, - like: like, - dislike: dislike - }; - - var like$1 = regs.like, - dislike$1 = regs.dislike, - good$1 = regs.good, - bad$1 = regs.bad; - var hasYear = /[0-9]{4}/; - var isPlural$4 = /s$/; - - var fromCategory = function fromCategory(doc) { - var cats = doc.categories(); // try to focus on the best ones, first - - var tmp = cats.filter(function (cat) { - return good$1.find(function (reg) { - return reg.test(cat); - }); + good: good$1, + bad: bad$1, + like: like$1, + dislike: dislike$1 + }; + + const { + like, + dislike, + good, + bad + } = regs; + const hasYear = /[0-9]{4}/; + const isPlural = /s$/; + + const fromCategory = function (doc) { + let cats = doc.categories(); // try to focus on the best ones, first + + let tmp = cats.filter(cat => { + return good.find(reg => reg.test(cat)); }); if (tmp.length > 0) { @@ -13902,10 +15219,8 @@ } // remove bad ones - cats = cats.filter(function (cat) { - if (bad$1.find(function (reg) { - return reg.test(cat); - })) { + cats = cats.filter(cat => { + if (bad.find(reg => reg.test(cat))) { return false; } @@ -13921,10 +15236,8 @@ } // look at sorting by preferences - tmp = cats.filter(function (cat) { - return like$1.find(function (reg) { - return reg.test(cat); - }); + tmp = cats.filter(cat => { + return like.find(reg => reg.test(cat)); }); if (tmp.length > 0) { @@ -13932,9 +15245,9 @@ } // remove disliked ones - tmp = cats.filter(function (cat) { + tmp = cats.filter(cat => { // not a plural ending - if (isPlural$4.test(cat) === false) { + if (isPlural.test(cat) === false) { return false; } // just one word @@ -13943,9 +15256,7 @@ return false; } - return dislike$1.find(function (reg) { - return reg.test(cat); - }) === undefined; + return dislike.find(reg => reg.test(cat)) === undefined; }); if (tmp.length > 0) { @@ -13953,9 +15264,9 @@ } // sort them by most words - cats = cats.sort(function (a, b) { - var aWords = a.split(' ').length; - var bWords = b.split(' ').length; + cats = cats.sort((a, b) => { + let aWords = a.split(' ').length; + let bWords = b.split(' ').length; if (aWords > bWords) { return -1; @@ -13971,27 +15282,40 @@ var _01Choose = fromCategory; - var titleCase$4 = function 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' - var changeCat = function changeCat(cat, options) { - var c = nlp(cat); + const changeCat = function (cat, options) { + let c = nlp(cat); c.nouns().toSingular(); // add article to the front if (options.article) { - var article = 'A'; - var noun = c.nouns(0); + let article = 'A'; // let noun = c.nouns(0) - if (noun && noun.found) { - article = c.nouns(0).json({ - terms: false - })[0].article || article; - article = titleCase$4(article); + if (useAn(cat) === true) { + // console.log(c.nouns(0)) + // article = c.nouns(0).json({ terms: false })[0].article || article + article = 'An'; } - var first = c.terms(0); + let first = c.terms(0); if (first.has('#ProperNoun') === false) { first.toLowerCase(); @@ -14007,8 +15331,8 @@ var _02Change = changeCat; - var byCategory = function byCategory(doc, options) { - var cat = _01Choose(doc); + const byCategory = function (doc, options) { + let cat = _01Choose(doc); if (!cat) { return ''; @@ -14019,7 +15343,7 @@ var category = byCategory; - var defaults$1 = { + const defaults = { article: true, template: true, sentence: true, @@ -14028,18 +15352,18 @@ min: 3 }; - var seemsGood = function seemsGood(txt, options) { + const seemsGood = function (txt, options) { return txt && txt.length > 5 && txt.length < options.max; }; - var plugin = function plugin(models) { + const plugin = function (models) { // add a new method to main class models.Doc.prototype.summary = function (options) { - var doc = this; + let doc = this; options = options || {}; - options = Object.assign({}, defaults$1, options); // generate from {{short description}} template + options = Object.assign({}, defaults, options); // generate from {{short description}} template - var txt = ''; + let txt = ''; if (options.template) { txt = template(doc); @@ -14067,30 +15391,30 @@ models.Doc.prototype.article = function () { - var txt = ''; // prefer the 2nd sentence + 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.sentences(0).text(); + txt = this.sentence(0).text(); } - var doc = nlp(txt); - var found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase(); + let doc = nlp(txt); + let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase(); return found || 'it'; }; // was event in past? is person dead? models.Doc.prototype.tense = function () { - var txt = this.sentence().text(); - var doc = nlp(txt); - var copula = doc.match('#Copula+').first(); + let txt = this.sentence().text(); + let doc = nlp(txt); + let copula = doc.match('#Copula+').first(); if (copula.has('was')) { return 'Past'; } - var vb = doc.verbs(0); + let vb = doc.verbs(0); if (vb.has('#PastTense')) { return 'Past'; @@ -14104,9 +15428,9 @@ }; }; - var src$1 = plugin; + var src = plugin; - return src$1; + return src; }))); //# sourceMappingURL=wtf-plugin-summary.js.map diff --git a/plugins/summary/builds/wtf-plugin-summary.js.map b/plugins/summary/builds/wtf-plugin-summary.js.map index 2e8f09e1..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.1.1 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 _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 _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\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 _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\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 = /^[A-Z]\\.,?$/;\nvar noPeriodAcronym = /[A-Z]{2,}('s|,)?$/;\nvar lowerCaseAcronym = /([a-z]\\.){2,}[a-z]\\.?$/;\n\nvar isAcronym = 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.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 = isAcronym;\n\nvar hasSlash = /[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.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 } //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 } //do this again..\n\n\n str = str.trim(); //oh shucks,\n\n if (str === '') {\n str = original;\n } //compact acronyms\n\n\n if (isAcronym_1(str)) {\n str = str.replace(/\\./g, '');\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|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F]+/;\nvar endings = /[ \\n\\t\\.’'\\[\\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\\-?‘’;\\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~|‖¦©℗®℠™¤₳฿\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥\n\nvar hasSlash$1 = /\\//;\nvar hasApostrophe = /['’]/;\nvar hasAcronym = /^[a-z]\\.([a-z]\\.)+/i;\nvar minusNumber = /^[-+\\.][0-9]/;\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 }\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$1.test(str)) {\n str.split(hasSlash$1).forEach(function (word) {\n parsed.alias = parsed.alias || {};\n parsed.alias[word.trim()] = true;\n });\n }\n\n return parsed;\n};\n\nvar parse = parseTerm;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, 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});\nvar _01Case_1 = _01Case.toUpperCase;\nvar _01Case_2 = _01Case.toLowerCase;\nvar _01Case_3 = _01Case.toTitleCase;\nvar _01Case_4 = _01Case.isUpperCase;\nvar _01Case_5 = _01Case.isTitleCase;\nvar _01Case_6 = _01Case.titleCase;\n\nvar _02Punctuation = 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});\nvar _02Punctuation_1 = _02Punctuation.hasPost;\nvar _02Punctuation_2 = _02Punctuation.hasPre;\nvar _02Punctuation_3 = _02Punctuation.hasQuote;\nvar _02Punctuation_4 = _02Punctuation.hasQuotation;\nvar _02Punctuation_5 = _02Punctuation.hasComma;\nvar _02Punctuation_6 = _02Punctuation.hasPeriod;\nvar _02Punctuation_7 = _02Punctuation.hasExclamation;\nvar _02Punctuation_8 = _02Punctuation.hasQuestionMark;\nvar _02Punctuation_9 = _02Punctuation.hasEllipses;\nvar _02Punctuation_10 = _02Punctuation.hasSemicolon;\nvar _02Punctuation_11 = _02Punctuation.hasSlash;\nvar _02Punctuation_12 = _02Punctuation.hasHyphen;\nvar _02Punctuation_13 = _02Punctuation.hasDash;\nvar _02Punctuation_14 = _02Punctuation.hasContraction;\nvar _02Punctuation_15 = _02Punctuation.addPunctuation;\n\n//declare it up here\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 } //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.oneOf !== undefined) {\n return reg.oneOf.hasOwnProperty(t.reduced) || reg.oneOf.hasOwnProperty(t.text);\n } //support (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$1 = function isAcronym_1$1() {\n return isAcronym_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$1,\n isImplicit: isImplicit,\n isKnown: isKnown,\n setRoot: setRoot\n};\n\nvar hasSpace = /[\\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.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 = 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.normal;\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 = {\n json: json\n};\n\nvar methods = Object.assign({}, _01Case, _02Punctuation, _03Misc, _04Text, _05Json);\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 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n\nvar titleCase = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar fns = {\n logTag: logTag,\n logUntag: logUntag,\n isArray: isArray,\n titleCase: titleCase\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.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.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.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\n/** remove this tag, and its descentents from the term */\n\nvar unTag = 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 } // 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.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.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(term, tags[i], reason, world);\n }\n\n return;\n }\n\n unTag(term, tags, reason, world);\n};\n\nvar unTag_1 = untagAll;\n\nvar canBe = 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 = canBe;\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 = function tagSafe(tags, reason, world) {\n if (canBe_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$1 = function unTag_1$1(tags, reason, world) {\n unTag_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$1 = function canBe_1$1(tags, world) {\n return canBe_1(this, tags, world);\n};\n\nvar tag = {\n tag: tag_1,\n tagSafe: tagSafe,\n unTag: unTag_1$1,\n canBe: canBe_1$1\n};\n\nvar Term =\n/*#__PURE__*/\nfunction () {\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(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(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.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);\nObject.assign(Term.prototype, tag);\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 = 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 }); //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 = {\n terms: terms,\n clone: clone,\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 = 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 };\n } else if (options === 'reduced') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: false,\n //FIXME: reversed?\n whitespace: true,\n unicode: true,\n implicit: true,\n reduced: 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 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); // 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\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 = 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 = 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 = 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(beforeTerms, newTerms); //insert this segment into the linked-list\n\n stitchIn(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(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$1 = / /; //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$1 = 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$1.test(lastTerm.post) === false) {\n lastTerm.post += ' ';\n }\n\n return;\n}; //insert this segment into the linked-list\n\n\nvar stitchIn$1 = 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$1 = 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$1(newTerms); //insert this segment into the linked-list\n\n stitchIn$1(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$1(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 = 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_1 = function delete_1(doc) {\n _delete(this, doc);\n return this;\n}; // stich-in newPhrase, stretch 'doc' + parents\n\n\nvar replace = 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(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_1,\n replace: replace,\n splitOn: splitOn\n};\n\n/** return json metadata for this phrase */\nvar json$1 = 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.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$1 = {\n json: json$1\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$1 = Object.assign({}, _01Utils, _02Text, _03Change, _04Insert, _05Json$1, _06Lookahead);\n\n// try to avoid doing the match\nvar failFast = 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;\n\n//found a match? it's greedy? keep going!\n\nvar getGreedy = function getGreedy(terms, t, reg, until, index, length) {\n var start = t;\n\n for (; t < terms.length; t += 1) {\n //stop for next-reg match\n if (until && terms[t].doesMatch(until, index + t, length)) {\n return t;\n }\n\n var count = t - start + 1; // is it max-length now?\n\n if (reg.max !== undefined && count === reg.max) {\n return t;\n } //stop here\n\n\n if (terms[t].doesMatch(reg, index + t, length) === false) {\n // is it too short?\n if (reg.min !== undefined && count < reg.min) {\n return null;\n }\n\n return t;\n }\n }\n\n return t;\n}; //'unspecific greedy' is a weird situation.\n\n\nvar greedyTo = function greedyTo(terms, t, nextReg, index, length) {\n //if there's no next one, just go off the end!\n if (!nextReg) {\n return terms.length;\n } //otherwise, we're looking for the next one\n\n\n for (; t < terms.length; t += 1) {\n if (terms[t].doesMatch(nextReg, index + t, length) === true) {\n return t;\n }\n } //guess it doesn't exist, then.\n\n\n return null;\n}; // get or create named group\n\n\nvar getOrCreateGroup = function getOrCreateGroup(namedGroups, namedGroupId, terms, startIndex, group) {\n var g = namedGroups[namedGroupId];\n\n if (g) {\n return g;\n }\n\n var id = terms[startIndex].id;\n namedGroups[namedGroupId] = {\n group: String(group),\n start: id,\n length: 0\n };\n return namedGroups[namedGroupId];\n};\n/** tries to match a sequence of terms, starting from here */\n\n\nvar tryHere = function tryHere(terms, regs, index, length) {\n var namedGroups = {};\n var previousGroupId = null;\n var t = 0; // we must satisfy each rule in 'regs'\n\n for (var r = 0; r < regs.length; r += 1) {\n var reg = regs[r]; // Check if this reg has a named capture group\n\n var isNamedGroup = typeof reg.named === 'string' || typeof reg.named === 'number';\n var namedGroupId = null; // Reuse previous capture group if same\n\n if (isNamedGroup) {\n var prev = regs[r - 1];\n\n if (prev && prev.named === reg.named && previousGroupId) {\n namedGroupId = previousGroupId;\n } else {\n namedGroupId = _id(reg.named);\n previousGroupId = namedGroupId;\n }\n } //should we fail here?\n\n\n if (!terms[t]) {\n //are all remaining regs optional?\n var hasNeeds = regs.slice(r).some(function (remain) {\n return !remain.optional;\n });\n\n if (hasNeeds === false) {\n break;\n } // have unmet needs\n\n\n return [false, null];\n } //support 'unspecific greedy' .* properly\n\n\n if (reg.anything === true && reg.greedy === true) {\n var skipto = greedyTo(terms, t, regs[r + 1], reg, index); // ensure it's long enough\n\n if (reg.min !== undefined && skipto - t < reg.min) {\n return [false, null];\n } // reduce it back, if it's too long\n\n\n if (reg.max !== undefined && skipto - t > reg.max) {\n t = t + reg.max;\n continue;\n }\n\n if (skipto === null) {\n return [false, null]; //couldn't find it\n } // is it really this easy?....\n\n\n if (isNamedGroup) {\n var g = getOrCreateGroup(namedGroups, namedGroupId, terms, t, reg.named); // Update group\n\n g.length = skipto - t;\n }\n\n t = skipto;\n continue;\n } //if it looks like a match, continue\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 if (reg.anything === true || reg.end === true && reg.greedy === true && index + t < length - 1 && terms[t].doesMatch(Object.assign({}, reg, {\n end: false\n }), index + t, length) === true || terms[t].doesMatch(reg, index + t, length) === true) {\n var startAt = t; // okay, it was a match, but if it optional too,\n // we should check the next reg too, to skip it?\n\n if (reg.optional && regs[r + 1]) {\n // does the next reg match it too?\n if (terms[t].doesMatch(regs[r + 1], index + t, length) === true) {\n // but does the next reg match the next term??\n // only skip if it doesn't\n if (!terms[t + 1] || terms[t + 1].doesMatch(regs[r + 1], index + t, length) === false) {\n r += 1;\n }\n }\n } //advance to the next term!\n\n\n 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 (t !== terms.length && reg.greedy !== true) {\n return [false, null];\n }\n } //try keep it going!\n\n\n if (reg.greedy === true) {\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 t = getGreedy(terms, t, Object.assign({}, reg, {\n start: false,\n end: false\n }), regs[r + 1], index, length);\n\n if (t === null) {\n return [false, 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 && index + t !== length) {\n return [false, null]; //greedy didn't reach the end\n }\n }\n\n if (isNamedGroup) {\n // Get or create capture group\n var _g = getOrCreateGroup(namedGroups, namedGroupId, terms, startAt, reg.named); // Update group - add greedy or increment length\n\n\n if (t > 1 && reg.greedy) {\n _g.length += t - startAt;\n } else {\n _g.length++;\n }\n }\n\n continue;\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 (terms[t].isImplicit() && regs[r - 1] && terms[t + 1]) {\n // does the next one match?\n if (terms[t + 1].doesMatch(reg, index + t, length)) {\n t += 2;\n continue;\n }\n } // console.log(' ❌\\n\\n')\n\n\n return [false, null];\n } //return our result\n\n\n return [terms.slice(0, t), namedGroups];\n};\n\nvar _03TryMatch = tryHere;\n\nvar postProcess = 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;\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+)>/);\n\nvar titleCase$1 = 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;\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(parseToken);\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{0,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 }\n\n obj.greedy = 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$1(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 parseToken_1 = parseToken;\n\nvar isNamed = function isNamed(capture) {\n return typeof capture === 'string' || typeof capture === 'number';\n};\n\nvar fillGroups = function fillGroups(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 n = tokens[i]; // Give name to un-named single tokens\n\n if (n.groupType === 'single' && n.named === true) {\n index += 1;\n n.named = index;\n continue;\n } // Start converting tokens\n\n\n if (n.groupType === 'start') {\n convert = true;\n\n if (isNamed(n.named)) {\n current = n.named;\n } else {\n index += 1;\n current = index;\n }\n } // Ensure this token has the right name\n\n\n if (convert) {\n n.named = current;\n } // Stop converting tokens\n\n\n if (n.groupType === 'end') {\n convert = false;\n }\n }\n\n return tokens;\n};\n\nvar useOneOf = function useOneOf(tokens) {\n return tokens.map(function (token) {\n if (token.choices !== undefined) {\n // are they all straight non-optional words?\n var shouldPack = token.choices.every(function (c) {\n return c.optional !== true && c.negative !== true && c.word !== undefined;\n });\n\n if (shouldPack === true) {\n var oneOf = {};\n token.choices.forEach(function (c) {\n return oneOf[c.word] = true;\n });\n token.oneOf = oneOf;\n delete token.choices;\n }\n }\n\n return token;\n });\n};\n\nvar postProcess$1 = function postProcess(tokens) {\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 = fillGroups(tokens);\n } // convert 'choices' format to 'oneOf' format\n\n\n tokens = useOneOf(tokens); // console.log(tokens)\n\n return tokens;\n};\n\nvar postProcess_1 = postProcess$1;\n\nvar isArray$1 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //split-up by (these things)\n\n\nvar byParentheses = function byParentheses(str) {\n var arr = str.split(/([\\^\\[\\!]*(?:<\\S+>)?\\(.*?\\)[?+*]*\\]?\\$?)/);\n arr = arr.map(function (s) {\n return s.trim();\n });\n return arr;\n};\n\nvar byWords = function byWords(arr) {\n var words = [];\n arr.forEach(function (a) {\n //keep brackets lumped together\n if (/^[[^_/]?\\(/.test(a[0])) {\n words.push(a);\n return;\n }\n\n var list = a.split(' ');\n list = list.filter(function (w) {\n return w;\n });\n words = words.concat(list);\n });\n return words;\n}; //turn an array into a 'choices' list\n\n\nvar byArray = function byArray(arr) {\n return [{\n choices: arr.map(function (s) {\n return {\n word: s\n };\n })\n }];\n};\n\nvar fromDoc = function fromDoc(doc) {\n if (!doc || !doc.list || !doc.list[0]) {\n return [];\n }\n\n var ids = [];\n doc.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n ids.push({\n id: t.id\n });\n });\n });\n return [{\n choices: ids,\n greedy: true\n }];\n};\n/** parse a match-syntax string into json */\n\n\nvar syntax = function syntax(input) {\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$1(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 = byParentheses(input);\n tokens = byWords(tokens);\n tokens = tokens.map(parseToken_1); //clean up anything weird\n\n tokens = postProcess_1(tokens); // console.log(JSON.stringify(tokens, null, 2))\n\n return tokens;\n};\n\nvar syntax_1 = syntax;\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 = syntax_1(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;\n }).length;\n var terms = p.terms();\n var matches = []; //optimisation for '^' start logic\n\n if (regs[0].start === true) {\n var _tryMatch = _03TryMatch(terms, regs, 0, terms.length),\n _tryMatch2 = _slicedToArray(_tryMatch, 2),\n match = _tryMatch2[0],\n groups = _tryMatch2[1];\n\n if (match !== false && match.length > 0) {\n match = match.filter(function (m) {\n return m;\n });\n matches.push({\n match: match,\n groups: groups\n });\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 _tryMatch3 = _03TryMatch(terms.slice(i), regs, i, terms.length),\n _tryMatch4 = _slicedToArray(_tryMatch3, 2),\n _match = _tryMatch4[0],\n _groups = _tryMatch4[1];\n\n if (_match !== false && _match.length > 0) {\n //zoom forward!\n i += _match.length - 1; //[capture-groups] return some null responses\n\n _match = _match.filter(function (m) {\n return m;\n });\n matches.push({\n match: _match,\n groups: _groups\n }); //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 = 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$1 = function not$1(regs) {\n var _this2 = this;\n\n var matches = not(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$1,\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$1); //apply aliases\n\nvar aliases = {\n term: 'terms'\n};\nObject.keys(aliases).forEach(function (k) {\n return Phrase.prototype[k] = Phrase.prototype[aliases[k]];\n});\nvar Phrase_1 = Phrase;\n\n/** a key-value store of all terms in our Document */\nvar Pool =\n/*#__PURE__*/\nfunction () {\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]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\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 } // Start somewhere:\n\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 = /\\/\\W*$/;\nvar notWord = {\n '.': true,\n '-': true,\n //dash\n '–': true,\n //en-dash\n '—': true,\n //em-dash\n '--': true,\n '...': true // '/': true, // 'one / two'\n\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\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 } //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}; //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 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\n/** turn a string into an array of Phrase objects */\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\n //a bit of validation, first\n if (typeof text !== 'string') {\n if (typeof text === 'number') {\n text = String(text);\n }\n } //tokenize into words\n\n\n var 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.1.1';\n\nvar _data = {\n \"Comparative\": \"true¦better\",\n \"Superlative\": \"true¦earlier\",\n \"PresentTense\": \"true¦is,sounds\",\n \"Value\": \"true¦a few\",\n \"Noun\": \"true¦a8b7c5e3f2here,ie,lit,m1no doubt,p0tce,vs;d,l;a,d;t,y;g,sp,tc,x0;!p;a,ca,o0;l,rp;a,c,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,unless\",\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¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh\",\n \"Pronoun\": \"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s\",\n \"Singular\": \"true¦0:0X;1:10;a0Wb0Kc0Bd04e02fXgShOici1jel0kitty,lNmJnIoHpDquestion mark,rBs7t4u2womW;nc0Rs 2;doll0Dst0F; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;ist0Pky,omeone,t2uper bowl,yst0W;ep3ri1u2;de0Pff;faMmoM;al0i1o2;om,se;a4i0Jl05r3u2;dLrpoD;erogaVobl0O;rt,te0I;bjSceGthers;othi1umb0E;a4ee04o2;del,m2nopo0th0C;!my;n,yf0;i0unch;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em\",\n \"Actor\": \"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;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¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;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¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics\",\n \"Infinitive\": \"true¦0:6K;1:6Y;2:57;3:6V;4:6W;5:5Z;6:67;7:6Q;8:6I;9:6U;A:6P;B:6S;C:6D;D:6Z;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tCve;n,raD;d0t;aIiGo9;eGsA;!w;l6Cry;nHpGr3se;gra4Mli3Z;dGi9lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi7;ne,rn;aGe0Mi5Nu7y;de,in,nsf0p,v5F;r2XuC;ank,reat2N;nd,st;lk,rg1Ps9;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitC;bmAck,ff0gge7ppHrGspe5;ge,pri1rou4Vvi4;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi4;ngth2Dss,tC;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arCem,le5n1r4tt6;aHo2rG;atCew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi7oItG;!o2rG;i5uc1Y;l4rt;mb6nt,r4;e7i2;air,eHlGo3ZreseD;a8y;at;aEemb0i3Vo4;aHeGi4y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei4k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiDoG;cGdu8greBhibAmi1te7vi2T;eBlaim;di5pa2ss,veD;iDp,rtr3ZsGur;e,t;aHuG;g,n3;n,y;ck,le;fo30mAsi7;ck,iDrt4Fss,u1;bJccur,ff0pera9utweIverGwe;co40lap,ta20u1wG;helm;igh;ser4taE;eHotG;e,i8;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr3;intaEna3rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mAnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nC;iGno2Z;ck,ll,ss;am,oEuG;d3mp;gno2mQnGss3C;cOdica9flu0MhNsKtIvG;eGol4;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abAibA;lu1Er1C;agi22pG;lemeDo20ro4;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloBove1MrIuG;arGeBi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca7m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte17;a16eHi2laEoGreB;rt,se;ct,riG;en8;ci1t;el,han3;abGima9;liF;ab6couXdHfor8ga3han8j03riCsu2t0vG;isi2Qy;!u2;body,er3pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeBiG;ft;g,in;d3ubt;ff0p,re5sHvG;iYor8;aKcHliGmiBpl16tinguiF;ke;oGuB;uGv0;ra3;gr1TppG;ear,ro4;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er4iHtrG;oy;gn,re;a09e08i5osA;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma3n8re,te;a0Ae09h06i9l04oJrG;aHeGoBuFy;a9dA;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aEin0SrG;a7ibu9ol;iGtitu9;d0st;iHoGroD;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen3n3r3se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a7mb,o7rrGth0un8;ow;ck;ar,lHnefAtrG;ay;ie4ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waA;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri4;ue;!i4;eaJlIroG;aCve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e3ow;ee;rd;aRdIju7mAoR;it;st;!reB;ss;cJhie4knowled3tiva9;te;ge;ve;eIouDu1;se;nt;pt;on\",\n \"Unit\": \"true¦0:16;a11b0Zc0Ld0Ke0If0Dg09h06in0Ejoule0k00lYmNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Kb,d0Qears old,o1;tt0E;att0b;able4b3e2on1sp;!ne0;a2r0A;!l,sp;spo01; ft,uare 1;c0Fd0Ef3i0Ckilo0Gm1ya0B;e0Jil1;e0li0E;eet0o0A;t,uart0;ascals,e2i1ou0Mt;c0Jnt0;rcent,tZ;hms,uVz;an0GewtQ;/s,b,e7g,i3l,m2p1²,³;h,s;!²;!/h,cro3l1;e1li05;! DsC²;g05s0A;gPter1;! 2s1;! 1;per second;b,iZm,u1x;men0x0;b,elvin0g,ilo2m1nQ;!/h,ph,²;byYgWmeter1;! 2s1;! 1;per hour;e1g,z;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¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg\",\n \"Abbreviation\": \"true¦a08b05cZdXeUfSgRhQiPjNkanMlKmGnEoDpCque,rAs6t4u3v2w0;is0y00;!c;a,s,t;niv,safa,t;ce,e0;nn,x;ask,e1fc,gt,ir,r,t,u0;pt,rg;nDp0;!t;d,e0;pAs,v;a,d,ennGhd,l,rof,vt;ct,kla,nt,p,rd;eb0ov;!r;a2d,essrs,i1lle,me,r5s0t;!tr;nn,ster;!j,r;it,lb,t0;!d;!s;an,r,u0;l,n;a,da,e,nc;on,wy;a,en,ov;eb,l0t,y;!a;g,s1tc,x0;!p;p,q;ak,e0ist,r;c,pt,t;a3ca,l,m2o0pl,res,t;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d3l2pr,r1ss0tty,ug,ve;n,t;c,iz;!ta;!j,m,v\",\n \"Place\": \"true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s\",\n \"Country\": \"true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;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:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma\",\n \"FemaleName\": \"true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:EP;6:ER;7:FS;8:GF;9:EZ;A:GB;B:E5;C:FO;D:FL;E:G8;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et5onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s7;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs7tGwa0;ia0um;a,yn;iGya;a,ka,s7;a4e4iGmCAra;!ka;a,t7;at7it7;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet5ie,y;anGi8;!a,e,nG;aDe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs7vannaD;aDi0;ra,y;aGi4;nt7ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lE;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaD;chGe,i0mo0n5EquCDvCy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et5in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t5;aQePiJoGy6;eHrG;aDeCma;ll1mi;aKcIkGla,na,s7ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s7;cy,et5;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eC;h75il9t2;a,cSgOiJjor2l6In2s7tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lEna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri5;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alEd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket5z2;a,et5;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes7na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as7is7oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stC;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s7;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlEri0y;ar5Cer5Cie,leCr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelEd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lEph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et5iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lEquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aDnaD;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolE;acHetGisel9;a,chC;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et5i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileCkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eCis,la,othGthy;ea,y;an09naDonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraDra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et5iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleC;en,t5;aIeoHotG;il4B;!pat4;ir8rIudG;et5iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot5;n1t5;!sa;d4el1PtG;al,el1O;cHlG;es5i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleCrEy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwEok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaDvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt7yl;adHiG;ce;et5iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes7;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t5;an19elG;le;aYdWeUgQiOja,nHtoGya;inet5n3;!aJeHiGmI;e,ka;!mGt5;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t5;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is7jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naD;c7da,leCmLnslKsG;haDlG;inGyW;g,n;!h;ey;ee;en;at7g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lEsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah\",\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¦t0weekend,yesterd2;mr2o0;d0morrow;ay;!w\",\n \"FirstName\": \"true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is\",\n \"LastName\": \"true¦0:34;1:39;2:3B;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs1;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu2;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps1;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar2lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch2dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins1;c6ve0F;ci,hards1;ir2os;aEeAh8ic6ow20;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils1guy5ix1owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin2;!o;aCe8i6op2uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen2o6u3;h6nYu3;an6ns1;ss1;ki0Es5;cks1nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs1;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr2;ayli3ub0;m2nzal2;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand2;d7insteHsposi6vaL;to;is1wards;aCeBi9omin8u6;bo6rand;is;gu2;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s1;on;eks7iy8var2;ez;ej6;ev;ams\",\n \"MaleName\": \"true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:9V;6:BZ;7:AT;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde5sB;!l7t1;de,lCrr6yB;l1ne;lBt3;a93y;aEern1iB;cCha0nceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l7;lom1nA3uB;leyma8ta;dBl7Jm1;!n7;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n7olfo,ri68;co,ky;bAe9U;cBl7;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub6x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw6;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e5;a78ik;house,o03t1;e,olB;aj;ah,hBk7;a4eB;al,l;hClv2rB;le,ri5v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe5;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha5tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe5;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a5ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd6kGmFrDsCvi3yB;!d6s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d6;an,s0;lEo4FrDuBv7;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr7rge;bri4l6rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym6zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl7nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e5ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne5rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro5y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl7y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n7rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid6ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd6eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on\",\n \"Person\": \"true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;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;ar1lint0ruz;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:72;1:6Q;2:7E;3:74;4:6J;5:7H;6:76;7:6P;8:6C;9:6D;A:5I;B:71;C:70;a7Hb63c5Dd5Ae58f46g3Oh38iron0j34k2Zl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit53;d 1k2R;mp0n4Ape0r8s8;eel Bip 7L;aEiD;gh 06rd0;n Br 3D;it 5Kk8lk6rm 0Qsh 74t67v4P;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Gup;ade YiDot0y 28;ckle68p 7A;ne67p Ds4D;d2o6Lup;ck FdEe Dgh5Tme0p o0Dre0;aw3ba4d2in,up;e5Ky 1;by,o6V;ink Drow 5V;ba4ov7up;aDe 4Ill4O;m 1r W;ckCke Elk D;ov7u4O;aDba4d2in,o31up;ba4ft7p4Tw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6P; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1MiD;ke 5Yn2Y;p Drm1P;by,in,o6B;n2Zr 1tc3I;c2Ymp0nd Dr6Hve6y 1;ba4d2up;d2o67up;ar2Vell0ill4UlErDurC;ingCuc8;a33it 3U;be4Crt0;ap 4Eow B;ash 4Zoke0;eep EiDow 9;c3Np 1;in,oD;ff,v7;gn Eng2Zt Dz8;d2o5up;in,o5up;aFoDu4F;ot Dut0w 5X;aw3ba4f37o5R;c2FdeAk4Sve6;e Hll0nd GtD; Dtl43;d2in,o5upD;!on;aw3ba4d2in,o1Yup;o5to;al4Lout0rap4L;il6v8;at0eKiJoGuD;b 4Ele0n Dstl8;aDba4d2in53o3Gt30u3E;c1Xw3;ot EuD;g2Knd6;a1Xf2Ro5;ng 4Op6;aDel6inAnt0;c4Yd D;o2Tu0C;aQePiOlMoKrHsyc2AuD;ll Ft D;aDba4d2in,o1Ht34up;p39w3;ap38d2in,o5t32up;attleCess EiGoD;p 1;ah1Hon;iDp 53re3Mur45wer 53;nt0;ay3ZuD;gAmp 9;ck 53g0leCn 9p3W;el 47ncilA;c3Pir 2In0ss FtEy D;ba4o4R; d2c1Y;aw3ba4o12;pDw3K;e3Jt B;arrow3Terd0oD;d6te3S;aJeHiGoEuD;ddl8ll37;c17p 1uth6ve D;al3Bd2in,o5up;ss0x 1;asur8lt 9ss D;a1Aup;ke Dn 9r30s1Lx0;do,o3Yup;aPeNiIoDuck0;a17c37g GoDse0;k Dse35;aft7ba4d2forw2Bin3Wov7uD;nd7p;in,o0J;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fl22r Dt 1;fDof;rom;in,oRu1A;cZm 1nDve it,ze1Y;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut\",\n \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld\",\n \"Adjective\": \"true¦0:74;1:7J;2:7P;3:7I;4:7B;5:5B;6:48;7:49;8:4R;9:60;A:7G;B:6Z;C:6Y;D:72;E:5W;a6Ib64c5Qd56e4Tf49g41h3Qi35j33k32l2Rm2Gn27o1Rp1Aquack,r10s0Gt09uQvNwFyear5;arp0eJholeIiHoF;man5oFu6B;d6Dzy;despr74s5F;!sa7;eGlFste26;co1Il o4L;!k5;aGiFola4B;b7Sce versa,ol54;ca2gabo62nilla;ltWnJpGrb59su4tterF;!moC; f34b1OpGsFti1H;ca7et,ide dMtairs;er,i3N;aPbeco6Qconvin27deMeLfair,ivers4knKprecedYrIsGwF;iel20ritt5Y;i1VuF;pervis0specti3;eFu5;cognLgul6Gl6G;own;ndi3v5Sxpect0;cid0rF;!grou5NsF;iz0tood;b7ppeaLssu6FuthorF;iz0;i24ra;aJeHhough4OoGrF;i1oubl0;geth8p,rpB;en5PlFm4Zrr2U;li3;boo,lFn;ent0;aXcWeUhTiRmug,nobbi3EoPpOqueami3EtJuFymb63;bHi gener54pFrprisi3;erFre0L;! dup8b,i29;du0seq4T;anda6TeIi0PrFy38;aightFip0; fFfF;or5A;adfaCreotyp0;aEec2Gir1JlendBot on; call0le,mb8phist1XrFu0Xvi41;dBry;gnifica2nF;ceEg7;am2Pe8ocki3ut;cFda1em5lfi2Yni1Wpa68re6;o1Gr3V;at57ient28reec57;cr0me,ns serif;aMeIiGoF;buCtt4TuSy4;ghtFv4;!-29f9;ar,bel,condi1du62fres51lHpublic3VsFtard0;is47oF;lu1na2;e1Euc45;bBciF;al,st;aQeOicayu6lacBopuliCrGuF;bl59mp0;eJiGoF;!b0AfuDmi31p8;mGor,sFva1;ti6;a4Ve;ciDmF;a0IiF;er,um;ac20rFti1;feAma2Tplexi3v33;rFst;allelHtF;-tiFi4;me;!ed;bQffOkNld fashion0nMpLrg1Hth8utKvF;al,erF;!aHniGt,wF;eiFrouF;ght;ll;do0Ver,g2Lsi45;en,posi1; boa5Fg2Jli6;!ay; gua5DbFli6;eat;eHsF;cFer0Hole1;e6uE;d2Sse;ak0eMiLoFua4O;nJrGtF;ab7;thF;!eF;rn;chala2descri4Zstop;ght5;arby,cessa3Wighbor5xt;aNeLiIoFultip7;bi7derGlFnth5ot,st;dy;a1n;nFx0;iaFor;tuE;di4EnaFre;ci3;cFgenta,in,j03keshift,le,mmoth,ny,sculi6;abEho;aOeJiGoFu13;uti12vi3;mGteraF;l,te;it0;ftIgFth4;al,eGitiF;ma1;nda3C;!-0C;nguBst,tt8;ap1Sind5no0A;agg0uF;niOstifi0veni7;de4gno4Blleg4mSnHpso 1VrF;a1releF;va2; NaMbr0corLdJfluenTiTnIsHtF;aAenDoxF;ic36;a6i2R;a1er,oce2;iGoF;or;reA;deq3Jppr2Y;fFsitu,vitro;ro2;mJpF;arHerfeAoFrop8;li1rtF;a2ed;ti4;eFi0Q;d2QnD;aKelJiHoFumdr3B;neCok0rrFs07ur5;if2S;ghfalut1OspF;an2Q;liZpf9;lInHrF;d05roF;wi3;dy,gi3;f,low0;ainf9ener2Jiga22lLoKraHuF;ilFng ho;ty;cGtF;ef9is;ef9;ne,od;ea2Dob4;aUeOinNlMoHrF;a1TeFoz1K;e2Dq12tf9;oHrF; keeps,eFm8tuna1;g04ign;liF;sh;ag2Zue2;al,i1;dJmGrF;ti7;a7ini6;ne;le; up;bl0i2lDr Gux,voF;ri1uri1;oFreac1E;ff;aNfficie2lMmiLnJreAthere4veIxF;aAcess,pe1OtraGuF;be2Ll0H;!va1D;n,ryday; Fcouragi3tiE;rou1sui1;ne2;abo23dQe18i1;g8sF;t,ygF;oi3;er;aVeNiHoFrea15ue;mina2ne,ubF;le,tf9;dact1Bfficu1OsGvF;erD;creHeas0gruntl0honeCordGtF;a2ress0;er5;et; LadpKfJgene1PliHrang0spe1PtGvoF;ut;ail0ermin0;be1Mca1ghF;tf9;ia2;an;facto;i5magFngeroZs0I;ed,i3;ly;ertaRhief,ivil,oHrF;aFowd0u0H;mp0v02z0;loNmLnGoi3rrFve0P;eAu1I;cre1grIsHtF;emFra0F;po0D;ta2;ue2;mer08pleF;te,x;ni4ss4;in;aPeLizarElJoGrF;and new,isk,okP;gGna fiWttom,urgeoF;is;us;ank,iI;re;autif9hiGlov0nFst,yoG;eVt;nd;ul;ckGnkru0XrrF;en;!wards; priori,b0Nc0Kd0AfraBg05h04lZma06ntiquYpUrOsMttracti07utheLvIwF;aGkF;wa0U;ke,re;ant garGerF;age;de;ntV;leep,tonisF;hi3;ab,bitIroHtiF;fiF;ci4;ga2;raF;ry;pFt;are2etiPrF;oprF;ia1;at0;arIcohGeFiMl,oof;rt;olF;ic;mi3;ead;ainCgressiGoniF;zi3;ve;st;id; MeKuJvF;aGerD;se;nc0;ed;lt;pt,qF;ua1;hoc,infinitF;um;cuGtu4u1;al;ra1;erPlOoMruLsGuF;nda2;e2oGtraA;ct;lu1rbi3;ng;te;pt;aFve;rd;aze,e;ra2;nt\",\n \"Comparable\": \"true¦0:3Z;1:4G;2:43;3:2W;4:49;5:3V;a4Mb42c3Md3Be33f2Pg2Dh22i1Tj1Sk1Pl1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell25ou4;aBe9hi1Wi7r6;o4y;ck0Mde,l6n1ry,se;d,y;a6i4Kt;k,ry;n1Rr6sI;m,y;a7e6ulgar;nge5rda2xi4;gue,in,st;g0n6pco3Kse5;like0ti1;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,t;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 \"TextValue\": \"true¦bMeIfChundredNmMnin9one,qu8s6t0zeroN;enMh3rLw0;e0o;l0ntC;fGve;ir0ousandIree;d,t5;e0ix7;cond,ptEven6xtE;adrDintD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en1;illion0;!th\",\n \"Ordinal\": \"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¦bGeDf7hundred,mGnine9one,qu6s4t0zero;en,h2rFw0;e0o;lve,n7;irt8ousand,ree;e0ix4;ptAven3xtA;adr9int9;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion\",\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¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n \"Preposition\": \"true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut\",\n \"Determiner\": \"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er\"\n};\n\nvar entity = ['Person', 'Place', 'Organization'];\nvar nouns = {\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 = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value']\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'Copula', 'FutureTense']\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund']\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: 'Verb'\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb'\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb'\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 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 = {\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', 'Conjunction', 'Adverb', 'Preposition', 'Adjective']\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time']\n },\n WeekDay: {\n isA: ['Date', 'Noun']\n },\n // '9:20pm'\n Time: {\n isA: ['Date'],\n notA: ['Value']\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 // 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 Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value']\n },\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$2 = 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$2(tag.isA);\n });\n return tags;\n};\n\nvar _isA = inferIsA;\n\nvar unique$3 = 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$3(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, tags);\n addIn(verbs, tags);\n addIn(values, tags);\n addIn(misc, tags); // do the graph-stuff\n\n tags = inference(tags);\n return tags;\n};\n\nvar tags = build();\n\nvar seq = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n cache = 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[n]) return cache[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 = unpack,\n unpack_1$1 = function unpack_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(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;\n\n//safely add it to the lexicon\nvar addWord = function addWord(word, tag, lex) {\n if (lex[word] !== undefined) {\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 } else {\n lex[word] = tag;\n }\n}; // blast-out more forms for some given words\n\n\nvar addMore = function addMore(word, tag, world) {\n var lexicon = world.words;\n var transform = world.transforms; // cache multi-words\n\n var words = word.split(' ');\n\n if (words.length > 1) {\n //cache the beginning word\n world.hasCompound[words[0]] = true;\n } // inflect our nouns\n\n\n if (tag === 'Singular') {\n var plural = transform.toPlural(word, world);\n lexicon[plural] = lexicon[plural] || 'Plural'; // only if it's safe\n } //conjugate our verbs\n\n\n if (tag === 'Infinitive') {\n var conj = transform.conjugate(word, world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var w = conj[tags[i]];\n lexicon[w] = lexicon[w] || tags[i]; // only if it's safe\n }\n } //derive more adjective forms\n\n\n if (tag === 'Comparable') {\n var _conj = transform.adjectives(word);\n\n var _tags = Object.keys(_conj);\n\n for (var _i = 0; _i < _tags.length; _i++) {\n var _w = _conj[_tags[_i]];\n lexicon[_w] = lexicon[_w] || _tags[_i]; // only if it's safe\n }\n } //conjugate phrasal-verbs\n\n\n if (tag === 'PhrasalVerb') {\n //add original form\n addWord(word, 'Infinitive', lexicon); //conjugate first word\n\n var _conj2 = transform.conjugate(words[0], world);\n\n var _tags2 = Object.keys(_conj2);\n\n for (var _i2 = 0; _i2 < _tags2.length; _i2++) {\n //add it to our cache\n world.hasCompound[_conj2[_tags2[_i2]]] = true; //first + last words\n\n var _w2 = _conj2[_tags2[_i2]] + ' ' + words[1];\n\n addWord(_w2, _tags2[_i2], lexicon);\n addWord(_w2, 'PhrasalVerb', lexicon);\n }\n } // inflect our demonyms - 'germans'\n\n\n if (tag === 'Demonym') {\n var _plural = transform.toPlural(word, world);\n\n lexicon[_plural] = lexicon[_plural] || ['Demonym', 'Plural']; // only if it's safe\n }\n}; // throw a bunch of words in our lexicon\n// const doWord = function(words, tag, world) {\n// let lexicon = world.words\n// for (let i = 0; i < words.length; i++) {\n// addWord(words[i], tag, lexicon)\n// // do some fancier stuff\n// addMore(words[i], tag, world)\n// }\n// }\n\n\nvar addWords = {\n addWord: addWord,\n addMore: addMore\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;\n });\n };\n\n for (var _i = 0; _i < keys.length; _i++) {\n _loop(_i);\n }\n};\n\nvar addIrregulars_1 = addIrregulars;\n\n//words that can't be compressed, for whatever reason\nvar misc$1 = {\n // numbers\n '20th century fox': 'Organization',\n // '3m': 'Organization',\n '7 eleven': 'Organization',\n '7-eleven': 'Organization',\n g8: 'Organization',\n 'motel 6': 'Organization',\n vh1: 'Organization',\n q1: 'Date',\n q2: 'Date',\n q3: 'Date',\n q4: 'Date'\n};\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 = {\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\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 prt: 'bled',\n pst: '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 prt: 'brought',\n pst: 'brought'\n },\n broadcast: {\n pst: '_'\n },\n budget: {\n pst: '_ed'\n },\n build: {\n prt: 'built',\n pst: 'built'\n },\n burn: {\n prt: '_ed'\n },\n burst: {\n prt: '_'\n },\n buy: {\n prt: 'bought',\n pst: '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 prt: '_t',\n pst: '_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 prt: 'dug',\n pst: '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 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 prt: 'fought',\n pst: '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 hang: {\n prt: 'hung',\n pst: 'hung'\n },\n have: {\n g: 'having',\n prt: 'had',\n pst: 'had',\n pres: 'has'\n },\n hear: {\n prt: '_d',\n pst: '_d'\n },\n hide: {\n prt: 'hidden',\n pst: 'hid'\n },\n hit: {\n prt: '_'\n },\n hold: {\n prt: 'held',\n pst: 'held'\n },\n hurt: {\n prt: '_',\n pst: '_'\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 prt: 'laid',\n pst: 'laid'\n },\n lead: {\n prt: 'led',\n pst: 'led'\n },\n leap: {\n prt: '_t'\n },\n leave: {\n prt: 'left',\n pst: 'left'\n },\n lend: {\n prt: 'lent'\n },\n lie: {\n g: 'lying',\n pst: 'lay'\n },\n light: {\n prt: 'lit',\n pst: '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 prt: 'made',\n pst: 'made'\n },\n mean: {\n prt: '_t',\n pst: '_t'\n },\n meet: {\n a: '_er',\n g: '_ing',\n prt: 'met',\n pst: 'met'\n },\n miss: {\n pres: '_'\n },\n name: {\n g: 'naming'\n },\n pay: {\n prt: 'paid',\n pst: '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 prt: '_',\n pst: '_'\n },\n ride: {\n prt: 'ridden'\n },\n ring: {\n prt: 'rung',\n pst: 'rang'\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 prt: 'said',\n pst: 'said',\n pres: '_s'\n },\n seat: {\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 prt: 'sold',\n pst: '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 prt: 'shone',\n pst: 'shone'\n },\n shoot: {\n prt: 'shot',\n pst: '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 prt: 'slid',\n pst: '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 prt: 'spun',\n pst: '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 prt: 'stunk',\n pst: '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[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 = {\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: /(..)(ow)$/i,\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 = endsWith;\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.hasOwnProperty(c) === true) {\n for (var r = 0; r < suffixes[c].length; r += 1) {\n var reg = suffixes[c][r].reg;\n\n if (reg.test(str) === true) {\n return doTransform(str, suffixes[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 = 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 = conjugate; // console.log(conjugate('bake'))\n\n//turn 'quick' into 'quickest'\nvar do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/];\nvar dont_rules = [/ary$/];\nvar irregulars = {\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 = [{\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.hasOwnProperty(str)) {\n return irregulars[str];\n } //known transforms\n\n\n for (var i = 0; i < transforms.length; i++) {\n if (transforms[i].reg.test(str)) {\n return str.replace(transforms[i].reg, transforms[i].repl);\n }\n } //dont-rules\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-rules\n\n\n for (var _i2 = 0; _i2 < do_rules.length; _i2++) {\n if (do_rules[_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$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/];\nvar dont_rules$1 = [/ary$/, /ous$/];\nvar irregulars$1 = {\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$1.hasOwnProperty(str)) {\n return irregulars$1[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$1.length; _i++) {\n if (dont_rules$1[_i].test(str) === true) {\n return null;\n }\n } //do-patterns\n\n\n for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) {\n if (do_rules$1[_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$1 = {\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$1.toSuperlative(w);\n\n if (sup) {\n res.Superlative = sup;\n } // 'greater'\n\n\n var comp = fns$1.toComparative(w);\n\n if (comp) {\n res.Comparative = comp;\n }\n\n return res;\n};\n\nvar adjectives = conjugate$1;\n\n/** patterns for turning 'bus' to 'buses'*/\nvar suffixes$1 = {\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 = suffixes$1;\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.hasOwnProperty(c) === true) {\n for (var i = 0; i < _rules[c].length; i += 1) {\n var reg = _rules[c][i][0];\n\n if (reg.test(str) === true) {\n return str.replace(reg, _rules[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[/(..[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, '']];\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); // 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)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: /(..[^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 = 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 return str.replace(rule.reg, rule.to);\n }\n }\n }\n\n return str;\n};\n\nvar toInfinitive_1 = toInfinitive;\n\nvar irregulars$2 = {\n nouns: plurals,\n verbs: conjugations_1\n}; //these behaviours are configurable & shared across some plugins\n\nvar transforms$2 = {\n conjugate: conjugate_1,\n adjectives: adjectives,\n toPlural: toPlural,\n toSingular: toSingular_1,\n toInfinitive: toInfinitive_1\n};\nvar _isVerbose = false;\n/** all configurable linguistic data */\n\nvar World =\n/*#__PURE__*/\nfunction () {\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: misc$1,\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$2,\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$2,\n writable: true\n });\n Object.defineProperty(this, 'taggers', {\n enumerable: false,\n value: [],\n writable: true\n }); // add our compressed data to lexicon\n\n this.unpackWords(_data); // add our irregulars to lexicon\n\n this.addIrregulars(); // cache our abbreviations for our sentence-parser\n\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n value: {\n abbreviations: this.getByTag('Abbreviation')\n }\n });\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 /** get all terms in our lexicon with this tag */\n\n }, {\n key: \"getByTag\",\n value: function getByTag(tag) {\n var lex = this.words;\n var res = {};\n var words = Object.keys(lex);\n\n for (var i = 0; i < words.length; i++) {\n if (typeof lex[words[i]] === 'string') {\n if (lex[words[i]] === tag) {\n res[words[i]] = true;\n }\n } else if (lex[words[i]].some(function (t) {\n return t === tag;\n })) {\n res[words[i]] = true;\n }\n }\n\n return res;\n }\n /** augment our lingustic data with new data */\n\n }, {\n key: \"unpackWords\",\n value: function unpackWords(lex) {\n var tags = Object.keys(lex);\n\n for (var i = 0; i < tags.length; i++) {\n var words = Object.keys(efrtUnpack_min(lex[tags[i]]));\n\n for (var w = 0; w < words.length; w++) {\n addWords.addWord(words[w], tags[i], this.words); // do some fancier stuff\n\n addWords.addMore(words[w], tags[i], this);\n }\n }\n }\n /** put new words into our lexicon, properly */\n\n }, {\n key: \"addWords\",\n value: function addWords$1(obj) {\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var word = keys[i].toLowerCase();\n addWords.addWord(word, obj[keys[i]], this.words); // do some fancier stuff\n\n addWords.addMore(word, obj[keys[i]], this);\n }\n }\n }, {\n key: \"addIrregulars\",\n value: function addIrregulars() {\n addIrregulars_1(this);\n\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$1 = 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$1(this.irregulars);\n w2.tags = clone$1(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\nvar _01Utils$1 = createCommonjsModule(function (module, exports) {\n /** return the root, first document */\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});\nvar _01Utils_1 = _01Utils$1.all;\nvar _01Utils_2 = _01Utils$1.parent;\nvar _01Utils_3 = _01Utils$1.parents;\nvar _01Utils_4 = _01Utils$1.clone;\nvar _01Utils_5 = _01Utils$1.wordCount;\nvar _01Utils_6 = _01Utils$1.wordcount;\n\nvar _02Accessors = createCommonjsModule(function (module, exports) {\n /** use only the first result(s) */\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\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});\nvar _02Accessors_1 = _02Accessors.first;\nvar _02Accessors_2 = _02Accessors.last;\nvar _02Accessors_3 = _02Accessors.slice;\nvar _02Accessors_4 = _02Accessors.eq;\nvar _02Accessors_5 = _02Accessors.get;\nvar _02Accessors_6 = _02Accessors.firstTerms;\nvar _02Accessors_7 = _02Accessors.firstTerm;\nvar _02Accessors_8 = _02Accessors.lastTerms;\nvar _02Accessors_9 = _02Accessors.lastTerm;\nvar _02Accessors_10 = _02Accessors.termList;\nvar _02Accessors_11 = _02Accessors.groups;\nvar _02Accessors_12 = _02Accessors.group;\nvar _02Accessors_13 = _02Accessors.sentences;\nvar _02Accessors_14 = _02Accessors.sentence;\n\n// cache the easier conditions up-front\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: needTags,\n words: needWords\n };\n};\n\nvar failFast$1 = function failFast(doc, regs) {\n if (doc._cache && doc._cache.set === true) {\n var _cacheRequired = cacheRequired(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 checkCache = failFast$1;\n\nvar _03Match = createCommonjsModule(function (module, exports) {\n /** return a new Doc, with this one as a parent */\n exports.match = function (reg, name) {\n //parse-up the input expression\n var regs = syntax_1(reg);\n\n if (regs.length === 0) {\n return this.buildFrom([]);\n } //check our cache, if it exists\n\n\n if (checkCache(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 }, []);\n\n if (name !== undefined && name !== null && name !== '') {\n return this.buildFrom(matches).groups(name);\n }\n\n return this.buildFrom(matches);\n };\n /** return all results except for this */\n\n\n exports.not = function (reg) {\n //parse-up the input expression\n var regs = syntax_1(reg); //if it's empty, return them all!\n\n if (regs.length === 0 || checkCache(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 regs = syntax_1(reg); //check our cache, if it exists\n\n if (checkCache(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 regs = syntax_1(reg); //consult our cache, if it exists\n\n if (checkCache(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 regs = syntax_1(reg);\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 regs = syntax_1(reg); //consult our cache, if it exists\n\n if (checkCache(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 // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = syntax_1(reg);\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 // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = syntax_1(reg);\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 regs = syntax_1(reg); //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 regs = syntax_1(reg); //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});\nvar _03Match_1 = _03Match.match;\nvar _03Match_2 = _03Match.not;\nvar _03Match_3 = _03Match.matchOne;\nvar _03Match_4 = _03Match.ifNo;\nvar _03Match_5 = _03Match.has;\nvar _03Match_6 = _03Match.lookAhead;\nvar _03Match_7 = _03Match.lookAfter;\nvar _03Match_8 = _03Match.lookBehind;\nvar _03Match_9 = _03Match.lookBefore;\nvar _03Match_10 = _03Match.before;\nvar _03Match_11 = _03Match.after;\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 } //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$1 = 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$1 = 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$1 = 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$2 = 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$1,\n tagSafe: tagSafe$1,\n unTag: unTag$1,\n canBe: canBe$2\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});\nvar _06Lookup_1 = _06Lookup.lookup;\nvar _06Lookup_2 = _06Lookup.lookUp;\n\n/** freeze the current state of the document, for speed-purposes*/\nvar cache$1 = 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] = true;\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$1,\n uncache: uncache\n};\n\nvar titleCase$2 = 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$2(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 } 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$1 = 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$1\n};\n\nvar _02Insert = createCommonjsModule(function (module, exports) {\n /** add these new terms to the end*/\n exports.append = function (str) {\n var _this = this;\n\n if (!str) {\n return 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 = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now\n //tag it\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 } // 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 = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now\n //tag it\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});\nvar _02Insert_1 = _02Insert.append;\nvar _02Insert_2 = _02Insert.insertAfter;\nvar _02Insert_3 = _02Insert.insertAt;\nvar _02Insert_4 = _02Insert.prepend;\nvar _02Insert_5 = _02Insert.insertBefore;\nvar _02Insert_6 = _02Insert.concat;\nvar _02Insert_7 = _02Insert.remove;\n\nvar shouldTrim = {\n clean: true,\n reduced: true,\n root: true\n};\n/** return the document as text */\n\nvar text$1 = 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$1\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\n o.offset = o.terms[0].offset;\n o.offset.length = o.text.length;\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});\nvar _02Json_1 = _02Json.json;\nvar _02Json_2 = _02Json.data;\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 });\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$2 = {\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$2.alphabetical = methods$2.alpha;\nmethods$2.wordcount = methods$2.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$2[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$4 = function unique() {\n var list = [].concat(this.list);\n var obj = {};\n list = list.filter(function (p) {\n var str = p.text('reduced').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$4\n};\n\nvar isPunct = /[\\[\\]{}⟨⟩:,،、‒–—―…‹›«»‐\\-;\\/⁄·*\\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g;\nvar quotes = /['‘’“”\"′″‴]+/g;\nvar methods$3 = {\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$3;\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$1 = {\n light: {},\n medium: {\n \"case\": true,\n contractions: true,\n parentheses: true,\n quotations: true,\n adverbs: true\n }\n};\nmapping$1.heavy = Object.assign({}, mapping$1.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$1[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 = syntax_1(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 = syntax_1(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 = syntax_1(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});\nvar _03Split_1 = _03Split.splitOn;\nvar _03Split_2 = _03Split.splitAfter;\nvar _03Split_3 = _03Split.split;\nvar _03Split_4 = _03Split.splitBefore;\nvar _03Split_5 = _03Split.segment;\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\nvar _05Whitespace = createCommonjsModule(function (module, exports) {\n /** add this punctuation or whitespace before each match: */\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});\nvar _05Whitespace_1 = _05Whitespace.pre;\nvar _05Whitespace_2 = _05Whitespace.post;\nvar _05Whitespace_3 = _05Whitespace.trim;\nvar _05Whitespace_4 = _05Whitespace.hyphenate;\nvar _05Whitespace_5 = _05Whitespace.dehyphenate;\nvar _05Whitespace_6 = _05Whitespace.deHyphenate;\nvar _05Whitespace_7 = _05Whitespace.toQuotations;\nvar _05Whitespace_8 = _05Whitespace.toQuotation;\nvar _05Whitespace_9 = _05Whitespace.toParentheses;\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$1, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract);\n\nvar methods$5 = {}; // 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$5[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$5.emojis = methods$5.emoji;\nmethods$5.atmentions = methods$5.atMentions;\nmethods$5.words = methods$5.terms;\n/** return anything tagged as a phone number */\n\nmethods$5.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/** money + currency pair */\n\n\nmethods$5.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$5.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$5.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$5.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$5.things = methods$5.entities;\nmethods$5.topics = methods$5.entities;\nvar _simple = methods$5;\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 = /[\\'‘’‛‵′`´]$/; //\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 } // '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$1 = 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'], [/^@\\w{2,}$/, 'AtMention'], [/^(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[/^[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)$/, 'Time'], //4pm\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/, '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]{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//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]{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|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}$/, 'Fraction'], //3/2ths\n//range\n[/^[0-9.]{1,2}[-–][0-9]{1,2}$/, ['Value', 'NumberRange']], //7-8\n[/^[0-9.]{1,4}(st|nd|rd|th)?[-–][0-9\\.]{1,4}(st|nd|rd|th)?$/, 'NumberRange'], //5-7\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 = 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;\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 = 'Adjective';\nvar Inf = 'Infinitive';\nvar Pres = 'PresentTense';\nvar Sing = 'Singular';\nvar Past = 'PastTense';\nvar Adverb = 'Adverb';\nvar Exp = 'Expression';\nvar Actor = 'Actor';\nvar Verb = 'Verb';\nvar Noun = 'Noun';\nvar Last = 'LastName'; //the order here matters.\n//regexes indexed by mandated last-character\n\nvar endsWith$1 = {\n a: [[/.[aeiou]na$/, Noun], [/.[oau][wvl]ska$/, Last], //polish (female)\n [/.[^aeiou]ica$/, Sing], [/^([hyj]a)+$/, Exp] //hahah\n ],\n c: [[/.[^aeiou]ic$/, Adj]],\n d: [//==-ed==\n //double-consonant\n [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past], //popped, planned\n //double-vowel\n [/.[aeo]{2}[bdgmnprvz]ed$/, Past], //beeped, mooned, veered\n //-hed\n [/.[aeiou][sg]hed$/, Past], //stashed, sighed\n //-rd\n [/.[aeiou]red$/, Past], //stored\n [/.[aeiou]r?ried$/, Past], //buried\n //-led\n [/.[bcdgtr]led$/, Past], //startled, rumbled\n [/.[aoui]f?led$/, Past], //impaled, stifled\n //-sed\n [/.[iao]sed$/, Past], //franchised\n [/[aeiou]n?[cs]ed$/, Past], //laced, lanced\n //-med\n [/[aeiou][rl]?[mnf]ed$/, Past], //warmed, attained, engulfed\n //-ked\n [/[aeiou][ns]?c?ked$/, Past], //hooked, masked\n //-ged\n [/[aeiou][nl]?ged$/, Past], //engaged\n //-ted\n [/.[tdbwxz]ed$/, Past], //bribed, boxed\n [/[^aeiou][aeiou][tvx]ed$/, Past], //boxed\n //-ied\n [/.[cdlmnprstv]ied$/, Past], //rallied\n [/[^aeiou]ard$/, Sing], //card\n [/[aeiou][^aeiou]id$/, Adj], [/.[vrl]id$/, Adj]],\n e: [[/.[lnr]ize$/, Inf], [/.[^aeiou]ise$/, Inf], [/.[aeiou]te$/, Inf], [/.[^aeiou][ai]ble$/, Adj], [/.[^aeiou]eable$/, Adj], [/.[ts]ive$/, Adj]],\n h: [[/.[^aeiouf]ish$/, Adj], [/.v[iy]ch$/, Last], //east-europe\n [/^ug?h+$/, Exp], //uhh\n [/^uh[ -]?oh$/, Exp] //uhoh\n ],\n i: [[/.[oau][wvl]ski$/, Last] //polish (male)\n ],\n k: [[/^(k)+$/, Exp] //kkkk\n ],\n l: [[/.[gl]ial$/, Adj], [/.[^aeiou]ful$/, Adj], [/.[nrtumcd]al$/, Adj], [/.[^aeiou][ei]al$/, Adj]],\n m: [[/.[^aeiou]ium$/, Sing], [/[^aeiou]ism$/, Sing], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm\n [/^\\d+ ?[ap]m$/, 'Date']],\n n: [[/.[lsrnpb]ian$/, Adj], [/[^aeiou]ician$/, Actor], [/[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'], [/.[ilk]er$/, 'Comparative'], [/[aeiou][pns]er$/, Sing], [/[^i]fer$/, Inf], [/.[^aeiou][ao]pher$/, Actor]],\n t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj], [/[aeiou].*ist$/, Adj], [/^[a-z]et$/, Verb]],\n s: [[/.[rln]ates$/, Pres], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing], [/.[aeiou]sks$/, Pres], //masks\n [/.[aeiou]kes$/, Pres], //bakes\n [/[aeiou][^aeiou]is$/, Sing], [/[a-z]\\'s$/, Noun], [/^yes+$/, Exp] //yessss\n ],\n v: [[/.[^aeiou][ai][kln]ov$/, Last] //east-europe\n ],\n y: [[/.[cts]hy$/, Adj], [/.[st]ty$/, Adj], [/.[gk]y$/, Adj], [/.[tnl]ary$/, Adj], [/.[oe]ry$/, Sing], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj], [/.(gg|bb|zz)ly$/, Adj], [/.[aeiou]my$/, Adj], [/[ea]{2}zy$/, Adj], [/.[^aeiou]ity$/, Sing]]\n};\n\n//just a foolish lookup of known suffixes\nvar Adj$1 = 'Adjective';\nvar Inf$1 = 'Infinitive';\nvar Pres$1 = 'PresentTense';\nvar Sing$1 = 'Singular';\nvar Past$1 = 'PastTense';\nvar Avb = 'Adverb';\nvar Plrl = 'Plural';\nvar Actor$1 = 'Actor';\nvar Vb = 'Verb';\nvar Noun$1 = 'Noun';\nvar Last$1 = 'LastName';\nvar Modal = 'Modal'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup\n\nvar suffixMap = [null, //0\nnull, //1\n{\n //2-letter\n ea: Sing$1,\n ia: Noun$1,\n ic: Adj$1,\n ly: Avb,\n \"'n\": Vb,\n \"'t\": Vb\n}, {\n //3-letter\n oed: Past$1,\n ued: Past$1,\n xed: Past$1,\n ' so': Avb,\n \"'ll\": Modal,\n \"'re\": 'Copula',\n azy: Adj$1,\n end: Vb,\n ped: Past$1,\n ffy: Adj$1,\n ify: Inf$1,\n ing: 'Gerund',\n //likely to be converted to Adj after lexicon pass\n ize: Inf$1,\n lar: Adj$1,\n mum: Adj$1,\n nes: Pres$1,\n nny: Adj$1,\n oid: Adj$1,\n ous: Adj$1,\n que: Adj$1,\n rmy: Adj$1,\n rol: Sing$1,\n sis: Sing$1,\n zes: Pres$1\n}, {\n //4-letter\n amed: Past$1,\n aped: Past$1,\n ched: Past$1,\n lked: Past$1,\n nded: Past$1,\n cted: Past$1,\n dged: Past$1,\n akis: Last$1,\n //greek\n cede: Inf$1,\n chuk: Last$1,\n //east-europe\n czyk: Last$1,\n //polish (male)\n ects: Pres$1,\n ends: Vb,\n enko: Last$1,\n //east-europe\n ette: Sing$1,\n fies: Pres$1,\n fore: Avb,\n gate: Inf$1,\n gone: Adj$1,\n ices: Plrl,\n ints: Plrl,\n ions: Plrl,\n less: Avb,\n llen: Adj$1,\n made: Adj$1,\n nsen: Last$1,\n //norway\n oses: Pres$1,\n ould: Modal,\n some: Adj$1,\n sson: Last$1,\n //swedish male\n tage: Inf$1,\n teen: 'Value',\n tion: Sing$1,\n tive: Adj$1,\n tors: Noun$1,\n vice: Sing$1\n}, {\n //5-letter\n tized: Past$1,\n urned: Past$1,\n eased: Past$1,\n ances: Plrl,\n bound: Adj$1,\n ettes: Plrl,\n fully: Avb,\n ishes: Pres$1,\n ities: Plrl,\n marek: Last$1,\n //polish (male)\n nssen: Last$1,\n //norway\n ology: Noun$1,\n ports: Plrl,\n rough: Adj$1,\n tches: Pres$1,\n tieth: 'Ordinal',\n tures: Plrl,\n wards: Avb,\n where: Avb\n}, {\n //6-letter\n auskas: Last$1,\n //lithuania\n keeper: Actor$1,\n logist: Actor$1,\n teenth: 'Value'\n}, {\n //7-letter\n opoulos: Last$1,\n //greek\n sdottir: Last$1 //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$1.hasOwnProperty(_char) === true) {\n var regs = endsWith$1[_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$1 = function checkRegex(term, world) {\n knownSuffixes(term, world);\n endRegexs(term, world);\n};\n\nvar _04Suffixes = checkRegex$1;\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$1,\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$3 = /^[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$3.test(term.text) === true && hasNumber.test(term.text) === false) {\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 = [/(^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 = [/(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 = {\n isSingular: isSingular,\n isPlural: isPlural\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.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.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$1 = /^[A-Z]('s|,)?$/;\nvar periodSeperated = /([A-Z]\\.){2}[A-Z]?/i;\nvar oneLetterWord = {\n I: true,\n A: true\n};\n\nvar isAcronym$2 = 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 }\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$2(term, world)) {\n term.tag('Acronym', 'acronym-step', world);\n term.tag('Noun', 'acronym-infer', world);\n } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym$1.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$3 = {\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$3.hasOwnProperty(term.clean) === true) {\n return irregulars$3[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 = /([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);\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$4 = {\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$4.hasOwnProperty(term.clean)) {\n return irregulars$4[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 blacklist = {\n that: true,\n there: 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 (blacklist.hasOwnProperty(term.clean)) {\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 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]+)[-–—]([0-9]+)$/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 }\n\n return null;\n};\n\nvar _06Ranges = checkRange;\n\nvar contraction$1 = /^(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$1);\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]+$/;\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.tags.Number = true;\n t.tags.Cardinal = true;\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 //exactly like\n var m = hasWord(doc, 'like');\n m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often) [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').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train\n\n m = hasTag(doc, 'Value');\n m = m.match('#Value #PresentTense');\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-'); //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|#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$5 = 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$5;\n\n// order matters\nvar list = [// ==== 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) (#Adjective|#Noun)',\n tag: '#Copula #Adverb #Adjective',\n reason: 'sometimes-adverb'\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{\n match: 'that #Noun [#Verb]',\n group: 0,\n tag: 'Determiner',\n 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: '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{\n match: '#Noun [#Particle]',\n group: 0,\n tag: 'Preposition',\n 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}, {\n match: '[which] . (#Noun)+ #Pronoun',\n group: 0,\n tag: 'QuestionWord',\n reason: 'which-question2'\n}, {\n match: 'which',\n tag: 'QuestionWord',\n 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}];\nvar _01Misc = list;\n\n//Dates: 'june' or 'may'\nvar dates = '(april|june|may|jan|august|eve)';\nvar list$1 = [// ==== 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}, //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: 'Infinitive',\n reason: 'quickly-march'\n}, //march quickly\n{\n match: \"(march|may) [#Adverb]\",\n group: 0,\n tag: 'Infinitive',\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: 'in-june'\n}, {\n match: \"before [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-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}];\nvar _02Dates = list$1;\n\nvar _03Noun = [// ==== 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: '#Determiner [(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}, //big dreams, critical thinking\n{\n match: '#Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adj-presentTense'\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}, //running-a-show\n{\n match: '#Gerund #Determiner [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-a-show'\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}, //by a bear.\n{\n match: '#Determiner #Adjective [#Infinitive]$',\n group: 0,\n tag: 'Noun',\n reason: 'a-inf'\n}, //the wait to vote\n{\n match: '(the|this) [#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}, //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}, // walk the walk\n{\n match: '(the|those|these) #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'det-inf'\n}, {\n match: '(the|those|these) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-pres'\n}, {\n match: '(the|those|these) #Adjective? [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-past'\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 great run\n{\n match: '(a|an) #Adjective [(#Infinitive|#PresentTense)]',\n tag: 'Noun',\n reason: 'a|an2'\n}, //a tv show\n{\n match: '(a|an) #Noun [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf'\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}, //\n{\n match: '[#Infinitive] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'inf-copula'\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}];\n\nvar adjectives$1 = '(misty|rusty|dusty|rich|randy)';\nvar list$2 = [// 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}, //a staggering cost\n{\n match: '(a|an) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a|an'\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}];\nvar _04Adjective = list$2;\n\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}, // 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 [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}, //cheering hard - dropped -ly's\n{\n match: '#PresentTense [(hard|quick|long|bright|slow)]',\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}];\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{\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}, // ==== Money ====\n{\n match: '#Value+ #Currency',\n tag: 'Money',\n reason: '15 usd'\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 tag: 'Value',\n reason: 'value-abbr'\n}, //seven point five\n{\n match: '#Value (point|decimal) #Value',\n tag: 'Value',\n reason: 'value-point-value'\n}, // ten grand\n{\n match: '#Value grand',\n tag: 'Value',\n reason: 'value-grand'\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}, // 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: '[(a|an)] (#Duration|hundred|thousand|million|billion|trillion)',\n group: 0,\n tag: 'Value',\n reason: 'a-is-one'\n}];\n\nvar verbs$1 = '(pat|wade|ollie|will|rob|buck|bob|mark|jack)';\nvar list$3 = [// ==== 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: \"[(#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{\n match: \"#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n 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}, //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: \"[(#Modal|did) (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'modal-verb'\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}, //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}, // ==== Phrasal ====\n//'foo-up'\n{\n match: '(#Verb && @hasHyphen) up',\n group: 0,\n tag: 'PhrasalVerb',\n reason: 'foo-up'\n}, {\n match: '(#Verb && @hasHyphen) off',\n group: 0,\n tag: 'PhrasalVerb',\n reason: 'foo-off'\n}, {\n match: '(#Verb && @hasHyphen) over',\n group: 0,\n tag: 'PhrasalVerb',\n reason: 'foo-over'\n}, {\n match: '(#Verb && @hasHyphen) out',\n group: 0,\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}, // ==== 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{\n match: '#Noun #Adverb [#Noun]',\n group: 0,\n tag: 'Verb',\n 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}, // would wade\n{\n match: \"#Modal [\".concat(verbs$1, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'would-mark'\n}, {\n match: \"#Adverb [\".concat(verbs$1, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'really-mark'\n}, // wade smith\n{\n match: \"\".concat(verbs$1, \" #Person\"),\n tag: 'Person',\n reason: 'rob-smith'\n}, // wade m. Cooper\n{\n match: \"\".concat(verbs$1, \" #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$3;\n\nvar places = '(paris|alexandria|houston|kobe|salvador|sydney)';\nvar list$4 = [// ==== 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|or|pa|sc|tn|tx|ut|vt|pr)]',\n group: 0,\n tag: 'Region',\n reason: 'us-state'\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}, // ==== 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{\n match: \"in [\".concat(places, \"]\"),\n group: 0,\n tag: 'Place',\n reason: 'in-paris'\n}, {\n match: \"near [\".concat(places, \"]\"),\n group: 0,\n tag: 'Place',\n reason: 'near-paris'\n}, {\n match: \"at [\".concat(places, \"]\"),\n group: 0,\n tag: 'Place',\n reason: 'at-paris'\n}, {\n match: \"from [\".concat(places, \"]\"),\n group: 0,\n tag: 'Place',\n reason: 'from-paris'\n}, {\n match: \"to [\".concat(places, \"]\"),\n group: 0,\n tag: 'Place',\n reason: 'to-paris'\n}, {\n match: \"#Place [\".concat(places, \"]\"),\n group: 0,\n tag: 'Place',\n reason: 'tokyo-paris'\n}, // houston texas\n{\n match: \"[\".concat(places, \"] #Place\"),\n group: 0,\n tag: 'Place',\n reason: 'paris-france'\n}];\nvar _08Place = list$4;\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$1 = '(rose|robin|dawn|ray|holly|bill|joy|viola|penny|sky|violet|daisy|melody|kelvin|hope|mercedes|olive|jewel|faith|van|charity|miles|lily|summer|dolly|rod|dick|cliff|lane|reed|kitty|art|jean|trinity)';\nvar months = '(january|april|may|june|jan|sep)'; //summer|autumn\n\nvar list$5 = [// ==== 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: '#Acronym #ProperNoun',\n tag: 'Person',\n reason: 'acronym-titlecase',\n safe: true\n}, //ludwig van beethovan\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: 'von 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}, //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$1, \" #Person\"),\n tag: 'Person',\n reason: 'ray-smith',\n safe: true\n}, // faith m. Smith\n{\n match: \"\".concat(nouns$1, \" #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{\n match: \"[\".concat(months, \"] #PresentTense for\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-active-for'\n}, // may waits for\n{\n match: \"[\".concat(months, \"] #PresentTense to\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-active-to'\n}, // april will\n{\n match: \"[\".concat(months, \"] #Modal\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-modal'\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}];\nvar _10People = list$5;\n\nvar matches = [];\nmatches = matches.concat(_01Misc);\nmatches = matches.concat(_02Dates);\nmatches = matches.concat(_03Noun);\nmatches = matches.concat(_04Adjective);\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$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: _unique(needTags),\n words: _unique(needWords)\n };\n};\n\nvar allLists = function allLists(m) {\n var more = [];\n var lists = m.reg.filter(function (r) {\n return r.oneOf !== undefined;\n });\n\n if (lists.length === 1) {\n var i = m.reg.findIndex(function (r) {\n return r.oneOf !== undefined;\n });\n Object.keys(m.reg[i].oneOf).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].oneOf;\n newM.reason += '-' + w;\n more.push(newM);\n });\n }\n\n return more;\n}; // parse them\n\n\nvar all = [];\nmatches.forEach(function (m) {\n m.reg = syntax_1(m.match);\n var enumerated = allLists(m);\n\n if (enumerated.length > 0) {\n all = all.concat(enumerated);\n } else {\n all.push(m);\n }\n});\nall.forEach(function (m) {\n m.required = cacheRequired$1(m.reg);\n return m;\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 = function addMethod(Doc) {\n /** */\n var Abbreviations =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(Abbreviations, _Doc);\n\n function Abbreviations() {\n _classCallCheck(this, Abbreviations);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Abbreviations).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;\n\nvar hasPeriod = /\\./;\n\nvar addMethod$1 = function addMethod(Doc) {\n /** */\n var Acronyms =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(Acronyms, _Doc);\n\n function Acronyms() {\n _classCallCheck(this, Acronyms);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Acronyms).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$1;\n\nvar addMethod$2 = 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('(#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$2;\n\nvar addMethod$3 = function addMethod(Doc) {\n /** */\n var Contractions =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(Contractions, _Doc);\n\n function Contractions(list, from, world) {\n var _this;\n\n _classCallCheck(this, Contractions);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Contractions).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$3;\n\nvar addMethod$4 = 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 =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(Lists, _Doc);\n\n function Lists() {\n _classCallCheck(this, Lists);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Lists).apply(this, arguments));\n }\n\n _createClass(Lists, [{\n key: \"conjunctions\",\n\n /** coordinating conjunction */\n value: 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$4;\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$5 = {\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$5.hasOwnProperty(str)) {\n return irregulars$5[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$1 = [/(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$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, /(^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$2 = {\n isSingular: isSingular$1,\n isPlural: isPlural$1\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$2 = function isPlural(str) {\n // isSingular suffix rules\n if (_rules$2.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$2.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$2;\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$6 = {\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$6;\n\nvar addMethod$5 = function addMethod(Doc) {\n /** */\n var Nouns =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(Nouns, _Doc);\n\n function Nouns() {\n _classCallCheck(this, Nouns);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Nouns).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 // 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 = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons\n\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 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$6 = function addMethod(Doc) {\n /** anything between (these things) */\n var Parentheses =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(Parentheses, _Doc);\n\n function Parentheses() {\n _classCallCheck(this, Parentheses);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Parentheses).apply(this, arguments));\n }\n\n _createClass(Parentheses, [{\n key: \"unwrap\",\n\n /** remove the parentheses characters */\n value: 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$6;\n\nvar addMethod$7 = function addMethod(Doc) {\n /** */\n var Possessives =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(Possessives, _Doc);\n\n function Possessives(list, from, world) {\n var _this;\n\n _classCallCheck(this, Possessives);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Possessives).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$7;\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$8 = function addMethod(Doc) {\n /** \"these things\" */\n var Quotations =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(Quotations, _Doc);\n\n function Quotations() {\n _classCallCheck(this, Quotations);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Quotations).apply(this, arguments));\n }\n\n _createClass(Quotations, [{\n key: \"unwrap\",\n\n /** remove the quote characters */\n value: 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$8;\n\n// walked => walk - turn a verb into it's root form\nvar toInfinitive$1 = function toInfinitive(parsed, world) {\n var verb = parsed.verb; //1. if it's already infinitive\n\n var str = verb.text('normal');\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$1 = toInfinitive$1;\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$3 = 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$2 = isPlural$3;\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');\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$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$1(parsed, world);\n\n vb.replaceWith(_inf, true);\n\n if (isPlural_1$2(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$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$2(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// turn 'would not really walk up' into parts\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 }; // 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$2 = 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$2(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\nvar conjugate$2 = 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 }\n\n var hasHyphen = parsed.verb.termList(0).hasHyphen();\n var infinitive = toInfinitive_1$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\n\n if (parsed.adverb.found) {\n var adverb = parsed.adverb.text();\n\n var _space = hasHyphen === true ? '-' : ' ';\n\n if (parsed.adverbAfter === true) {\n Object.keys(forms).forEach(function (k) {\n return forms[k] += _space + adverb;\n });\n } else {\n Object.keys(forms).forEach(function (k) {\n return 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$1 = conjugate$2;\n\nvar methods$7 = {\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$2(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$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$2(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\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$2(vb);\n\n if (isPlural_1$2(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$2(vb);\n\n if (isPlural_1$2(parsed, _this3.world) === false) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n\n /** */\n conjugate: function conjugate() {\n var _this4 = this;\n\n var result = [];\n this.forEach(function (vb) {\n var parsed = parse$2(vb);\n\n var forms = conjugate_1$1(parsed, _this4.world);\n\n result.push(forms);\n });\n return result;\n },\n\n /** */\n toPastTense: function toPastTense() {\n var _this5 = this;\n\n this.forEach(function (vb) {\n var parsed = parse$2(vb);\n\n var str = conjugate_1$1(parsed, _this5.world).PastTense;\n\n if (str) {\n vb.replaceWith(str, false); // vb.tag('PastTense')\n }\n });\n return this;\n },\n\n /** */\n toPresentTense: function toPresentTense() {\n var _this6 = this;\n\n this.forEach(function (vb) {\n var parsed = parse$2(vb);\n\n var obj = conjugate_1$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 vb.replaceWith(str, false);\n vb.tag('PresentTense');\n }\n });\n return this;\n },\n\n /** */\n toFutureTense: function toFutureTense() {\n var _this7 = this;\n\n this.forEach(function (vb) {\n var parsed = parse$2(vb);\n\n var str = conjugate_1$1(parsed, _this7.world).FutureTense;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('FutureTense');\n }\n });\n return this;\n },\n\n /** */\n toInfinitive: function toInfinitive() {\n var _this8 = this;\n\n this.forEach(function (vb) {\n var parsed = parse$2(vb);\n\n var str = conjugate_1$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 /** */\n toGerund: function toGerund() {\n var _this9 = this;\n\n this.forEach(function (vb) {\n var parsed = parse$2(vb);\n\n var str = conjugate_1$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 /** 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 /** add a 'not' to these verbs */\n toNegative: function toNegative() {\n var _this10 = this;\n\n this.list.forEach(function (p) {\n var doc = _this10.buildFrom([p]);\n\n var parsed = parse$2(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\nvar addMethod$9 = function addMethod(Doc) {\n /** */\n var Verbs =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(Verbs, _Doc);\n\n function Verbs() {\n _classCallCheck(this, Verbs);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Verbs).apply(this, arguments));\n }\n\n return Verbs;\n }(Doc); // add-in our methods\n\n\n Object.assign(Verbs.prototype, methods$7); // 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'); // // combine them back together\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'); //grab (n)th result\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$9;\n\nvar addMethod$a = function addMethod(Doc) {\n /** */\n var People =\n /*#__PURE__*/\n function (_Doc) {\n _inherits(People, _Doc);\n\n function People() {\n _classCallCheck(this, People);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(People).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$a;\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$8 = {\n misc: methods$4,\n selections: _simple\n};\n/** a parsed text object */\n\nvar Doc =\n/*#__PURE__*/\nfunction () {\n function Doc(list, from, world) {\n var _this = this;\n\n _classCallCheck(this, Doc);\n\n this.list = list; //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$8.misc);\nObject.assign(Doc.prototype, methods$8.selections); //add sub-classes\n\nSubset(Doc); //aliases\n\nvar aliases$1 = {\n untag: 'unTag',\n and: 'match',\n notIf: 'ifNo',\n only: 'if',\n onlyIf: 'if'\n};\nObject.keys(aliases$1).forEach(function (k) {\n return Doc.prototype[k] = Doc.prototype[aliases$1[k]];\n});\nvar Doc_1 = Doc;\n\nvar smallTagger = function smallTagger(doc) {\n var terms = doc.termList();\n _01Lexicon(terms, doc.world);\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) {\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 /** current version of the library */\n\n\n nlp.version = _version; // alias\n\n nlp[\"import\"] = nlp.load;\n return nlp;\n}\n\nvar src = instance(new World_1());\n\nexport default src;\n","const isObject = function(obj) {\r\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\r\n}\r\nconst fromTemplate = function(doc) {\r\n let tmpl = doc.template('short description')\r\n if (tmpl && isObject(tmpl) && tmpl.description) {\r\n return tmpl.description\r\n }\r\n return null\r\n}\r\nmodule.exports = fromTemplate\r\n","const preProcess = function (doc) {\r\n doc.parentheses().remove()\r\n return doc\r\n}\r\nmodule.exports = preProcess\r\n","const cleanUp = function (s) {\r\n // 'an actor and was a politician'\r\n s.remove('and #Copula .*')\r\n return s\r\n}\r\n\r\n// founded in 1952 as the flagship ..\r\nconst findPivot = function (s) {\r\n let m = s.matchOne('#Copula+ (a|an|the|any|one) of?')\r\n if (!m.found) {\r\n m = s.matchOne('#Copula+')\r\n }\r\n if (!m.found) {\r\n m = s.matchOne('refers to (a|an|the|any)? of?')\r\n }\r\n if (!m.found) {\r\n m = s.matchOne('(constitutes|describes) (a|an|the|any)? of?')\r\n }\r\n if (!m.found) {\r\n return null\r\n }\r\n let f = s.splitOn(m)\r\n let verb = f.eq(1)\r\n let article = verb.match(`(a|an|the|any)? of?`)\r\n verb.remove(`(a|an|the|any)? of?`)\r\n return {\r\n before: f.eq(0),\r\n verb: f.eq(1),\r\n article: article,\r\n after: cleanUp(f.eq(2))\r\n }\r\n}\r\nmodule.exports = findPivot\r\n","const byClause = function (s) {\r\n // 'an actor and also a politician'\r\n s.remove('and (also|eventually) (a|an|the|#Possessive) .*')\r\n // 'an actor who was a politician'\r\n s.remove('!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*')\r\n // past-tense verbs 'located in spain'\r\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\r\n //\r\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\r\n\r\n return s\r\n}\r\nmodule.exports = byClause\r\n","const safeCuts = function (s) {\r\n // 'in hamilton, Canada'\r\n if (s.has('(#Place && @hasComma) #Country+$')) {\r\n s.remove('#Country+$')\r\n }\r\n // 'which spans the '\r\n if (s.has('#Noun (that|which|who) #PresentTense the .*')) {\r\n s.remove(' that #PresentTense the .*')\r\n }\r\n // 'owned by the ...'\r\n if (s.has('#Noun #PastTense by the .*')) {\r\n s.remove('#PastTense by the .*')\r\n }\r\n // 'an american actress'\r\n s.remove('#Demonym')\r\n // professional hockey player\r\n s.remove('(professional|former)')\r\n\r\n //event-templates\r\n s.remove('and? held annually .*')\r\n s.remove('taking place each .*')\r\n\r\n // ordinal templates - the fifth fastest ..\r\n s.remove('^one of (the|many|several|#Value)+')\r\n s.remove('^(a|an|the)? #Ordinal? #Superlative')\r\n s.remove('^(a|an|the)? #Ordinal? most #Adjective')\r\n\r\n //\r\n s.remove('born in .*')\r\n s.remove('born #Date+ in? #Place+?')\r\n s.remove('(first|initially|originally)? (located|founded|started|based|formed) in .*')\r\n s.remove('(which|who|that) (is|was) .*')\r\n s.remove('^the name of')\r\n\r\n return s\r\n}\r\nmodule.exports = safeCuts\r\n","const isIndependent = function (c) {\r\n if (c.has('^(and|the|which|who|whom|also|a|an|the)')) {\r\n return true\r\n }\r\n // 'part of abu dabi'\r\n if (c.has('^(west|north|south|east|part) of')) {\r\n return true\r\n }\r\n // 'written by .'\r\n if (c.has('^#PastTense by .')) {\r\n return true\r\n }\r\n // 'sometimes called ..'\r\n if (c.has('^(occasionally|sometimes|frequently)')) {\r\n return true\r\n }\r\n // 'such as ..'\r\n if (c.has('^such as')) {\r\n return true\r\n }\r\n // 'featuring gold feathers ..'\r\n if (c.has('^(including|featuring|depicting)')) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nconst hardCuts = function (s) {\r\n // .. in san fransisco\r\n if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) {\r\n s.remove('(located|based) in #Place+$')\r\n } else if (\r\n s.has(\r\n '(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$'\r\n )\r\n ) {\r\n s.remove('(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$')\r\n } else if (s.has('(#Noun|#Value) in #Place+$')) {\r\n s.remove('in #Place+$')\r\n } else {\r\n s.remove('and? part of #Place+$')\r\n s.remove('and? near #Place+$')\r\n }\r\n\r\n // by clause\r\n let clauses = s.clauses()\r\n if (clauses.length > 1) {\r\n let first = clauses.eq(0)\r\n let second = clauses.eq(1)\r\n //can we just choose the first clause?\r\n if (isIndependent(second)) {\r\n s = clauses.eq(0)\r\n } else if (second.has('^(#PastTense)') && first.has('(#Noun|#Value)$')) {\r\n // 'produced by...'\r\n s = clauses.eq(0)\r\n } else if (second.has('^(#Gerund)') && first.has('#Noun$')) {\r\n // 'featuring a ...'\r\n s = clauses.eq(0)\r\n } else {\r\n // can we remove the last clause, atleast?\r\n let last = clauses.last()\r\n if (isIndependent(last)) {\r\n clauses.list.pop()\r\n s = clauses.join()\r\n }\r\n }\r\n }\r\n\r\n //.. writen by sandro leonardo\r\n if (s.has('(#Noun|and) #PastTense by')) {\r\n s.remove('#PastTense by .*')\r\n }\r\n //\r\n s.remove('and? designed to .*')\r\n s.remove('and? owned by .*')\r\n s.remove('and? consisting of .*')\r\n // , which collapsed\r\n if (s.has('@hasComma (which|who) #Verb')) {\r\n s.remove('(which|who) .*')\r\n }\r\n // , then\r\n // if (s.has('@hasComma (then)')) {\r\n // s.remove('(which|who) .*')\r\n // }\r\n return s\r\n}\r\nmodule.exports = hardCuts\r\n","const lastTry = function (s) {\r\n s.remove('(small|large|minor|major)')\r\n s.remove('(extinct|retired|annual|biweekly|monthly|daily)')\r\n s.remove('(female|male)')\r\n s.remove('(private|independent|official|unofficial|officially)')\r\n s.remove('(southern|northern|eastern|western|northeastern|northwestern)')\r\n\r\n //\r\n s.remove('^(family|clade|genus|species|order) of')\r\n return s\r\n}\r\nmodule.exports = lastTry\r\n","//check text is appropriate length\r\nconst isGood = function (doc, options) {\r\n if (doc && typeof doc.text === 'function') {\r\n let text = doc.text()\r\n if (text && text.length > options.min && text.length < options.max) {\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\nmodule.exports = isGood\r\n","const nlp = require('compromise')\r\nconst preProcess = require('./00-preProcess')\r\nconst findPivot = require('./01-pivot')\r\nconst byClause = require('./02-byClause')\r\nconst safeCut = require('./03-safeCuts')\r\nconst hardCut = require('./04-hardCuts')\r\nconst lastTry = require('./05-lastTry')\r\nconst isGood = require('./_isGood')\r\n\r\nconst post = function (s) {\r\n s.remove('^(and|or|but)')\r\n s.remove('(and|or|but)$')\r\n s.post('') // remove trailing comma\r\n return s.text()\r\n}\r\n\r\n// let count = 0\r\nconst doSentence = function (doc, options) {\r\n let sentence = doc.sentences(0)\r\n if (!sentence) {\r\n return ''\r\n }\r\n let txt = sentence.text()\r\n let s = nlp(txt)\r\n preProcess(s)\r\n\r\n let pivot = findPivot(s)\r\n // if we can't pivot it properly, don't bother\r\n if (!pivot || !pivot.verb || !pivot.verb.found) {\r\n return ''\r\n }\r\n let after = pivot.after\r\n if (options.article && pivot.article && pivot.article.found) {\r\n after.prepend(pivot.article.text())\r\n }\r\n // maybe it's good already\r\n if (isGood(after, options)) {\r\n return post(after)\r\n }\r\n // parse major chunks\r\n after = byClause(after)\r\n if (isGood(after, options)) {\r\n return post(after)\r\n }\r\n // perform some modifications\r\n after = safeCut(after)\r\n if (isGood(after, options)) {\r\n return post(after)\r\n }\r\n // really give it a go\r\n after = hardCut(after)\r\n if (isGood(after, options)) {\r\n return post(after)\r\n }\r\n // atleast we tried\r\n after = lastTry(after)\r\n if (isGood(after, options)) {\r\n return post(after)\r\n }\r\n // console.log(after.text())\r\n // count += 1\r\n // console.log(count)\r\n // console.log(after.match('#PastTense').text())\r\n // console.log(after.text())\r\n // console.log('\\n')\r\n return ''\r\n}\r\nmodule.exports = doSentence\r\n","const bad = [\r\n 'living',\r\n 'births',\r\n 'former',\r\n 'deceased',\r\n 'missing',\r\n 'with',\r\n 'descent',\r\n 'award',\r\n 'winners',\r\n 'nominees',\r\n 'alumni',\r\n 'other'\r\n].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\r\n\r\nconst good = ['male', 'female'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\r\n\r\nconst like = ['male', 'female', 'century'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\r\n\r\nconst dislike = ['people', 'place', 'from', 'in', 'people from'].map(\r\n (str) => new RegExp(`\\\\b${str}\\\\b`),\r\n 'i'\r\n)\r\n\r\nmodule.exports = {\r\n good: good,\r\n bad: bad,\r\n like: like,\r\n dislike: dislike\r\n}\r\n","const { like, dislike, good, bad } = require('./regs')\r\nconst hasYear = /[0-9]{4}/\r\nconst isPlural = /s$/\r\n\r\nconst fromCategory = function (doc) {\r\n let cats = doc.categories()\r\n\r\n // try to focus on the best ones, first\r\n let tmp = cats.filter((cat) => {\r\n return good.find((reg) => reg.test(cat))\r\n })\r\n if (tmp.length > 0) {\r\n cats = tmp\r\n }\r\n\r\n // remove bad ones\r\n cats = cats.filter((cat) => {\r\n if (bad.find((reg) => reg.test(cat))) {\r\n return false\r\n }\r\n if (hasYear.test(cat)) {\r\n return false\r\n }\r\n return true\r\n })\r\n\r\n if (cats.length === 0) {\r\n return ''\r\n }\r\n // look at sorting by preferences\r\n tmp = cats.filter((cat) => {\r\n return like.find((reg) => reg.test(cat))\r\n })\r\n if (tmp.length > 0) {\r\n cats = tmp\r\n }\r\n // remove disliked ones\r\n tmp = cats.filter((cat) => {\r\n // not a plural ending\r\n if (isPlural.test(cat) === false) {\r\n return false\r\n }\r\n // just one word\r\n if (cat.slice(' ').length === 1) {\r\n return false\r\n }\r\n return dislike.find((reg) => reg.test(cat)) === undefined\r\n })\r\n if (tmp.length > 0) {\r\n cats = tmp\r\n }\r\n\r\n // sort them by most words\r\n cats = cats.sort((a, b) => {\r\n let aWords = a.split(' ').length\r\n let bWords = b.split(' ').length\r\n if (aWords > bWords) {\r\n return -1\r\n } else if (aWords < bWords) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n // console.log(cats)\r\n\r\n return cats[0]\r\n}\r\nmodule.exports = fromCategory\r\n","const nlp = require('compromise')\r\nconst titleCase = (str) => {\r\n return str.charAt(0).toUpperCase() + str.substr(1)\r\n}\r\n\r\n// 'American songwriters' to 'an American songwriter'\r\nconst changeCat = function (cat, options) {\r\n let c = nlp(cat)\r\n c.nouns().toSingular()\r\n // add article to the front\r\n if (options.article) {\r\n let article = 'A'\r\n let noun = c.nouns(0)\r\n if (noun && noun.found) {\r\n article = c.nouns(0).json({ terms: false })[0].article || article\r\n article = titleCase(article)\r\n }\r\n let first = c.terms(0)\r\n if (first.has('#ProperNoun') === false) {\r\n first.toLowerCase()\r\n }\r\n c.prepend(article)\r\n }\r\n // remove any parentheses\r\n c.parentheses().remove()\r\n return c.text()\r\n}\r\nmodule.exports = changeCat\r\n","const chooseCat = require('./01-choose')\r\nconst change = require('./02-change')\r\n\r\nconst byCategory = function (doc, options) {\r\n let cat = chooseCat(doc, options)\r\n if (!cat) {\r\n return ''\r\n }\r\n return change(cat, options)\r\n}\r\nmodule.exports = byCategory\r\n","const nlp = require('compromise')\r\nconst fromTemplate = require('./template')\r\nconst fromSentence = require('./sentence')\r\nconst fromCategory = require('./category')\r\n\r\nconst defaults = {\r\n article: true,\r\n template: true,\r\n sentence: true,\r\n category: true,\r\n max: 80,\r\n min: 3\r\n}\r\n\r\nconst seemsGood = function (txt, options) {\r\n return txt && txt.length > 5 && txt.length < options.max\r\n}\r\n\r\nconst plugin = function (models) {\r\n // add a new method to main class\r\n models.Doc.prototype.summary = function (options) {\r\n let doc = this\r\n options = options || {}\r\n options = Object.assign({}, defaults, options)\r\n\r\n // generate from {{short description}} template\r\n let txt = ''\r\n if (options.template) {\r\n txt = fromTemplate(doc, options)\r\n if (seemsGood(txt, options)) {\r\n return txt.trim()\r\n }\r\n }\r\n // generate from first-sentence\r\n if (options.sentence) {\r\n txt = fromSentence(doc, options)\r\n if (seemsGood(txt, options)) {\r\n return txt.trim()\r\n }\r\n }\r\n if (options.category) {\r\n return fromCategory(doc, options)\r\n }\r\n return ''\r\n }\r\n\r\n // should we use 'it', 'he', 'they'...\r\n models.Doc.prototype.article = function () {\r\n let txt = ''\r\n // prefer the 2nd sentence\r\n if (this.sentences(1)) {\r\n txt = this.sentences(1).text()\r\n } else {\r\n txt = this.sentences(0).text()\r\n }\r\n let doc = nlp(txt)\r\n let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase()\r\n return found || 'it'\r\n }\r\n\r\n // was event in past? is person dead?\r\n models.Doc.prototype.tense = function () {\r\n let txt = this.sentence().text()\r\n let doc = nlp(txt)\r\n let copula = doc.match('#Copula+').first()\r\n if (copula.has('was')) {\r\n return 'Past'\r\n }\r\n let vb = doc.verbs(0)\r\n if (vb.has('#PastTense')) {\r\n return 'Past'\r\n }\r\n if (doc.has('will #Adverb? be') || doc.has('(a|an) (upcoming|planned)')) {\r\n return 'Future'\r\n }\r\n return 'Present'\r\n }\r\n}\r\nmodule.exports = plugin\r\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","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","call","_typeof2","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","Array","isArray","toString","_arr","_n","_d","_e","undefined","_i","_s","next","done","push","err","chars","split","makeId","str","text","Math","floor","random","_id","compact","a","b","c","d","e","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","noPeriodAcronym","lowerCaseAcronym","isAcronym","test","isAcronym_1","hasSlash","clean","toLowerCase","trim","original","replace","clean_1","reduced","reduce","startings","endings","hasSlash$1","hasApostrophe","hasAcronym","minusNumber","parseTerm","pre","post","found","after","parsed","word","alias","parse","createCommonjsModule","fn","module","exports","_01Case","titleCase","upperCase","toUpperCase","toTitleCase","isUpperCase","isTitleCase","_01Case_1","_01Case_2","_01Case_3","_01Case_4","_01Case_5","_01Case_6","_02Punctuation","startQuote","endQuote","hasPost","punct","indexOf","hasPre","hasQuote","hasQuotation","hasComma","hasPeriod","hasExclamation","hasQuestionMark","hasEllipses","hasSemicolon","hasHyphen","hyphen","hasDash","hasContraction","Boolean","implicit","addPunctuation","_02Punctuation_1","_02Punctuation_2","_02Punctuation_3","_02Punctuation_4","_02Punctuation_5","_02Punctuation_6","_02Punctuation_7","_02Punctuation_8","_02Punctuation_9","_02Punctuation_10","_02Punctuation_11","_02Punctuation_12","_02Punctuation_13","_02Punctuation_14","_02Punctuation_15","wrapMatch","doesMatch","reg","index","id","anything","start","end","hasOwnProperty","soft","root","tag","tags","method","regex","oneOf","choices","operator","every","some","result","negative","_doesMatch","boring","doesMatch_1","isAcronym_1$1","isImplicit","isKnown","setRoot","world","transform","transforms","Plural","toSingular","Verb","Negative","Infinitive","tense","PastTense","Gerund","PresentTense","Participle","Actor","toInfinitive","_03Misc","hasSpace","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","assign","_05Json","methods","isClientSide","window","document","padEnd","width","logTag","reason","console","log","logUntag","charAt","substr","fns","addTag","tagset","isVerbose","down","unTag","notA","addTags","add","untagAll","unTag_1","canBe","enemies","canBe_1","tag_1","tagSafe","unTag_1$1","canBe_1$1","Term","arguments","String","prev","set","clone","Term_1","terms","cache","pool","get","error","isShallow","_this","buildFrom","newTerms","map","lastTerm","hasId","wantId","_terms","lastId","concat","wordCount","filter","fullSentence","len","_01Utils","trimEnd","isFirst","isLast","isFull","txt","_02Text","_03Change","endOfSentence","combinePost","match","addWhitespace","beforeTerms","newTerm","stitchIn","lastBefore","lastNew","afterId","afterTerm","beforeId","unique","list","appendPhrase","newPhrase","doc","toStretch","docs","parents","parent","shouldChange","append","hasSpace$1","addWhitespace$1","stitchIn$1","main","unique$1","joinPhrase","starterId","prepend","shrinkAll","deleteLength","phrase","find","deletePhrase","_delete","append_1","prepend_1","delete_1","firstLength","tmp","splitOn","findIndex","slice","_04Insert","json$1","res","_05Json$1","lookAhead","regs","getAfter","all","lookBehind","getBefore","_06Lookahead","methods$1","failFast","optional","_02FailFast","getGreedy","until","count","max","min","greedyTo","nextReg","getOrCreateGroup","namedGroups","namedGroupId","startIndex","group","tryHere","previousGroupId","isNamedGroup","named","hasNeeds","remain","greedy","skipto","startAt","_g","_03TryMatch","postProcess","matches","atEnd","_ref","_04PostProcess","hasMinMax","andSign","captureName","RegExp","titleCase$1","stripStart","stripEnd","stripBoth","parseToken","groupType","exec","Number","parseToken_1","isNamed","capture","fillGroups","tokens","convert","current","useOneOf","token","shouldPack","postProcess$1","postProcess_1","isArray$1","byParentheses","byWords","words","byArray","fromDoc","ids","syntax","input","syntax_1","matchAll","matchOne","minLength","_tryMatch","_tryMatch2","groups","_tryMatch3","_tryMatch4","_match","_groups","_01MatchAll","notMatch","ts","not","match_1","justOne","has","not$1","_this2","canBe$1","_this3","results","previous","can","Phrase","aliases","Phrase_1","Pool","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","_i2","ws","_01Sentences","wordlike","isBoundary","naiiveSplit","isSlash","notWord","combineSlashes","splitHyphens","hyphens","whichDash","splitWords","carry","_02Words","fromText","phrases","_01Tokenizer","fromJSON","fromJSON_1","_version","_data","entity","nouns","Noun","Singular","Person","FirstName","MaleName","FemaleName","LastName","NickName","Honorific","Place","Country","City","Region","Address","Organization","SportsTeam","School","Company","Uncountable","Pronoun","Activity","Unit","Demonym","verbs","FutureTense","Copula","Modal","PerfectTense","Pluperfect","PhrasalVerb","Particle","values","Value","Ordinal","Cardinal","RomanNumeral","TextValue","NumericValue","Money","Percent","misc","Adjective","Comparable","Comparative","Superlative","NumberRange","Adverb","Date","Month","WeekDay","Time","Determiner","Conjunction","Preposition","QuestionWord","Currency","Expression","Url","PhoneNumber","HashTag","AtMention","Emoji","Emoticon","Email","Condition","colorMap","addColors","color","_color","unique$2","inferIsA","_isA","unique$3","inferNotA","_notA","inferLineage","_lineage","validate","inferTags","inference","addIn","build","seq","toAlphaCode","_o","fromCharCode","fromAlphaCode","_t","charCodeAt","encoding","symbols","nodes","symCount","syms","indexFromRef","toArray","unpack","unpack_1","unpack_1$1","_o2","efrtUnpack_min","addWord","lex","addMore","lexicon","hasCompound","plural","toPlural","conj","conjugate","_conj","adjectives","_tags","_w","_conj2","_tags2","_w2","_plural","addWords","addIrregulars","irregulars","_loop","inf","forms","addIrregulars_1","misc$1","g8","vh1","q1","q2","q3","q4","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","matrix","memorandum","modulus","mosquito","mouse","move","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","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","cost","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","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","name","pay","prove","puke","put","quit","read","ride","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","_final","full","conjugations_1","endsWith","repl","pr","pa","gr","ar","suffixes","posMap","doTransform","pos","checkSuffix","_01Suffixes","hasY","generic","_02Generic","conjugate_1","do_rules","dont_rules","nice","late","hard","inner","outer","far","worse","bad","good","big","large","to_superlative","toSuperlative","do_rules$1","dont_rules$1","irregulars$1","grey","gray","green","yellow","red","well","sad","transforms$1","to_comparative","toComparative","fns$1","conjugate$1","sup","comp","suffixes$1","_rules","addE","trySuffix","pluralize","_rules$1","invertObj","invert","toSingular_1","rules","to","_transform","guessVerb","_guess","guessTense","three","two","one","irregs","rule","toInfinitive_1","irregulars$2","transforms$2","_isVerbose","World","unpackWords","getByTag","verbose","bool","addWords$1","taggers","compounds","postProcessors","clone$1","JSON","stringify","w2","World_1","_01Utils$1","from","addParent","reverse","doShallow","wordcount","_01Utils_1","_01Utils_2","_01Utils_3","_01Utils_4","_01Utils_5","_01Utils_6","_02Accessors","first","eq","firstTerms","firstTerm","lastTerms","termList","num","getGroups","allGroups","_groups$j","getOneName","_loop2","sentence","_02Accessors_1","_02Accessors_2","_02Accessors_3","_02Accessors_4","_02Accessors_5","_02Accessors_6","_02Accessors_7","_02Accessors_8","_02Accessors_9","_02Accessors_10","_02Accessors_11","_02Accessors_12","_02Accessors_13","_02Accessors_14","cacheRequired","needTags","needWords","failFast$1","_cache","_cacheRequired","checkCache","_03Match","ifNo","lookAfter","lookBefore","befores","_03Match_1","_03Match_2","_03Match_3","_03Match_4","_03Match_5","_03Match_6","_03Match_7","_03Match_8","_03Match_9","_03Match_10","_03Match_11","tagTerms","safe","tagList","_setTag","tag$1","why","tagSafe$1","unTag$1","canBe$2","_04Tag","detachParent","sub","_this4","_this5","_05Loops","tokenize","buildTree","val","more","rest","fastLookup","everyTerm","_lookup","_06Lookup","isObject","lookup","isObj","byVal","lookUp","_06Lookup_1","_06Lookup_2","cache$1","uncache","_07Cache","titleCase$2","replaceWith","keepTags","newPhrases","keepCase","tmpDoc","tagger","oldTags","replace$1","_replace","_01Replace","_02Insert","insertAfter","insertAt","insertBefore","arg","toRemove","_02Insert_1","_02Insert_2","_02Insert_3","_02Insert_4","_02Insert_5","_02Insert_6","_02Insert_7","shouldTrim","text$1","showFull","trimPre","trimPost","_01Text","termOffsets","elapsed","offsets","calcOffset","_offset","_02Json","jsonDefaults","setOptions","frequency","freq","already","data","_02Json_1","_02Json_2","_debug","reset","css","blue","magenta","cyan","black","logClientSide","cli","tagString","debug","topk","_topk","debug_1","out","_03Out","methods$2","alpha","left","right","byFreq","counts","sortSequential","order","alphabetical","seqNames","sequence","sequential","chron","chronological","unique$4","_01Sort","isPunct","quotes","methods$3","termArr","quotations","adverbs","_methods","defaults","emoji","contractions","parentheses","possessives","honorifics","mapping$1","medium","heavy","normalize","strip","contraction","expand","unwrap","possessive","_02Normalize","_03Split","foundEm","parts","splitAfter","splitBefore","segment","_03Split_1","_03Split_2","_03Split_3","_03Split_4","_03Split_5","eachTerm","toCamelCase","_04Case","_05Whitespace","hyphenate","dehyphenate","deHyphenate","toQuotations","toQuotation","toParentheses","_05Whitespace_1","_05Whitespace_2","_05Whitespace_3","_05Whitespace_4","_05Whitespace_5","_05Whitespace_6","_05Whitespace_7","_05Whitespace_8","_05Whitespace_9","removed","increase","_06Join","postPunct","setContraction","suffix","contract","_07Contract","methods$4","methods$5","emojis","atmentions","atMentions","phoneNumbers","money","places","organizations","clauses","entities","yup","people","ignore","things","topics","_simple","underOver","tryMultiple","checkLexicon","foundWords","noPrefix","_01Lexicon","apostrophes","checkPunctuation","endChar","_02Punctuation$1","startsWith","romanNumeral","romanNumValid","checkRegex","_03Prefixes","Adj","Inf","Pres","Sing","Past","Exp","Last","endsWith$1","Adj$1","Inf$1","Pres$1","Sing$1","Past$1","Avb","Plrl","Actor$1","Vb","Noun$1","Last$1","suffixMap","ea","ia","ic","ly","oed","ued","xed","azy","ped","ffy","ify","ing","ize","lar","mum","nes","nny","oid","ous","que","rmy","rol","sis","zes","amed","aped","ched","lked","nded","cted","dged","akis","cede","chuk","czyk","ects","ends","enko","ette","fies","fore","gate","gone","ices","ints","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","sdottir","endRegexs","_char","knownSuffixes","checkRegex$1","_04Suffixes","emoticons","emojiReg","isCommaEmoji","raw","isEmoticon","tagEmoji","_05Emoji","steps","lookups","_01Init","afterThisWord","it","there","because","but","who","his","when","you","very","old","never","beforeThisWord","me","only","him","were","took","himself","went","jr","afterThisPOS","beforeThisPOS","markov","beforeThisPos","afterThisPos","afterKeys","beforeKeys","checkNeighbours","foundTag","_tag","nextTerm","_tag2","_foundTag","_tag3","_ret","_01Neighbours","titleCase$3","hasNumber","checkCase","_02Case","hasPrefix","prefix","checkPrefix","stem","_03Stem","isPlural","isSingular","isPlural_1","noPlurals","notPlural","notSingular","checkPlural","_04Plurals","orgWords","maybeOrg","Comma","tagOrgs","_05Organizations","oneLetterAcronym$1","periodSeperated","oneLetterWord","A","isAcronym$2","checkAcronym","_06Acronyms","step","neighbours","fallbacks","_02Fallbacks","hasNegative","irregulars$3","wont","cant","cannot","dont","dun","doAint","noun","checkNegative","_01Negative","easy","ll","ve","re","checkApostrophe","_02Simple","irregulars$4","wanna","gonna","im","alot","ive","imma","whered","whend","howd","whatd","dunno","brb","gtg","irl","tbh","imo","til","rn","twas","checkIrregulars","_03Irregulars","hasApostropheS","blacklist","that","isPossessive","twoTerm","isHas","checkPossessive","_04Possessive","hasPerfect","useDid","how","what","checkPerfect","_05PerfectTense","isRange","checkRange","_06Ranges","contraction$1","french","qu","checkFrench","_07French","isNumber","createPhrase","_03Contractions","hasWord","hasTag","miscCorrection","notIf","fixMisc","unique$5","_unique","_01Misc","dates","list$1","_02Dates","_03Noun","adjectives$1","list$2","_04Adjective","_05Adverb","_06Value","verbs$1","list$3","_07Verbs","list$4","_08Place","_09Org","nouns$1","months","list$5","_10People","cacheRequired$1","allLists","lists","newM","enumerated","required","matches_1","hasEvery","chances","runner","allChances","worthIt","tryDoc","runner_1","corrections","_04Correction","_02Tagger","addMethod","Doc","Abbreviations","_Doc","apply","stripPeriods","addPeriods","addMethod$1","Acronyms","addMethod$2","commas","conjunctions","condition","tooLong","Clauses","addMethod$3","Contractions","contracted","isTitlecase","expanded","isExpanded","isContracted","addMethod$4","beforeLast","conjunction","hasOxford","Lists","items","hasOxfordComma","addOxfordComma","needsComma","removeOxfordComma","nounList","adjList","verbList","noPlural","hasPlural","hasPlural_1","irregulars$5","hour","heir","heirloom","honest","honour","honor","uber","an_acronyms","a_regexs","makeArticle","firstLetter","getArticle","isPlural$1","isSingular$1","_rules$2","endS","isPlural$2","isPlural_1$1","exceptions","he","she","they","we","her","their","our","my","your","toPossessive","toPossessive_1","parse$1","parse_1","methods$6","article","agree","an","adj","methods_1","addMethod$5","Nouns","open","close","addMethod$6","Parentheses","addMethod$7","Possessives","pairs","hasOpen","addMethod$8","Quotations","want","toInfinitive$1","verb","toInfinitive_1$1","findNoun","vb","isPlural$3","auxiliary","isPlural_1$2","toNegative","_inf","_inf2","toNegative_1","parseVerb","adverb","particle","adverbAfter","parse$2","toBe","isI","isNegative","toBe_1","conjugate$2","infinitive","space","_space","conjugate_1$1","methods$7","advb","toPastTense","toPresentTense","_this6","toFutureTense","_this7","_this8","toGerund","_this9","isPositive","_this10","toPositive","addMethod$9","Verbs","negate","addMethod$a","People","subclass","extend","addFn","Subset","methods$8","selections","aliases$1","untag","and","onlyIf","Doc_1","smallTagger","tiny","worldInstance","nlp","version","load","src","fromTemplate","tmpl","template","description","preProcess","cleanUp","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","plugin","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":";;;;;;;EAAA;EACA,SAASA,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,eAAT,CAAyBC,QAAzB,EAAmCC,WAAnC,EAAgD;EAC9C,MAAI,EAAED,QAAQ,YAAYC,WAAtB,CAAJ,EAAwC;EACtC,UAAM,IAAIC,SAAJ,CAAc,mCAAd,CAAN;EACD;EACF;;EAED,SAASC,iBAAT,CAA2BC,MAA3B,EAAmCC,KAAnC,EAA0C;EACxC,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,KAAK,CAACE,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;EACrC,QAAIE,UAAU,GAAGH,KAAK,CAACC,CAAD,CAAtB;EACAE,IAAAA,UAAU,CAACC,UAAX,GAAwBD,UAAU,CAACC,UAAX,IAAyB,KAAjD;EACAD,IAAAA,UAAU,CAACE,YAAX,GAA0B,IAA1B;EACA,QAAI,WAAWF,UAAf,EAA2BA,UAAU,CAACG,QAAX,GAAsB,IAAtB;EAC3BC,IAAAA,MAAM,CAACC,cAAP,CAAsBT,MAAtB,EAA8BI,UAAU,CAACM,GAAzC,EAA8CN,UAA9C;EACD;EACF;;EAED,SAASO,YAAT,CAAsBd,WAAtB,EAAmCe,UAAnC,EAA+CC,WAA/C,EAA4D;EAC1D,MAAID,UAAJ,EAAgBb,iBAAiB,CAACF,WAAW,CAACH,SAAb,EAAwBkB,UAAxB,CAAjB;EAChB,MAAIC,WAAJ,EAAiBd,iBAAiB,CAACF,WAAD,EAAcgB,WAAd,CAAjB;EACjB,SAAOhB,WAAP;EACD;;EAED,SAASiB,SAAT,CAAmBC,QAAnB,EAA6BC,UAA7B,EAAyC;EACvC,MAAI,OAAOA,UAAP,KAAsB,UAAtB,IAAoCA,UAAU,KAAK,IAAvD,EAA6D;EAC3D,UAAM,IAAIlB,SAAJ,CAAc,oDAAd,CAAN;EACD;;EAEDiB,EAAAA,QAAQ,CAACrB,SAAT,GAAqBc,MAAM,CAACS,MAAP,CAAcD,UAAU,IAAIA,UAAU,CAACtB,SAAvC,EAAkD;EACrED,IAAAA,WAAW,EAAE;EACXyB,MAAAA,KAAK,EAAEH,QADI;EAEXR,MAAAA,QAAQ,EAAE,IAFC;EAGXD,MAAAA,YAAY,EAAE;EAHH;EADwD,GAAlD,CAArB;EAOA,MAAIU,UAAJ,EAAgBG,eAAe,CAACJ,QAAD,EAAWC,UAAX,CAAf;EACjB;;EAED,SAASI,eAAT,CAAyBC,CAAzB,EAA4B;EAC1BD,EAAAA,eAAe,GAAGZ,MAAM,CAACc,cAAP,GAAwBd,MAAM,CAACe,cAA/B,GAAgD,SAASH,eAAT,CAAyBC,CAAzB,EAA4B;EAC5F,WAAOA,CAAC,CAACG,SAAF,IAAehB,MAAM,CAACe,cAAP,CAAsBF,CAAtB,CAAtB;EACD,GAFD;EAGA,SAAOD,eAAe,CAACC,CAAD,CAAtB;EACD;;EAED,SAASF,eAAT,CAAyBE,CAAzB,EAA4BI,CAA5B,EAA+B;EAC7BN,EAAAA,eAAe,GAAGX,MAAM,CAACc,cAAP,IAAyB,SAASH,eAAT,CAAyBE,CAAzB,EAA4BI,CAA5B,EAA+B;EACxEJ,IAAAA,CAAC,CAACG,SAAF,GAAcC,CAAd;EACA,WAAOJ,CAAP;EACD,GAHD;;EAKA,SAAOF,eAAe,CAACE,CAAD,EAAII,CAAJ,CAAtB;EACD;;EAED,SAASC,yBAAT,GAAqC;EACnC,MAAI,OAAOC,OAAP,KAAmB,WAAnB,IAAkC,CAACA,OAAO,CAACC,SAA/C,EAA0D,OAAO,KAAP;EAC1D,MAAID,OAAO,CAACC,SAAR,CAAkBC,IAAtB,EAA4B,OAAO,KAAP;EAC5B,MAAI,OAAOC,KAAP,KAAiB,UAArB,EAAiC,OAAO,IAAP;;EAEjC,MAAI;EACFC,IAAAA,OAAO,CAACrC,SAAR,CAAkBsC,OAAlB,CAA0BC,IAA1B,CAA+BN,OAAO,CAACC,SAAR,CAAkBG,OAAlB,EAA2B,EAA3B,EAA+B,YAAY,EAA3C,CAA/B;EACA,WAAO,IAAP;EACD,GAHD,CAGE,OAAOG,CAAP,EAAU;EACV,WAAO,KAAP;EACD;EACF;;EAED,SAASC,sBAAT,CAAgCC,IAAhC,EAAsC;EACpC,MAAIA,IAAI,KAAK,KAAK,CAAlB,EAAqB;EACnB,UAAM,IAAIC,cAAJ,CAAmB,2DAAnB,CAAN;EACD;;EAED,SAAOD,IAAP;EACD;;EAED,SAASE,0BAAT,CAAoCF,IAApC,EAA0CH,IAA1C,EAAgD;EAC9C,MAAIA,IAAI,KAAK,OAAOA,IAAP,KAAgB,QAAhB,IAA4B,OAAOA,IAAP,KAAgB,UAAjD,CAAR,EAAsE;EACpE,WAAOA,IAAP;EACD;;EAED,SAAOE,sBAAsB,CAACC,IAAD,CAA7B;EACD;;EAED,SAASG,YAAT,CAAsBC,OAAtB,EAA+B;EAC7B,MAAIC,yBAAyB,GAAGf,yBAAyB,EAAzD;;EAEA,SAAO,SAASgB,oBAAT,GAAgC;EACrC,QAAIC,KAAK,GAAGvB,eAAe,CAACoB,OAAD,CAA3B;EAAA,QACII,MADJ;;EAGA,QAAIH,yBAAJ,EAA+B;EAC7B,UAAII,SAAS,GAAGzB,eAAe,CAAC,IAAD,CAAf,CAAsB3B,WAAtC;;EAEAmD,MAAAA,MAAM,GAAGjB,OAAO,CAACC,SAAR,CAAkBe,KAAlB,EAAyBG,SAAzB,EAAoCD,SAApC,CAAT;EACD,KAJD,MAIO;EACLD,MAAAA,MAAM,GAAGD,KAAK,CAACI,KAAN,CAAY,IAAZ,EAAkBD,SAAlB,CAAT;EACD;;EAED,WAAOR,0BAA0B,CAAC,IAAD,EAAOM,MAAP,CAAjC;EACD,GAbD;EAcD;;;EAGD,IAAII,KAAK,GAAG,iEAAiEC,KAAjE,CAAuE,EAAvE,CAAZ;;EAEA,SAASC,MAAT,CAAgBC,GAAhB,EAAqB;EACnBA,EAAAA,GAAG,GAAGA,GAAG,IAAI,GAAb;EACA,MAAIC,IAAI,GAAGD,GAAG,GAAG,GAAjB;;EAEA,OAAK,IAAIjD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;EAC1BkD,IAAAA,IAAI,IAAIJ,KAAK,CAACK,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBP,KAAK,CAAC7C,MAAjC,CAAD,CAAb;EACD;;EAED,SAAOiD,IAAP;EACD;;EAED,IAAII,GAAG,GAAGN,MAAV;EAGA;EACA;EACA;;EACA,IAAIO,OAAO,GAAG;EACZ,OAAK,GADO;EAEZ,OAAK,IAFO;EAGZ,OAAK,OAHO;EAIZ,OAAK,MAJO;EAKZ,OAAK,IALO;EAMZC,EAAAA,CAAC,EAAE,uDANS;EAOZC,EAAAA,CAAC,EAAE,0BAPS;EAQZC,EAAAA,CAAC,EAAE,iCARS;EASZC,EAAAA,CAAC,EAAE,aATS;EAUZ3B,EAAAA,CAAC,EAAE,6DAVS;EAWZ4B,EAAAA,CAAC,EAAE,WAXS;EAYZC,EAAAA,CAAC,EAAE,iBAZS;EAaZC,EAAAA,CAAC,EAAE,2BAbS;EAcZC,EAAAA,CAAC,EAAE,MAdS;EAeZ/D,EAAAA,CAAC,EAAE,gCAfS;EAgBZgE,EAAAA,CAAC,EAAE,WAhBS;EAiBZC,EAAAA,CAAC,EAAE,yBAjBS;EAkBZC,EAAAA,CAAC,EAAE,sBAlBS;EAmBZC,EAAAA,CAAC,EAAE,SAnBS;EAoBZC,EAAAA,CAAC,EAAE,2CApBS;EAqBZjD,EAAAA,CAAC,EAAE,oEArBS;EAsBZI,EAAAA,CAAC,EAAE,cAtBS;EAuBZ8C,EAAAA,CAAC,EAAE,IAvBS;EAwBZC,EAAAA,CAAC,EAAE,uBAxBS;EAyBZC,EAAAA,CAAC,EAAE,iBAzBS;EA0BZC,EAAAA,CAAC,EAAE,sBA1BS;EA2BZC,EAAAA,CAAC,EAAE,+CA3BS;EA4BZC,EAAAA,CAAC,EAAE,OA5BS;EA6BZC,EAAAA,CAAC,EAAE,gBA7BS;EA8BZC,EAAAA,CAAC,EAAE,eA9BS;EA+BZC,EAAAA,CAAC,EAAE,uCA/BS;EAgCZC,EAAAA,CAAC,EAAE;EAhCS,CAAd;;EAmCA,IAAIC,OAAO,GAAG,EAAd;EACAzE,MAAM,CAAC0E,IAAP,CAAYzB,OAAZ,EAAqB0B,OAArB,CAA6B,UAAUhB,CAAV,EAAa;EACxCV,EAAAA,OAAO,CAACU,CAAD,CAAP,CAAWlB,KAAX,CAAiB,EAAjB,EAAqBkC,OAArB,CAA6B,UAAUV,CAAV,EAAa;EACxCQ,IAAAA,OAAO,CAACR,CAAD,CAAP,GAAaN,CAAb;EACD,GAFD;EAGD,CAJD;;EAMA,IAAIiB,WAAW,GAAG,SAASA,WAAT,CAAqBjC,GAArB,EAA0B;EAC1C,MAAIH,KAAK,GAAGG,GAAG,CAACF,KAAJ,CAAU,EAAV,CAAZ;EACAD,EAAAA,KAAK,CAACmC,OAAN,CAAc,UAAUV,CAAV,EAAavE,CAAb,EAAgB;EAC5B,QAAI+E,OAAO,CAACR,CAAD,CAAX,EAAgB;EACdzB,MAAAA,KAAK,CAAC9C,CAAD,CAAL,GAAW+E,OAAO,CAACR,CAAD,CAAlB;EACD;EACF,GAJD;EAKA,SAAOzB,KAAK,CAACqC,IAAN,CAAW,EAAX,CAAP;EACD,CARD;;EAUA,IAAIC,SAAS,GAAGF,WAAhB;;EAEA,IAAIG,aAAa,GAAG,qBAApB;EACA,IAAIC,kBAAkB,GAAG,aAAzB;EACA,IAAIC,eAAe,GAAG,mBAAtB;EACA,IAAIC,gBAAgB,GAAG,qBAAvB;;EAEA,IAAIC,WAAW,GAAG,SAASC,SAAT,CAAmBzC,GAAnB,EAAwB;EACxC;EACA,MAAIoC,aAAa,CAACM,IAAd,CAAmB1C,GAAnB,MAA4B,IAAhC,EAAsC;EACpC,WAAO,IAAP;EACD,GAJuC;;;EAOxC,MAAIuC,gBAAgB,CAACG,IAAjB,CAAsB1C,GAAtB,MAA+B,IAAnC,EAAyC;EACvC,WAAO,IAAP;EACD,GATuC;;;EAYxC,MAAIqC,kBAAkB,CAACK,IAAnB,CAAwB1C,GAAxB,MAAiC,IAArC,EAA2C;EACzC,WAAO,IAAP;EACD,GAduC;;;EAiBxC,MAAIsC,eAAe,CAACI,IAAhB,CAAqB1C,GAArB,MAA8B,IAAlC,EAAwC;EACtC,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CAtBD;;EAwBA,IAAI2C,aAAa,GAAGH,WAApB;EAEA,IAAII,UAAU,GAAG,4CAAjB;EACA;;EAEA,IAAIC,KAAK,GAAG,SAASA,KAAT,CAAe7C,GAAf,EAAoB;EAC9BA,EAAAA,GAAG,GAAGA,GAAG,IAAI,EAAb;EACAA,EAAAA,GAAG,GAAGA,GAAG,CAAC8C,WAAJ,EAAN;EACA9C,EAAAA,GAAG,GAAGA,GAAG,CAAC+C,IAAJ,EAAN;EACA,MAAIC,QAAQ,GAAGhD,GAAf,CAJ8B;;EAM9BA,EAAAA,GAAG,GAAGmC,SAAS,CAACnC,GAAD,CAAf,CAN8B;;EAQ9B,MAAI4C,UAAU,CAACF,IAAX,CAAgB1C,GAAhB,MAAyB,IAA7B,EAAmC;EACjCA,IAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,MAAZ,EAAoB,EAApB,CAAN;EACD,GAV6B;;;EAa9BjD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,OAAZ,EAAqB,EAArB,CAAN,CAb8B;;EAe9BjD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,WAAZ,EAAyB,EAAzB,CAAN,CAf8B;;EAiB9BjD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,wEAAZ,EAAsF,GAAtF,CAAN,CAjB8B;;EAmB9BjD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,sGAAZ,EAAoH,GAApH,CAAN,CAnB8B;;EAqB9BjD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,SAAZ,EAAuB,KAAvB,CAAN,CArB8B;;EAuB9BjD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,SAAZ,EAAuB,GAAvB,CAAN,CAvB8B;;EAyB9BjD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,oBAAZ,EAAkC,OAAlC,CAAN,CAzB8B;;EA2B9B,MAAI,sBAAsBP,IAAtB,CAA2B1C,GAA3B,MAAoC,IAAxC,EAA8C;EAC5CA,IAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,GAAZ,EAAiB,EAAjB,CAAN;EACD,GA7B6B;;;EAgC9B,MAAIN,aAAa,CAAC3C,GAAD,CAAjB,EAAwB;EACtBA,IAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;EACD,GAlC6B;;;EAqC9B,MAAI,QAAQP,IAAR,CAAa1C,GAAb,MAAsB,KAA1B,EAAiC;EAC/BA,IAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,UAAZ,EAAwB,EAAxB,CAAN;EACAjD,IAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,kBAAZ,EAAgC,EAAhC,CAAN;EACAjD,IAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,WAAZ,EAAyB,EAAzB,CAAN;EACD,GAzC6B;;;EA4C9BjD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,wBAAZ,EAAsC,EAAtC,CAAN,CA5C8B;;EA8C9BjD,EAAAA,GAAG,GAAGA,GAAG,CAAC+C,IAAJ,EAAN,CA9C8B;;EAgD9B,MAAI/C,GAAG,KAAK,EAAZ,EAAgB;EACdA,IAAAA,GAAG,GAAGgD,QAAN;EACD,GAlD6B;;;EAqD9BhD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,kBAAZ,EAAgC,MAAhC,CAAN;EACA,SAAOjD,GAAP;EACD,CAvDD;;EAyDA,IAAIkD,OAAO,GAAGL,KAAd;;EAEA;;EACA,IAAIM,OAAO,GAAG,SAASA,OAAT,CAAiBnD,GAAjB,EAAsB;EAClC;EACAA,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,QAAZ,EAAsB,EAAtB,CAAN;EACAjD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,QAAZ,EAAsB,GAAtB,CAAN;EACA,SAAOjD,GAAP;EACD,CALD;;EAOA,IAAIoD,MAAM,GAAGD,OAAb;EAGA;;EAEA,IAAIE,SAAS,GAAG,iLAAhB;EACA,IAAIC,OAAO,GAAG,uHAAd;;EAEA,IAAIC,QAAQ,GAAG,IAAf;EACA,IAAIC,aAAa,GAAG,MAApB;EACA,IAAIC,UAAU,GAAG,qBAAjB;EACA,IAAIC,WAAW,GAAG,cAAlB;EACA,IAAIC,SAAS,GAAG,YAAhB;EACA;EACA;EACA;;EAEA,IAAIC,SAAS,GAAG,SAASA,SAAT,CAAmB5D,GAAnB,EAAwB;EACtC,MAAIgD,QAAQ,GAAGhD,GAAf;EACA,MAAI6D,GAAG,GAAG,EAAV;EACA,MAAIC,IAAI,GAAG,EAAX;EACA9D,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAYI,SAAZ,EAAuB,UAAUU,KAAV,EAAiB;EAC5CF,IAAAA,GAAG,GAAGE,KAAN,CAD4C;;EAG5C,QAAI,CAACF,GAAG,KAAK,GAAR,IAAeA,GAAG,KAAK,GAAvB,IAA8BA,GAAG,KAAK,GAAvC,KAA+CH,WAAW,CAAChB,IAAZ,CAAiB1C,GAAjB,CAAnD,EAA0E;EACxE6D,MAAAA,GAAG,GAAG,EAAN;EACA,aAAOE,KAAP;EACD,KAN2C;;;EAS5C,QAAIF,GAAG,KAAK,GAAR,IAAeF,SAAS,CAACjB,IAAV,CAAe1C,GAAf,CAAnB,EAAwC;EACtC6D,MAAAA,GAAG,GAAG,EAAN;EACA,aAAOE,KAAP;EACD;;EAED,WAAO,EAAP;EACD,GAfK,CAAN;EAgBA/D,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAYK,OAAZ,EAAqB,UAAUS,KAAV,EAAiB;EAC1CD,IAAAA,IAAI,GAAGC,KAAP,CAD0C;;EAG1C,QAAIP,aAAa,CAACd,IAAd,CAAmBqB,KAAnB,KAA6B,YAAYrB,IAAZ,CAAiBM,QAAjB,CAA7B,IAA2DQ,aAAa,CAACd,IAAd,CAAmBmB,GAAnB,MAA4B,KAA3F,EAAkG;EAChGC,MAAAA,IAAI,GAAGA,IAAI,CAACb,OAAL,CAAaO,aAAb,EAA4B,EAA5B,CAAP;EACA,aAAO,GAAP;EACD,KANyC;;;EAS1C,QAAIC,UAAU,CAACf,IAAX,CAAgB1C,GAAhB,MAAyB,IAA7B,EAAmC;EACjC8D,MAAAA,IAAI,GAAGA,IAAI,CAACb,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAP;EACA,aAAO,GAAP;EACD;;EAED,WAAO,EAAP;EACD,GAfK,CAAN,CApBsC;;EAqCtC,MAAIjD,GAAG,KAAK,EAAZ,EAAgB;EACd;EACAgD,IAAAA,QAAQ,GAAGA,QAAQ,CAACC,OAAT,CAAiB,KAAjB,EAAwB,UAAUe,KAAV,EAAiB;EAClDF,MAAAA,IAAI,GAAGE,KAAK,IAAI,EAAhB;EACA,aAAO,EAAP;EACD,KAHU,CAAX;EAIAhE,IAAAA,GAAG,GAAGgD,QAAN;EACAa,IAAAA,GAAG,GAAG,EAAN;EACAC,IAAAA,IAAI,GAAGA,IAAP;EACD,GA9CqC;;;EAiDtC,MAAIjB,KAAK,GAAGK,OAAO,CAAClD,GAAD,CAAnB;EACA,MAAIiE,MAAM,GAAG;EACXhE,IAAAA,IAAI,EAAED,GADK;EAEX6C,IAAAA,KAAK,EAAEA,KAFI;EAGXM,IAAAA,OAAO,EAAEC,MAAM,CAACP,KAAD,CAHJ;EAIXgB,IAAAA,GAAG,EAAEA,GAJM;EAKXC,IAAAA,IAAI,EAAEA;EALK,GAAb,CAlDsC;;EA0DtC,MAAIP,QAAQ,CAACb,IAAT,CAAc1C,GAAd,CAAJ,EAAwB;EACtBA,IAAAA,GAAG,CAACF,KAAJ,CAAUyD,QAAV,EAAoBvB,OAApB,CAA4B,UAAUkC,IAAV,EAAgB;EAC1CD,MAAAA,MAAM,CAACE,KAAP,GAAeF,MAAM,CAACE,KAAP,IAAgB,EAA/B;EACAF,MAAAA,MAAM,CAACE,KAAP,CAAaD,IAAI,CAACnB,IAAL,EAAb,IAA4B,IAA5B;EACD,KAHD;EAID;;EAED,SAAOkB,MAAP;EACD,CAlED;;EAoEA,IAAIG,OAAO,GAAGR,SAAd;;EAEA,SAASS,oBAAT,CAA8BC,EAA9B,EAAkC;EAChC,MAAIC,MAAM,GAAG;EAAEC,IAAAA,OAAO,EAAE;EAAX,GAAb;EACD,SAAOF,EAAE,CAACC,MAAD,EAASA,MAAM,CAACC,OAAhB,CAAF,EAA4BD,MAAM,CAACC,OAA1C;EACA;;EAED,IAAIC,OAAO,GAAGJ,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EAC5D,MAAIE,SAAS,GAAG,2BAAhB;EACA,MAAIC,SAAS,GAAG,YAAhB;EACA;;EAEAH,EAAAA,OAAO,CAACI,WAAR,GAAsB,YAAY;EAChC,SAAK3E,IAAL,GAAY,KAAKA,IAAL,CAAU2E,WAAV,EAAZ;EACA,WAAO,IAAP;EACD,GAHD;EAIA;;;EAGAJ,EAAAA,OAAO,CAAC1B,WAAR,GAAsB,YAAY;EAChC,SAAK7C,IAAL,GAAY,KAAKA,IAAL,CAAU6C,WAAV,EAAZ;EACA,WAAO,IAAP;EACD,GAHD;EAIA;EACF;EACA;;;EAGE0B,EAAAA,OAAO,CAACK,WAAR,GAAsB,YAAY;EAChC,SAAK5E,IAAL,GAAY,KAAKA,IAAL,CAAUgD,OAAV,CAAkB,uBAAlB,EAA2C,UAAUtB,CAAV,EAAa;EAClE,aAAOA,CAAC,CAACiD,WAAF,EAAP;EACD,KAFW,CAAZ,CADgC;;EAKhC,WAAO,IAAP;EACD,GAND;EAOA;;;EAGAJ,EAAAA,OAAO,CAACM,WAAR,GAAsB,YAAY;EAChC,WAAOH,SAAS,CAACjC,IAAV,CAAe,KAAKzC,IAApB,CAAP;EACD,GAFD;EAGA;;;EAGAuE,EAAAA,OAAO,CAACO,WAAR,GAAsB,YAAY;EAChC,WAAOL,SAAS,CAAChC,IAAV,CAAe,KAAKzC,IAApB,CAAP;EACD,GAFD;;EAIAuE,EAAAA,OAAO,CAACE,SAAR,GAAoBF,OAAO,CAACO,WAA5B;EACD,CA1CiC,CAAlC;;EA4CA,IAAIC,gBAAgB,GAAGX,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EACrE;EACA;EACA,MAAIS,UAAU,GAAG,iIAAjB;EACA,MAAIC,QAAQ,GAAG,iIAAf;EACA;;EAEAV,EAAAA,OAAO,CAACW,OAAR,GAAkB,UAAUC,KAAV,EAAiB;EACjC,WAAO,KAAKtB,IAAL,CAAUuB,OAAV,CAAkBD,KAAlB,MAA6B,CAAC,CAArC;EACD,GAFD;EAGA;;;EAGAZ,EAAAA,OAAO,CAACc,MAAR,GAAiB,UAAUF,KAAV,EAAiB;EAChC,WAAO,KAAKvB,GAAL,CAASwB,OAAT,CAAiBD,KAAjB,MAA4B,CAAC,CAApC;EACD,GAFD;EAGA;;;EAGAZ,EAAAA,OAAO,CAACe,QAAR,GAAmB,YAAY;EAC7B,WAAON,UAAU,CAACvC,IAAX,CAAgB,KAAKmB,GAArB,KAA6BqB,QAAQ,CAACxC,IAAT,CAAc,KAAKoB,IAAnB,CAApC;EACD,GAFD;;EAIAU,EAAAA,OAAO,CAACgB,YAAR,GAAuBhB,OAAO,CAACe,QAA/B;EACA;;EAEAf,EAAAA,OAAO,CAACiB,QAAR,GAAmB,YAAY;EAC7B,WAAO,KAAKN,OAAL,CAAa,GAAb,CAAP;EACD,GAFD;EAGA;;;EAGAX,EAAAA,OAAO,CAACkB,SAAR,GAAoB,YAAY;EAC9B,WAAO,KAAKP,OAAL,CAAa,GAAb,MAAsB,IAAtB,IAA8B,KAAKA,OAAL,CAAa,KAAb,MAAwB,KAA7D;EACD,GAFD;EAGA;;;EAGAX,EAAAA,OAAO,CAACmB,cAAR,GAAyB,YAAY;EACnC,WAAO,KAAKR,OAAL,CAAa,GAAb,CAAP;EACD,GAFD;EAGA;;;EAGAX,EAAAA,OAAO,CAACoB,eAAR,GAA0B,YAAY;EACpC,WAAO,KAAKT,OAAL,CAAa,GAAb,KAAqB,KAAKA,OAAL,CAAa,GAAb,CAA5B;EACD,GAFD;EAGA;;;EAGAX,EAAAA,OAAO,CAACqB,WAAR,GAAsB,YAAY;EAChC,WAAO,KAAKV,OAAL,CAAa,IAAb,KAAsB,KAAKA,OAAL,CAAa,GAAb,CAAtB,IAA2C,KAAKG,MAAL,CAAY,IAAZ,CAA3C,IAAgE,KAAKA,MAAL,CAAY,GAAZ,CAAvE;EACD,GAFD;EAGA;;;EAGAd,EAAAA,OAAO,CAACsB,YAAR,GAAuB,YAAY;EACjC,WAAO,KAAKX,OAAL,CAAa,GAAb,CAAP;EACD,GAFD;EAGA;;;EAGAX,EAAAA,OAAO,CAACjB,QAAR,GAAmB,YAAY;EAC7B,WAAO,KAAKb,IAAL,CAAU,KAAKzC,IAAf,CAAP;EACD,GAFD;EAGA;;;EAGAuE,EAAAA,OAAO,CAACuB,SAAR,GAAoB,YAAY;EAC9B,QAAIC,MAAM,GAAG,WAAb;EACA,WAAOA,MAAM,CAACtD,IAAP,CAAY,KAAKoB,IAAjB,KAA0BkC,MAAM,CAACtD,IAAP,CAAY,KAAKmB,GAAjB,CAAjC;EACD,GAHD;EAIA;;;EAGAW,EAAAA,OAAO,CAACyB,OAAR,GAAkB,YAAY;EAC5B,QAAID,MAAM,GAAG,WAAb;EACA,WAAOA,MAAM,CAACtD,IAAP,CAAY,KAAKoB,IAAjB,KAA0BkC,MAAM,CAACtD,IAAP,CAAY,KAAKmB,GAAjB,CAAjC;EACD,GAHD;EAIA;;;EAGAW,EAAAA,OAAO,CAAC0B,cAAR,GAAyB,YAAY;EACnC,WAAOtH,OAAO,CAAC,KAAKuH,QAAN,CAAd;EACD,GAFD;EAGA;;;EAGA3B,EAAAA,OAAO,CAAC4B,cAAR,GAAyB,UAAUhB,KAAV,EAAiB;EACxC;EACA,QAAIA,KAAK,KAAK,GAAV,IAAiBA,KAAK,KAAK,GAA/B,EAAoC;EAClC,WAAKtB,IAAL,GAAY,KAAKA,IAAL,CAAUb,OAAV,CAAkBmC,KAAlB,EAAyB,EAAzB,CAAZ;EACD;;EAED,SAAKtB,IAAL,GAAYsB,KAAK,GAAG,KAAKtB,IAAzB;EACA,WAAO,IAAP;EACD,GARD;EASD,CAjG0C,CAA3C;EAoGA;EACA;EACA;;;EACA,IAAIuC,YAAY,GAAG,SAASA,YAAT,CAAsBC,IAAtB,EAA4BC,IAA5B,EAAkC;EACnD,MAAIC,OAAO,GAAGF,IAAI,CAACtJ,MAAnB;EAAA,MACIyJ,OAAO,GAAGF,IAAI,CAACvJ,MADnB,CADmD;;EAInD,MAAIwJ,OAAO,KAAK,CAAhB,EAAmB;EACjB,WAAOC,OAAP;EACD;;EAED,MAAIA,OAAO,KAAK,CAAhB,EAAmB;EACjB,WAAOD,OAAP;EACD,GAVkD;;;EAanD,MAAIE,KAAK,GAAG,CAACD,OAAO,GAAGD,OAAV,GAAoBC,OAApB,GAA8BD,OAA/B,IAA0C,CAAtD;;EAEA,MAAItG,IAAI,CAACyG,GAAL,CAASH,OAAO,GAAGC,OAAnB,KAA+BC,KAAK,IAAI,GAAxC,CAAJ,EAAkD;EAChD,WAAOA,KAAK,IAAI,GAAhB;EACD,GAjBkD;;;EAoBnD,MAAIE,MAAM,GAAG,EAAb;;EAEA,OAAK,IAAI7J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2J,KAApB,EAA2B3J,CAAC,EAA5B,EAAgC;EAC9B6J,IAAAA,MAAM,CAAC7J,CAAD,CAAN,GAAY,CAACA,CAAD,CAAZ;EACA6J,IAAAA,MAAM,CAAC7J,CAAD,CAAN,CAAUC,MAAV,GAAmB0J,KAAnB;EACD;;EAED,OAAK,IAAIG,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGH,KAAtB,EAA6BG,EAAE,EAA/B,EAAmC;EACjCD,IAAAA,MAAM,CAAC,CAAD,CAAN,CAAUC,EAAV,IAAgBA,EAAhB;EACD,GA7BkD;;;EAgCnD,MAAI9F,CAAJ,EAAO+F,OAAP,EAAgBC,OAAhB,EAAyBC,IAAzB,EAA+BC,GAA/B,EAAoC1F,CAApC;;EAEA,OAAK,IAAI2F,GAAG,GAAG,CAAf,EAAkBA,GAAG,IAAIV,OAAzB,EAAkC,EAAEU,GAApC,EAAyC;EACvCJ,IAAAA,OAAO,GAAGR,IAAI,CAACY,GAAG,GAAG,CAAP,CAAd;;EAEA,SAAKnG,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI0F,OAAjB,EAA0B,EAAE1F,CAA5B,EAA+B;EAC7B;EACA,UAAImG,GAAG,KAAKnG,CAAR,IAAa6F,MAAM,CAACM,GAAD,CAAN,CAAYnG,CAAZ,IAAiB,CAAlC,EAAqC;EACnC,eAAOyF,OAAP;EACD;;EAEDO,MAAAA,OAAO,GAAGR,IAAI,CAACxF,CAAC,GAAG,CAAL,CAAd;EACAiG,MAAAA,IAAI,GAAGF,OAAO,KAAKC,OAAZ,GAAsB,CAAtB,GAA0B,CAAjC,CAP6B;EAQ7B;;EAEAE,MAAAA,GAAG,GAAGL,MAAM,CAACM,GAAG,GAAG,CAAP,CAAN,CAAgBnG,CAAhB,IAAqB,CAA3B,CAV6B;;EAY7B,UAAI,CAACQ,CAAC,GAAGqF,MAAM,CAACM,GAAD,CAAN,CAAYnG,CAAC,GAAG,CAAhB,IAAqB,CAA1B,IAA+BkG,GAAnC,EAAwCA,GAAG,GAAG1F,CAAN,CAZX;;EAc7B,UAAI,CAACA,CAAC,GAAGqF,MAAM,CAACM,GAAG,GAAG,CAAP,CAAN,CAAgBnG,CAAC,GAAG,CAApB,IAAyBiG,IAA9B,IAAsCC,GAA1C,EAA+CA,GAAG,GAAG1F,CAAN,CAdlB;EAe7B;;EAEA,UAAI4F,YAAY,GAAGD,GAAG,GAAG,CAAN,IAAWnG,CAAC,GAAG,CAAf,IAAoB+F,OAAO,KAAKP,IAAI,CAACxF,CAAC,GAAG,CAAL,CAApC,IAA+CuF,IAAI,CAACY,GAAG,GAAG,CAAP,CAAJ,KAAkBH,OAAjE,IAA4E,CAACxF,CAAC,GAAGqF,MAAM,CAACM,GAAG,GAAG,CAAP,CAAN,CAAgBnG,CAAC,GAAG,CAApB,IAAyBiG,IAA9B,IAAsCC,GAArI;;EAEA,UAAIE,YAAJ,EAAkB;EAChBP,QAAAA,MAAM,CAACM,GAAD,CAAN,CAAYnG,CAAZ,IAAiBQ,CAAjB;EACD,OAFD,MAEO;EACLqF,QAAAA,MAAM,CAACM,GAAD,CAAN,CAAYnG,CAAZ,IAAiBkG,GAAjB;EACD;EACF;EACF,GA9DkD;;;EAiEnD,SAAOL,MAAM,CAACJ,OAAD,CAAN,CAAgBC,OAAhB,CAAP;EACD,CAlED;;;EAqEA,IAAIW,UAAU,GAAG,SAASA,UAAT,CAAoBd,IAApB,EAA0BC,IAA1B,EAAgC;EAC/C,MAAIc,SAAS,GAAG1H,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,CAApF;;EAEA,MAAI2G,IAAI,KAAKC,IAAb,EAAmB;EACjB,WAAO,CAAP;EACD,GAL8C;;;EAQ/C,MAAID,IAAI,CAACtJ,MAAL,GAAcqK,SAAd,IAA2Bd,IAAI,CAACvJ,MAAL,GAAcqK,SAA7C,EAAwD;EACtD,WAAO,CAAP;EACD;;EAED,MAAIE,KAAK,GAAGlB,YAAY,CAACC,IAAD,EAAOC,IAAP,CAAxB;EACA,MAAIvJ,MAAM,GAAGkD,IAAI,CAACsH,GAAL,CAASlB,IAAI,CAACtJ,MAAd,EAAsBuJ,IAAI,CAACvJ,MAA3B,CAAb;EACA,MAAIyK,QAAQ,GAAGzK,MAAM,KAAK,CAAX,GAAe,CAAf,GAAmBuK,KAAK,GAAGvK,MAA1C;EACA,MAAI0K,UAAU,GAAG,IAAID,QAArB;EACA,SAAOC,UAAP;EACD,CAjBD;;EAmBA,IAAIC,MAAM,GAAGP,UAAb;;EAEA,IAAIQ,SAAS,GAAG,SAASA,SAAT,GAAqB,EAArC;EACA;;;EAGA,IAAIC,SAAS,GAAG,SAASA,SAAT,CAAmBtG,CAAnB,EAAsBuG,GAAtB,EAA2BC,KAA3B,EAAkC/K,MAAlC,EAA0C;EACxD;EACA,MAAI8K,GAAG,CAACE,EAAJ,KAAWzG,CAAC,CAACyG,EAAjB,EAAqB;EACnB,WAAO,IAAP;EACD,GAJuD;;;EAOxD,MAAIF,GAAG,CAACG,QAAJ,KAAiB,IAArB,EAA2B;EACzB,WAAO,IAAP;EACD,GATuD;;;EAYxD,MAAIH,GAAG,CAACI,KAAJ,KAAc,IAAd,IAAsBH,KAAK,KAAK,CAApC,EAAuC;EACrC,WAAO,KAAP;EACD,GAduD;;;EAiBxD,MAAID,GAAG,CAACK,GAAJ,KAAY,IAAZ,IAAoBJ,KAAK,KAAK/K,MAAM,GAAG,CAA3C,EAA8C;EAC5C,WAAO,KAAP;EACD,GAnBuD;;;EAsBxD,MAAI8K,GAAG,CAAC5D,IAAJ,KAAaoD,SAAjB,EAA4B;EAC1B;EACA,QAAI/F,CAAC,CAAC4E,QAAF,KAAe,IAAf,IAAuB5E,CAAC,CAAC4E,QAAF,KAAe2B,GAAG,CAAC5D,IAA9C,EAAoD;EAClD,aAAO,IAAP;EACD,KAJyB;;;EAO1B,QAAI3C,CAAC,CAAC4C,KAAF,KAAYmD,SAAZ,IAAyB/F,CAAC,CAAC4C,KAAF,CAAQiE,cAAR,CAAuBN,GAAG,CAAC5D,IAA3B,CAA7B,EAA+D;EAC7D,aAAO,IAAP;EACD,KATyB;;;EAY1B,QAAI4D,GAAG,CAACO,IAAJ,KAAa,IAAb,IAAqBP,GAAG,CAAC5D,IAAJ,KAAa3C,CAAC,CAAC+G,IAAxC,EAA8C;EAC5C,aAAO,IAAP;EACD,KAdyB;;;EAiB1B,QAAIR,GAAG,CAACS,KAAJ,KAAcjB,SAAlB,EAA6B;EAC3B,UAAIkB,KAAK,GAAGb,MAAM,CAACG,GAAG,CAAC5D,IAAL,EAAW3C,CAAC,CAAC4B,OAAb,CAAlB;;EAEA,UAAIqF,KAAK,GAAGV,GAAG,CAACS,KAAhB,EAAuB;EACrB,eAAO,IAAP;EACD,OAL0B;;;EAQ3B,UAAIT,GAAG,CAACO,IAAJ,KAAa,IAAjB,EAAuB;EACrBG,QAAAA,KAAK,GAAGb,MAAM,CAACG,GAAG,CAAC5D,IAAL,EAAW3C,CAAC,CAAC+G,IAAb,CAAd;;EAEA,YAAIE,KAAK,GAAGV,GAAG,CAACS,KAAhB,EAAuB;EACrB,iBAAO,IAAP;EACD;EACF;EACF,KAhCyB;;;EAmC1B,WAAOT,GAAG,CAAC5D,IAAJ,KAAa3C,CAAC,CAACsB,KAAf,IAAwBiF,GAAG,CAAC5D,IAAJ,KAAa3C,CAAC,CAACtB,IAAvC,IAA+C6H,GAAG,CAAC5D,IAAJ,KAAa3C,CAAC,CAAC4B,OAArE;EACD,GA1DuD;;;EA6DxD,MAAI2E,GAAG,CAACW,GAAJ,KAAYnB,SAAhB,EAA2B;EACzB,WAAO/F,CAAC,CAACmH,IAAF,CAAOZ,GAAG,CAACW,GAAX,MAAoB,IAA3B;EACD,GA/DuD;;;EAkExD,MAAIX,GAAG,CAACa,MAAJ,KAAerB,SAAnB,EAA8B;EAC5B,QAAI,OAAO/F,CAAC,CAACuG,GAAG,CAACa,MAAL,CAAR,KAAyB,UAAzB,IAAuCpH,CAAC,CAACuG,GAAG,CAACa,MAAL,CAAD,OAAoB,IAA/D,EAAqE;EACnE,aAAO,IAAP;EACD;;EAED,WAAO,KAAP;EACD,GAxEuD;;;EA2ExD,MAAIb,GAAG,CAACc,KAAJ,KAActB,SAAlB,EAA6B;EAC3B,WAAOQ,GAAG,CAACc,KAAJ,CAAUlG,IAAV,CAAenB,CAAC,CAACsB,KAAjB,CAAP;EACD,GA7EuD;;;EAgFxD,MAAIiF,GAAG,CAACe,MAAJ,KAAevB,SAAnB,EAA8B;EAC5B,QAAI/F,CAAC,CAAC4E,QAAF,IAAc2B,GAAG,CAACe,MAAJ,CAAWT,cAAX,CAA0B7G,CAAC,CAAC4E,QAA5B,MAA0C,IAA5D,EAAkE;EAChE,aAAO,IAAP;EACD;;EAED,WAAO2B,GAAG,CAACe,MAAJ,CAAWT,cAAX,CAA0B7G,CAAC,CAAC4B,OAA5B,KAAwC2E,GAAG,CAACe,MAAJ,CAAWT,cAAX,CAA0B7G,CAAC,CAACtB,IAA5B,CAA/C;EACD,GAtFuD;;;EAyFxD,MAAI6H,GAAG,CAACgB,OAAJ,KAAgBxB,SAApB,EAA+B;EAC7B;EACA,QAAIQ,GAAG,CAACiB,QAAJ,KAAiB,KAArB,EAA4B;EAC1B;EACA,aAAOjB,GAAG,CAACgB,OAAJ,CAAYE,KAAZ,CAAkB,UAAU3H,CAAV,EAAa;EACpC,eAAOuG,SAAS,CAACrG,CAAD,EAAIF,CAAJ,EAAO0G,KAAP,EAAc/K,MAAd,CAAhB;EACD,OAFM,CAAP;EAGD,KAP4B;;;EAU7B,WAAO8K,GAAG,CAACgB,OAAJ,CAAYG,IAAZ,CAAiB,UAAU5H,CAAV,EAAa;EACnC,aAAOuG,SAAS,CAACrG,CAAD,EAAIF,CAAJ,EAAO0G,KAAP,EAAc/K,MAAd,CAAhB;EACD,KAFM,CAAP;EAGD;;EAED,SAAO,KAAP;EACD,CAzGD;;;EA4GA4K,SAAS,GAAG,SAASA,SAAT,CAAmBrG,CAAnB,EAAsBuG,GAAtB,EAA2BC,KAA3B,EAAkC/K,MAAlC,EAA0C;EACpD,MAAIyC,MAAM,GAAGoI,SAAS,CAACtG,CAAD,EAAIuG,GAAJ,EAASC,KAAT,EAAgB/K,MAAhB,CAAtB;;EAEA,MAAI8K,GAAG,CAACoB,QAAJ,KAAiB,IAArB,EAA2B;EACzB,WAAO,CAACzJ,MAAR;EACD;;EAED,SAAOA,MAAP;EACD,CARD;;EAUA,IAAI0J,UAAU,GAAGvB,SAAjB;EAEA,IAAIwB,MAAM,GAAG,EAAb;EACA;;EAEA,IAAIC,WAAW,GAAG,SAASA,WAAT,CAAqBvB,GAArB,EAA0BC,KAA1B,EAAiC/K,MAAjC,EAAyC;EACzD,SAAOmM,UAAU,CAAC,IAAD,EAAOrB,GAAP,EAAYC,KAAZ,EAAmB/K,MAAnB,CAAjB;EACD,CAFD;EAGA;;;EAGA,IAAIsM,WAAW,GAAG,SAASA,WAAT,GAAuB;EACvC,SAAO3G,aAAa,CAAC,KAAK1C,IAAN,CAApB;EACD,CAFD;EAGA;;;EAGA,IAAIsJ,UAAU,GAAG,SAASA,UAAT,GAAsB;EACrC,SAAO,KAAKtJ,IAAL,KAAc,EAAd,IAAoBrB,OAAO,CAAC,KAAKuH,QAAN,CAAlC;EACD,CAFD;EAGA;;;EAGA,IAAIqD,OAAO,GAAG,SAASA,OAAT,GAAmB;EAC/B,SAAOnM,MAAM,CAAC0E,IAAP,CAAY,KAAK2G,IAAjB,EAAuBO,IAAvB,CAA4B,UAAU1H,CAAV,EAAa;EAC9C,WAAO6H,MAAM,CAAC7H,CAAD,CAAN,KAAc,IAArB;EACD,GAFM,CAAP;EAGD,CAJD;EAKA;;;EAGA,IAAIkI,OAAO,GAAG,SAASA,OAAT,CAAiBC,KAAjB,EAAwB;EACpC,MAAIC,SAAS,GAAGD,KAAK,CAACE,UAAtB;EACA,MAAI5J,GAAG,GAAG,KAAKmG,QAAL,IAAiB,KAAKtD,KAAhC;;EAEA,MAAI,KAAK6F,IAAL,CAAUmB,MAAd,EAAsB;EACpB7J,IAAAA,GAAG,GAAG2J,SAAS,CAACG,UAAV,CAAqB9J,GAArB,EAA0B0J,KAA1B,CAAN;EACD;;EAED,MAAI,KAAKhB,IAAL,CAAUqB,IAAV,IAAkB,CAAC,KAAKrB,IAAL,CAAUsB,QAA7B,IAAyC,CAAC,KAAKtB,IAAL,CAAUuB,UAAxD,EAAoE;EAClE,QAAIC,KAAK,GAAG,IAAZ;;EAEA,QAAI,KAAKxB,IAAL,CAAUyB,SAAd,EAAyB;EACvBD,MAAAA,KAAK,GAAG,WAAR;EACD,KAFD,MAEO,IAAI,KAAKxB,IAAL,CAAU0B,MAAd,EAAsB;EAC3BF,MAAAA,KAAK,GAAG,QAAR;EACD,KAFM,MAEA,IAAI,KAAKxB,IAAL,CAAU2B,YAAd,EAA4B;EACjCH,MAAAA,KAAK,GAAG,cAAR;EACD,KAFM,MAEA,IAAI,KAAKxB,IAAL,CAAU4B,UAAd,EAA0B;EAC/BJ,MAAAA,KAAK,GAAG,YAAR;EACD,KAFM,MAEA,IAAI,KAAKxB,IAAL,CAAU6B,KAAd,EAAqB;EAC1BL,MAAAA,KAAK,GAAG,OAAR;EACD;;EAEDlK,IAAAA,GAAG,GAAG2J,SAAS,CAACa,YAAV,CAAuBxK,GAAvB,EAA4B0J,KAA5B,EAAmCQ,KAAnC,CAAN;EACD;;EAED,OAAK5B,IAAL,GAAYtI,GAAZ;EACD,CA3BD;;EA6BA,IAAIyK,OAAO,GAAG;EACZ5C,EAAAA,SAAS,EAAEwB,WADC;EAEZ5G,EAAAA,SAAS,EAAE6G,WAFC;EAGZC,EAAAA,UAAU,EAAEA,UAHA;EAIZC,EAAAA,OAAO,EAAEA,OAJG;EAKZC,EAAAA,OAAO,EAAEA;EALG,CAAd;EAQA,IAAIiB,UAAU,GAAG,OAAjB;EACA,IAAI5F,WAAW,GAAG,WAAlB;EACA;EACA;;EAEA;;EAEA,IAAI6F,OAAO,GAAG,SAASA,OAAT,CAAiBC,OAAjB,EAA0BC,OAA1B,EAAmCC,QAAnC,EAA6C;EACzDF,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACA,MAAI1G,IAAI,GAAG,KAAKjE,IAAhB;EACA,MAAI8K,MAAM,GAAG,KAAKlH,GAAlB;EACA,MAAIG,KAAK,GAAG,KAAKF,IAAjB,CAJyD;;EAMzD,MAAI8G,OAAO,CAACzH,OAAR,KAAoB,IAAxB,EAA8B;EAC5Be,IAAAA,IAAI,GAAG,KAAKf,OAAL,IAAgB,EAAvB;EACD;;EAED,MAAIyH,OAAO,CAACtC,IAAR,KAAiB,IAArB,EAA2B;EACzBpE,IAAAA,IAAI,GAAG,KAAKoE,IAAL,IAAa,EAApB;EACD;;EAED,MAAIsC,OAAO,CAACzE,QAAR,KAAqB,IAArB,IAA6B,KAAKA,QAAtC,EAAgD;EAC9CjC,IAAAA,IAAI,GAAG,KAAKiC,QAAL,IAAiB,EAAxB;EACD;;EAED,MAAIyE,OAAO,CAACI,MAAR,KAAmB,IAAvB,EAA6B;EAC3B9G,IAAAA,IAAI,GAAG,KAAKrB,KAAL,IAAc,KAAK5C,IAAnB,IAA2B,EAAlC;EACD;;EAED,MAAI2K,OAAO,CAACtC,IAAR,KAAiB,IAArB,EAA2B;EACzBpE,IAAAA,IAAI,GAAG,KAAKoE,IAAL,IAAa,KAAKnF,OAAlB,IAA6B,EAApC;EACD;;EAED,MAAIyH,OAAO,CAAC9I,OAAR,KAAoB,IAAxB,EAA8B;EAC5BoC,IAAAA,IAAI,GAAG/B,SAAS,CAAC+B,IAAD,CAAhB;EACD,GA5BwD;;;EA+BzD,MAAI0G,OAAO,CAACK,SAAR,KAAsB,IAA1B,EAAgC;EAC9B,QAAI,KAAKvC,IAAL,CAAUwC,UAAV,IAAwB,CAAC,KAAKxG,SAAL,EAA7B,EAA+C,CAA/C,KAAsD,IAAI,KAAKgE,IAAL,CAAUyC,OAAd,EAAuB;EAC3EjH,MAAAA,IAAI,GAAGA,IAAI,CAACU,WAAL,EAAP,CAD2E;EAE5E,KAFqD,MAE/C,IAAIE,WAAW,CAACpC,IAAZ,CAAiBwB,IAAjB,KAA0B,CAAC,KAAKwE,IAAL,CAAUyC,OAAzC,EAAkD;EACvD;EACAjH,MAAAA,IAAI,GAAGA,IAAI,CAACpB,WAAL,EAAP;EACD;EACF;;EAED,MAAI8H,OAAO,CAACQ,SAAR,KAAsB,IAA1B,EAAgC;EAC9BlH,IAAAA,IAAI,GAAGA,IAAI,CAACpB,WAAL,EAAP;EACD,GA1CwD;;;EA6CzD,MAAI8H,OAAO,CAACS,QAAR,KAAqB,IAArB,IAA6B,KAAK3C,IAAL,CAAUyC,OAA3C,EAAoD;EAClDjH,IAAAA,IAAI,GAAGA,IAAI,CAACjB,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP;EACD,GA/CwD;;;EAkDzD,MAAI2H,OAAO,CAACU,UAAR,KAAuB,IAAvB,IAA+BV,OAAO,CAACtC,IAAR,KAAiB,IAApD,EAA0D;EACxDyC,IAAAA,MAAM,GAAG,EAAT;EACA/G,IAAAA,KAAK,GAAG,GAAR;;EAEA,QAAI,CAAC0G,UAAU,CAAChI,IAAX,CAAgB,KAAKoB,IAArB,MAA+B,KAA/B,IAAwC8G,OAAO,CAACW,IAAjD,KAA0D,CAAC,KAAKpF,QAApE,EAA8E;EAC5EnC,MAAAA,KAAK,GAAG,EAAR;EACD;EACF;;EAED,MAAI4G,OAAO,CAACY,WAAR,KAAwB,IAAxB,IAAgC,CAACZ,OAAO,CAACtC,IAA7C,EAAmD;EACjD;EACA,QAAI,KAAKnD,OAAL,CAAa,GAAb,MAAsB,IAA1B,EAAgC;EAC9BnB,MAAAA,KAAK,GAAG,MAAMA,KAAd;EACD,KAFD,MAEO,IAAI,KAAKmB,OAAL,CAAa,GAAb,MAAsB,IAA1B,EAAgC;EACrCnB,MAAAA,KAAK,GAAG,MAAMA,KAAd;EACD,KAFM,MAEA,IAAI,KAAKmB,OAAL,CAAa,GAAb,MAAsB,IAA1B,EAAgC;EACrCnB,MAAAA,KAAK,GAAG,MAAMA,KAAd;EACD,KAFM,MAEA,IAAI,KAAKmB,OAAL,CAAa,GAAb,MAAsB,IAA1B,EAAgC;EACrCnB,MAAAA,KAAK,GAAG,MAAMA,KAAd;EACD,KAFM,MAEA,IAAI,KAAK6B,WAAL,OAAuB,IAA3B,EAAiC;EACtC7B,MAAAA,KAAK,GAAG,QAAQA,KAAhB;EACD;EACF;;EAED,MAAI6G,OAAO,KAAK,IAAhB,EAAsB;EACpBE,IAAAA,MAAM,GAAG,EAAT;EACD;;EAED,MAAID,QAAQ,KAAK,IAAjB,EAAuB;EACrB;EACA9G,IAAAA,KAAK,GAAG,EAAR,CAFqB;EAGtB,GAjFwD;;;EAoFzD,MAAI4G,OAAO,CAACa,aAAR,KAA0B,IAA1B,IAAkC,KAAK/C,IAAL,CAAUgD,YAAhD,EAA8D;EAC5D1H,IAAAA,KAAK,GAAGA,KAAK,CAACf,OAAN,CAAc,KAAd,EAAqB,EAArB,CAAR;EACD;;EAED,SAAO8H,MAAM,GAAG7G,IAAT,GAAgBF,KAAvB;EACD,CAzFD;;EA2FA,IAAI2H,OAAO,GAAG;EACZhB,EAAAA,OAAO,EAAEA;EADG,CAAd;EAIA,IAAIiB,UAAU,GAAG;EACfC,EAAAA,SAAS,EAAE,CADI;EAEfC,EAAAA,UAAU,EAAE;EAFG,CAAjB;EAIA;;EAEA,IAAIC,QAAQ,GAAG,SAASA,QAAT,CAAkBC,IAAlB,EAAwBtC,KAAxB,EAA+B;EAC5C,MAAIhB,IAAI,GAAGrL,MAAM,CAAC0E,IAAP,CAAYiK,IAAI,CAACtD,IAAjB,CAAX;EACA,MAAIuD,MAAM,GAAGvC,KAAK,CAAChB,IAAnB;EACAA,EAAAA,IAAI,GAAGA,IAAI,CAACwD,IAAL,CAAU,UAAU3L,CAAV,EAAaC,CAAb,EAAgB;EAC/B;EACA,QAAIoL,UAAU,CAACpL,CAAD,CAAV,IAAiB,CAACyL,MAAM,CAACzL,CAAD,CAA5B,EAAiC;EAC/B,aAAO,CAAC,CAAR;EACD,KAJ8B;;;EAO/B,QAAI,CAACyL,MAAM,CAACzL,CAAD,CAAX,EAAgB;EACd,aAAO,CAAP;EACD;;EAED,QAAI,CAACyL,MAAM,CAAC1L,CAAD,CAAX,EAAgB;EACd,aAAO,CAAP;EACD,KAb8B;;;EAgB/B,QAAI0L,MAAM,CAAC1L,CAAD,CAAN,CAAU4L,OAAV,CAAkBnP,MAAlB,GAA2BiP,MAAM,CAACzL,CAAD,CAAN,CAAU2L,OAAV,CAAkBnP,MAAjD,EAAyD;EACvD,aAAO,CAAP;EACD;;EAED,QAAIiP,MAAM,CAAC1L,CAAD,CAAN,CAAU6L,GAAV,CAAcpP,MAAd,GAAuBiP,MAAM,CAACzL,CAAD,CAAN,CAAU4L,GAAV,CAAcpP,MAAzC,EAAiD;EAC/C,aAAO,CAAC,CAAR;EACD;;EAED,WAAO,CAAP;EACD,GAzBM,CAAP;EA0BA,SAAO0L,IAAP;EACD,CA9BD;;EAgCA,IAAI2D,QAAQ,GAAGN,QAAf;EAEA,IAAIO,WAAW,GAAG;EAChBrM,EAAAA,IAAI,EAAE,IADU;EAEhByI,EAAAA,IAAI,EAAE,IAFU;EAGhBvC,EAAAA,QAAQ,EAAE,IAHM;EAIhBmF,EAAAA,UAAU,EAAE,IAJI;EAKhBzI,EAAAA,KAAK,EAAE,KALS;EAMhBmF,EAAAA,EAAE,EAAE,KANY;EAOhBD,EAAAA,KAAK,EAAE,KAPS;EAQhBwE,EAAAA,MAAM,EAAE,KARQ;EAShBC,EAAAA,OAAO,EAAE;EATO,CAAlB;EAWA;;EAEA,IAAIC,MAAM,GAAG,SAASC,IAAT,CAAc9B,OAAd,EAAuBlB,KAAvB,EAA8B;EACzCkB,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACAA,EAAAA,OAAO,GAAGvN,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBL,WAAlB,EAA+B1B,OAA/B,CAAV;EACA,MAAInL,MAAM,GAAG,EAAb,CAHyC;;EAKzC,MAAImL,OAAO,CAAC3K,IAAZ,EAAkB;EAChBR,IAAAA,MAAM,CAACQ,IAAP,GAAc,KAAKA,IAAnB;EACD;;EAED,MAAI2K,OAAO,CAACI,MAAZ,EAAoB;EAClBvL,IAAAA,MAAM,CAACuL,MAAP,GAAgB,KAAKnI,KAArB;EACD;;EAED,MAAI+H,OAAO,CAAClC,IAAZ,EAAkB;EAChBjJ,IAAAA,MAAM,CAACiJ,IAAP,GAAcrL,MAAM,CAAC0E,IAAP,CAAY,KAAK2G,IAAjB,CAAd;EACD,GAfwC;;;EAkBzC,MAAIkC,OAAO,CAAC/H,KAAZ,EAAmB;EACjBpD,IAAAA,MAAM,CAACoD,KAAP,GAAe,KAAKA,KAApB;EACD;;EAED,MAAI+H,OAAO,CAAC5C,EAAR,IAAc4C,OAAO,CAAC2B,MAA1B,EAAkC;EAChC9M,IAAAA,MAAM,CAACuI,EAAP,GAAY,KAAKA,EAAjB;EACD;;EAED,MAAI4C,OAAO,CAACzE,QAAR,IAAoB,KAAKA,QAAL,KAAkB,IAA1C,EAAgD;EAC9C1G,IAAAA,MAAM,CAAC0G,QAAP,GAAkB,KAAKA,QAAvB;EACD;;EAED,MAAIyE,OAAO,CAACU,UAAZ,EAAwB;EACtB7L,IAAAA,MAAM,CAACoE,GAAP,GAAa,KAAKA,GAAlB;EACApE,IAAAA,MAAM,CAACqE,IAAP,GAAc,KAAKA,IAAnB;EACD;;EAED,MAAI8G,OAAO,CAAC4B,OAAZ,EAAqB;EACnB/M,IAAAA,MAAM,CAAC+M,OAAP,GAAiBH,QAAQ,CAAC,IAAD,EAAO3C,KAAP,CAAR,CAAsB,CAAtB,CAAjB;EACD;;EAED,SAAOjK,MAAP;EACD,CAxCD;;EA0CA,IAAImN,SAAS,GAAG;EACdF,EAAAA,IAAI,EAAED;EADQ,CAAhB;EAIA,IAAII,SAAS,GAAGxP,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBlI,OAAlB,EAA2BO,gBAA3B,EAA6CyF,OAA7C,EAAsDkB,OAAtD,EAA+DiB,SAA/D,CAAhB;;EAEA,SAASE,YAAT,GAAwB;EACtB,SAAO,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACC,QAA/C;EACD;EACD;;;EAGA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBjN,GAAhB,EAAqBkN,KAArB,EAA4B;EACvClN,EAAAA,GAAG,GAAGA,GAAG,CAACmN,QAAJ,EAAN;;EAEA,SAAOnN,GAAG,CAAChD,MAAJ,GAAakQ,KAApB,EAA2B;EACzBlN,IAAAA,GAAG,IAAI,GAAP;EACD;;EAED,SAAOA,GAAP;EACD,CARD;EASA;;;EAGA,IAAIoN,MAAM,GAAG,SAASA,MAAT,CAAgB7L,CAAhB,EAAmBkH,GAAnB,EAAwB4E,MAAxB,EAAgC;EAC3C,MAAIP,YAAY,EAAhB,EAAoB;EAClBQ,IAAAA,OAAO,CAACC,GAAR,CAAY,OAAON,MAAM,CAAC1L,CAAC,CAACsB,KAAH,EAAU,CAAV,CAAb,GAA4B,MAA5B,GAAqC4F,GAArC,GAA2C,GAAvD,EAA4D,iBAA5D;EACA;EACD,GAJ0C;;;EAO3C,MAAI8E,GAAG,GAAG,aAAaN,MAAM,CAAC1L,CAAC,CAACsB,KAAH,EAAU,EAAV,CAAnB,GAAmC,oBAAnC,GAA0D4F,GAA1D,GAAgE,UAA1E;;EAEA,MAAI4E,MAAJ,EAAY;EACVE,IAAAA,GAAG,GAAGN,MAAM,CAACM,GAAD,EAAM,EAAN,CAAN,GAAkB,GAAlB,GAAwBF,MAAxB,GAAiC,EAAvC;EACD;;EAEDC,EAAAA,OAAO,CAACC,GAAR,CAAYA,GAAZ;EACD,CAdD;EAeA;;;EAGA,IAAIC,QAAQ,GAAG,SAASA,QAAT,CAAkBjM,CAAlB,EAAqBkH,GAArB,EAA0B4E,MAA1B,EAAkC;EAC/C,MAAIP,YAAY,EAAhB,EAAoB;EAClBQ,IAAAA,OAAO,CAACC,GAAR,CAAY,OAAON,MAAM,CAAC1L,CAAC,CAACsB,KAAH,EAAU,CAAV,CAAb,GAA4B,MAA5B,GAAqC4F,GAArC,GAA2C,GAAvD,EAA4D,iBAA5D;EACA;EACD,GAJ8C;;;EAO/C,MAAI8E,GAAG,GAAG,aAAaN,MAAM,CAAC1L,CAAC,CAACsB,KAAH,EAAU,CAAV,CAAnB,GAAkC,eAAlC,GAAoD4F,GAApD,GAA0D,UAApE;;EAEA,MAAI4E,MAAJ,EAAY;EACVE,IAAAA,GAAG,GAAGN,MAAM,CAACM,GAAD,EAAM,EAAN,CAAN,GAAkB,GAAlB,GAAwBF,MAA9B;EACD;;EAEDC,EAAAA,OAAO,CAACC,GAAR,CAAYA,GAAZ;EACD,CAdD;;EAgBA,IAAIE,SAAS,GAAG,SAASC,OAAT,CAAiBC,GAAjB,EAAsB;EACpC,SAAOtQ,MAAM,CAACd,SAAP,CAAiB4Q,QAAjB,CAA0BrO,IAA1B,CAA+B6O,GAA/B,MAAwC,gBAA/C;EACD,CAFD;;EAIA,IAAIC,WAAW,GAAG,SAASlJ,SAAT,CAAmB1E,GAAnB,EAAwB;EACxC,SAAOA,GAAG,CAAC6N,MAAJ,CAAW,CAAX,EAAcjJ,WAAd,KAA8B5E,GAAG,CAAC8N,MAAJ,CAAW,CAAX,CAArC;EACD,CAFD;;EAIA,IAAIC,KAAK,GAAG;EACVX,EAAAA,MAAM,EAAEA,MADE;EAEVI,EAAAA,QAAQ,EAAEA,QAFA;EAGVE,EAAAA,OAAO,EAAED,SAHC;EAIV/I,EAAAA,SAAS,EAAEkJ;EAJD,CAAZ;EAOA;;EAEA,IAAII,MAAM,GAAG,SAASA,MAAT,CAAgBzM,CAAhB,EAAmBkH,GAAnB,EAAwB4E,MAAxB,EAAgC3D,KAAhC,EAAuC;EAClD,MAAIuE,MAAM,GAAGvE,KAAK,CAAChB,IAAnB,CADkD;;EAGlD,MAAID,GAAG,KAAK,EAAR,IAAcA,GAAG,KAAK,GAAtB,IAA6BA,GAAG,KAAK,GAAzC,EAA8C;EAC5C;EACD;;EAED,MAAIA,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBA,IAAAA,GAAG,GAAGA,GAAG,CAACxF,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACD;;EAEDwF,EAAAA,GAAG,GAAGsF,KAAK,CAACrJ,SAAN,CAAgB+D,GAAhB,CAAN,CAXkD;;EAalD,MAAIlH,CAAC,CAACmH,IAAF,CAAOD,GAAP,MAAgB,IAApB,EAA0B;EACxB;EACD,GAfiD;;;EAkBlD,MAAIyF,SAAS,GAAGxE,KAAK,CAACwE,SAAN,EAAhB;;EAEA,MAAIA,SAAS,KAAK,IAAlB,EAAwB;EACtBH,IAAAA,KAAK,CAACX,MAAN,CAAa7L,CAAb,EAAgBkH,GAAhB,EAAqB4E,MAArB;EACD,GAtBiD;;;EAyBlD9L,EAAAA,CAAC,CAACmH,IAAF,CAAOD,GAAP,IAAc,IAAd,CAzBkD;EA0BlD;;EAEA,MAAIwF,MAAM,CAAC7F,cAAP,CAAsBK,GAAtB,MAA+B,IAAnC,EAAyC;EACvC;EACAwF,IAAAA,MAAM,CAACxF,GAAD,CAAN,CAAY2D,GAAZ,CAAgBpK,OAAhB,CAAwB,UAAUmM,IAAV,EAAgB;EACtC5M,MAAAA,CAAC,CAACmH,IAAF,CAAOyF,IAAP,IAAe,IAAf;;EAEA,UAAID,SAAS,KAAK,IAAlB,EAAwB;EACtBH,QAAAA,KAAK,CAACX,MAAN,CAAa7L,CAAb,EAAgB,OAAO4M,IAAvB;EACD;EACF,KAND,EAFuC;;EAUvC5M,IAAAA,CAAC,CAAC6M,KAAF,CAAQH,MAAM,CAACxF,GAAD,CAAN,CAAY4F,IAApB,EAA0B,GAA1B,EAA+B3E,KAA/B;EACD;EACF,CAxCD;EAyCA;;;EAGA,IAAI4E,OAAO,GAAG,SAASA,OAAT,CAAiBtC,IAAjB,EAAuBtD,IAAvB,EAA6B2E,MAA7B,EAAqC3D,KAArC,EAA4C;EACxD,MAAI,OAAOhB,IAAP,KAAgB,QAApB,EAA8B;EAC5B,SAAK,IAAI3L,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2L,IAAI,CAAC1L,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpCiR,MAAAA,MAAM,CAAChC,IAAD,EAAOtD,IAAI,CAAC3L,CAAD,CAAX,EAAgBsQ,MAAhB,EAAwB3D,KAAxB,CAAN;EACD,KAH2B;;EAK7B,GALD,MAKO;EACLsE,IAAAA,MAAM,CAAChC,IAAD,EAAOtD,IAAP,EAAa2E,MAAb,EAAqB3D,KAArB,CAAN;EACD;EACF,CATD;;EAWA,IAAI6E,GAAG,GAAGD,OAAV;EAEA,IAAIE,SAAS,GAAG,QAAhB;;EAEA,IAAIC,WAAW,GAAG,SAAS/J,SAAT,CAAmB1E,GAAnB,EAAwB;EACxC,SAAOA,GAAG,CAAC6N,MAAJ,CAAW,CAAX,EAAcjJ,WAAd,KAA8B5E,GAAG,CAAC8N,MAAJ,CAAW,CAAX,CAArC;EACD,CAFD;EAGA;;;EAGA,IAAIY,OAAO,GAAG,SAASN,KAAT,CAAe7M,CAAf,EAAkBkH,GAAlB,EAAuB4E,MAAvB,EAA+B3D,KAA/B,EAAsC;EAClD,MAAIwE,SAAS,GAAGxE,KAAK,CAACwE,SAAN,EAAhB,CADkD;;EAGlD,MAAIzF,GAAG,KAAK,GAAZ,EAAiB;EACflH,IAAAA,CAAC,CAACmH,IAAF,GAAS,EAAT;EACA,WAAOnH,CAAP;EACD;;EAEDkH,EAAAA,GAAG,GAAGA,GAAG,CAACxF,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;;EAEA,MAAIuL,SAAS,CAAC9L,IAAV,CAAe+F,GAAf,MAAwB,IAA5B,EAAkC;EAChCA,IAAAA,GAAG,GAAGgG,WAAW,CAAChG,GAAD,CAAjB;EACD,GAZiD;;;EAelD,MAAIlH,CAAC,CAACmH,IAAF,CAAOD,GAAP,MAAgB,IAApB,EAA0B;EACxB,WAAOlH,CAAC,CAACmH,IAAF,CAAOD,GAAP,CAAP,CADwB;;EAGxB,QAAIyF,SAAS,KAAK,IAAlB,EAAwB;EACtBH,MAAAA,KAAK,CAACP,QAAN,CAAejM,CAAf,EAAkBkH,GAAlB,EAAuB4E,MAAvB;EACD;EACF,GArBiD;;;EAwBlD,MAAIY,MAAM,GAAGvE,KAAK,CAAChB,IAAnB;;EAEA,MAAIuF,MAAM,CAACxF,GAAD,CAAV,EAAiB;EACf,QAAI0D,OAAO,GAAG8B,MAAM,CAACxF,GAAD,CAAN,CAAY0D,OAA1B;;EAEA,SAAK,IAAIpP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoP,OAAO,CAACnP,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;EACvC,UAAIwE,CAAC,CAACmH,IAAF,CAAOyD,OAAO,CAACpP,CAAD,CAAd,MAAuB,IAA3B,EAAiC;EAC/B,eAAOwE,CAAC,CAACmH,IAAF,CAAOyD,OAAO,CAACpP,CAAD,CAAd,CAAP;;EAEA,YAAImR,SAAS,KAAK,IAAlB,EAAwB;EACtBH,UAAAA,KAAK,CAACP,QAAN,CAAejM,CAAf,EAAkB,QAAQ4K,OAAO,CAACpP,CAAD,CAAjC;EACD;EACF;EACF;EACF;;EAED,SAAOwE,CAAP;EACD,CAzCD;;;EA4CA,IAAIoN,QAAQ,GAAG,SAASA,QAAT,CAAkB3C,IAAlB,EAAwBtD,IAAxB,EAA8B2E,MAA9B,EAAsC3D,KAAtC,EAA6C;EAC1D,MAAI,OAAOhB,IAAP,KAAgB,QAAhB,IAA4BA,IAAhC,EAAsC;EACpC,SAAK,IAAI3L,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2L,IAAI,CAAC1L,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpC2R,MAAAA,OAAO,CAAC1C,IAAD,EAAOtD,IAAI,CAAC3L,CAAD,CAAX,EAAgBsQ,MAAhB,EAAwB3D,KAAxB,CAAP;EACD;;EAED;EACD;;EAEDgF,EAAAA,OAAO,CAAC1C,IAAD,EAAOtD,IAAP,EAAa2E,MAAb,EAAqB3D,KAArB,CAAP;EACD,CAVD;;EAYA,IAAIkF,SAAS,GAAGD,QAAhB;;EAEA,IAAIE,OAAO,GAAG,SAASC,KAAT,CAAe9C,IAAf,EAAqBvD,GAArB,EAA0BiB,KAA1B,EAAiC;EAC7C,MAAIuE,MAAM,GAAGvE,KAAK,CAAChB,IAAnB,CAD6C;;EAG7C,MAAID,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBA,IAAAA,GAAG,GAAGA,GAAG,CAACxF,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACD,GAL4C;;;EAQ7C,MAAIgL,MAAM,CAACxF,GAAD,CAAN,KAAgBnB,SAApB,EAA+B;EAC7B,WAAO,IAAP;EACD,GAV4C;;;EAa7C,MAAIyH,OAAO,GAAGd,MAAM,CAACxF,GAAD,CAAN,CAAY4F,IAAZ,IAAoB,EAAlC;;EAEA,OAAK,IAAItR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgS,OAAO,CAAC/R,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;EACvC,QAAIiP,IAAI,CAACtD,IAAL,CAAUqG,OAAO,CAAChS,CAAD,CAAjB,MAA0B,IAA9B,EAAoC;EAClC,aAAO,KAAP;EACD;EACF;;EAED,MAAIkR,MAAM,CAACxF,GAAD,CAAN,CAAY2D,GAAZ,KAAoB9E,SAAxB,EAAmC;EACjC,WAAOwH,KAAK,CAAC9C,IAAD,EAAOiC,MAAM,CAACxF,GAAD,CAAN,CAAY2D,GAAnB,EAAwB1C,KAAxB,CAAZ,CADiC;EAElC;;EAED,SAAO,IAAP;EACD,CA1BD;;EA4BA,IAAIsF,SAAS,GAAGH,OAAhB;EAEA;EACA;EACA;EACA;;EAEA,IAAII,KAAK,GAAG,SAASA,KAAT,CAAevG,IAAf,EAAqB2E,MAArB,EAA6B3D,KAA7B,EAAoC;EAC9C6E,EAAAA,GAAG,CAAC,IAAD,EAAO7F,IAAP,EAAa2E,MAAb,EAAqB3D,KAArB,CAAH;EACA,SAAO,IAAP;EACD,CAHD;EAIA;;;EAGA,IAAIwF,SAAS,GAAG,SAASC,OAAT,CAAiBzG,IAAjB,EAAuB2E,MAAvB,EAA+B3D,KAA/B,EAAsC;EACpD,MAAIsF,SAAS,CAAC,IAAD,EAAOtG,IAAP,EAAagB,KAAb,CAAb,EAAkC;EAChC6E,IAAAA,GAAG,CAAC,IAAD,EAAO7F,IAAP,EAAa2E,MAAb,EAAqB3D,KAArB,CAAH;EACD;;EAED,SAAO,IAAP;EACD,CAND;EAOA;EACA;EACA;EACA;;;EAGA,IAAI0F,OAAO,GAAG,SAASA,OAAT,CAAiB1G,IAAjB,EAAuB2E,MAAvB,EAA+B3D,KAA/B,EAAsC;EAClDkF,EAAAA,SAAS,CAAC,IAAD,EAAOlG,IAAP,EAAa2E,MAAb,EAAqB3D,KAArB,CAAT;EACA,SAAO,IAAP;EACD,CAHD;EAIA;EACA;EACA;EACA;;;EAGA,IAAI2F,OAAO,GAAG,SAASA,OAAT,CAAiB3G,IAAjB,EAAuBgB,KAAvB,EAA8B;EAC1C,SAAOsF,SAAS,CAAC,IAAD,EAAOtG,IAAP,EAAagB,KAAb,CAAhB;EACD,CAFD;;EAIA,IAAI4F,KAAK,GAAG;EACV7G,EAAAA,GAAG,EAAEwG,KADK;EAEVE,EAAAA,OAAO,EAAED,SAFC;EAGVd,EAAAA,KAAK,EAAEgB,OAHG;EAIVN,EAAAA,KAAK,EAAEO;EAJG,CAAZ;;EAOA,IAAIE,IAAI,gBAAgB,YAAY;EAClC,WAASA,IAAT,GAAgB;EACd,QAAItP,IAAI,GAAGN,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;;EAEAnD,IAAAA,eAAe,CAAC,IAAD,EAAO+S,IAAP,CAAf;;EAEAtP,IAAAA,IAAI,GAAGuP,MAAM,CAACvP,IAAD,CAAb;EACA,QAAI9D,GAAG,GAAGiI,OAAO,CAACnE,IAAD,CAAjB,CANc;;EAQd,SAAKA,IAAL,GAAY9D,GAAG,CAAC8D,IAAJ,IAAY,EAAxB;EACA,SAAK4C,KAAL,GAAa1G,GAAG,CAAC0G,KAAjB;EACA,SAAKM,OAAL,GAAehH,GAAG,CAACgH,OAAnB;EACA,SAAKmF,IAAL,GAAY,IAAZ;EACA,SAAKnC,QAAL,GAAgB,IAAhB;EACA,SAAKtC,GAAL,GAAW1H,GAAG,CAAC0H,GAAJ,IAAW,EAAtB;EACA,SAAKC,IAAL,GAAY3H,GAAG,CAAC2H,IAAJ,IAAY,EAAxB;EACA,SAAK4E,IAAL,GAAY,EAAZ;EACA,SAAK+G,IAAL,GAAY,IAAZ;EACA,SAAKC,IAAL,GAAY,IAAZ;EACA,SAAK1H,EAAL,GAAU3H,GAAG,CAAClE,GAAG,CAAC0G,KAAL,CAAb;EACA,SAAKuJ,GAAL,GAAW,MAAX,CAnBc;EAoBd;;EAEA,QAAIjQ,GAAG,CAACgI,KAAR,EAAe;EACb,WAAKA,KAAL,GAAahI,GAAG,CAACgI,KAAjB;EACD;EACF;EACD;;;EAGA3G,EAAAA,YAAY,CAAC+R,IAAD,EAAO,CAAC;EAClBhS,IAAAA,GAAG,EAAE,KADa;EAElBQ,IAAAA,KAAK,EAAE,SAAS4R,GAAT,CAAa3P,GAAb,EAAkB;EACvB,UAAI7D,GAAG,GAAGiI,OAAO,CAACpE,GAAD,CAAjB;EACA,WAAKC,IAAL,GAAY9D,GAAG,CAAC8D,IAAhB;EACA,WAAK4C,KAAL,GAAa1G,GAAG,CAAC0G,KAAjB;EACA,aAAO,IAAP;EACD;EAPiB,GAAD,CAAP,CAAZ;;EAUA,SAAO0M,IAAP;EACD,CAzCuB,EAAxB;EA0CA;;;EAGAA,IAAI,CAAChT,SAAL,CAAeqT,KAAf,GAAuB,YAAY;EACjC,MAAI5D,IAAI,GAAG,IAAIuD,IAAJ,CAAS,KAAKtP,IAAd,CAAX;EACA+L,EAAAA,IAAI,CAACnI,GAAL,GAAW,KAAKA,GAAhB;EACAmI,EAAAA,IAAI,CAAClI,IAAL,GAAY,KAAKA,IAAjB;EACAkI,EAAAA,IAAI,CAACnJ,KAAL,GAAa,KAAKA,KAAlB;EACAmJ,EAAAA,IAAI,CAAC7I,OAAL,GAAe,KAAKA,OAApB;EACA6I,EAAAA,IAAI,CAAC1D,IAAL,GAAY,KAAKA,IAAjB;EACA0D,EAAAA,IAAI,CAAC7F,QAAL,GAAgB,KAAKA,QAArB;EACA6F,EAAAA,IAAI,CAACtD,IAAL,GAAYrL,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkB,KAAKjE,IAAvB,CAAZ,CARiC;EASjC;;EAEA,SAAOsD,IAAP;EACD,CAZD;;EAcA3O,MAAM,CAACsP,MAAP,CAAc4C,IAAI,CAAChT,SAAnB,EAA8BsQ,SAA9B;EACAxP,MAAM,CAACsP,MAAP,CAAc4C,IAAI,CAAChT,SAAnB,EAA8B+S,KAA9B;EACA,IAAIO,MAAM,GAAGN,IAAb;EAEA;;EACA,IAAIO,KAAK,GAAG,SAASA,KAAT,CAAe3O,CAAf,EAAkB;EAC5B,MAAI,KAAKnE,MAAL,KAAgB,CAApB,EAAuB;EACrB,WAAO,EAAP;EACD,GAH2B;;;EAM5B,MAAI,KAAK+S,KAAL,CAAWD,KAAf,EAAsB;EACpB,QAAI3O,CAAC,KAAKmG,SAAV,EAAqB;EACnB,aAAO,KAAKyI,KAAL,CAAWD,KAAX,CAAiB3O,CAAjB,CAAP;EACD;;EAED,WAAO,KAAK4O,KAAL,CAAWD,KAAlB;EACD;;EAED,MAAIA,KAAK,GAAG,CAAC,KAAKE,IAAL,CAAUC,GAAV,CAAc,KAAK/H,KAAnB,CAAD,CAAZ;;EAEA,OAAK,IAAInL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKC,MAAL,GAAc,CAAlC,EAAqCD,CAAC,IAAI,CAA1C,EAA6C;EAC3C,QAAIiL,EAAE,GAAG8H,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAAL,CAAwB0S,IAAjC;;EAEA,QAAI1H,EAAE,KAAK,IAAX,EAAiB;EACf;EACAsF,MAAAA,OAAO,CAAC4C,KAAR,CAAc,qDAAqD,KAAKhI,KAA1D,GAAkE,GAAhF;EACA;EACD;;EAED,QAAI8D,IAAI,GAAG,KAAKgE,IAAL,CAAUC,GAAV,CAAcjI,EAAd,CAAX;EACA8H,IAAAA,KAAK,CAACK,IAAN,CAAWnE,IAAX,EAV2C;;EAY3C,QAAI7K,CAAC,KAAKmG,SAAN,IAAmBnG,CAAC,KAAKpE,CAA7B,EAAgC;EAC9B,aAAO+S,KAAK,CAAC3O,CAAD,CAAZ;EACD;EACF;;EAED,MAAIA,CAAC,KAAKmG,SAAV,EAAqB;EACnB,SAAKyI,KAAL,CAAWD,KAAX,GAAmBA,KAAnB;EACD;;EAED,MAAI3O,CAAC,KAAKmG,SAAV,EAAqB;EACnB,WAAOwI,KAAK,CAAC3O,CAAD,CAAZ;EACD;;EAED,SAAO2O,KAAP;EACD,CA1CD;EA2CA;;;EAGA,IAAIM,OAAO,GAAG,SAASR,KAAT,CAAeS,SAAf,EAA0B;EACtC,MAAIC,KAAK,GAAG,IAAZ;;EAEA,MAAID,SAAJ,EAAe;EACb,QAAI/R,CAAC,GAAG,KAAKiS,SAAL,CAAe,KAAKrI,KAApB,EAA2B,KAAKlL,MAAhC,CAAR;EACAsB,IAAAA,CAAC,CAACyR,KAAF,GAAU,KAAKA,KAAf;EACA,WAAOzR,CAAP;EACD,GAPqC;;;EAUtC,MAAIwR,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,MAAIU,QAAQ,GAAGV,KAAK,CAACW,GAAN,CAAU,UAAUlP,CAAV,EAAa;EACpC,WAAOA,CAAC,CAACqO,KAAF,EAAP;EACD,GAFc,CAAf,CAXsC;EActC;;EAEAY,EAAAA,QAAQ,CAACxO,OAAT,CAAiB,UAAUT,CAAV,EAAaxE,CAAb,EAAgB;EAC/B;EACAuT,IAAAA,KAAK,CAACN,IAAN,CAAWzB,GAAX,CAAehN,CAAf;;EAEA,QAAIiP,QAAQ,CAACzT,CAAC,GAAG,CAAL,CAAZ,EAAqB;EACnBwE,MAAAA,CAAC,CAACmO,IAAF,GAASc,QAAQ,CAACzT,CAAC,GAAG,CAAL,CAAR,CAAgBiL,EAAzB;EACD;;EAED,QAAIwI,QAAQ,CAACzT,CAAC,GAAG,CAAL,CAAZ,EAAqB;EACnBwE,MAAAA,CAAC,CAACkO,IAAF,GAASe,QAAQ,CAACzT,CAAC,GAAG,CAAL,CAAR,CAAgBiL,EAAzB;EACD;EACF,GAXD;EAYA,SAAO,KAAKuI,SAAL,CAAeC,QAAQ,CAAC,CAAD,CAAR,CAAYxI,EAA3B,EAA+BwI,QAAQ,CAACxT,MAAxC,CAAP;EACD,CA7BD;EA8BA;;;EAGA,IAAI0T,QAAQ,GAAG,SAASA,QAAT,GAAoB;EACjC,MAAIZ,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,SAAOA,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAAZ;EACD,CAHD;EAIA;;;EAGA,IAAI2T,KAAK,GAAG,SAASA,KAAT,CAAeC,MAAf,EAAuB;EACjC,MAAI,KAAK5T,MAAL,KAAgB,CAAhB,IAAqB,CAAC4T,MAA1B,EAAkC;EAChC,WAAO,KAAP;EACD;;EAED,MAAI,KAAK1I,KAAL,KAAe0I,MAAnB,EAA2B;EACzB,WAAO,IAAP;EACD,GAPgC;;;EAUjC,MAAI,KAAKb,KAAL,CAAWD,KAAf,EAAsB;EACpB,QAAIe,MAAM,GAAG,KAAKd,KAAL,CAAWD,KAAxB;;EAEA,SAAK,IAAI/S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8T,MAAM,CAAC7T,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;EACtC,UAAI8T,MAAM,CAAC9T,CAAD,CAAN,CAAUiL,EAAV,KAAiB4I,MAArB,EAA6B;EAC3B,eAAO,IAAP;EACD;EACF;;EAED,WAAO,KAAP;EACD,GApBgC;;;EAuBjC,MAAIE,MAAM,GAAG,KAAK5I,KAAlB;;EAEA,OAAK,IAAIrB,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAG,KAAK7J,MAAL,GAAc,CAApC,EAAuC6J,EAAE,IAAI,CAA7C,EAAgD;EAC9C,QAAImF,IAAI,GAAG,KAAKgE,IAAL,CAAUC,GAAV,CAAca,MAAd,CAAX;;EAEA,QAAI9E,IAAI,KAAK1E,SAAb,EAAwB;EACtBgG,MAAAA,OAAO,CAAC4C,KAAR,CAAc,uDAAuDa,MAAvD,CAA8DD,MAA9D,EAAsE,eAAtE,EAAuFC,MAAvF,CAA8F,KAAK7I,KAAnG,EAA0G,KAA1G,CAAd,EADsB;;EAGtB,aAAO,KAAP;EACD;;EAED,QAAI8D,IAAI,CAAC0D,IAAL,KAAckB,MAAlB,EAA0B;EACxB,aAAO,IAAP;EACD;;EAEDE,IAAAA,MAAM,GAAG9E,IAAI,CAAC0D,IAAd;EACD;;EAED,SAAO,KAAP;EACD,CA1CD;EA2CA;;;EAGA,IAAIsB,SAAS,GAAG,SAASA,SAAT,GAAqB;EACnC,SAAO,KAAKlB,KAAL,GAAamB,MAAb,CAAoB,UAAU1P,CAAV,EAAa;EACtC,WAAOA,CAAC,CAACtB,IAAF,KAAW,EAAlB;EACD,GAFM,EAEJjD,MAFH;EAGD,CAJD;EAKA;;;EAGA,IAAIkU,YAAY,GAAG,SAASA,YAAT,GAAwB;EACzC,MAAI3P,CAAC,GAAG,KAAKuO,KAAL,CAAW,CAAX,CAAR,CADyC;;EAGzC,SAAOvO,CAAC,CAACkO,IAAT,EAAe;EACblO,IAAAA,CAAC,GAAG,KAAKyO,IAAL,CAAUC,GAAV,CAAc1O,CAAC,CAACkO,IAAhB,CAAJ;EACD;;EAED,MAAIvH,KAAK,GAAG3G,CAAC,CAACyG,EAAd;EACA,MAAImJ,GAAG,GAAG,CAAV,CARyC;;EAUzC,SAAO5P,CAAC,CAACmO,IAAT,EAAe;EACbnO,IAAAA,CAAC,GAAG,KAAKyO,IAAL,CAAUC,GAAV,CAAc1O,CAAC,CAACmO,IAAhB,CAAJ;EACAyB,IAAAA,GAAG,IAAI,CAAP;EACD;;EAED,SAAO,KAAKZ,SAAL,CAAerI,KAAf,EAAsBiJ,GAAtB,CAAP;EACD,CAhBD;;EAkBA,IAAIC,UAAU,GAAG;EACftB,EAAAA,KAAK,EAAEA,KADQ;EAEfF,EAAAA,KAAK,EAAEQ,OAFQ;EAGfM,EAAAA,QAAQ,EAAEA,QAHK;EAIfC,EAAAA,KAAK,EAAEA,KAJQ;EAKfK,EAAAA,SAAS,EAAEA,SALI;EAMfE,EAAAA,YAAY,EAAEA;EANC,CAAjB;;EASA,IAAIG,OAAO,GAAG,SAASA,OAAT,CAAiBrR,GAAjB,EAAsB;EAClC,SAAOA,GAAG,CAACiD,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAP;EACD,CAFD;EAGA;;;EAGA,IAAIqO,MAAM,GAAG,SAASrR,IAAT,GAAgB;EAC3B,MAAI2K,OAAO,GAAGjL,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF;EACA,MAAI4R,OAAO,GAAG5R,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,GAAuB2C,SAAS,CAAC,CAAD,CAAhC,GAAsC2H,SAApD;EACA,MAAIkK,MAAM,GAAG7R,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,GAAuB2C,SAAS,CAAC,CAAD,CAAhC,GAAsC2H,SAAnD;;EAEA,MAAI,OAAOsD,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,QAAIA,OAAO,KAAK,QAAhB,EAA0B;EACxBA,MAAAA,OAAO,GAAG;EACRU,QAAAA,UAAU,EAAE,IADJ;EAERxJ,QAAAA,OAAO,EAAE,IAFD;EAGRsJ,QAAAA,SAAS,EAAE,IAHH;EAIRI,QAAAA,WAAW,EAAE,IAJL;EAKRH,QAAAA,QAAQ,EAAE,IALF;EAMRI,QAAAA,aAAa,EAAE,IANP;EAORtF,QAAAA,QAAQ,EAAE,IAPF;EAQR6E,QAAAA,MAAM,EAAE;EARA,OAAV;EAUD,KAXD,MAWO,IAAIJ,OAAO,KAAK,OAAhB,EAAyB;EAC9BA,MAAAA,OAAO,GAAG;EACRK,QAAAA,SAAS,EAAE,KADH;EAERG,QAAAA,SAAS,EAAE,IAFH;EAGRI,QAAAA,WAAW,EAAE,IAHL;EAIRF,QAAAA,UAAU,EAAE,IAJJ;EAKRxJ,QAAAA,OAAO,EAAE,IALD;EAMRqE,QAAAA,QAAQ,EAAE,IANF;EAOR6E,QAAAA,MAAM,EAAE;EAPA,OAAV;EASD,KAVM,MAUA,IAAIJ,OAAO,KAAK,SAAhB,EAA2B;EAChCA,MAAAA,OAAO,GAAG;EACRY,QAAAA,WAAW,EAAE,KADL;EAER;EACAP,QAAAA,SAAS,EAAE,KAHH;EAIRG,QAAAA,SAAS,EAAE,IAJH;EAKRE,QAAAA,UAAU,EAAE,IALJ;EAMRxJ,QAAAA,OAAO,EAAE,IAND;EAORqE,QAAAA,QAAQ,EAAE,IAPF;EAQRhD,QAAAA,OAAO,EAAE;EARD,OAAV;EAUD,KAXM,MAWA,IAAIyH,OAAO,KAAK,UAAhB,EAA4B;EACjCA,MAAAA,OAAO,GAAG;EACRY,QAAAA,WAAW,EAAE,IADL;EAERrF,QAAAA,QAAQ,EAAE,IAFF;EAGRmF,QAAAA,UAAU,EAAE,IAHJ;EAIRvI,QAAAA,IAAI,EAAE;EAJE,OAAV;EAMD,KAPM,MAOA,IAAI6H,OAAO,KAAK,MAAhB,EAAwB;EAC7BA,MAAAA,OAAO,GAAG;EACRK,QAAAA,SAAS,EAAE,KADH;EAERG,QAAAA,SAAS,EAAE,IAFH;EAGRI,QAAAA,WAAW,EAAE,IAHL;EAIRF,QAAAA,UAAU,EAAE,IAJJ;EAKRxJ,QAAAA,OAAO,EAAE,IALD;EAMRqE,QAAAA,QAAQ,EAAE,IANF;EAORmC,QAAAA,IAAI,EAAE;EAPE,OAAV;EASD,KAVM,MAUA;EACLsC,MAAAA,OAAO,GAAG,EAAV;EACD;EACF;;EAED,MAAIkF,KAAK,GAAG,KAAKA,KAAL,EAAZ,CA5D2B;;EA8D3B,MAAI2B,MAAM,GAAG,KAAb;;EAEA,MAAI3B,KAAK,CAAC,CAAD,CAAL,IAAYA,KAAK,CAAC,CAAD,CAAL,CAASL,IAAT,KAAkB,IAA9B,IAAsCK,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAAL,CAAwB0S,IAAxB,KAAiC,IAA3E,EAAiF;EAC/E+B,IAAAA,MAAM,GAAG,IAAT;EACD;;EAED,MAAIxR,IAAI,GAAG6P,KAAK,CAAC1M,MAAN,CAAa,UAAUpD,GAAV,EAAeuB,CAAf,EAAkBxE,CAAlB,EAAqB;EAC3C;EACA,QAAIA,CAAC,KAAK,CAAN,IAAWwE,CAAC,CAACtB,IAAF,KAAW,EAAtB,IAA4BsB,CAAC,CAAC4E,QAAF,KAAe,IAA3C,IAAmD,CAACyE,OAAO,CAACzE,QAAhE,EAA0E;EACxE,aAAOnG,GAAP;EACD;;EAED4K,IAAAA,OAAO,CAACW,IAAR,GAAeiG,MAAM,IAAIzU,CAAC,KAAK+S,KAAK,CAAC9S,MAAN,GAAe,CAA9C;EACA,QAAI6N,OAAO,GAAG,IAAd;EACA,QAAIC,QAAQ,GAAG,IAAf;;EAEA,QAAI2G,MAAM,KAAK,KAAf,EAAsB;EACpB;EACA,UAAI1U,CAAC,KAAK,CAAN,IAAWwU,OAAf,EAAwB;EACtB1G,QAAAA,OAAO,GAAG,KAAV;EACD,OAJmB;;;EAOpB,UAAI9N,CAAC,KAAK+S,KAAK,CAAC9S,MAAN,GAAe,CAArB,IAA0BwU,MAA9B,EAAsC;EACpC1G,QAAAA,QAAQ,GAAG,KAAX;EACD;EACF;;EAED,QAAI4G,GAAG,GAAGnQ,CAAC,CAACoJ,OAAF,CAAUC,OAAV,EAAmBC,OAAnB,EAA4BC,QAA5B,CAAV,CAtB2C;EAuB3C;EACA;EACA;;EAEA,WAAO9K,GAAG,GAAG0R,GAAb;EACD,GA5BU,EA4BR,EA5BQ,CAAX,CApE2B;;EAkG3B,MAAID,MAAM,KAAK,IAAX,IAAmBD,MAAvB,EAA+B;EAC7BvR,IAAAA,IAAI,GAAGoR,OAAO,CAACpR,IAAD,CAAd;EACD;;EAED,MAAI2K,OAAO,CAAC7H,IAAR,KAAiB,IAArB,EAA2B;EACzB9C,IAAAA,IAAI,GAAGA,IAAI,CAAC8C,IAAL,EAAP;EACD;;EAED,SAAO9C,IAAP;EACD,CA3GD;;EA6GA,IAAI0R,OAAO,GAAG;EACZ1R,EAAAA,IAAI,EAAEqR;EADM,CAAd;EAIA;;EACA,IAAIvO,IAAI,GAAG,SAASA,IAAT,GAAgB;EACzB,MAAI+M,KAAK,GAAG,KAAKA,KAAL,EAAZ;;EAEA,MAAIA,KAAK,CAAC9S,MAAN,GAAe,CAAnB,EAAsB;EACpB;EACA8S,IAAAA,KAAK,CAAC,CAAD,CAAL,CAASjM,GAAT,GAAeiM,KAAK,CAAC,CAAD,CAAL,CAASjM,GAAT,CAAaZ,OAAb,CAAqB,MAArB,EAA6B,EAA7B,CAAf,CAFoB;;EAIpB,QAAIyN,QAAQ,GAAGZ,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAApB;EACA0T,IAAAA,QAAQ,CAAC5M,IAAT,GAAgB4M,QAAQ,CAAC5M,IAAT,CAAcb,OAAd,CAAsB,MAAtB,EAA8B,EAA9B,CAAhB;EACD;;EAED,SAAO,IAAP;EACD,CAZD;;EAcA,IAAI2O,SAAS,GAAG;EACd7O,EAAAA,IAAI,EAAEA;EADQ,CAAhB;EAIA,IAAI8O,aAAa,GAAG,WAApB;;EAEA,IAAIC,WAAW,GAAG,SAASA,WAAT,CAAqB/G,MAArB,EAA6B/G,KAA7B,EAAoC;EACpD;EACA,MAAI6N,aAAa,CAACnP,IAAd,CAAmBsB,KAAnB,CAAJ,EAA+B;EAC7B,QAAIsH,UAAU,GAAGP,MAAM,CAACgH,KAAP,CAAa,MAAb,CAAjB;EACA,WAAO/N,KAAK,GAAGsH,UAAf;EACD;;EAED,SAAOP,MAAP;EACD,CARD;;;EAWA,IAAIiH,eAAe,GAAG,SAASC,aAAT,CAAuBC,WAAvB,EAAoC1B,QAApC,EAA8C;EAClE;EACAA,EAAAA,QAAQ,CAAC,CAAD,CAAR,CAAY3M,GAAZ,GAAkBqO,WAAW,CAAC,CAAD,CAAX,CAAerO,GAAjC;EACA,MAAI6M,QAAQ,GAAGwB,WAAW,CAACA,WAAW,CAAClV,MAAZ,GAAqB,CAAtB,CAA1B,CAHkE;;EAKlE,MAAImV,OAAO,GAAG3B,QAAQ,CAACA,QAAQ,CAACxT,MAAT,GAAkB,CAAnB,CAAtB;EACAmV,EAAAA,OAAO,CAACrO,IAAR,GAAegO,WAAW,CAACpB,QAAQ,CAAC5M,IAAV,EAAgBqO,OAAO,CAACrO,IAAxB,CAA1B,CANkE;;EAQlE4M,EAAAA,QAAQ,CAAC5M,IAAT,GAAgB,EAAhB,CARkE;;EAUlE,MAAI4M,QAAQ,CAAC5M,IAAT,KAAkB,EAAtB,EAA0B;EACxB4M,IAAAA,QAAQ,CAAC5M,IAAT,IAAiB,GAAjB;EACD;EACF,CAbD;;;EAgBA,IAAIsO,UAAU,GAAG,SAASC,QAAT,CAAkBH,WAAlB,EAA+B1B,QAA/B,EAAyCR,IAAzC,EAA+C;EAC9D,MAAIsC,UAAU,GAAGJ,WAAW,CAACA,WAAW,CAAClV,MAAZ,GAAqB,CAAtB,CAA5B;EACA,MAAIuV,OAAO,GAAG/B,QAAQ,CAACA,QAAQ,CAACxT,MAAT,GAAkB,CAAnB,CAAtB;EACA,MAAIwV,OAAO,GAAGF,UAAU,CAAC5C,IAAzB,CAH8D;;EAK9D4C,EAAAA,UAAU,CAAC5C,IAAX,GAAkBc,QAAQ,CAAC,CAAD,CAAR,CAAYxI,EAA9B,CAL8D;;EAO9DuK,EAAAA,OAAO,CAAC7C,IAAR,GAAe8C,OAAf,CAP8D;;EAS9D,MAAIA,OAAJ,EAAa;EACX;EACA,QAAIC,SAAS,GAAGzC,IAAI,CAACC,GAAL,CAASuC,OAAT,CAAhB;EACAC,IAAAA,SAAS,CAAChD,IAAV,GAAiB8C,OAAO,CAACvK,EAAzB;EACD,GAb6D;;;EAgB9D,MAAI0K,QAAQ,GAAGR,WAAW,CAAC,CAAD,CAAX,CAAelK,EAA9B;;EAEA,MAAI0K,QAAJ,EAAc;EACZ,QAAIP,OAAO,GAAG3B,QAAQ,CAAC,CAAD,CAAtB;EACA2B,IAAAA,OAAO,CAAC1C,IAAR,GAAeiD,QAAf;EACD;EACF,CAtBD;;;EAyBA,IAAIC,QAAQ,GAAG,SAASC,MAAT,CAAgBC,IAAhB,EAAsB;EACnC,SAAOA,IAAI,CAAC5B,MAAL,CAAY,UAAU/S,CAAV,EAAanB,CAAb,EAAgB;EACjC,WAAO8V,IAAI,CAACxN,OAAL,CAAanH,CAAb,MAAoBnB,CAA3B;EACD,GAFM,CAAP;EAGD,CAJD;;;EAOA,IAAI+V,YAAY,GAAG,SAASA,YAAT,CAAsB/H,MAAtB,EAA8BgI,SAA9B,EAAyCC,GAAzC,EAA8C;EAC/D,MAAId,WAAW,GAAGnH,MAAM,CAAC+E,KAAP,EAAlB;EACA,MAAIU,QAAQ,GAAGuC,SAAS,CAACjD,KAAV,EAAf,CAF+D;;EAI/DkC,EAAAA,eAAe,CAACE,WAAD,EAAc1B,QAAd,CAAf,CAJ+D;;EAM/D4B,EAAAA,UAAU,CAACF,WAAD,EAAc1B,QAAd,EAAwBzF,MAAM,CAACiF,IAA/B,CAAV,CAN+D;EAO/D;;EAEA,MAAIiD,SAAS,GAAG,CAAClI,MAAD,CAAhB;EACA,MAAI4F,KAAK,GAAG5F,MAAM,CAAC7C,KAAnB;EACA,MAAIgL,IAAI,GAAG,CAACF,GAAD,CAAX;EACAE,EAAAA,IAAI,GAAGA,IAAI,CAACnC,MAAL,CAAYiC,GAAG,CAACG,OAAJ,EAAZ,CAAP,CAZ+D;;EAc/DD,EAAAA,IAAI,CAAClR,OAAL,CAAa,UAAUoR,MAAV,EAAkB;EAC7B;EACA,QAAIC,YAAY,GAAGD,MAAM,CAACP,IAAP,CAAY5B,MAAZ,CAAmB,UAAU3S,CAAV,EAAa;EACjD,aAAOA,CAAC,CAACqS,KAAF,CAAQA,KAAR,CAAP;EACD,KAFkB,CAAnB;EAGAsC,IAAAA,SAAS,GAAGA,SAAS,CAAClC,MAAV,CAAiBsC,YAAjB,CAAZ;EACD,GAND,EAd+D;;EAsB/DJ,EAAAA,SAAS,GAAGN,QAAQ,CAACM,SAAD,CAApB;EACAA,EAAAA,SAAS,CAACjR,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7BA,IAAAA,CAAC,CAACtB,MAAF,IAAY+V,SAAS,CAAC/V,MAAtB;EACD,GAFD;EAGA+N,EAAAA,MAAM,CAACgF,KAAP,GAAe,EAAf;EACA,SAAOhF,MAAP;EACD,CA5BD;;EA8BA,IAAIuI,MAAM,GAAGR,YAAb;EAEA,IAAIS,QAAQ,GAAG,GAAf;EACA;;EAEA,IAAItB,aAAa,GAAG,SAASA,aAAT,CAAuBzB,QAAvB,EAAiC;EACnD;EACA;EACA,MAAIE,QAAQ,GAAGF,QAAQ,CAACA,QAAQ,CAACxT,MAAT,GAAkB,CAAnB,CAAvB;;EAEA,MAAIuW,QAAQ,CAAC7Q,IAAT,CAAcgO,QAAQ,CAAC5M,IAAvB,MAAiC,KAArC,EAA4C;EAC1C4M,IAAAA,QAAQ,CAAC5M,IAAT,IAAiB,GAAjB;EACD;;EAED;EACD,CAVD;;;EAaA,IAAIuO,QAAQ,GAAG,SAASA,QAAT,CAAkBmB,IAAlB,EAAwBT,SAAxB,EAAmCvC,QAAnC,EAA6C;EAC1D;EACA,MAAIE,QAAQ,GAAGF,QAAQ,CAACA,QAAQ,CAACxT,MAAT,GAAkB,CAAnB,CAAvB;EACA0T,EAAAA,QAAQ,CAAChB,IAAT,GAAgB8D,IAAI,CAACtL,KAArB,CAH0D;;EAK1D,MAAI8H,IAAI,GAAGwD,IAAI,CAACxD,IAAhB;EACA,MAAI9H,KAAK,GAAG8H,IAAI,CAACC,GAAL,CAASuD,IAAI,CAACtL,KAAd,CAAZ;;EAEA,MAAIA,KAAK,CAACuH,IAAV,EAAgB;EACd,QAAI1E,MAAM,GAAGiF,IAAI,CAACC,GAAL,CAAS/H,KAAK,CAACuH,IAAf,CAAb;EACA1E,IAAAA,MAAM,CAAC2E,IAAP,GAAcqD,SAAS,CAAC7K,KAAxB;EACD,GAXyD;EAY1D;;;EAGAsI,EAAAA,QAAQ,CAAC,CAAD,CAAR,CAAYf,IAAZ,GAAmB+D,IAAI,CAAC1D,KAAL,CAAW,CAAX,EAAcL,IAAjC,CAf0D;;EAiB1D+D,EAAAA,IAAI,CAAC1D,KAAL,CAAW,CAAX,EAAcL,IAAd,GAAqBiB,QAAQ,CAAC1I,EAA9B;EACD,CAlBD;;EAoBA,IAAIyL,QAAQ,GAAG,SAASb,MAAT,CAAgBC,IAAhB,EAAsB;EACnC,SAAOA,IAAI,CAAC5B,MAAL,CAAY,UAAU/S,CAAV,EAAanB,CAAb,EAAgB;EACjC,WAAO8V,IAAI,CAACxN,OAAL,CAAanH,CAAb,MAAoBnB,CAA3B;EACD,GAFM,CAAP;EAGD,CAJD;;;EAOA,IAAI2W,UAAU,GAAG,SAASA,UAAT,CAAoB1Q,QAApB,EAA8B+P,SAA9B,EAAyCC,GAAzC,EAA8C;EAC7D,MAAIW,SAAS,GAAG3Q,QAAQ,CAACkF,KAAzB;EACA,MAAIsI,QAAQ,GAAGuC,SAAS,CAACjD,KAAV,EAAf,CAF6D;;EAI7DmC,EAAAA,aAAa,CAACzB,QAAD,CAAb,CAJ6D;;EAM7D6B,EAAAA,QAAQ,CAACrP,QAAD,EAAW+P,SAAX,EAAsBvC,QAAtB,CAAR,CAN6D;;EAQ7D,MAAIyC,SAAS,GAAG,CAACjQ,QAAD,CAAhB;EACA,MAAIkQ,IAAI,GAAG,CAACF,GAAD,CAAX;EACAE,EAAAA,IAAI,GAAGA,IAAI,CAACnC,MAAL,CAAYiC,GAAG,CAACG,OAAJ,EAAZ,CAAP;EACAD,EAAAA,IAAI,CAAClR,OAAL,CAAa,UAAUtB,CAAV,EAAa;EACxB;EACA,QAAI2S,YAAY,GAAG3S,CAAC,CAACmS,IAAF,CAAO5B,MAAP,CAAc,UAAU3S,CAAV,EAAa;EAC5C,aAAOA,CAAC,CAACqS,KAAF,CAAQgD,SAAR,KAAsBrV,CAAC,CAACqS,KAAF,CAAQoC,SAAS,CAAC7K,KAAlB,CAA7B;EACD,KAFkB,CAAnB;EAGA+K,IAAAA,SAAS,GAAGA,SAAS,CAAClC,MAAV,CAAiBsC,YAAjB,CAAZ;EACD,GAND,EAX6D;;EAmB7DJ,EAAAA,SAAS,GAAGQ,QAAQ,CAACR,SAAD,CAApB,CAnB6D;;EAqB7DA,EAAAA,SAAS,CAACjR,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7BA,IAAAA,CAAC,CAACtB,MAAF,IAAY+V,SAAS,CAAC/V,MAAtB,CAD6B;;EAG7B,QAAIsB,CAAC,CAAC4J,KAAF,KAAYyL,SAAhB,EAA2B;EACzBrV,MAAAA,CAAC,CAAC4J,KAAF,GAAU6K,SAAS,CAAC7K,KAApB;EACD;;EAED5J,IAAAA,CAAC,CAACyR,KAAF,GAAU,EAAV;EACD,GARD;EASA,SAAO/M,QAAP;EACD,CA/BD;;EAiCA,IAAI4Q,OAAO,GAAGF,UAAd;;EAGA,IAAIG,SAAS,GAAG,SAASA,SAAT,CAAmBb,GAAnB,EAAwBhL,EAAxB,EAA4B8L,YAA5B,EAA0C9P,KAA1C,EAAiD;EAC/D,MAAI2J,GAAG,GAAGqF,GAAG,CAACG,OAAJ,EAAV;EACAxF,EAAAA,GAAG,CAACwC,IAAJ,CAAS6C,GAAT;EACArF,EAAAA,GAAG,CAAC3L,OAAJ,CAAY,UAAUtB,CAAV,EAAa;EACvB;EACA,QAAIqT,MAAM,GAAGrT,CAAC,CAACmS,IAAF,CAAOmB,IAAP,CAAY,UAAU1V,CAAV,EAAa;EACpC,aAAOA,CAAC,CAACqS,KAAF,CAAQ3I,EAAR,CAAP;EACD,KAFY,CAAb;;EAIA,QAAI,CAAC+L,MAAL,EAAa;EACX;EACD;;EAEDA,IAAAA,MAAM,CAAC/W,MAAP,IAAiB8W,YAAjB,CAVuB;;EAYvB,QAAIC,MAAM,CAAC7L,KAAP,KAAiBF,EAArB,EAAyB;EACvB+L,MAAAA,MAAM,CAAC7L,KAAP,GAAelE,KAAK,CAACgE,EAArB;EACD;;EAED+L,IAAAA,MAAM,CAAChE,KAAP,GAAe,EAAf;EACD,GAjBD,EAH+D;;EAsB/DiD,EAAAA,GAAG,CAACH,IAAJ,GAAWG,GAAG,CAACH,IAAJ,CAAS5B,MAAT,CAAgB,UAAU3S,CAAV,EAAa;EACtC,QAAI,CAACA,CAAC,CAAC4J,KAAH,IAAY,CAAC5J,CAAC,CAACtB,MAAnB,EAA2B;EACzB,aAAO,KAAP;EACD;;EAED,WAAO,IAAP;EACD,GANU,CAAX;EAOD,CA7BD;EA8BA;EACA;EACA;;;EAGA,IAAIiX,YAAY,GAAG,SAASA,YAAT,CAAsBF,MAAtB,EAA8Bf,GAA9B,EAAmC;EACpD,MAAIhD,IAAI,GAAGgD,GAAG,CAAChD,IAAJ,EAAX;EACA,MAAIF,KAAK,GAAGiE,MAAM,CAACjE,KAAP,EAAZ,CAFoD;;EAIpD,MAAIL,IAAI,GAAGO,IAAI,CAACC,GAAL,CAASH,KAAK,CAAC,CAAD,CAAL,CAASL,IAAlB,KAA2B,EAAtC;EACA,MAAIzL,KAAK,GAAGgM,IAAI,CAACC,GAAL,CAASH,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAAL,CAAwB0S,IAAjC,KAA0C,EAAtD;;EAEA,MAAII,KAAK,CAAC,CAAD,CAAL,CAAS3J,QAAT,IAAqBsJ,IAAI,CAACtJ,QAA9B,EAAwC;EACtCsJ,IAAAA,IAAI,CAACE,GAAL,CAASF,IAAI,CAACtJ,QAAd;EACAsJ,IAAAA,IAAI,CAAC3L,IAAL,IAAa,GAAb;EACD,GAVmD;;;EAapD+P,EAAAA,SAAS,CAACb,GAAD,EAAMe,MAAM,CAAC7L,KAAb,EAAoB6L,MAAM,CAAC/W,MAA3B,EAAmCgH,KAAnC,CAAT,CAboD;;EAepD,MAAIyL,IAAJ,EAAU;EACRA,IAAAA,IAAI,CAACC,IAAL,GAAY1L,KAAK,CAACgE,EAAlB;EACD,GAjBmD;;;EAoBpD,MAAIhE,KAAJ,EAAW;EACTA,IAAAA,KAAK,CAACyL,IAAN,GAAaA,IAAI,CAACzH,EAAlB;EACD,GAtBmD;EAuBpD;EACA;EACA;;EAED,CA3BD;;EA6BA,IAAIkM,SAAS,GAAGD,YAAhB;EAEA;;EAEA,IAAIE,QAAQ,GAAG,SAASA,QAAT,CAAkBpB,SAAlB,EAA6BC,GAA7B,EAAkC;EAC/CM,EAAAA,MAAM,CAAC,IAAD,EAAOP,SAAP,EAAkBC,GAAlB,CAAN;EACA,SAAO,IAAP;EACD,CAHD;EAIA;;;EAGA,IAAIoB,SAAS,GAAG,SAASA,SAAT,CAAmBrB,SAAnB,EAA8BC,GAA9B,EAAmC;EACjDY,EAAAA,OAAO,CAAC,IAAD,EAAOb,SAAP,EAAkBC,GAAlB,CAAP;EACA,SAAO,IAAP;EACD,CAHD;;EAKA,IAAIqB,OAAO,GAAG,SAASA,OAAT,CAAiBrB,GAAjB,EAAsB;EAClCkB,EAAAA,SAAS,CAAC,IAAD,EAAOlB,GAAP,CAAT;;EACA,SAAO,IAAP;EACD,CAHD;;;EAMA,IAAIsB,SAAS,GAAG,SAASrR,OAAT,CAAiB8P,SAAjB,EAA4BC,GAA5B,EAAiC;EAC/C;EACA,MAAIuB,WAAW,GAAG,KAAKvX,MAAvB;EACAsW,EAAAA,MAAM,CAAC,IAAD,EAAOP,SAAP,EAAkBC,GAAlB,CAAN,CAH+C;;EAK/C,MAAIwB,GAAG,GAAG,KAAKjE,SAAL,CAAe,KAAKrI,KAApB,EAA2B,KAAKlL,MAAhC,CAAV;EACAwX,EAAAA,GAAG,CAACxX,MAAJ,GAAauX,WAAb;;EACAL,EAAAA,SAAS,CAACM,GAAD,EAAMxB,GAAN,CAAT;EACD,CARD;EASA;EACA;EACA;;;EAGA,IAAIyB,OAAO,GAAG,SAASA,OAAT,CAAiBnW,CAAjB,EAAoB;EAChC,MAAIwR,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,MAAIrQ,MAAM,GAAG;EACXsL,IAAAA,MAAM,EAAE,IADG;EAEXgH,IAAAA,KAAK,EAAE,IAFI;EAGX/N,IAAAA,KAAK,EAAE;EAHI,GAAb;EAKA,MAAI+D,KAAK,GAAG+H,KAAK,CAAC4E,SAAN,CAAgB,UAAUnT,CAAV,EAAa;EACvC,WAAOA,CAAC,CAACyG,EAAF,KAAS1J,CAAC,CAAC4J,KAAlB;EACD,GAFW,CAAZ;;EAIA,MAAIH,KAAK,KAAK,CAAC,CAAf,EAAkB;EAChB,WAAOtI,MAAP;EACD,GAb+B;;;EAgBhC,MAAIyI,KAAK,GAAG4H,KAAK,CAAC6E,KAAN,CAAY,CAAZ,EAAe5M,KAAf,CAAZ;;EAEA,MAAIG,KAAK,CAAClL,MAAN,GAAe,CAAnB,EAAsB;EACpByC,IAAAA,MAAM,CAACsL,MAAP,GAAgB,KAAKwF,SAAL,CAAerI,KAAK,CAAC,CAAD,CAAL,CAASF,EAAxB,EAA4BE,KAAK,CAAClL,MAAlC,CAAhB;EACD;;EAED,MAAI+U,KAAK,GAAGjC,KAAK,CAAC6E,KAAN,CAAY5M,KAAZ,EAAmBA,KAAK,GAAGzJ,CAAC,CAACtB,MAA7B,CAAZ;;EAEA,MAAI+U,KAAK,CAAC/U,MAAN,GAAe,CAAnB,EAAsB;EACpByC,IAAAA,MAAM,CAACsS,KAAP,GAAe,KAAKxB,SAAL,CAAewB,KAAK,CAAC,CAAD,CAAL,CAAS/J,EAAxB,EAA4B+J,KAAK,CAAC/U,MAAlC,CAAf;EACD;;EAED,MAAImL,GAAG,GAAG2H,KAAK,CAAC6E,KAAN,CAAY5M,KAAK,GAAGzJ,CAAC,CAACtB,MAAtB,EAA8B8S,KAAK,CAAC9S,MAApC,CAAV;;EAEA,MAAImL,GAAG,CAACnL,MAAJ,GAAa,CAAjB,EAAoB;EAClByC,IAAAA,MAAM,CAACuE,KAAP,GAAe,KAAKuM,SAAL,CAAepI,GAAG,CAAC,CAAD,CAAH,CAAOH,EAAtB,EAA0BG,GAAG,CAACnL,MAA9B,EAAsC,KAAKgT,IAA3C,CAAf;EACD;;EAED,SAAOvQ,MAAP;EACD,CAnCD;;EAqCA,IAAImV,SAAS,GAAG;EACdtB,EAAAA,MAAM,EAAEa,QADM;EAEdP,EAAAA,OAAO,EAAEQ,SAFK;EAGd,YAAUC,OAHI;EAIdpR,EAAAA,OAAO,EAAEqR,SAJK;EAKdG,EAAAA,OAAO,EAAEA;EALK,CAAhB;EAQA;;EACA,IAAI/H,IAAI,GAAG,SAASA,IAAT,GAAgB;EACzB,MAAI9B,OAAO,GAAGjL,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF;EACA,MAAI+J,KAAK,GAAG/J,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,GAAuB2C,SAAS,CAAC,CAAD,CAAhC,GAAsC2H,SAAlD;EACA,MAAIuN,GAAG,GAAG,EAAV,CAHyB;;EAKzB,MAAIjK,OAAO,CAAC3K,IAAZ,EAAkB;EAChB4U,IAAAA,GAAG,CAAC5U,IAAJ,GAAW,KAAKA,IAAL,EAAX;EACD;;EAED,MAAI2K,OAAO,CAACI,MAAZ,EAAoB;EAClB6J,IAAAA,GAAG,CAAC7J,MAAJ,GAAa,KAAK/K,IAAL,CAAU,QAAV,CAAb;EACD;;EAED,MAAI2K,OAAO,CAAC/H,KAAZ,EAAmB;EACjBgS,IAAAA,GAAG,CAAChS,KAAJ,GAAY,KAAK5C,IAAL,CAAU,OAAV,CAAZ;EACD;;EAED,MAAI2K,OAAO,CAACzH,OAAZ,EAAqB;EACnB0R,IAAAA,GAAG,CAAC1R,OAAJ,GAAc,KAAKlD,IAAL,CAAU,SAAV,CAAd;EACD;;EAED,MAAI2K,OAAO,CAACzE,QAAZ,EAAsB;EACpB0O,IAAAA,GAAG,CAAC1O,QAAJ,GAAe,KAAKlG,IAAL,CAAU,UAAV,CAAf;EACD;;EAED,MAAI2K,OAAO,CAACtC,IAAZ,EAAkB;EAChBuM,IAAAA,GAAG,CAACvM,IAAJ,GAAW,KAAKrI,IAAL,CAAU,MAAV,CAAX;EACD;;EAED,MAAI2K,OAAO,CAAC7H,IAAZ,EAAkB;EAChB,QAAI8R,GAAG,CAAC5U,IAAR,EAAc;EACZ4U,MAAAA,GAAG,CAAC5U,IAAJ,GAAW4U,GAAG,CAAC5U,IAAJ,CAAS8C,IAAT,EAAX;EACD;;EAED,QAAI8R,GAAG,CAAC7J,MAAR,EAAgB;EACd6J,MAAAA,GAAG,CAAC7J,MAAJ,GAAa6J,GAAG,CAAC7J,MAAJ,CAAWjI,IAAX,EAAb;EACD;;EAED,QAAI8R,GAAG,CAAC1R,OAAR,EAAiB;EACf0R,MAAAA,GAAG,CAAC1R,OAAJ,GAAc0R,GAAG,CAAC1R,OAAJ,CAAYJ,IAAZ,EAAd;EACD;EACF,GAzCwB;;;EA4CzB,MAAI6H,OAAO,CAACkF,KAAZ,EAAmB;EACjB,QAAIlF,OAAO,CAACkF,KAAR,KAAkB,IAAtB,EAA4B;EAC1BlF,MAAAA,OAAO,CAACkF,KAAR,GAAgB,EAAhB;EACD;;EAED+E,IAAAA,GAAG,CAAC/E,KAAJ,GAAY,KAAKA,KAAL,GAAaW,GAAb,CAAiB,UAAUlP,CAAV,EAAa;EACxC,aAAOA,CAAC,CAACmL,IAAF,CAAO9B,OAAO,CAACkF,KAAf,EAAsBpG,KAAtB,CAAP;EACD,KAFW,CAAZ;EAGD;;EAED,SAAOmL,GAAP;EACD,CAvDD;;EAyDA,IAAIC,OAAO,GAAG;EACZpI,EAAAA,IAAI,EAAEA;EADM,CAAd;EAIA;;EACA,IAAIqI,SAAS,GAAG,SAASA,SAAT,CAAmBC,IAAnB,EAAyB;EACvC;EACA,MAAI,CAACA,IAAL,EAAW;EACTA,IAAAA,IAAI,GAAG,IAAP;EACD;;EAED,MAAIhF,IAAI,GAAG,KAAKA,IAAhB,CANuC;;EAQvC,MAAIF,KAAK,GAAG,EAAZ;;EAEA,MAAImF,QAAQ,GAAG,SAASA,QAAT,CAAkBjN,EAAlB,EAAsB;EACnC,QAAIgE,IAAI,GAAGgE,IAAI,CAACC,GAAL,CAASjI,EAAT,CAAX;;EAEA,QAAI,CAACgE,IAAL,EAAW;EACT;EACD;;EAED8D,IAAAA,KAAK,CAACK,IAAN,CAAWnE,IAAX;;EAEA,QAAIA,IAAI,CAACyD,IAAT,EAAe;EACbwF,MAAAA,QAAQ,CAACjJ,IAAI,CAAC0D,IAAN,CAAR,CADa;EAEd;EACF,GAZD;;EAcA,MAAIwF,GAAG,GAAG,KAAKpF,KAAL,EAAV;EACA,MAAIY,QAAQ,GAAGwE,GAAG,CAACA,GAAG,CAAClY,MAAJ,GAAa,CAAd,CAAlB;EACAiY,EAAAA,QAAQ,CAACvE,QAAQ,CAAChB,IAAV,CAAR;;EAEA,MAAII,KAAK,CAAC9S,MAAN,KAAiB,CAArB,EAAwB;EACtB,WAAO,EAAP;EACD,GA9BsC;;;EAiCvC,MAAIsB,CAAC,GAAG,KAAKiS,SAAL,CAAeT,KAAK,CAAC,CAAD,CAAL,CAAS9H,EAAxB,EAA4B8H,KAAK,CAAC9S,MAAlC,CAAR;EACA,SAAOsB,CAAC,CAACyT,KAAF,CAAQiD,IAAR,CAAP;EACD,CAnCD;EAoCA;;;EAGA,IAAIG,UAAU,GAAG,SAASA,UAAT,CAAoBH,IAApB,EAA0B;EACzC;EACA,MAAI,CAACA,IAAL,EAAW;EACTA,IAAAA,IAAI,GAAG,IAAP;EACD;;EAED,MAAIhF,IAAI,GAAG,KAAKA,IAAhB,CANyC;;EAQzC,MAAIF,KAAK,GAAG,EAAZ;;EAEA,MAAIsF,SAAS,GAAG,SAASA,SAAT,CAAmBpN,EAAnB,EAAuB;EACrC,QAAIgE,IAAI,GAAGgE,IAAI,CAACC,GAAL,CAASjI,EAAT,CAAX;;EAEA,QAAI,CAACgE,IAAL,EAAW;EACT;EACD;;EAED8D,IAAAA,KAAK,CAACK,IAAN,CAAWnE,IAAX;;EAEA,QAAIA,IAAI,CAACyD,IAAT,EAAe;EACb2F,MAAAA,SAAS,CAACpJ,IAAI,CAACyD,IAAN,CAAT,CADa;EAEd;EACF,GAZD;;EAcA,MAAIzD,IAAI,GAAGgE,IAAI,CAACC,GAAL,CAAS,KAAK/H,KAAd,CAAX;EACAkN,EAAAA,SAAS,CAACpJ,IAAI,CAACyD,IAAN,CAAT;;EAEA,MAAIK,KAAK,CAAC9S,MAAN,KAAiB,CAArB,EAAwB;EACtB,WAAO,EAAP;EACD,GA7BwC;;;EAgCzC,MAAIsB,CAAC,GAAG,KAAKiS,SAAL,CAAeT,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAAL,CAAwBgL,EAAvC,EAA2C8H,KAAK,CAAC9S,MAAjD,CAAR;EACA,SAAOsB,CAAC,CAACyT,KAAF,CAAQiD,IAAR,CAAP;EACD,CAlCD;;EAoCA,IAAIK,YAAY,GAAG;EACjBN,EAAAA,SAAS,EAAEA,SADM;EAEjBI,EAAAA,UAAU,EAAEA;EAFK,CAAnB;EAKA,IAAIG,SAAS,GAAGjY,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkByE,UAAlB,EAA8BO,OAA9B,EAAuCC,SAAvC,EAAkDgD,SAAlD,EAA6DE,OAA7D,EAAsEO,YAAtE,CAAhB;;EAGA,IAAIE,UAAU,GAAG,SAASC,QAAT,CAAkBlX,CAAlB,EAAqB0W,IAArB,EAA2B;EAC1C,MAAIA,IAAI,CAAChY,MAAL,KAAgB,CAApB,EAAuB;EACrB,WAAO,IAAP;EACD;;EAED,OAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiY,IAAI,CAAChY,MAAzB,EAAiCD,CAAC,IAAI,CAAtC,EAAyC;EACvC,QAAI+K,GAAG,GAAGkN,IAAI,CAACjY,CAAD,CAAd,CADuC;;EAGvC,QAAI+K,GAAG,CAAC2N,QAAJ,KAAiB,IAAjB,IAAyB3N,GAAG,CAACoB,QAAJ,KAAiB,IAA9C,EAAoD;EAClD;EACA,UAAIpB,GAAG,CAACI,KAAJ,KAAc,IAAd,IAAsBnL,CAAC,GAAG,CAA9B,EAAiC;EAC/B,eAAO,IAAP;EACD;EACF,KARsC;;;EAWvC,QAAI+K,GAAG,CAACG,QAAJ,KAAiB,IAAjB,IAAyBH,GAAG,CAACoB,QAAJ,KAAiB,IAA9C,EAAoD;EAClD,aAAO,IAAP;EACD;EACF;;EAED,SAAO,KAAP;EACD,CAtBD;;EAwBA,IAAIwM,WAAW,GAAGH,UAAlB;;EAEA,IAAII,WAAW,GAAGtR,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EAChE;EACAA,EAAAA,OAAO,CAACoR,SAAR,GAAoB,UAAUC,KAAV,EAAiBC,MAAjB,EAAyB;EAC3C;EACA;EACA;EACA;EACA,QAAIhO,GAAG,GAAGzK,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBkJ,KAAK,CAACb,IAAN,CAAWa,KAAK,CAACxU,CAAjB,CAAlB,EAAuC;EAC/C6G,MAAAA,KAAK,EAAE,KADwC;EAE/CC,MAAAA,GAAG,EAAE;EAF0C,KAAvC,CAAV;EAIA,QAAID,KAAK,GAAG2N,KAAK,CAACtU,CAAlB;;EAEA,WAAOsU,KAAK,CAACtU,CAAN,GAAUsU,KAAK,CAAC/F,KAAN,CAAY9S,MAA7B,EAAqC6Y,KAAK,CAACtU,CAAN,IAAW,CAAhD,EAAmD;EACjD;EACA,UAAIuU,MAAM,IAAID,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAlB,EAAqBsG,SAArB,CAA+BiO,MAA/B,EAAuCD,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAA7D,EAAgEsU,KAAK,CAACG,aAAtE,CAAd,EAAoG;EAClG,eAAOH,KAAK,CAACtU,CAAb;EACD;;EAED,UAAI0U,KAAK,GAAGJ,KAAK,CAACtU,CAAN,GAAU2G,KAAV,GAAkB,CAA9B,CANiD;;EAQjD,UAAIJ,GAAG,CAACN,GAAJ,KAAYF,SAAZ,IAAyB2O,KAAK,KAAKnO,GAAG,CAACN,GAA3C,EAAgD;EAC9C,eAAOqO,KAAK,CAACtU,CAAb;EACD,OAVgD;;;EAajD,UAAIsU,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAlB,EAAqBsG,SAArB,CAA+BC,GAA/B,EAAoC+N,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAA1D,EAA6DsU,KAAK,CAACG,aAAnE,MAAsF,KAA1F,EAAiG;EAC/F;EACA,YAAIlO,GAAG,CAACb,GAAJ,KAAYK,SAAZ,IAAyB2O,KAAK,GAAGnO,GAAG,CAACb,GAAzC,EAA8C;EAC5C,iBAAO,IAAP;EACD;;EAED,eAAO4O,KAAK,CAACtU,CAAb;EACD;EACF;;EAED,WAAOsU,KAAK,CAACtU,CAAb;EACD,GAnCD,CAFgE;;;EAwChEiD,EAAAA,OAAO,CAAC0R,QAAR,GAAmB,UAAUL,KAAV,EAAiBM,OAAjB,EAA0B;EAC3C,QAAI5U,CAAC,GAAGsU,KAAK,CAACtU,CAAd,CAD2C;;EAG3C,QAAI,CAAC4U,OAAL,EAAc;EACZ,aAAON,KAAK,CAAC/F,KAAN,CAAY9S,MAAnB;EACD,KAL0C;;;EAQ3C,WAAOuE,CAAC,GAAGsU,KAAK,CAAC/F,KAAN,CAAY9S,MAAvB,EAA+BuE,CAAC,IAAI,CAApC,EAAuC;EACrC,UAAIsU,KAAK,CAAC/F,KAAN,CAAYvO,CAAZ,EAAesG,SAAf,CAAyBsO,OAAzB,EAAkCN,KAAK,CAACE,OAAN,GAAgBxU,CAAlD,EAAqDsU,KAAK,CAACG,aAA3D,MAA8E,IAAlF,EAAwF;EACtF,eAAOzU,CAAP;EACD;EACF,KAZ0C;;;EAe3C,WAAO,IAAP;EACD,GAhBD,CAxCgE;EAyDhE;EACA;EACA;;;EAGAiD,EAAAA,OAAO,CAAC4R,WAAR,GAAsB,UAAUtO,GAAV,EAAe+N,KAAf,EAAsB;EAC1C,QAAI/N,GAAG,CAACK,GAAJ,KAAY,IAAZ,IAAoBL,GAAG,CAACuO,MAAJ,KAAe,IAAvC,EAA6C;EAC3C,UAAIR,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAAtB,GAA0BsU,KAAK,CAACG,aAAN,GAAsB,CAApD,EAAuD;EACrD,YAAIM,MAAM,GAAGjZ,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkB7E,GAAlB,EAAuB;EAClCK,UAAAA,GAAG,EAAE;EAD6B,SAAvB,CAAb;;EAIA,YAAI0N,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAlB,EAAqBsG,SAArB,CAA+ByO,MAA/B,EAAuCT,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAA7D,EAAgEsU,KAAK,CAACG,aAAtE,MAAyF,IAA7F,EAAmG;EACjG,iBAAO,IAAP;EACD;EACF;EACF;;EAED,WAAO,KAAP;EACD,GAdD,CA9DgE;;;EA+EhExR,EAAAA,OAAO,CAAC+R,SAAR,GAAoB,UAAUV,KAAV,EAAiB;EACnC,QAAIW,KAAK,GAAG7W,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,CAAhF;EACA,QAAI8W,KAAK,GAAGZ,KAAK,CAACb,IAAN,CAAWa,KAAK,CAACxU,CAAjB,CAAZ;EACA,QAAIqV,QAAQ,GAAG,KAAf,CAHmC;;EAKnC,SAAK,IAAIjW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgW,KAAK,CAAC3N,OAAN,CAAc9L,MAAlC,EAA0CyD,CAAC,IAAI,CAA/C,EAAkD;EAChD;EACA,UAAIuU,IAAI,GAAGyB,KAAK,CAAC3N,OAAN,CAAcrI,CAAd,CAAX;EACAiW,MAAAA,QAAQ,GAAG1B,IAAI,CAAChM,KAAL,CAAW,UAAU2N,EAAV,EAAcC,OAAd,EAAuB;EAC3C,YAAIC,KAAK,GAAG,CAAZ;EACA,YAAItV,CAAC,GAAGsU,KAAK,CAACtU,CAAN,GAAUqV,OAAV,GAAoBJ,KAApB,GAA4BK,KAApC;;EAEA,YAAIhB,KAAK,CAAC/F,KAAN,CAAYvO,CAAZ,MAAmB+F,SAAvB,EAAkC;EAChC,iBAAO,KAAP;EACD;;EAED,YAAIwP,UAAU,GAAGjB,KAAK,CAAC/F,KAAN,CAAYvO,CAAZ,EAAesG,SAAf,CAAyB8O,EAAzB,EAA6BpV,CAAC,GAAGsU,KAAK,CAACE,OAAvC,EAAgDF,KAAK,CAACG,aAAtD,CAAjB,CAR2C;;EAU3C,YAAIc,UAAU,KAAK,IAAf,IAAuBH,EAAE,CAACN,MAAH,KAAc,IAAzC,EAA+C;EAC7C,eAAK,IAAItZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8Y,KAAK,CAAC/F,KAAN,CAAY9S,MAAhC,EAAwCD,CAAC,IAAI,CAA7C,EAAgD;EAC9C,gBAAIiP,IAAI,GAAG6J,KAAK,CAAC/F,KAAN,CAAYvO,CAAC,GAAGxE,CAAhB,CAAX;;EAEA,gBAAIiP,IAAJ,EAAU;EACR,kBAAI+K,SAAS,GAAG/K,IAAI,CAACnE,SAAL,CAAe8O,EAAf,EAAmBd,KAAK,CAACE,OAAN,GAAgBhZ,CAAnC,EAAsC8Y,KAAK,CAACG,aAA5C,CAAhB;;EAEA,kBAAIe,SAAS,KAAK,IAAlB,EAAwB;EACtBF,gBAAAA,KAAK,IAAI,CAAT;EACD,eAFD,MAEO;EACL;EACD;EACF;EACF;EACF;;EAEDL,QAAAA,KAAK,IAAIK,KAAT;EACA,eAAOC,UAAP;EACD,OA5BU,CAAX;;EA8BA,UAAIJ,QAAJ,EAAc;EACZF,QAAAA,KAAK,IAAIxB,IAAI,CAAChY,MAAd;EACA;EACD;EACF,KA1CkC;;;EA6CnC,QAAI0Z,QAAQ,IAAID,KAAK,CAACJ,MAAN,KAAiB,IAAjC,EAAuC;EACrC,aAAO7R,OAAO,CAAC+R,SAAR,CAAkBV,KAAlB,EAAyBW,KAAzB,CAAP,CADqC;EAEtC;;EAED,WAAOA,KAAP;EACD,GAlDD,CA/EgE;;;EAoIhEhS,EAAAA,OAAO,CAACwS,UAAR,GAAqB,UAAUnB,KAAV,EAAiB;EACpC,QAAIoB,OAAO,GAAG,CAAd,CADoC;;EAGpC,QAAInP,GAAG,GAAG+N,KAAK,CAACb,IAAN,CAAWa,KAAK,CAACxU,CAAjB,CAAV;EACA,QAAI6V,WAAW,GAAGpP,GAAG,CAACgB,OAAJ,CAAYE,KAAZ,CAAkB,UAAUyN,KAAV,EAAiB;EACnD;EACA,UAAIU,QAAQ,GAAGV,KAAK,CAACzN,KAAN,CAAY,UAAU2N,EAAV,EAAcC,OAAd,EAAuB;EAChD,YAAIQ,OAAO,GAAGvB,KAAK,CAACtU,CAAN,GAAUqV,OAAxB;;EAEA,YAAIf,KAAK,CAAC/F,KAAN,CAAYsH,OAAZ,MAAyB9P,SAA7B,EAAwC;EACtC,iBAAO,KAAP;EACD;;EAED,eAAOuO,KAAK,CAAC/F,KAAN,CAAYsH,OAAZ,EAAqBvP,SAArB,CAA+B8O,EAA/B,EAAmCS,OAAnC,EAA4CvB,KAAK,CAACG,aAAlD,CAAP;EACD,OARc,CAAf;;EAUA,UAAImB,QAAQ,KAAK,IAAb,IAAqBV,KAAK,CAACzZ,MAAN,GAAeia,OAAxC,EAAiD;EAC/CA,QAAAA,OAAO,GAAGR,KAAK,CAACzZ,MAAhB;EACD;;EAED,aAAOma,QAAP;EACD,KAjBiB,CAAlB;;EAmBA,QAAID,WAAW,KAAK,IAApB,EAA0B;EACxB,aAAOD,OAAP;EACD;;EAED,WAAO,KAAP;EACD,GA5BD,CApIgE;;;EAmKhEzS,EAAAA,OAAO,CAAC6S,QAAR,GAAmB,UAAUxB,KAAV,EAAiByB,UAAjB,EAA6BC,IAA7B,EAAmC;EACpD,QAAI1B,KAAK,CAAC2B,MAAN,CAAa3B,KAAK,CAAC4B,OAAnB,CAAJ,EAAiC;EAC/B,aAAO5B,KAAK,CAAC2B,MAAN,CAAa3B,KAAK,CAAC4B,OAAnB,CAAP;EACD;;EAED,QAAIC,MAAM,GAAG7B,KAAK,CAAC/F,KAAN,CAAYwH,UAAZ,EAAwBtP,EAArC;EACA6N,IAAAA,KAAK,CAAC2B,MAAN,CAAa3B,KAAK,CAAC4B,OAAnB,IAA8B;EAC5BE,MAAAA,KAAK,EAAEnI,MAAM,CAAC+H,IAAD,CADe;EAE5BrP,MAAAA,KAAK,EAAEwP,MAFqB;EAG5B1a,MAAAA,MAAM,EAAE;EAHoB,KAA9B;EAKA,WAAO6Y,KAAK,CAAC2B,MAAN,CAAa3B,KAAK,CAAC4B,OAAnB,CAAP;EACD,GAZD;EAaD,CAhLqC,CAAtC;EAkLA;;;EAEA,IAAIG,OAAO,GAAG,SAASA,OAAT,CAAiB9H,KAAjB,EAAwBkF,IAAxB,EAA8Be,OAA9B,EAAuCC,aAAvC,EAAsD;EAClE;EACA,MAAIH,KAAK,GAAG;EACVtU,IAAAA,CAAC,EAAE,CADO;EAEV;EACAuO,IAAAA,KAAK,EAAEA,KAHG;EAIV;EACAzO,IAAAA,CAAC,EAAE,CALO;EAMV;EACA2T,IAAAA,IAAI,EAAEA,IAPI;EAQV;EACAwC,IAAAA,MAAM,EAAE,EATE;EAUV;EACAzB,IAAAA,OAAO,EAAEA,OAXC;EAYV;EACAC,IAAAA,aAAa,EAAEA,aAbL;EAcV;EACA6B,IAAAA,QAAQ,EAAE,KAfA;EAgBVJ,IAAAA,OAAO,EAAE,IAhBC;EAiBVK,IAAAA,aAAa,EAAE;EAjBL,GAAZ,CAFkE;;EAsBlE,SAAOjC,KAAK,CAACxU,CAAN,GAAU2T,IAAI,CAAChY,MAAtB,EAA8B6Y,KAAK,CAACxU,CAAN,IAAW,CAAzC,EAA4C;EAC1C,QAAIyG,GAAG,GAAGkN,IAAI,CAACa,KAAK,CAACxU,CAAP,CAAd,CAD0C;;EAG1CwU,IAAAA,KAAK,CAACgC,QAAN,GAAiB,OAAO/P,GAAG,CAACiQ,KAAX,KAAqB,QAArB,IAAiC,OAAOjQ,GAAG,CAACiQ,KAAX,KAAqB,QAAvE,CAH0C;;EAK1C,QAAIlC,KAAK,CAACgC,QAAN,KAAmB,IAAvB,EAA6B;EAC3B,UAAIpI,IAAI,GAAGuF,IAAI,CAACa,KAAK,CAACxU,CAAN,GAAU,CAAX,CAAf;;EAEA,UAAIoO,IAAI,IAAIA,IAAI,CAACsI,KAAL,KAAejQ,GAAG,CAACiQ,KAA3B,IAAoClC,KAAK,CAACiC,aAA9C,EAA6D;EAC3DjC,QAAAA,KAAK,CAAC4B,OAAN,GAAgB5B,KAAK,CAACiC,aAAtB;EACD,OAFD,MAEO;EACLjC,QAAAA,KAAK,CAAC4B,OAAN,GAAgBpX,GAAG,CAACyH,GAAG,CAACiQ,KAAL,CAAnB;EACAlC,QAAAA,KAAK,CAACiC,aAAN,GAAsBjC,KAAK,CAAC4B,OAA5B;EACD;EACF,KAdyC;;;EAiB1C,QAAI,CAAC5B,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAlB,CAAL,EAA2B;EACzB;EACA,UAAIyW,SAAS,GAAGhD,IAAI,CAACL,KAAL,CAAWkB,KAAK,CAACxU,CAAjB,EAAoB4H,IAApB,CAAyB,UAAUgP,MAAV,EAAkB;EACzD,eAAO,CAACA,MAAM,CAACxC,QAAf;EACD,OAFe,CAAhB;;EAIA,UAAIuC,SAAS,KAAK,KAAlB,EAAyB;EACvB,cADuB;EAExB;;EAED,aAAO,IAAP,CAVyB;EAW1B,KA5ByC;;;EA+B1C,QAAIlQ,GAAG,CAACG,QAAJ,KAAiB,IAAjB,IAAyBH,GAAG,CAACuO,MAAJ,KAAe,IAA5C,EAAkD;EAChD,UAAI6B,MAAM,GAAGvC,WAAW,CAACO,QAAZ,CAAqBL,KAArB,EAA4Bb,IAAI,CAACa,KAAK,CAACxU,CAAN,GAAU,CAAX,CAAhC,CAAb,CADgD;;;EAGhD,UAAIyG,GAAG,CAACb,GAAJ,KAAYK,SAAZ,IAAyB4Q,MAAM,GAAGrC,KAAK,CAACtU,CAAf,GAAmBuG,GAAG,CAACb,GAApD,EAAyD;EACvD,eAAO,IAAP;EACD,OAL+C;;;EAQhD,UAAIa,GAAG,CAACN,GAAJ,KAAYF,SAAZ,IAAyB4Q,MAAM,GAAGrC,KAAK,CAACtU,CAAf,GAAmBuG,GAAG,CAACN,GAApD,EAAyD;EACvDqO,QAAAA,KAAK,CAACtU,CAAN,GAAUsU,KAAK,CAACtU,CAAN,GAAUuG,GAAG,CAACN,GAAxB;EACA;EACD;;EAED,UAAI0Q,MAAM,KAAK,IAAf,EAAqB;EACnB,eAAO,IAAP,CADmB;EAEpB,OAf+C;;;EAkBhD,UAAIrC,KAAK,CAACgC,QAAN,KAAmB,IAAvB,EAA6B;EAC3B,YAAIjX,CAAC,GAAG+U,WAAW,CAAC0B,QAAZ,CAAqBxB,KAArB,EAA4BA,KAAK,CAACtU,CAAlC,EAAqCuG,GAAG,CAACiQ,KAAzC,CAAR;;EACAnX,QAAAA,CAAC,CAAC5D,MAAF,GAAWkb,MAAM,GAAGrC,KAAK,CAACtU,CAA1B;EACD;;EAEDsU,MAAAA,KAAK,CAACtU,CAAN,GAAU2W,MAAV;EACA;EACD,KAxDyC;;;EA2D1C,QAAIpQ,GAAG,CAACgB,OAAJ,KAAgBxB,SAAhB,IAA6BQ,GAAG,CAACiB,QAAJ,KAAiB,IAAlD,EAAwD;EACtD,UAAIoP,OAAO,GAAGxC,WAAW,CAACY,SAAZ,CAAsBV,KAAtB,CAAd;;EAEA,UAAIsC,OAAJ,EAAa;EACX;EACA,YAAIrQ,GAAG,CAACoB,QAAJ,KAAiB,IAArB,EAA2B;EACzB,iBAAO,IAAP,CADyB;EAE1B;;EAED,YAAI2M,KAAK,CAACgC,QAAN,KAAmB,IAAvB,EAA6B;EAC3B,cAAIO,EAAE,GAAGzC,WAAW,CAAC0B,QAAZ,CAAqBxB,KAArB,EAA4BA,KAAK,CAACtU,CAAlC,EAAqCuG,GAAG,CAACiQ,KAAzC,CAAT;;EAEAK,UAAAA,EAAE,CAACpb,MAAH,IAAamb,OAAb;EACD;;EAEDtC,QAAAA,KAAK,CAACtU,CAAN,IAAW4W,OAAX;EACA;EACD,OAdD,MAcO,IAAI,CAACrQ,GAAG,CAAC2N,QAAT,EAAmB;EACxB,eAAO,IAAP,CADwB;EAEzB;EACF,KA/EyC;;;EAkF1C,QAAI3N,GAAG,CAACgB,OAAJ,KAAgBxB,SAAhB,IAA6BQ,GAAG,CAACiB,QAAJ,KAAiB,KAAlD,EAAyD;EACvD,UAAIsP,QAAQ,GAAG1C,WAAW,CAACqB,UAAZ,CAAuBnB,KAAvB,CAAf;;EAEA,UAAIwC,QAAJ,EAAc;EACZ;EACA,YAAIvQ,GAAG,CAACoB,QAAJ,KAAiB,IAArB,EAA2B;EACzB,iBAAO,IAAP,CADyB;EAE1B;;EAED,YAAI2M,KAAK,CAACgC,QAAN,KAAmB,IAAvB,EAA6B;EAC3B,cAAIS,GAAG,GAAG3C,WAAW,CAAC0B,QAAZ,CAAqBxB,KAArB,EAA4BA,KAAK,CAACtU,CAAlC,EAAqCuG,GAAG,CAACiQ,KAAzC,CAAV;;EAEAO,UAAAA,GAAG,CAACtb,MAAJ,IAAcqb,QAAd;EACD;;EAEDxC,QAAAA,KAAK,CAACtU,CAAN,IAAW8W,QAAX;EACA;EACD,OAdD,MAcO,IAAI,CAACvQ,GAAG,CAAC2N,QAAT,EAAmB;EACxB,eAAO,IAAP,CADwB;EAEzB;EACF,KAtGyC;;;EAyG1C,QAAIzJ,IAAI,GAAG6J,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAlB,CAAX;EACA,QAAIsG,SAAS,GAAGmE,IAAI,CAACnE,SAAL,CAAeC,GAAf,EAAoB+N,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAA1C,EAA6CsU,KAAK,CAACG,aAAnD,CAAhB;;EAEA,QAAIlO,GAAG,CAACG,QAAJ,KAAiB,IAAjB,IAAyBJ,SAAS,KAAK,IAAvC,IAA+C8N,WAAW,CAACS,WAAZ,CAAwBtO,GAAxB,EAA6B+N,KAA7B,CAAnD,EAAwF;EACtF,UAAI0C,OAAO,GAAG1C,KAAK,CAACtU,CAApB,CADsF;;EAGtF,UAAIuG,GAAG,CAAC2N,QAAJ,IAAgBT,IAAI,CAACa,KAAK,CAACxU,CAAN,GAAU,CAAX,CAApB,IAAqCyG,GAAG,CAACoB,QAA7C,EAAuD;EACrD;EACD,OALqF;EAMtF;;;EAGA,UAAIpB,GAAG,CAAC2N,QAAJ,IAAgBT,IAAI,CAACa,KAAK,CAACxU,CAAN,GAAU,CAAX,CAAxB,EAAuC;EACrC;EACA,YAAImX,cAAc,GAAGxM,IAAI,CAACnE,SAAL,CAAemN,IAAI,CAACa,KAAK,CAACxU,CAAN,GAAU,CAAX,CAAnB,EAAkCwU,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAAxD,EAA2DsU,KAAK,CAACG,aAAjE,CAArB;;EAEA,YAAIlO,GAAG,CAACoB,QAAJ,IAAgBsP,cAApB,EAAoC;EAClC;EACA;EACA,cAAIC,QAAQ,GAAG5C,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAN,GAAU,CAAtB,CAAf;;EAEA,cAAI,CAACkX,QAAD,IAAa,CAACA,QAAQ,CAAC5Q,SAAT,CAAmBmN,IAAI,CAACa,KAAK,CAACxU,CAAN,GAAU,CAAX,CAAvB,EAAsCwU,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAA5D,EAA+DsU,KAAK,CAACG,aAArE,CAAlB,EAAuG;EACrGH,YAAAA,KAAK,CAACxU,CAAN,IAAW,CAAX;EACD;EACF;EACF,OAtBqF;;;EAyBtFwU,MAAAA,KAAK,CAACtU,CAAN,IAAW,CAAX,CAzBsF;;EA2BtF,UAAIuG,GAAG,CAACK,GAAJ,KAAY,IAAhB,EAAsB;EACpB;EACA,YAAI0N,KAAK,CAACtU,CAAN,KAAYsU,KAAK,CAAC/F,KAAN,CAAY9S,MAAxB,IAAkC8K,GAAG,CAACuO,MAAJ,KAAe,IAArD,EAA2D;EACzD,iBAAO,IAAP,CADyD;EAE1D;EACF,OAhCqF;;;EAmCtF,UAAIvO,GAAG,CAACuO,MAAJ,KAAe,IAAnB,EAAyB;EACvBR,QAAAA,KAAK,CAACtU,CAAN,GAAUoU,WAAW,CAACC,SAAZ,CAAsBC,KAAtB,EAA6Bb,IAAI,CAACa,KAAK,CAACxU,CAAN,GAAU,CAAX,CAAjC,CAAV;;EAEA,YAAIwU,KAAK,CAACtU,CAAN,KAAY,IAAhB,EAAsB;EACpB,iBAAO,IAAP,CADoB;EAErB;;EAED,YAAIuG,GAAG,CAACb,GAAJ,IAAWa,GAAG,CAACb,GAAJ,GAAU4O,KAAK,CAACtU,CAA/B,EAAkC;EAChC,iBAAO,IAAP,CADgC;EAEjC,SATsB;EAUvB;;;EAGA,YAAIuG,GAAG,CAACK,GAAJ,KAAY,IAAZ,IAAoB0N,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAAtB,KAA4ByU,aAApD,EAAmE;EACjE,iBAAO,IAAP,CADiE;EAElE;EACF;;EAED,UAAIH,KAAK,CAACgC,QAAN,KAAmB,IAAvB,EAA6B;EAC3B;EACA,YAAIa,GAAG,GAAG/C,WAAW,CAAC0B,QAAZ,CAAqBxB,KAArB,EAA4B0C,OAA5B,EAAqCzQ,GAAG,CAACiQ,KAAzC,CAAV,CAF2B;;;EAK3B,YAAIlC,KAAK,CAACtU,CAAN,GAAU,CAAV,IAAeuG,GAAG,CAACuO,MAAvB,EAA+B;EAC7BqC,UAAAA,GAAG,CAAC1b,MAAJ,IAAc6Y,KAAK,CAACtU,CAAN,GAAUgX,OAAxB;EACD,SAFD,MAEO;EACLG,UAAAA,GAAG,CAAC1b,MAAJ;EACD;EACF;;EAED;EACD,KA9KyC;EA+K1C;;;EAGA,QAAI8K,GAAG,CAACoB,QAAR,EAAkB;EAChB,UAAIoN,MAAM,GAAGjZ,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkB7E,GAAlB,CAAb;EACAwO,MAAAA,MAAM,CAACpN,QAAP,GAAkB,KAAlB,CAFgB;;EAIhB,UAAIyP,QAAQ,GAAG9C,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAlB,EAAqBsG,SAArB,CAA+ByO,MAA/B,EAAuCT,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAA7D,EAAgEsU,KAAK,CAACG,aAAtE,CAAf;;EAEA,UAAI2C,QAAQ,KAAK,IAAjB,EAAuB;EACrB,eAAO,IAAP,CADqB;EAEtB;EACF,KA3LyC;;;EA8L1C,QAAI7Q,GAAG,CAAC2N,QAAJ,KAAiB,IAArB,EAA2B;EACzB;EACD,KAhMyC;;;EAmM1C,QAAII,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAlB,EAAqBgI,UAArB,MAAqCyL,IAAI,CAACa,KAAK,CAACxU,CAAN,GAAU,CAAX,CAAzC,IAA0DwU,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAN,GAAU,CAAtB,CAA9D,EAAwF;EACtF;EACA,UAAIsU,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAN,GAAU,CAAtB,KAA4BsU,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAN,GAAU,CAAtB,EAAyB4E,QAAzB,KAAsC6O,IAAI,CAACa,KAAK,CAACxU,CAAN,GAAU,CAAX,CAAJ,CAAkB6C,IAAxF,EAA8F;EAC5F,eAAO,IAAP;EACD,OAJqF;;;EAOtF,UAAI2R,KAAK,CAAC/F,KAAN,CAAY+F,KAAK,CAACtU,CAAN,GAAU,CAAtB,EAAyBsG,SAAzB,CAAmCC,GAAnC,EAAwC+N,KAAK,CAACE,OAAN,GAAgBF,KAAK,CAACtU,CAA9D,EAAiEsU,KAAK,CAACG,aAAvE,CAAJ,EAA2F;EACzFH,QAAAA,KAAK,CAACtU,CAAN,IAAW,CAAX;EACA;EACD;EACF;;EAED,WAAO,IAAP,CAhN0C;EAiN3C,GAvOiE;;;EA0OlE,SAAO;EACLwQ,IAAAA,KAAK,EAAE8D,KAAK,CAAC/F,KAAN,CAAY6E,KAAZ,CAAkB,CAAlB,EAAqBkB,KAAK,CAACtU,CAA3B,CADF;EAELiW,IAAAA,MAAM,EAAE3B,KAAK,CAAC2B;EAFT,GAAP;EAID,CA9OD;;EAgPA,IAAIoB,WAAW,GAAGhB,OAAlB;;EAGA,IAAIiB,aAAa,GAAG,SAASC,WAAT,CAAqBhJ,KAArB,EAA4BkF,IAA5B,EAAkC+D,OAAlC,EAA2C;EAC7D,MAAI,CAACA,OAAD,IAAYA,OAAO,CAAC/b,MAAR,KAAmB,CAAnC,EAAsC;EACpC,WAAO+b,OAAP;EACD,GAH4D;;;EAM7D,MAAIC,KAAK,GAAGhE,IAAI,CAAC/L,IAAL,CAAU,UAAU5H,CAAV,EAAa;EACjC,WAAOA,CAAC,CAAC8G,GAAT;EACD,GAFW,CAAZ;;EAIA,MAAI6Q,KAAJ,EAAW;EACT,QAAItI,QAAQ,GAAGZ,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAApB;EACA+b,IAAAA,OAAO,GAAGA,OAAO,CAAC9H,MAAR,CAAe,UAAUgI,IAAV,EAAgB;EACvC,UAAItL,GAAG,GAAGsL,IAAI,CAAClH,KAAf;EACA,aAAOpE,GAAG,CAACtI,OAAJ,CAAYqL,QAAZ,MAA0B,CAAC,CAAlC;EACD,KAHS,CAAV;EAID;;EAED,SAAOqI,OAAP;EACD,CAnBD;;EAqBA,IAAIG,cAAc,GAAGL,aAArB;EAGA;EACA;EACA;EACA;EACA;;EACA,IAAIM,SAAS,GAAG,qEAAhB;;EAEA,IAAIC,aAAa,GAAG,gEAApB;;EAEA,IAAIC,MAAM,GAAG,IAAb;;EAEA,IAAIC,OAAO,GAAG,SAASA,OAAT,CAAiBtZ,GAAjB,EAAsB;EAClC,SAAO,yBAAyB0C,IAAzB,CAA8B1C,GAA9B,KAAsC,oBAAoB0C,IAApB,CAAyB1C,GAAzB,CAA7C;EACD,CAFD;;EAIA,IAAIuZ,KAAK,GAAG,SAASA,KAAT,CAAevZ,GAAf,EAAoB;EAC9B,SAAO,yBAAyB0C,IAAzB,CAA8B1C,GAA9B,KAAsC,oBAAoB0C,IAApB,CAAyB1C,GAAzB,CAA7C;EACD,CAFD;;EAIA,IAAIwZ,SAAO,GAAG,SAASA,OAAT,CAAiB7L,GAAjB,EAAsB;EAClCA,EAAAA,GAAG,GAAGA,GAAG,CAAC8C,GAAJ,CAAQ,UAAUzQ,GAAV,EAAe;EAC3B,WAAOA,GAAG,CAAC+C,IAAJ,EAAP;EACD,GAFK,CAAN;EAGA4K,EAAAA,GAAG,GAAGA,GAAG,CAACsD,MAAJ,CAAW,UAAUjR,GAAV,EAAe;EAC9B,WAAOA,GAAP;EACD,GAFK,CAAN;EAGA,SAAO2N,GAAP;EACD,CARD;;EAUA,IAAI8L,WAAW,GAAG,SAASA,WAAT,CAAqB/H,GAArB,EAA0B;EAC1C;EACA,MAAI/D,GAAG,GAAG+D,GAAG,CAAC5R,KAAJ,CAAUqZ,SAAV,CAAV;EACA,MAAItE,GAAG,GAAG,EAAV,CAH0C;;EAK1ClH,EAAAA,GAAG,CAAC3L,OAAJ,CAAY,UAAUhC,GAAV,EAAe;EACzB,QAAIuZ,KAAK,CAACvZ,GAAD,CAAT,EAAgB;EACd6U,MAAAA,GAAG,CAAC1E,IAAJ,CAASnQ,GAAT;EACA;EACD;;EAED6U,IAAAA,GAAG,GAAGA,GAAG,CAAC9D,MAAJ,CAAW/Q,GAAG,CAACF,KAAJ,CAAUsZ,aAAV,CAAX,CAAN;EACD,GAPD;EAQAvE,EAAAA,GAAG,GAAG2E,SAAO,CAAC3E,GAAD,CAAb,CAb0C;;EAe1C,MAAI6E,MAAM,GAAG,EAAb;EACA7E,EAAAA,GAAG,CAAC7S,OAAJ,CAAY,UAAUhC,GAAV,EAAe;EACzB,QAAIsZ,OAAO,CAACtZ,GAAD,CAAX,EAAkB;EAChB0Z,MAAAA,MAAM,CAACvJ,IAAP,CAAYnQ,GAAZ;EACD,KAFD,MAEO,IAAIuZ,KAAK,CAACvZ,GAAD,CAAT,EAAgB;EACrB0Z,MAAAA,MAAM,CAACvJ,IAAP,CAAYnQ,GAAZ;EACD,KAFM,MAEA;EACL0Z,MAAAA,MAAM,GAAGA,MAAM,CAAC3I,MAAP,CAAc/Q,GAAG,CAACF,KAAJ,CAAUuZ,MAAV,CAAd,CAAT;EACD;EACF,GARD;EASAK,EAAAA,MAAM,GAAGF,SAAO,CAACE,MAAD,CAAhB;EACA,SAAOA,MAAP;EACD,CA3BD;;EA6BA,IAAIC,cAAc,GAAGF,WAArB;;EAEA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;;EACA,IAAIG,SAAS,GAAG,sBAAhB;EACA,IAAIC,OAAO,GAAG,IAAd;EACA,IAAIC,WAAW,GAAG,IAAIC,MAAJ,CAAW,kBAAX,CAAlB;;EAEA,IAAIC,WAAW,GAAG,SAAStV,SAAT,CAAmB1E,GAAnB,EAAwB;EACxC,SAAOA,GAAG,CAAC6N,MAAJ,CAAW,CAAX,EAAcjJ,WAAd,KAA8B5E,GAAG,CAAC8N,MAAJ,CAAW,CAAX,CAArC;EACD,CAFD;;EAIA,IAAI3F,GAAG,GAAG,SAASA,GAAT,CAAanI,GAAb,EAAkB;EAC1B,SAAOA,GAAG,CAACA,GAAG,CAAChD,MAAJ,GAAa,CAAd,CAAV;EACD,CAFD;;EAIA,IAAIkL,KAAK,GAAG,SAASA,KAAT,CAAelI,GAAf,EAAoB;EAC9B,SAAOA,GAAG,CAAC,CAAD,CAAV;EACD,CAFD;;EAIA,IAAIia,UAAU,GAAG,SAASA,UAAT,CAAoBja,GAApB,EAAyB;EACxC,SAAOA,GAAG,CAAC8N,MAAJ,CAAW,CAAX,CAAP;EACD,CAFD;;EAIA,IAAIoM,QAAQ,GAAG,SAASA,QAAT,CAAkBla,GAAlB,EAAuB;EACpC,SAAOA,GAAG,CAAC8N,MAAJ,CAAW,CAAX,EAAc9N,GAAG,CAAChD,MAAJ,GAAa,CAA3B,CAAP;EACD,CAFD;;EAIA,IAAImd,SAAS,GAAG,SAASA,SAAT,CAAmBna,GAAnB,EAAwB;EACtCA,EAAAA,GAAG,GAAGia,UAAU,CAACja,GAAD,CAAhB;EACAA,EAAAA,GAAG,GAAGka,QAAQ,CAACla,GAAD,CAAd;EACA,SAAOA,GAAP;EACD,CAJD;;;EAOA,IAAIoa,UAAU,GAAG,SAASA,UAAT,CAAoB1Y,CAApB,EAAuB;EACtC,MAAIvF,GAAG,GAAG,EAAV,CADsC;;EAGtC,OAAK,IAAIY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,IAAI,CAA5B,EAA+B;EAC7B;EACA,QAAIoL,GAAG,CAACzG,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBvF,MAAAA,GAAG,CAACgM,GAAJ,GAAU,IAAV;EACAzG,MAAAA,CAAC,GAAGwY,QAAQ,CAACxY,CAAD,CAAZ;EACD,KAL4B;;;EAQ7B,QAAIwG,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpBvF,MAAAA,GAAG,CAAC+L,KAAJ,GAAY,IAAZ;EACAxG,MAAAA,CAAC,GAAGuY,UAAU,CAACvY,CAAD,CAAd;EACD,KAX4B;;;EAc7B,QAAIwG,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAb,IAAoByG,GAAG,CAACzG,CAAD,CAAH,KAAW,GAAnC,EAAwC;EACtCvF,MAAAA,GAAG,CAAC4b,KAAJ,GAAY,IAAZ;;EAEA,UAAI7P,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpBvF,QAAAA,GAAG,CAACke,SAAJ,GAAgBlS,GAAG,CAACzG,CAAD,CAAH,KAAW,GAAX,GAAiB,QAAjB,GAA4B,OAA5C;EACD,OAFD,MAEO;EACLvF,QAAAA,GAAG,CAACke,SAAJ,GAAgB,KAAhB;EACD;;EAED3Y,MAAAA,CAAC,GAAGA,CAAC,CAACuB,OAAF,CAAU,KAAV,EAAiB,EAAjB,CAAJ;EACAvB,MAAAA,CAAC,GAAGA,CAAC,CAACuB,OAAF,CAAU,KAAV,EAAiB,EAAjB,CAAJ,CAVsC;;EAYtC,UAAIiF,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpB,YAAImT,GAAG,GAAGiF,WAAW,CAACQ,IAAZ,CAAiB5Y,CAAjB,CAAV;;EAEA,YAAImT,GAAG,CAAC7X,MAAJ,IAAc,CAAlB,EAAqB;EACnBb,UAAAA,GAAG,CAAC4b,KAAJ,GAAYlD,GAAG,CAAC,CAAD,CAAf;EACAnT,UAAAA,CAAC,GAAGA,CAAC,CAACuB,OAAF,CAAU4R,GAAG,CAAC,CAAD,CAAb,EAAkB,EAAlB,CAAJ;EACD;EACF;EACF,KAlC4B;;;EAqC7B,QAAI1M,GAAG,CAACzG,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBvF,MAAAA,GAAG,CAACka,MAAJ,GAAa,IAAb;EACA3U,MAAAA,CAAC,GAAGwY,QAAQ,CAACxY,CAAD,CAAZ;EACD;;EAED,QAAIA,CAAC,KAAK,GAAN,IAAayG,GAAG,CAACzG,CAAD,CAAH,KAAW,GAAxB,IAA+BA,CAAC,KAAK,KAAzC,EAAgD;EAC9CvF,MAAAA,GAAG,CAACka,MAAJ,GAAa,IAAb;EACA3U,MAAAA,CAAC,GAAGwY,QAAQ,CAACxY,CAAD,CAAZ;EACD;;EAED,QAAIyG,GAAG,CAACzG,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBvF,MAAAA,GAAG,CAACsZ,QAAJ,GAAe,IAAf;EACA/T,MAAAA,CAAC,GAAGwY,QAAQ,CAACxY,CAAD,CAAZ;EACD;;EAED,QAAIwG,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpBvF,MAAAA,GAAG,CAAC+M,QAAJ,GAAe,IAAf,CADoB;;EAGpBxH,MAAAA,CAAC,GAAGuY,UAAU,CAACvY,CAAD,CAAd;EACD,KAxD4B;;;EA2D7B,QAAIwG,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAb,IAAoByG,GAAG,CAACzG,CAAD,CAAH,KAAW,GAAnC,EAAwC;EACtC;EACA,UAAImY,OAAO,CAACnX,IAAR,CAAahB,CAAb,CAAJ,EAAqB;EACnBvF,QAAAA,GAAG,CAAC2M,OAAJ,GAAcpH,CAAC,CAAC5B,KAAF,CAAQ+Z,OAAR,CAAd;EACA1d,QAAAA,GAAG,CAAC4M,QAAJ,GAAe,KAAf;EACD,OAHD,MAGO;EACL5M,QAAAA,GAAG,CAAC2M,OAAJ,GAAcpH,CAAC,CAAC5B,KAAF,CAAQ,GAAR,CAAd;EACA3D,QAAAA,GAAG,CAAC4M,QAAJ,GAAe,IAAf;EACD,OARqC;;;EAWtC5M,MAAAA,GAAG,CAAC2M,OAAJ,CAAY,CAAZ,IAAiBmR,UAAU,CAAC9d,GAAG,CAAC2M,OAAJ,CAAY,CAAZ,CAAD,CAA3B;EACA,UAAIyC,IAAI,GAAGpP,GAAG,CAAC2M,OAAJ,CAAY9L,MAAZ,GAAqB,CAAhC;EACAb,MAAAA,GAAG,CAAC2M,OAAJ,CAAYyC,IAAZ,IAAoB2O,QAAQ,CAAC/d,GAAG,CAAC2M,OAAJ,CAAYyC,IAAZ,CAAD,CAA5B,CAbsC;;EAetCpP,MAAAA,GAAG,CAAC2M,OAAJ,GAAc3M,GAAG,CAAC2M,OAAJ,CAAY2H,GAAZ,CAAgB,UAAUnP,CAAV,EAAa;EACzC,eAAOA,CAAC,CAACyB,IAAF,EAAP;EACD,OAFa,CAAd;EAGA5G,MAAAA,GAAG,CAAC2M,OAAJ,GAAc3M,GAAG,CAAC2M,OAAJ,CAAYmI,MAAZ,CAAmB,UAAU3P,CAAV,EAAa;EAC5C,eAAOA,CAAP;EACD,OAFa,CAAd,CAlBsC;;EAsBtCnF,MAAAA,GAAG,CAAC2M,OAAJ,GAAc3M,GAAG,CAAC2M,OAAJ,CAAY2H,GAAZ,CAAgB,UAAUzQ,GAAV,EAAe;EAC3C,eAAOA,GAAG,CAACF,KAAJ,CAAU,IAAV,EAAgB2Q,GAAhB,CAAoB2J,UAApB,CAAP;EACD,OAFa,CAAd;EAGA1Y,MAAAA,CAAC,GAAG,EAAJ;EACD,KArF4B;;;EAwF7B,QAAIwG,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAb,IAAoByG,GAAG,CAACzG,CAAD,CAAH,KAAW,GAAnC,EAAwC;EACtCA,MAAAA,CAAC,GAAGyY,SAAS,CAACzY,CAAD,CAAb;EACAvF,MAAAA,GAAG,CAACyM,KAAJ,GAAY,IAAImR,MAAJ,CAAWrY,CAAX,CAAZ,CAFsC;;EAItC,aAAOvF,GAAP;EACD,KA7F4B;;;EAgG7B,QAAI+L,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAb,IAAoByG,GAAG,CAACzG,CAAD,CAAH,KAAW,GAAnC,EAAwC;EACtCA,MAAAA,CAAC,GAAGyY,SAAS,CAACzY,CAAD,CAAb;EACAvF,MAAAA,GAAG,CAACkM,IAAJ,GAAW,IAAX;EACAlM,MAAAA,GAAG,CAAC+H,IAAJ,GAAWxC,CAAX;EACA,aAAOvF,GAAP;EACD;EACF,GAzGqC;;;EA4GtC,MAAIyd,SAAS,CAAClX,IAAV,CAAehB,CAAf,MAAsB,IAA1B,EAAgC;EAC9BA,IAAAA,CAAC,GAAGA,CAAC,CAACuB,OAAF,CAAU2W,SAAV,EAAqB,UAAUrZ,CAAV,EAAaC,CAAb,EAAgB;EACvC,UAAImN,GAAG,GAAGnN,CAAC,CAACV,KAAF,CAAQ,IAAR,CAAV;;EAEA,UAAI6N,GAAG,CAAC3Q,MAAJ,KAAe,CAAnB,EAAsB;EACpB;EACAb,QAAAA,GAAG,CAAC8K,GAAJ,GAAUsT,MAAM,CAAC5M,GAAG,CAAC,CAAD,CAAJ,CAAhB;EACAxR,QAAAA,GAAG,CAACqL,GAAJ,GAAU+S,MAAM,CAAC5M,GAAG,CAAC,CAAD,CAAJ,CAAhB;EACD,OAJD,MAIO;EACL;EACA;EACAxR,QAAAA,GAAG,CAAC8K,GAAJ,GAAUsT,MAAM,CAAC5M,GAAG,CAAC,CAAD,CAAJ,CAAhB;EACAxR,QAAAA,GAAG,CAACqL,GAAJ,GAAU+S,MAAM,CAAC5M,GAAG,CAAC,CAAD,CAAH,IAAU,GAAX,CAAhB;EACD,OAZsC;;;EAevCxR,MAAAA,GAAG,CAACka,MAAJ,GAAa,IAAb,CAfuC;;EAiBvCla,MAAAA,GAAG,CAACsZ,QAAJ,GAAe,IAAf;EACA,aAAO,EAAP;EACD,KAnBG,CAAJ;EAoBD,GAjIqC;;;EAoItC,MAAIvN,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpBvF,IAAAA,GAAG,CAACsM,GAAJ,GAAUwR,UAAU,CAACvY,CAAD,CAApB;EACAvF,IAAAA,GAAG,CAACsM,GAAJ,GAAUuR,WAAW,CAAC7d,GAAG,CAACsM,GAAL,CAArB;EACA,WAAOtM,GAAP;EACD,GAxIqC;;;EA2ItC,MAAI+L,KAAK,CAACxG,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpBvF,IAAAA,GAAG,CAACwM,MAAJ,GAAasR,UAAU,CAACvY,CAAD,CAAvB;EACA,WAAOvF,GAAP;EACD;;EAED,MAAIuF,CAAC,KAAK,GAAV,EAAe;EACbvF,IAAAA,GAAG,CAAC8L,QAAJ,GAAe,IAAf;EACA,WAAO9L,GAAP;EACD,GAnJqC;;;EAsJtC,MAAIuF,CAAC,KAAK,GAAV,EAAe;EACbvF,IAAAA,GAAG,CAAC8L,QAAJ,GAAe,IAAf;EACA9L,IAAAA,GAAG,CAACka,MAAJ,GAAa,IAAb;EACAla,IAAAA,GAAG,CAACsZ,QAAJ,GAAe,IAAf;EACA,WAAOtZ,GAAP;EACD;;EAED,MAAIuF,CAAJ,EAAO;EACL;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAACuB,OAAF,CAAU,KAAV,EAAiB,GAAjB,CAAJ;EACAvB,IAAAA,CAAC,GAAGA,CAAC,CAACuB,OAAF,CAAU,KAAV,EAAiB,GAAjB,CAAJ;EACA9G,IAAAA,GAAG,CAAC+H,IAAJ,GAAWxC,CAAC,CAACoB,WAAF,EAAX;EACD;;EAED,SAAO3G,GAAP;EACD,CArKD;;EAuKA,IAAIqe,aAAa,GAAGJ,UAApB;;EAGA,IAAIK,UAAU,GAAG,SAASA,UAAT,CAAoBC,MAApB,EAA4B;EAC3C,MAAIC,OAAO,GAAG,KAAd;EACA,MAAI5S,KAAK,GAAG,CAAC,CAAb;EACA,MAAI6S,OAAJ,CAH2C;;EAK3C,OAAK,IAAI7d,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2d,MAAM,CAAC1d,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;EACtC,QAAI8d,KAAK,GAAGH,MAAM,CAAC3d,CAAD,CAAlB,CADsC;;EAGtC,QAAI8d,KAAK,CAACR,SAAN,KAAoB,QAApB,IAAgCQ,KAAK,CAAC9C,KAAN,KAAgB,IAApD,EAA0D;EACxDhQ,MAAAA,KAAK,IAAI,CAAT;EACA8S,MAAAA,KAAK,CAAC9C,KAAN,GAAchQ,KAAd;EACA;EACD,KAPqC;;;EAUtC,QAAI8S,KAAK,CAACR,SAAN,KAAoB,OAAxB,EAAiC;EAC/BM,MAAAA,OAAO,GAAG,IAAV;;EAEA,UAAI,OAAOE,KAAK,CAAC9C,KAAb,KAAuB,QAAvB,IAAmC,OAAO8C,KAAK,CAAC9C,KAAb,KAAuB,QAA9D,EAAwE;EACtE6C,QAAAA,OAAO,GAAGC,KAAK,CAAC9C,KAAhB;EACD,OAFD,MAEO;EACLhQ,QAAAA,KAAK,IAAI,CAAT;EACA6S,QAAAA,OAAO,GAAG7S,KAAV;EACD;EACF,KAnBqC;;;EAsBtC,QAAI4S,OAAJ,EAAa;EACXE,MAAAA,KAAK,CAAC9C,KAAN,GAAc6C,OAAd;EACD,KAxBqC;;;EA2BtC,QAAIC,KAAK,CAACR,SAAN,KAAoB,KAAxB,EAA+B;EAC7BM,MAAAA,OAAO,GAAG,KAAV;EACD;EACF;;EAED,SAAOD,MAAP;EACD,CAtCD;;;EAyCA,IAAII,YAAY,GAAG,SAASA,YAAT,CAAsBJ,MAAtB,EAA8B;EAC/C,SAAOA,MAAM,CAACjK,GAAP,CAAW,UAAUoK,KAAV,EAAiB;EACjC,QAAIA,KAAK,CAAC/R,OAAN,KAAkBxB,SAAtB,EAAiC;EAC/B;EACA,UAAIyT,UAAU,GAAGF,KAAK,CAAC/R,OAAN,CAAcE,KAAd,CAAoB,UAAUyN,KAAV,EAAiB;EACpD,YAAIA,KAAK,CAACzZ,MAAN,KAAiB,CAArB,EAAwB;EACtB,iBAAO,KAAP;EACD;;EAED,YAAI8K,GAAG,GAAG2O,KAAK,CAAC,CAAD,CAAf;;EAEA,YAAI3O,GAAG,CAAC5D,IAAJ,KAAaoD,SAAb,IAA0BQ,GAAG,CAACoB,QAAJ,KAAiB,IAA3C,IAAmDpB,GAAG,CAAC2N,QAAJ,KAAiB,IAApE,IAA4E3N,GAAG,CAACa,MAAJ,KAAe,IAA/F,EAAqG;EACnG,iBAAO,IAAP,CADmG;EAEpG;;EAED,eAAO,KAAP;EACD,OAZgB,CAAjB;;EAcA,UAAIoS,UAAU,KAAK,IAAnB,EAAyB;EACvB,YAAIC,KAAK,GAAG,EAAZ;EACAH,QAAAA,KAAK,CAAC/R,OAAN,CAAc9G,OAAd,CAAsB,UAAUyU,KAAV,EAAiB;EACrCuE,UAAAA,KAAK,CAACvE,KAAK,CAAC,CAAD,CAAL,CAASvS,IAAV,CAAL,GAAuB,IAAvB;EACD,SAFD;EAGA2W,QAAAA,KAAK,CAAChS,MAAN,GAAemS,KAAf;EACA,eAAOH,KAAK,CAAC/R,OAAb;EACD;EACF;;EAED,WAAO+R,KAAP;EACD,GA5BM,CAAP;EA6BD,CA9BD;EA+BA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAGA,IAAI/B,WAAW,GAAG,SAASA,WAAT,CAAqB4B,MAArB,EAA6B;EAC7C,MAAIO,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E,CAD6C;EAG7C;;EACA,MAAIsW,KAAK,GAAGyE,MAAM,CAACzJ,MAAP,CAAc,UAAU1P,CAAV,EAAa;EACrC,WAAOA,CAAC,CAAC8Y,SAAT;EACD,GAFW,EAETrd,MAFH;;EAIA,MAAIiZ,KAAK,GAAG,CAAZ,EAAe;EACbyE,IAAAA,MAAM,GAAGD,UAAU,CAACC,MAAD,CAAnB;EACD,GAV4C;;;EAa7C,MAAI,CAACO,IAAI,CAAC1S,KAAV,EAAiB;EACfmS,IAAAA,MAAM,GAAGI,YAAY,CAACJ,MAAD,CAArB;EACD,GAf4C;EAgB7C;EACA;EACA;;;EAGA,SAAOA,MAAP;EACD,CAtBD;;EAwBA,IAAIQ,cAAc,GAAGpC,WAArB;;EAEA,IAAIqC,SAAS,GAAG,SAASzN,OAAT,CAAiBC,GAAjB,EAAsB;EACpC,SAAOtQ,MAAM,CAACd,SAAP,CAAiB4Q,QAAjB,CAA0BrO,IAA1B,CAA+B6O,GAA/B,MAAwC,gBAA/C;EACD,CAFD;;;EAKA,IAAIyN,OAAO,GAAG,SAASA,OAAT,CAAiBzN,GAAjB,EAAsB;EAClC,MAAI0N,MAAM,GAAG1N,GAAG,CAAC8C,GAAJ,CAAQ,UAAUnP,CAAV,EAAa;EAChC,WAAO,CAAC;EACN4C,MAAAA,IAAI,EAAE5C;EADA,KAAD,CAAP;EAGD,GAJY,CAAb;EAKA,SAAO,CAAC;EACNwH,IAAAA,OAAO,EAAEuS,MADH;EAENtS,IAAAA,QAAQ,EAAE;EAFJ,GAAD,CAAP;EAID,CAVD;;;EAaA,IAAIuS,OAAO,GAAG,SAASA,OAAT,CAAiBtI,GAAjB,EAAsB;EAClC,MAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACH,IAAb,IAAqB,CAACG,GAAG,CAACH,IAAJ,CAAS,CAAT,CAA1B,EAAuC;EACrC,WAAO,EAAP;EACD;;EAED,MAAImC,IAAI,GAAG,EAAX;EACAhC,EAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5B,QAAIid,GAAG,GAAG,EAAV;EACAjd,IAAAA,CAAC,CAACwR,KAAF,GAAU9N,OAAV,CAAkB,UAAUT,CAAV,EAAa;EAC7Bga,MAAAA,GAAG,CAACpL,IAAJ,CAAS5O,CAAC,CAACyG,EAAX;EACD,KAFD;EAGAgN,IAAAA,IAAI,CAAC7E,IAAL,CAAUoL,GAAV;EACD,GAND;EAOA,SAAO,CAAC;EACNC,IAAAA,QAAQ,EAAExG;EADJ,GAAD,CAAP;EAGD,CAhBD;;;EAmBA,IAAIyG,UAAU,GAAG,SAASA,UAAT,CAAoBf,MAApB,EAA4BO,IAA5B,EAAkC;EACjD;EACA,MAAIA,IAAI,CAAC1S,KAAL,KAAe,IAAnB,EAAyB;EACvB0S,IAAAA,IAAI,CAAC1S,KAAL,GAAa,IAAb;EACD;;EAED,MAAI,OAAO0S,IAAI,CAAC1S,KAAZ,KAAsB,QAA1B,EAAoC;EAClCmS,IAAAA,MAAM,GAAGA,MAAM,CAACjK,GAAP,CAAW,UAAU3I,GAAV,EAAe;EACjC;EACA,UAAImT,IAAI,CAAC1S,KAAL,GAAa,CAAb,IAAkBT,GAAG,CAAC5D,IAA1B,EAAgC;EAC9B4D,QAAAA,GAAG,CAACS,KAAJ,GAAY0S,IAAI,CAAC1S,KAAjB;EACD,OAJgC;;;EAOjC,UAAIT,GAAG,CAACgB,OAAR,EAAiB;EACfhB,QAAAA,GAAG,CAACgB,OAAJ,CAAY9G,OAAZ,CAAoB,UAAUyU,KAAV,EAAiB;EACnCA,UAAAA,KAAK,CAACzU,OAAN,CAAc,UAAUX,CAAV,EAAa;EACzBA,YAAAA,CAAC,CAACkH,KAAF,GAAU0S,IAAI,CAAC1S,KAAf;EACD,WAFD;EAGD,SAJD;EAKD;;EAED,aAAOT,GAAP;EACD,KAhBQ,CAAT;EAiBD;;EAED,SAAO4S,MAAP;EACD,CA3BD;EA4BA;;;EAGA,IAAIgB,MAAM,GAAG,SAASA,MAAT,CAAgBC,KAAhB,EAAuB;EAClC,MAAIV,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E,CADkC;;EAIlC,MAAIgc,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKrU,SAA5B,IAAyCqU,KAAK,KAAK,EAAvD,EAA2D;EACzD,WAAO,EAAP;EACD,GANiC;;;EASlC,MAAIzf,OAAO,CAACyf,KAAD,CAAP,KAAmB,QAAvB,EAAiC;EAC/B,QAAIR,SAAS,CAACQ,KAAD,CAAb,EAAsB;EACpB,UAAIA,KAAK,CAAC3e,MAAN,KAAiB,CAAjB,IAAsB,CAAC2e,KAAK,CAAC,CAAD,CAAhC,EAAqC;EACnC,eAAO,EAAP;EACD,OAHmB;;;EAMpB,UAAIzf,OAAO,CAACyf,KAAK,CAAC,CAAD,CAAN,CAAP,KAAsB,QAA1B,EAAoC;EAClC,eAAOA,KAAP;EACD,OARmB;;;EAWpB,UAAI,OAAOA,KAAK,CAAC,CAAD,CAAZ,KAAoB,QAAxB,EAAkC;EAChC,eAAOP,OAAO,CAACO,KAAD,CAAd;EACD;EACF,KAf8B;;;EAkB/B,QAAIA,KAAK,IAAIA,KAAK,CAACvP,GAAN,KAAc,KAA3B,EAAkC;EAChC,aAAOkP,OAAO,CAACK,KAAD,CAAd;EACD;;EAED,WAAO,EAAP;EACD;;EAED,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,IAAAA,KAAK,GAAGnM,MAAM,CAACmM,KAAD,CAAd,CAD6B;EAE9B;;EAED,MAAIjB,MAAM,GAAGf,cAAc,CAACgC,KAAD,CAA3B,CAtCkC;;;EAwClCjB,EAAAA,MAAM,GAAGA,MAAM,CAACjK,GAAP,CAAW,UAAUzQ,GAAV,EAAe;EACjC,WAAOwa,aAAa,CAACxa,GAAD,CAApB;EACD,GAFQ,CAAT,CAxCkC;;EA4ClC0a,EAAAA,MAAM,GAAGQ,cAAc,CAACR,MAAD,EAASO,IAAT,CAAvB,CA5CkC;;EA8ClCP,EAAAA,MAAM,GAAGe,UAAU,CAACf,MAAD,EAASO,IAAT,CAAnB,CA9CkC;;EAgDlC,SAAOP,MAAP;EACD,CAjDD;;EAmDA,IAAIkB,WAAW,GAAGF,MAAlB;EAEA;EACA;;EACA,IAAIG,QAAQ,GAAG,SAASA,QAAT,CAAkB/L,KAAlB,EAAyBkF,IAAzB,EAA+B;EAC5C,MAAI+D,OAAO,GAAG,EAAd;EACA,MAAI+C,SAAS,GAAG9G,IAAI,CAAC,CAAD,CAAJ,CAAQwG,QAAxB;;EAEA,MAAIO,KAAK,GAAG,SAASA,KAAT,CAAeC,EAAf,EAAmB;EAC7BF,IAAAA,SAAS,CAAC9Z,OAAV,CAAkB,UAAUyU,KAAV,EAAiB;EACjC,UAAIA,KAAK,CAACzZ,MAAN,KAAiB,CAArB,EAAwB;EACtBuE,QAAAA,CAAC,GAAGya,EAAJ;EACA;EACD;;EAED,UAAIC,QAAQ,GAAGxF,KAAK,CAACzN,KAAN,CAAY,UAAUhB,EAAV,EAAcjL,CAAd,EAAiB;EAC1CwE,QAAAA,CAAC,GAAGya,EAAJ;EACA,eAAOlM,KAAK,CAACkM,EAAE,GAAGjf,CAAN,CAAL,CAAciL,EAAd,KAAqBA,EAA5B;EACD,OAHc,CAAf;;EAKA,UAAIiU,QAAJ,EAAc;EACZlD,QAAAA,OAAO,CAAC5I,IAAR,CAAa;EACX4B,UAAAA,KAAK,EAAEjC,KAAK,CAAC6E,KAAN,CAAYqH,EAAZ,EAAgBA,EAAE,GAAGvF,KAAK,CAACzZ,MAA3B;EADI,SAAb,EADY;;EAKZgf,QAAAA,EAAE,IAAIvF,KAAK,CAACzZ,MAAN,GAAe,CAArB;EACD;EACF,KAlBD;EAmBAuE,IAAAA,CAAC,GAAGya,EAAJ;EACD,GArBD;;EAuBA,OAAK,IAAIza,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuO,KAAK,CAAC9S,MAA1B,EAAkCuE,CAAC,IAAI,CAAvC,EAA0C;EACxCwa,IAAAA,KAAK,CAACxa,CAAD,CAAL;EACD;;EAED,SAAOwX,OAAP;EACD,CAhCD;;EAkCA,IAAImD,UAAU,GAAGL,QAAjB;EAEA;;EAEA,IAAIM,QAAQ,GAAG,SAASA,QAAT,CAAkB7d,CAAlB,EAAqB0W,IAArB,EAA2B;EACxC,MAAIoH,QAAQ,GAAGzc,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,KAAnF,CADwC;;EAIxC,MAAI,OAAOqV,IAAP,KAAgB,QAApB,EAA8B;EAC5BA,IAAAA,IAAI,GAAG4G,WAAW,CAAC5G,IAAD,CAAlB;EACD,GANuC;;;EASxC,MAAIU,WAAW,CAACpX,CAAD,EAAI0W,IAAJ,CAAX,KAAyB,IAA7B,EAAmC;EACjC,WAAO,EAAP;EACD,GAXuC;;;EAcxC,MAAI3N,SAAS,GAAG2N,IAAI,CAAC/D,MAAL,CAAY,UAAU5P,CAAV,EAAa;EACvC,WAAOA,CAAC,CAACoU,QAAF,KAAe,IAAf,IAAuBpU,CAAC,CAAC6H,QAAF,KAAe,IAA7C;EACD,GAFe,EAEblM,MAFH;EAGA,MAAI8S,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACA,MAAIiJ,OAAO,GAAG,EAAd,CAlBwC;;EAoBxC,MAAI/D,IAAI,CAAC,CAAD,CAAJ,CAAQwG,QAAZ,EAAsB;EACpB,QAAI3G,GAAG,GAAGqH,UAAU,CAACpM,KAAD,EAAQkF,IAAR,CAApB;;EAEA,QAAIH,GAAG,IAAIA,GAAG,CAAC7X,MAAJ,GAAa,CAAxB,EAA2B;EACzB,aAAOkc,cAAc,CAACpJ,KAAD,EAAQkF,IAAR,EAAcH,GAAd,CAArB;EACD;EACF,GA1BuC;;;EA6BxC,MAAIG,IAAI,CAAC,CAAD,CAAJ,CAAQ9M,KAAR,KAAkB,IAAtB,EAA4B;EAC1B,QAAImU,IAAI,GAAGzD,WAAW,CAAC9I,KAAD,EAAQkF,IAAR,EAAc,CAAd,EAAiBlF,KAAK,CAAC9S,MAAvB,CAAtB;;EAEA,QAAIqf,IAAI,IAAIA,IAAI,CAACtK,KAAb,IAAsBsK,IAAI,CAACtK,KAAL,CAAW/U,MAAX,GAAoB,CAA9C,EAAiD;EAC/Cqf,MAAAA,IAAI,CAACtK,KAAL,GAAasK,IAAI,CAACtK,KAAL,CAAWd,MAAX,CAAkB,UAAU/P,CAAV,EAAa;EAC1C,eAAOA,CAAP;EACD,OAFY,CAAb;EAGA6X,MAAAA,OAAO,CAAC5I,IAAR,CAAakM,IAAb;EACD;;EAED,WAAOnD,cAAc,CAACpJ,KAAD,EAAQkF,IAAR,EAAc+D,OAAd,CAArB;EACD,GAxCuC;;;EA2CxC,OAAK,IAAIhc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;EACxC;EACA,QAAIA,CAAC,GAAGsK,SAAJ,GAAgByI,KAAK,CAAC9S,MAA1B,EAAkC;EAChC;EACD,KAJuC;;;EAOxC,QAAIsf,KAAK,GAAG1D,WAAW,CAAC9I,KAAK,CAAC6E,KAAN,CAAY5X,CAAZ,CAAD,EAAiBiY,IAAjB,EAAuBjY,CAAvB,EAA0B+S,KAAK,CAAC9S,MAAhC,CAAvB;;EAEA,QAAIsf,KAAK,IAAIA,KAAK,CAACvK,KAAf,IAAwBuK,KAAK,CAACvK,KAAN,CAAY/U,MAAZ,GAAqB,CAAjD,EAAoD;EAClD;EACAD,MAAAA,CAAC,IAAIuf,KAAK,CAACvK,KAAN,CAAY/U,MAAZ,GAAqB,CAA1B,CAFkD;;EAIlDsf,MAAAA,KAAK,CAACvK,KAAN,GAAcuK,KAAK,CAACvK,KAAN,CAAYd,MAAZ,CAAmB,UAAU/P,CAAV,EAAa;EAC5C,eAAOA,CAAP;EACD,OAFa,CAAd;EAGA6X,MAAAA,OAAO,CAAC5I,IAAR,CAAamM,KAAb,EAPkD;;EASlD,UAAIF,QAAQ,KAAK,IAAjB,EAAuB;EACrB,eAAOlD,cAAc,CAACpJ,KAAD,EAAQkF,IAAR,EAAc+D,OAAd,CAArB;EACD;EACF;EACF;;EAED,SAAOG,cAAc,CAACpJ,KAAD,EAAQkF,IAAR,EAAc+D,OAAd,CAArB;EACD,CApED;;EAsEA,IAAIwD,WAAW,GAAGJ,QAAlB;EAEA;EACA;EACA;;EAEA,IAAIK,QAAQ,GAAG,SAASA,QAAT,CAAkBle,CAAlB,EAAqB0W,IAArB,EAA2B;EACxC,MAAIjR,KAAK,GAAG,EAAZ;;EACA,MAAI4J,GAAG,GAAG4O,WAAW,CAACje,CAAD,EAAI0W,IAAJ,CAArB;;EACArH,EAAAA,GAAG,CAAC3L,OAAJ,CAAY,UAAUiX,IAAV,EAAgB;EAC1B,QAAIwD,EAAE,GAAGxD,IAAI,CAAClH,KAAd;EACA0K,IAAAA,EAAE,CAACza,OAAH,CAAW,UAAUT,CAAV,EAAa;EACtBwC,MAAAA,KAAK,CAACxC,CAAC,CAACyG,EAAH,CAAL,GAAc,IAAd;EACD,KAFD;EAGD,GALD,EAHwC;;EAUxC,MAAI8H,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACA,MAAIrQ,MAAM,GAAG,EAAb;EACA,MAAImb,OAAO,GAAG,EAAd;EACA9K,EAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzB,QAAIwC,KAAK,CAACxC,CAAC,CAACyG,EAAH,CAAL,KAAgB,IAApB,EAA0B;EACxB,UAAI4S,OAAO,CAAC5d,MAAR,GAAiB,CAArB,EAAwB;EACtByC,QAAAA,MAAM,CAAC0Q,IAAP,CAAYyK,OAAZ;EACAA,QAAAA,OAAO,GAAG,EAAV;EACD;;EAED;EACD;;EAEDA,IAAAA,OAAO,CAACzK,IAAR,CAAa5O,CAAb;EACD,GAXD;;EAaA,MAAIqZ,OAAO,CAAC5d,MAAR,GAAiB,CAArB,EAAwB;EACtByC,IAAAA,MAAM,CAAC0Q,IAAP,CAAYyK,OAAZ;EACD;;EAED,SAAOnb,MAAP;EACD,CA/BD;;EAiCA,IAAIid,KAAK,GAAGF,QAAZ;EAEA;;EAEA,IAAIG,OAAO,GAAG,SAASA,OAAT,CAAiB3H,IAAjB,EAAuB;EACnC,MAAI1E,KAAK,GAAG,IAAZ;;EAEA,MAAIsM,OAAO,GAAGjd,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,KAAlF;;EACA,MAAIoZ,OAAO,GAAGwD,WAAW,CAAC,IAAD,EAAOvH,IAAP,EAAa4H,OAAb,CAAzB,CAJmC;;;EAMnC7D,EAAAA,OAAO,GAAGA,OAAO,CAACtI,GAAR,CAAY,UAAUwI,IAAV,EAAgB;EACpC,QAAIlH,KAAK,GAAGkH,IAAI,CAAClH,KAAjB;EAAA,QACIyF,MAAM,GAAGyB,IAAI,CAACzB,MADlB;;EAGA,QAAIlZ,CAAC,GAAGgS,KAAK,CAACC,SAAN,CAAgBwB,KAAK,CAAC,CAAD,CAAL,CAAS/J,EAAzB,EAA6B+J,KAAK,CAAC/U,MAAnC,EAA2Cwa,MAA3C,CAAR;;EAEAlZ,IAAAA,CAAC,CAACyR,KAAF,CAAQD,KAAR,GAAgBiC,KAAhB;EACA,WAAOzT,CAAP;EACD,GARS,CAAV;EASA,SAAOya,OAAP;EACD,CAhBD;EAiBA;;;EAGA,IAAI8D,GAAG,GAAG,SAASA,GAAT,CAAa7H,IAAb,EAAmB;EAC3B,MAAI+D,OAAO,GAAGwD,WAAW,CAAC,IAAD,EAAOvH,IAAP,EAAa,IAAb,CAAzB;;EACA,SAAO+D,OAAO,CAAC/b,MAAR,GAAiB,CAAxB;EACD,CAHD;EAIA;;;EAGA,IAAI8f,GAAG,GAAG,SAASA,GAAT,CAAa9H,IAAb,EAAmB;EAC3B,MAAI+H,MAAM,GAAG,IAAb;;EAEA,MAAIhE,OAAO,GAAG2D,KAAK,CAAC,IAAD,EAAO1H,IAAP,CAAnB,CAH2B;;EAK3B+D,EAAAA,OAAO,GAAGA,OAAO,CAACtI,GAAR,CAAY,UAAUoC,IAAV,EAAgB;EACpC,WAAOkK,MAAM,CAACxM,SAAP,CAAiBsC,IAAI,CAAC,CAAD,CAAJ,CAAQ7K,EAAzB,EAA6B6K,IAAI,CAAC7V,MAAlC,CAAP;EACD,GAFS,CAAV;EAGA,SAAO+b,OAAP;EACD,CATD;EAUA;;;EAGA,IAAIiE,OAAO,GAAG,SAASlO,KAAT,CAAerG,GAAf,EAAoBiB,KAApB,EAA2B;EACvC,MAAIuT,MAAM,GAAG,IAAb;;EAEA,MAAIC,OAAO,GAAG,EAAd;EACA,MAAIpN,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,MAAIqN,QAAQ,GAAG,KAAf;;EAEA,OAAK,IAAIpgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAIqgB,GAAG,GAAGtN,KAAK,CAAC/S,CAAD,CAAL,CAAS+R,KAAT,CAAerG,GAAf,EAAoBiB,KAApB,CAAV;;EAEA,QAAI0T,GAAG,KAAK,IAAZ,EAAkB;EAChB,UAAID,QAAQ,KAAK,IAAjB,EAAuB;EACrB;EACAD,QAAAA,OAAO,CAACA,OAAO,CAAClgB,MAAR,GAAiB,CAAlB,CAAP,CAA4BmT,IAA5B,CAAiCL,KAAK,CAAC/S,CAAD,CAAtC;EACD,OAHD,MAGO;EACLmgB,QAAAA,OAAO,CAAC/M,IAAR,CAAa,CAACL,KAAK,CAAC/S,CAAD,CAAN,CAAb,EADK;EAEN;;EAEDogB,MAAAA,QAAQ,GAAGC,GAAX;EACD;EACF,GApBsC;;;EAuBvCF,EAAAA,OAAO,GAAGA,OAAO,CAACjM,MAAR,CAAe,UAAU1Q,CAAV,EAAa;EACpC,WAAOA,CAAC,CAACvD,MAAF,GAAW,CAAlB;EACD,GAFS,EAEPyT,GAFO,CAEH,UAAU9C,GAAV,EAAe;EACpB,WAAOsP,MAAM,CAAC1M,SAAP,CAAiB5C,GAAG,CAAC,CAAD,CAAH,CAAO3F,EAAxB,EAA4B2F,GAAG,CAAC3Q,MAAhC,CAAP;EACD,GAJS,CAAV;EAKA,SAAOkgB,OAAP;EACD,CA7BD;;EA+BA,IAAInL,KAAK,GAAG;EACVA,EAAAA,KAAK,EAAE4K,OADG;EAEVE,EAAAA,GAAG,EAAEA,GAFK;EAGVC,EAAAA,GAAG,EAAEA,GAHK;EAIVhO,EAAAA,KAAK,EAAEkO;EAJG,CAAZ;;EAOA,IAAIK,MAAM,GAAG,SAASA,MAAT,CAAgBrV,EAAhB,EAAoBhL,MAApB,EAA4BgT,IAA5B,EAAkC;EAC7CxT,EAAAA,eAAe,CAAC,IAAD,EAAO6gB,MAAP,CAAf;;EAEA,OAAKnV,KAAL,GAAaF,EAAb;EACA,OAAKhL,MAAL,GAAcA,MAAd;EACA,OAAKoP,GAAL,GAAW,QAAX,CAL6C;;EAO7C/O,EAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;EAClCJ,IAAAA,UAAU,EAAE,KADsB;EAElCE,IAAAA,QAAQ,EAAE,IAFwB;EAGlCW,IAAAA,KAAK,EAAEiS;EAH2B,GAApC;EAKA3S,EAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCJ,IAAAA,UAAU,EAAE,KADuB;EAEnCE,IAAAA,QAAQ,EAAE,IAFyB;EAGnCW,IAAAA,KAAK,EAAE;EAH4B,GAArC;EAKAV,EAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC;EACpCJ,IAAAA,UAAU,EAAE,KADwB;EAEpCE,IAAAA,QAAQ,EAAE,IAF0B;EAGpCW,IAAAA,KAAK,EAAE;EAH6B,GAAtC;EAKD,CAtBD;EAuBA;;;EAGAsf,MAAM,CAAC9gB,SAAP,CAAiBgU,SAAjB,GAA6B,UAAUvI,EAAV,EAAchL,MAAd,EAAsBwa,MAAtB,EAA8B;EACzD,MAAIlZ,CAAC,GAAG,IAAI+e,MAAJ,CAAWrV,EAAX,EAAehL,MAAf,EAAuB,KAAKgT,IAA5B,CAAR,CADyD;;EAGzD,MAAIwH,MAAM,IAAIna,MAAM,CAAC0E,IAAP,CAAYyV,MAAZ,EAAoBxa,MAApB,GAA6B,CAA3C,EAA8C;EAC5CsB,IAAAA,CAAC,CAACkZ,MAAF,GAAWA,MAAX;EACD,GAFD,MAEO;EACLlZ,IAAAA,CAAC,CAACkZ,MAAF,GAAW,KAAKA,MAAhB;EACD;;EAED,SAAOlZ,CAAP;EACD,CAVD;;;EAaAjB,MAAM,CAACsP,MAAP,CAAc0Q,MAAM,CAAC9gB,SAArB,EAAgCwV,KAAhC;EACA1U,MAAM,CAACsP,MAAP,CAAc0Q,MAAM,CAAC9gB,SAArB,EAAgC+Y,SAAhC;;EAEA,IAAIgI,SAAS,GAAG;EACdtR,EAAAA,IAAI,EAAE;EADQ,CAAhB;EAGA3O,MAAM,CAAC0E,IAAP,CAAYub,SAAZ,EAAuBtb,OAAvB,CAA+B,UAAUhB,CAAV,EAAa;EAC1C,SAAOqc,MAAM,CAAC9gB,SAAP,CAAiByE,CAAjB,IAAsBqc,MAAM,CAAC9gB,SAAP,CAAiB+gB,SAAS,CAACtc,CAAD,CAA1B,CAA7B;EACD,CAFD;EAGA,IAAIuc,QAAQ,GAAGF,MAAf;EAEA;;EACA,IAAIG,IAAI,gBAAgB,YAAY;EAClC,WAASA,IAAT,GAAgB;EACd,QAAIC,KAAK,GAAG9d,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAhF;;EAEAnD,IAAAA,eAAe,CAAC,IAAD,EAAOghB,IAAP,CAAf,CAHc;;;EAMdngB,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCJ,MAAAA,UAAU,EAAE,KADuB;EAEnCa,MAAAA,KAAK,EAAE0f;EAF4B,KAArC;EAID;EACD;;;EAGAjgB,EAAAA,YAAY,CAACggB,IAAD,EAAO,CAAC;EAClBjgB,IAAAA,GAAG,EAAE,KADa;EAElBQ,IAAAA,KAAK,EAAE,SAASwQ,GAAT,CAAavC,IAAb,EAAmB;EACxB,WAAKyR,KAAL,CAAWzR,IAAI,CAAChE,EAAhB,IAAsBgE,IAAtB;EACA,aAAO,IAAP;EACD;EACD;;EANkB,GAAD,EAQhB;EACDzO,IAAAA,GAAG,EAAE,KADJ;EAEDQ,IAAAA,KAAK,EAAE,SAASkS,GAAT,CAAajI,EAAb,EAAiB;EACtB,aAAO,KAAKyV,KAAL,CAAWzV,EAAX,CAAP;EACD;EACD;;EALC,GARgB,EAehB;EACDzK,IAAAA,GAAG,EAAE,QADJ;EAEDQ,IAAAA,KAAK,EAAE,SAAS2f,MAAT,CAAgB1V,EAAhB,EAAoB;EACzB,aAAO,KAAKyV,KAAL,CAAWzV,EAAX,CAAP;EACD;EAJA,GAfgB,EAoBhB;EACDzK,IAAAA,GAAG,EAAE,OADJ;EAEDQ,IAAAA,KAAK,EAAE,SAAS4f,KAAT,CAAe3N,IAAf,EAAqB;EAC1B3S,MAAAA,MAAM,CAACsP,MAAP,CAAc,KAAK8Q,KAAnB,EAA0BzN,IAAI,CAACyN,KAA/B;EACA,aAAO,IAAP;EACD;EACD;;EANC,GApBgB,EA4BhB;EACDlgB,IAAAA,GAAG,EAAE,OADJ;EAEDQ,IAAAA,KAAK,EAAE,SAAS6f,KAAT,GAAiB;EACtB,aAAO;EACLH,QAAAA,KAAK,EAAEpgB,MAAM,CAAC0E,IAAP,CAAY,KAAK0b,KAAjB,EAAwBzgB;EAD1B,OAAP;EAGD;EANA,GA5BgB,CAAP,CAAZ;;EAqCA,SAAOwgB,IAAP;EACD,CArDuB,EAAxB;EAsDA;;;EAGAA,IAAI,CAACjhB,SAAL,CAAeqT,KAAf,GAAuB,YAAY;EACjC,MAAIU,KAAK,GAAG,IAAZ;;EAEA,MAAIvO,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAY,KAAK0b,KAAjB,CAAX;EACA,MAAIA,KAAK,GAAG1b,IAAI,CAACqB,MAAL,CAAY,UAAUvC,CAAV,EAAaG,CAAb,EAAgB;EACtC,QAAIO,CAAC,GAAG+O,KAAK,CAACmN,KAAN,CAAYzc,CAAZ,EAAe4O,KAAf,EAAR;;EAEA/O,IAAAA,CAAC,CAACU,CAAC,CAACyG,EAAH,CAAD,GAAUzG,CAAV;EACA,WAAOV,CAAP;EACD,GALW,EAKT,EALS,CAAZ;EAMA,SAAO,IAAI2c,IAAJ,CAASC,KAAT,CAAP;EACD,CAXD;;EAaA,IAAII,MAAM,GAAGL,IAAb;;EAGA,IAAIM,SAAS,GAAG,SAASA,SAAT,CAAmBhO,KAAnB,EAA0B;EACxCA,EAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUgK,IAAV,EAAgBjP,CAAhB,EAAmB;EAC/B,QAAIA,CAAC,GAAG,CAAR,EAAW;EACTiP,MAAAA,IAAI,CAACyD,IAAL,GAAYK,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAAL,CAAaiL,EAAzB;EACD;;EAED,QAAI8H,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAAT,EAAkB;EAChBiP,MAAAA,IAAI,CAAC0D,IAAL,GAAYI,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAAL,CAAaiL,EAAzB;EACD;EACF,GARD;EASD,CAVD;;EAYA,IAAI+V,UAAU,GAAGD,SAAjB;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,IAAIE,SAAS,GAAG,uDAAhB;EACA,IAAIC,YAAY,GAAG,IAAnB;EACA,IAAIC,WAAW,GAAG,kBAAlB;EACA,IAAIC,UAAU,GAAG,sBAAjB;EACA,IAAIC,OAAO,GAAG,iBAAd;;EAEA,IAAIC,SAAS,GAAG,8DAAhB;EACA,IAAIC,eAAe,GAAG,MAAtB;;EAEA,IAAIC,YAAY,GAAG,SAASA,YAAT,CAAsBte,IAAtB,EAA4B;EAC7C,MAAIiV,GAAG,GAAG,EAAV,CAD6C;;EAG7C,MAAIsJ,KAAK,GAAGve,IAAI,CAACH,KAAL,CAAWse,OAAX,CAAZ;;EAEA,OAAK,IAAIrhB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyhB,KAAK,CAACxhB,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;EACrC;EACA,QAAI4Q,GAAG,GAAG6Q,KAAK,CAACzhB,CAAD,CAAL,CAAS+C,KAAT,CAAeke,SAAf,CAAV;;EAEA,SAAK,IAAI9f,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyP,GAAG,CAAC3Q,MAAxB,EAAgCkB,CAAC,EAAjC,EAAqC;EACnCgX,MAAAA,GAAG,CAAC/E,IAAJ,CAASxC,GAAG,CAACzP,CAAD,CAAZ;EACD;EACF;;EAED,SAAOgX,GAAP;EACD,CAfD;EAgBA;;;EAGA,IAAIuJ,UAAU,GAAG,SAASA,UAAT,CAAoBze,GAApB,EAAyB0e,OAAzB,EAAkC;EACjD;EACA,MAAIR,WAAW,CAACxb,IAAZ,CAAiB1C,GAAjB,MAA0B,IAA9B,EAAoC;EAClC,WAAO,KAAP;EACD,GAJgD;;;EAOjD,MAAIme,UAAU,CAACzb,IAAX,CAAgB1C,GAAhB,MAAyB,IAA7B,EAAmC;EACjC,WAAO,KAAP;EACD,GATgD;;;EAYjD,MAAIqe,SAAS,CAAC3b,IAAV,CAAe1C,GAAf,MAAwB,KAA5B,EAAmC;EACjC,WAAO,KAAP;EACD;;EAED,MAAI0R,GAAG,GAAG1R,GAAG,CAACiD,OAAJ,CAAY,yCAAZ,EAAuD,EAAvD,CAAV;EACA,MAAIwa,KAAK,GAAG/L,GAAG,CAAC5R,KAAJ,CAAU,GAAV,CAAZ;EACA,MAAI6e,QAAQ,GAAGlB,KAAK,CAACA,KAAK,CAACzgB,MAAN,GAAe,CAAhB,CAAL,CAAwB8F,WAAxB,EAAf,CAlBiD;;EAoBjD,MAAI4b,OAAO,CAACtW,cAAR,CAAuBuW,QAAvB,CAAJ,EAAsC;EACpC,WAAO,KAAP;EACD,GAtBgD;EAuBjD;EACA;EACA;;;EAGA,SAAO,IAAP;EACD,CA7BD;;EA+BA,IAAIC,cAAc,GAAG,SAASA,cAAT,CAAwB3e,IAAxB,EAA8ByJ,KAA9B,EAAqC;EACxD,MAAIgV,OAAO,GAAGhV,KAAK,CAACqG,KAAN,CAAYtE,aAA1B;EACAxL,EAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;EACAA,EAAAA,IAAI,GAAGuP,MAAM,CAACvP,IAAD,CAAb;EACA,MAAI4e,SAAS,GAAG,EAAhB,CAJwD;;EAMxD,MAAIC,MAAM,GAAG,EAAb,CANwD;;EAQxD,MAAI,CAAC7e,IAAD,IAAS,OAAOA,IAAP,KAAgB,QAAzB,IAAqCge,YAAY,CAACvb,IAAb,CAAkBzC,IAAlB,MAA4B,KAArE,EAA4E;EAC1E,WAAO4e,SAAP;EACD,GAVuD;;;EAaxD5e,EAAAA,IAAI,GAAGA,IAAI,CAACgD,OAAL,CAAa,MAAb,EAAqB,GAArB,CAAP,CAbwD;;EAexD,MAAI8b,MAAM,GAAGR,YAAY,CAACte,IAAD,CAAzB,CAfwD;;EAiBxD,OAAK,IAAIlD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgiB,MAAM,CAAC/hB,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;EACtC,QAAIuE,CAAC,GAAGyd,MAAM,CAAChiB,CAAD,CAAd;;EAEA,QAAIuE,CAAC,KAAKgG,SAAN,IAAmBhG,CAAC,KAAK,EAA7B,EAAiC;EAC/B;EACD,KALqC;;;EAQtC,QAAI2c,YAAY,CAACvb,IAAb,CAAkBpB,CAAlB,MAAyB,KAA7B,EAAoC;EAClC;EACA,UAAIwd,MAAM,CAACA,MAAM,CAAC9hB,MAAP,GAAgB,CAAjB,CAAV,EAA+B;EAC7B8hB,QAAAA,MAAM,CAACA,MAAM,CAAC9hB,MAAP,GAAgB,CAAjB,CAAN,IAA6BsE,CAA7B;EACA;EACD,OAHD,MAGO,IAAIyd,MAAM,CAAChiB,CAAC,GAAG,CAAL,CAAV,EAAmB;EACxB;EACAgiB,QAAAA,MAAM,CAAChiB,CAAC,GAAG,CAAL,CAAN,GAAgBuE,CAAC,GAAGyd,MAAM,CAAChiB,CAAC,GAAG,CAAL,CAA1B;EACA;EACD;EACF,KAlBqC;;;EAqBtC+hB,IAAAA,MAAM,CAAC3O,IAAP,CAAY7O,CAAZ;EACD,GAvCuD;EAwCxD;;;EAGA,OAAK,IAAIuF,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGiY,MAAM,CAAC9hB,MAA7B,EAAqC6J,EAAE,EAAvC,EAA2C;EACzC,QAAIpG,CAAC,GAAGqe,MAAM,CAACjY,EAAD,CAAd,CADyC;;EAGzC,QAAIiY,MAAM,CAACjY,EAAE,GAAG,CAAN,CAAN,IAAkB4X,UAAU,CAAChe,CAAD,EAAIie,OAAJ,CAAV,KAA2B,KAAjD,EAAwD;EACtDI,MAAAA,MAAM,CAACjY,EAAE,GAAG,CAAN,CAAN,GAAiBpG,CAAC,IAAIqe,MAAM,CAACjY,EAAE,GAAG,CAAN,CAAN,IAAkB,EAAtB,CAAlB;EACD,KAFD,MAEO,IAAIpG,CAAC,IAAIA,CAAC,CAACzD,MAAF,GAAW,CAApB,EAAuB;EAC5B;EACA;EACA6hB,MAAAA,SAAS,CAAC1O,IAAV,CAAe1P,CAAf;EACAqe,MAAAA,MAAM,CAACjY,EAAD,CAAN,GAAa,EAAb;EACD;EACF,GAtDuD;;;EAyDxD,MAAIgY,SAAS,CAAC7hB,MAAV,KAAqB,CAAzB,EAA4B;EAC1B,WAAO,CAACiD,IAAD,CAAP;EACD,GA3DuD;EA4DxD;;;EAGA,OAAK,IAAIiH,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG2X,SAAS,CAAC7hB,MAAlC,EAA0CkK,GAAG,IAAI,CAAjD,EAAoD;EAClD,QAAI8X,EAAE,GAAGH,SAAS,CAAC3X,GAAD,CAAT,CAAe6K,KAAf,CAAqBuM,eAArB,CAAT;;EAEA,QAAIU,EAAE,KAAK,IAAX,EAAiB;EACfH,MAAAA,SAAS,CAAC3X,GAAG,GAAG,CAAP,CAAT,IAAsB8X,EAAE,CAAC,CAAD,CAAxB;EACAH,MAAAA,SAAS,CAAC3X,GAAD,CAAT,GAAiB2X,SAAS,CAAC3X,GAAD,CAAT,CAAejE,OAAf,CAAuBqb,eAAvB,EAAwC,EAAxC,CAAjB;EACD;EACF;;EAED,SAAOO,SAAP;EACD,CAzED;;EA2EA,IAAII,YAAY,GAAGL,cAAnB;;EAEA,IAAIM,QAAQ,GAAG,IAAf;EACA,IAAIC,UAAU,GAAG,UAAjB;EACA,IAAIC,WAAW,GAAG,OAAlB;EACA,IAAIC,OAAO,GAAG,oBAAd;EACA,IAAIC,OAAO,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,EAAoC,GAApC,EAAyC,IAAzC,EAA+C,KAA/C,EAAsD,GAAtD,EAA2D,GAA3D,EAAgE,GAAhE,EAAqE,GAArE,EAA0E,GAA1E,EAA+E,GAA/E,EAAoF,GAApF,CAAd;EACAA,OAAO,GAAGA,OAAO,CAAClc,MAAR,CAAe,UAAUvC,CAAV,EAAaJ,CAAb,EAAgB;EACvCI,EAAAA,CAAC,CAACJ,CAAD,CAAD,GAAO,IAAP;EACA,SAAOI,CAAP;EACD,CAHS,EAGP,EAHO,CAAV;;EAKA,IAAIkF,SAAS,GAAG,SAASA,SAAT,CAAmB/F,GAAnB,EAAwB;EACtC;EACA,MAAI,sBAAsB0C,IAAtB,CAA2B1C,GAA3B,MAAoC,IAAxC,EAA8C;EAC5C,WAAO,KAAP;EACD,GAJqC;;;EAOtC,MAAI8H,GAAG,GAAG,6DAAV;;EAEA,MAAIA,GAAG,CAACpF,IAAJ,CAAS1C,GAAT,MAAkB,IAAtB,EAA4B;EAC1B,WAAO,IAAP;EACD,GAXqC;;;EActC,MAAIuf,IAAI,GAAG,kDAAX;;EAEA,MAAIA,IAAI,CAAC7c,IAAL,CAAU1C,GAAV,MAAmB,IAAvB,EAA6B;EAC3B,WAAO,IAAP;EACD,GAlBqC;EAmBtC;EACA;EACA;EACA;;;EAGA,SAAO,KAAP;EACD,CA1BD;;;EA6BA,IAAIwf,cAAc,GAAG,SAASA,cAAT,CAAwB7R,GAAxB,EAA6B;EAChD,OAAK,IAAI5Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Q,GAAG,CAAC3Q,MAAJ,GAAa,CAAjC,EAAoCD,CAAC,EAArC,EAAyC;EACvC,QAAIsiB,OAAO,CAAC3c,IAAR,CAAaiL,GAAG,CAAC5Q,CAAD,CAAhB,CAAJ,EAA0B;EACxB4Q,MAAAA,GAAG,CAAC5Q,CAAC,GAAG,CAAL,CAAH,IAAc4Q,GAAG,CAAC5Q,CAAD,CAAH,GAAS4Q,GAAG,CAAC5Q,CAAC,GAAG,CAAL,CAA1B;EACA4Q,MAAAA,GAAG,CAAC5Q,CAAD,CAAH,GAAS,IAAT;EACA4Q,MAAAA,GAAG,CAAC5Q,CAAC,GAAG,CAAL,CAAH,GAAa,IAAb;EACD;EACF;;EAED,SAAO4Q,GAAP;EACD,CAVD;;EAYA,IAAI8R,YAAY,GAAG,SAASA,YAAT,CAAsBvb,IAAtB,EAA4B;EAC7C,MAAIyJ,GAAG,GAAG,EAAV,CAD6C;;EAG7C,MAAI+R,OAAO,GAAGxb,IAAI,CAACpE,KAAL,CAAW,OAAX,CAAd;EACA,MAAI6f,SAAS,GAAG,GAAhB;EACA,MAAI5b,KAAK,GAAGG,IAAI,CAAC6N,KAAL,CAAW,OAAX,CAAZ;;EAEA,MAAIhO,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;EACrB4b,IAAAA,SAAS,GAAG5b,KAAZ;EACD;;EAED,OAAK,IAAI7F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwhB,OAAO,CAAC1iB,MAA5B,EAAoCkB,CAAC,EAArC,EAAyC;EACvC,QAAIA,CAAC,KAAKwhB,OAAO,CAAC1iB,MAAR,GAAiB,CAA3B,EAA8B;EAC5B2Q,MAAAA,GAAG,CAACwC,IAAJ,CAASuP,OAAO,CAACxhB,CAAD,CAAhB;EACD,KAFD,MAEO;EACLyP,MAAAA,GAAG,CAACwC,IAAJ,CAASuP,OAAO,CAACxhB,CAAD,CAAP,GAAayhB,SAAtB;EACD;EACF;;EAED,SAAOhS,GAAP;EACD,CApBD;;EAsBA,IAAIiS,SAAS,GAAG,SAASlS,OAAT,CAAiBC,GAAjB,EAAsB;EACpC,SAAOtQ,MAAM,CAACd,SAAP,CAAiB4Q,QAAjB,CAA0BrO,IAA1B,CAA+B6O,GAA/B,MAAwC,gBAA/C;EACD,CAFD;;;EAKA,IAAIkS,UAAU,GAAG,SAASA,UAAT,CAAoB7f,GAApB,EAAyB;EACxC,MAAIP,MAAM,GAAG,EAAb;EACA,MAAIkO,GAAG,GAAG,EAAV,CAFwC;;EAIxC3N,EAAAA,GAAG,GAAGA,GAAG,IAAI,EAAb;;EAEA,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;EAC3BA,IAAAA,GAAG,GAAGwP,MAAM,CAACxP,GAAD,CAAZ;EACD;;EAED,MAAI4f,SAAS,CAAC5f,GAAD,CAAb,EAAoB;EAClB,WAAOA,GAAP;EACD;;EAED,MAAIyd,KAAK,GAAGzd,GAAG,CAACF,KAAJ,CAAUsf,WAAV,CAAZ;;EAEA,OAAK,IAAIriB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0gB,KAAK,CAACzgB,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;EACrC;EACA,QAAIgJ,SAAS,CAAC0X,KAAK,CAAC1gB,CAAD,CAAN,CAAT,KAAwB,IAA5B,EAAkC;EAChC4Q,MAAAA,GAAG,GAAGA,GAAG,CAACoD,MAAJ,CAAW0O,YAAY,CAAChC,KAAK,CAAC1gB,CAAD,CAAN,CAAvB,CAAN;EACA;EACD;;EAED4Q,IAAAA,GAAG,CAACwC,IAAJ,CAASsN,KAAK,CAAC1gB,CAAD,CAAd;EACD,GAxBuC;;;EA2BxC,MAAI+iB,KAAK,GAAG,EAAZ;;EAEA,OAAK,IAAIjZ,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAG8G,GAAG,CAAC3Q,MAA1B,EAAkC6J,EAAE,EAApC,EAAwC;EACtC,QAAI3C,IAAI,GAAGyJ,GAAG,CAAC9G,EAAD,CAAd,CADsC;;EAGtC,QAAIqY,QAAQ,CAACxc,IAAT,CAAcwB,IAAd,MAAwB,IAAxB,IAAgCob,OAAO,CAAClX,cAAR,CAAuBlE,IAAvB,MAAiC,KAAjE,IAA0Eib,UAAU,CAACzc,IAAX,CAAgBwB,IAAhB,MAA0B,KAAxG,EAA+G;EAC7G;EACA,UAAIzE,MAAM,CAACzC,MAAP,GAAgB,CAApB,EAAuB;EACrByC,QAAAA,MAAM,CAACA,MAAM,CAACzC,MAAP,GAAgB,CAAjB,CAAN,IAA6B8iB,KAA7B;EACArgB,QAAAA,MAAM,CAAC0Q,IAAP,CAAYjM,IAAZ;EACD,OAHD,MAGO;EACL;EACAzE,QAAAA,MAAM,CAAC0Q,IAAP,CAAY2P,KAAK,GAAG5b,IAApB;EACD;;EAED4b,MAAAA,KAAK,GAAG,EAAR;EACD,KAXD,MAWO;EACLA,MAAAA,KAAK,IAAI5b,IAAT;EACD;EACF,GA9CuC;;;EAiDxC,MAAI4b,KAAJ,EAAW;EACT,QAAIrgB,MAAM,CAACzC,MAAP,KAAkB,CAAtB,EAAyB;EACvByC,MAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,EAAZ;EACD;;EAEDA,IAAAA,MAAM,CAACA,MAAM,CAACzC,MAAP,GAAgB,CAAjB,CAAN,IAA6B8iB,KAA7B,CALS;EAMV,GAvDuC;;;EA0DxCrgB,EAAAA,MAAM,GAAG+f,cAAc,CAAC/f,MAAD,CAAvB,CA1DwC;;EA4DxCA,EAAAA,MAAM,GAAGA,MAAM,CAACwR,MAAP,CAAc,UAAU3P,CAAV,EAAa;EAClC,WAAOA,CAAP;EACD,GAFQ,CAAT;EAGA,SAAO7B,MAAP;EACD,CAhED;;EAkEA,IAAIsgB,QAAQ,GAAGF,UAAf;;EAEA,IAAInS,OAAO,GAAG,SAASA,OAAT,CAAiBC,GAAjB,EAAsB;EAClC,SAAOtQ,MAAM,CAACd,SAAP,CAAiB4Q,QAAjB,CAA0BrO,IAA1B,CAA+B6O,GAA/B,MAAwC,gBAA/C;EACD,CAFD;EAGA;;;EAGA,IAAIqS,QAAQ,GAAG,SAASA,QAAT,GAAoB;EACjC,MAAI/f,IAAI,GAAGN,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,MAAI+J,KAAK,GAAG/J,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,GAAuB2C,SAAS,CAAC,CAAD,CAAhC,GAAsC2H,SAAlD;EACA,MAAI0I,IAAI,GAAGrQ,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,GAAuB2C,SAAS,CAAC,CAAD,CAAhC,GAAsC2H,SAAjD;EACA,MAAIuX,SAAS,GAAG,IAAhB,CAJiC;;EAMjC,MAAI,OAAO5e,IAAP,KAAgB,QAApB,EAA8B;EAC5B,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;EAC5BA,MAAAA,IAAI,GAAGuP,MAAM,CAACvP,IAAD,CAAb;EACD,KAFD,MAEO,IAAIyN,OAAO,CAACzN,IAAD,CAAX,EAAmB;EACxB4e,MAAAA,SAAS,GAAG5e,IAAZ;EACD;EACF,GAZgC;;;EAejC4e,EAAAA,SAAS,GAAGA,SAAS,IAAII,YAAY,CAAChf,IAAD,EAAOyJ,KAAP,CAArC;EACAmV,EAAAA,SAAS,GAAGA,SAAS,CAACpO,GAAV,CAAc,UAAUzQ,GAAV,EAAe;EACvC,WAAO+f,QAAQ,CAAC/f,GAAD,CAAf;EACD,GAFW,CAAZ,CAhBiC;;EAoBjCgQ,EAAAA,IAAI,GAAGA,IAAI,IAAI,IAAI6N,MAAJ,EAAf;EACA,MAAIoC,OAAO,GAAGpB,SAAS,CAACpO,GAAV,CAAc,UAAUX,KAAV,EAAiB;EAC3CA,IAAAA,KAAK,GAAGA,KAAK,CAACW,GAAN,CAAU,UAAUzQ,GAAV,EAAe;EAC/B,UAAIgM,IAAI,GAAG,IAAI6D,MAAJ,CAAW7P,GAAX,CAAX;EACAgQ,MAAAA,IAAI,CAACzB,GAAL,CAASvC,IAAT;EACA,aAAOA,IAAP;EACD,KAJO,CAAR,CAD2C;;EAO3C+R,IAAAA,UAAU,CAACjO,KAAD,CAAV,CAP2C;;;EAS3C,QAAIxR,CAAC,GAAG,IAAIif,QAAJ,CAAazN,KAAK,CAAC,CAAD,CAAL,CAAS9H,EAAtB,EAA0B8H,KAAK,CAAC9S,MAAhC,EAAwCgT,IAAxC,CAAR;EACA1R,IAAAA,CAAC,CAACyR,KAAF,CAAQD,KAAR,GAAgBA,KAAhB;EACA,WAAOxR,CAAP;EACD,GAZa,CAAd,CArBiC;;EAmCjC,SAAO2hB,OAAP;EACD,CApCD;;EAsCA,IAAIC,YAAY,GAAGF,QAAnB;;EAEA,IAAIG,QAAQ,GAAG,SAASA,QAAT,CAAkBzT,IAAlB,EAAwBhD,KAAxB,EAA+B;EAC5C,MAAIsG,IAAI,GAAG,IAAI6N,MAAJ,EAAX;EACA,MAAIoC,OAAO,GAAGvT,IAAI,CAAC+D,GAAL,CAAS,UAAUnS,CAAV,EAAa0C,CAAb,EAAgB;EACrC,QAAI8O,KAAK,GAAGxR,CAAC,CAACwR,KAAF,CAAQW,GAAR,CAAY,UAAUvS,CAAV,EAAanB,CAAb,EAAgB;EACtC,UAAIiP,IAAI,GAAG,IAAI6D,MAAJ,CAAW3R,CAAC,CAAC+B,IAAb,CAAX;EACA+L,MAAAA,IAAI,CAACnI,GAAL,GAAW3F,CAAC,CAAC2F,GAAF,KAAUyD,SAAV,GAAsBpJ,CAAC,CAAC2F,GAAxB,GAA8B,EAAzC;;EAEA,UAAI3F,CAAC,CAAC4F,IAAF,KAAWwD,SAAf,EAA0B;EACxBpJ,QAAAA,CAAC,CAAC4F,IAAF,GAAS,GAAT,CADwB;;EAGxB,YAAI/G,CAAC,IAAIuB,CAAC,CAACwR,KAAF,CAAQ9S,MAAR,GAAiB,CAA1B,EAA6B;EAC3BkB,UAAAA,CAAC,CAAC4F,IAAF,GAAS,IAAT;;EAEA,cAAI9C,CAAC,IAAI1C,CAAC,CAACwR,KAAF,CAAQ9S,MAAR,GAAiB,CAA1B,EAA6B;EAC3BkB,YAAAA,CAAC,CAAC4F,IAAF,GAAS,GAAT;EACD;EACF;EACF;;EAEDkI,MAAAA,IAAI,CAAClI,IAAL,GAAY5F,CAAC,CAAC4F,IAAF,KAAWwD,SAAX,GAAuBpJ,CAAC,CAAC4F,IAAzB,GAAgC,GAA5C;;EAEA,UAAI5F,CAAC,CAACwK,IAAN,EAAY;EACVxK,QAAAA,CAAC,CAACwK,IAAF,CAAO1G,OAAP,CAAe,UAAUyG,GAAV,EAAe;EAC5B,iBAAOuD,IAAI,CAACvD,GAAL,CAASA,GAAT,EAAc,EAAd,EAAkBiB,KAAlB,CAAP;EACD,SAFD;EAGD;;EAEDsG,MAAAA,IAAI,CAACzB,GAAL,CAASvC,IAAT;EACA,aAAOA,IAAP;EACD,KA1BW,CAAZ,CADqC;;EA6BrC+R,IAAAA,UAAU,CAACjO,KAAD,CAAV,CA7BqC;;;EA+BrC,WAAO,IAAIyN,QAAJ,CAAazN,KAAK,CAAC,CAAD,CAAL,CAAS9H,EAAtB,EAA0B8H,KAAK,CAAC9S,MAAhC,EAAwCgT,IAAxC,CAAP;EACD,GAhCa,CAAd;EAiCA,SAAOiQ,OAAP;EACD,CApCD;;EAsCA,IAAIG,UAAU,GAAGD,QAAjB;EAEA,IAAIE,QAAQ,GAAG,SAAf;EAEA,IAAIC,MAAM,GAAG,CAAC,QAAD,EAAW,OAAX,EAAoB,cAApB,CAAb;EACA,IAAIC,OAAO,GAAG;EACZC,EAAAA,IAAI,EAAE;EACJnS,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,QAAtB;EADF,GADM;EAIZ;EACAoS,EAAAA,QAAQ,EAAE;EACRrU,IAAAA,GAAG,EAAE,MADG;EAERiC,IAAAA,IAAI,EAAE;EAFE,GALE;EASZ;EACAnD,EAAAA,UAAU,EAAE;EACVkB,IAAAA,GAAG,EAAE;EADK,GAVA;EAaZ;EACAsU,EAAAA,MAAM,EAAE;EACNtU,IAAAA,GAAG,EAAE,CAAC,YAAD,EAAe,UAAf,CADC;EAENiC,IAAAA,IAAI,EAAE,CAAC,OAAD,EAAU,cAAV,EAA0B,MAA1B;EAFA,GAdI;EAkBZsS,EAAAA,SAAS,EAAE;EACTvU,IAAAA,GAAG,EAAE;EADI,GAlBC;EAqBZwU,EAAAA,QAAQ,EAAE;EACRxU,IAAAA,GAAG,EAAE,WADG;EAERiC,IAAAA,IAAI,EAAE,CAAC,YAAD,EAAe,UAAf;EAFE,GArBE;EAyBZwS,EAAAA,UAAU,EAAE;EACVzU,IAAAA,GAAG,EAAE,WADK;EAEViC,IAAAA,IAAI,EAAE,CAAC,UAAD,EAAa,UAAb;EAFI,GAzBA;EA6BZyS,EAAAA,QAAQ,EAAE;EACR1U,IAAAA,GAAG,EAAE,QADG;EAERiC,IAAAA,IAAI,EAAE,CAAC,WAAD;EAFE,GA7BE;EAiCZ0S,EAAAA,QAAQ,EAAE;EACR3U,IAAAA,GAAG,EAAE,QADG;EAERiC,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,UAAd;EAFE,GAjCE;EAqCZ2S,EAAAA,SAAS,EAAE;EACT5U,IAAAA,GAAG,EAAE,MADI;EAETiC,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,UAAd,EAA0B,OAA1B;EAFG,GArCC;EAyCZ;EACA4S,EAAAA,KAAK,EAAE;EACL7U,IAAAA,GAAG,EAAE,UADA;EAELiC,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,cAAX;EAFD,GA1CK;EA8CZ6S,EAAAA,OAAO,EAAE;EACP9U,IAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,YAAV,CADE;EAEPiC,IAAAA,IAAI,EAAE,CAAC,MAAD;EAFC,GA9CG;EAkDZ8S,EAAAA,IAAI,EAAE;EACJ/U,IAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,YAAV,CADD;EAEJiC,IAAAA,IAAI,EAAE,CAAC,SAAD;EAFF,GAlDM;EAsDZ+S,EAAAA,MAAM,EAAE;EACNhV,IAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,YAAV;EADC,GAtDI;EAyDZiV,EAAAA,OAAO,EAAE;EACPjV,IAAAA,GAAG,EAAE;EADE,GAzDG;EA4DZ;EACAkV,EAAAA,YAAY,EAAE;EACZlV,IAAAA,GAAG,EAAE,CAAC,UAAD,EAAa,YAAb,CADO;EAEZiC,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,OAAX;EAFM,GA7DF;EAiEZkT,EAAAA,UAAU,EAAE;EACVnV,IAAAA,GAAG,EAAE;EADK,GAjEA;EAoEZoV,EAAAA,MAAM,EAAE;EACNpV,IAAAA,GAAG,EAAE;EADC,GApEI;EAuEZqV,EAAAA,OAAO,EAAE;EACPrV,IAAAA,GAAG,EAAE;EADE,GAvEG;EA0EZ;EACAvC,EAAAA,MAAM,EAAE;EACNuC,IAAAA,GAAG,EAAE,MADC;EAENiC,IAAAA,IAAI,EAAE,CAAC,UAAD;EAFA,GA3EI;EA+EZ;EACAqT,EAAAA,WAAW,EAAE;EACXtV,IAAAA,GAAG,EAAE;EADM,GAhFD;EAmFZuV,EAAAA,OAAO,EAAE;EACPvV,IAAAA,GAAG,EAAE,MADE;EAEPiC,IAAAA,IAAI,EAAEiS;EAFC,GAnFG;EAuFZ;EACA/V,EAAAA,KAAK,EAAE;EACL6B,IAAAA,GAAG,EAAE,MADA;EAELiC,IAAAA,IAAI,EAAEiS;EAFD,GAxFK;EA4FZ;EACAsB,EAAAA,QAAQ,EAAE;EACRxV,IAAAA,GAAG,EAAE,MADG;EAERiC,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,OAAX;EAFE,GA7FE;EAiGZ;EACAwT,EAAAA,IAAI,EAAE;EACJzV,IAAAA,GAAG,EAAE,MADD;EAEJiC,IAAAA,IAAI,EAAEiS;EAFF,GAlGM;EAsGZ;EACAwB,EAAAA,OAAO,EAAE;EACP1V,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,YAAT,CADE;EAEPiC,IAAAA,IAAI,EAAEiS;EAFC,GAvGG;EA2GZ;EACAxU,EAAAA,UAAU,EAAE;EACVM,IAAAA,GAAG,EAAE,MADK;;EAAA;EA5GA,CAAd;EAkHA,IAAI2V,OAAO,GAAG;EACZhY,EAAAA,IAAI,EAAE;EACJsE,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,QAAtB,EAAgC,OAAhC;EADF,GADM;EAIZ;EACAhE,EAAAA,YAAY,EAAE;EACZ+B,IAAAA,GAAG,EAAE,MADO;EAEZiC,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,aAAd;EAFM,GALF;EASZ;EACApE,EAAAA,UAAU,EAAE;EACVmC,IAAAA,GAAG,EAAE,cADK;EAEViC,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,QAAd;EAFI,GAVA;EAcZ;EACA2T,EAAAA,UAAU,EAAE;EACV5V,IAAAA,GAAG,EAAE,YADK;;EAAA,GAfA;EAmBZ;EACAhC,EAAAA,MAAM,EAAE;EACNgC,IAAAA,GAAG,EAAE,cADC;EAENiC,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,QAAd,EAAwB,aAAxB;EAFA,GApBI;EAwBZ;EACAlE,EAAAA,SAAS,EAAE;EACTiC,IAAAA,GAAG,EAAE,MADI;EAETiC,IAAAA,IAAI,EAAE,CAAC,aAAD;EAFG,GAzBC;EA6BZ;EACA4T,EAAAA,WAAW,EAAE;EACX7V,IAAAA,GAAG,EAAE;EADM,GA9BD;EAiCZ;EACA8V,EAAAA,MAAM,EAAE;EACN9V,IAAAA,GAAG,EAAE;EADC,GAlCI;EAqCZ;EACA+V,EAAAA,KAAK,EAAE;EACL/V,IAAAA,GAAG,EAAE,MADA;EAELiC,IAAAA,IAAI,EAAE,CAAC,YAAD;EAFD,GAtCK;EA0CZ;EACA+T,EAAAA,YAAY,EAAE;EACZhW,IAAAA,GAAG,EAAE,MADO;EAEZiC,IAAAA,IAAI,EAAE;EAFM,GA3CF;EA+CZgU,EAAAA,UAAU,EAAE;EACVjW,IAAAA,GAAG,EAAE;EADK,GA/CA;EAkDZ;EACA9B,EAAAA,UAAU,EAAE;EACV8B,IAAAA,GAAG,EAAE;EADK,GAnDA;EAsDZ;EACAkW,EAAAA,WAAW,EAAE;EACXlW,IAAAA,GAAG,EAAE;EADM,GAvDD;EA0DZ;EACAmW,EAAAA,QAAQ,EAAE;EACRnW,IAAAA,GAAG,EAAE;EADG,GA3DE;EA8DZ;EACAP,EAAAA,SAAS,EAAE;EACTwC,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,OAAtB;EADG;EA/DC,CAAd;EAoEA,IAAImU,MAAM,GAAG;EACXC,EAAAA,KAAK,EAAE;EACLpU,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,QAAtB;EADD,GADI;EAIXqU,EAAAA,OAAO,EAAE;EACPtW,IAAAA,GAAG,EAAE,OADE;EAEPiC,IAAAA,IAAI,EAAE,CAAC,UAAD;EAFC,GAJE;EAQXsU,EAAAA,QAAQ,EAAE;EACRvW,IAAAA,GAAG,EAAE,OADG;EAERiC,IAAAA,IAAI,EAAE,CAAC,SAAD;EAFE,GARC;EAYXuU,EAAAA,QAAQ,EAAE;EACRxW,IAAAA,GAAG,EAAE,OADG;EAERiC,IAAAA,IAAI,EAAE,CAAC,MAAD;EAFE,GAZC;EAgBXwU,EAAAA,YAAY,EAAE;EACZzW,IAAAA,GAAG,EAAE,UADO;EAEZ;EACAiC,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,WAAZ;EAHM,GAhBH;EAqBXyU,EAAAA,SAAS,EAAE;EACT1W,IAAAA,GAAG,EAAE,OADI;EAETiC,IAAAA,IAAI,EAAE,CAAC,cAAD;EAFG,GArBA;EAyBX0U,EAAAA,YAAY,EAAE;EACZ3W,IAAAA,GAAG,EAAE,OADO;EAEZiC,IAAAA,IAAI,EAAE,CAAC,WAAD;EAFM,GAzBH;EA6BX2U,EAAAA,KAAK,EAAE;EACL5W,IAAAA,GAAG,EAAE;EADA,GA7BI;EAgCX6W,EAAAA,OAAO,EAAE;EACP7W,IAAAA,GAAG,EAAE;EADE;EAhCE,CAAb;EAqCA,IAAInE,QAAQ,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,WAAjB,EAA8B,QAA9B,EAAwC,OAAxC,EAAiD,cAAjD,CAAf;EACA,IAAIib,MAAM,GAAG;EACX;EACAC,EAAAA,SAAS,EAAE;EACT9U,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,QAAjB,EAA2B,OAA3B;EADG,GAFA;EAKX;EACA+U,EAAAA,UAAU,EAAE;EACVhX,IAAAA,GAAG,EAAE,CAAC,WAAD;EADK,GAND;EASX;EACAiX,EAAAA,WAAW,EAAE;EACXjX,IAAAA,GAAG,EAAE,CAAC,WAAD;EADM,GAVF;EAaX;EACAkX,EAAAA,WAAW,EAAE;EACXlX,IAAAA,GAAG,EAAE,CAAC,WAAD,CADM;EAEXiC,IAAAA,IAAI,EAAE,CAAC,aAAD;EAFK,GAdF;EAkBXkV,EAAAA,WAAW,EAAE;EACXnX,IAAAA,GAAG,EAAE,CAAC,aAAD;EADM,GAlBF;EAqBXoX,EAAAA,MAAM,EAAE;EACNnV,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,WAAjB,EAA8B,OAA9B;EADA,GArBG;EAwBX;EACA;EACAoV,EAAAA,IAAI,EAAE;EACJpV,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,QAAT,EAAmB,aAAnB,EAAkC,WAAlC;EADF,GA1BK;EA6BXqV,EAAAA,KAAK,EAAE;EACLtX,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,UAAT,CADA;EAELiC,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,SAAT,EAAoB,MAApB;EAFD,GA7BI;EAiCXsV,EAAAA,OAAO,EAAE;EACPvX,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT;EADE,GAjCE;EAoCX;EACAwX,EAAAA,QAAQ,EAAE;EACRxX,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT,CADG;EAERiC,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,YAAd;EAFE,GArCC;EAyCX;EACAwV,EAAAA,IAAI,EAAE;EACJzX,IAAAA,GAAG,EAAE,CAAC,MAAD,CADD;EAEJiC,IAAAA,IAAI,EAAE,CAAC,WAAD;EAFF,GA1CK;EA8CX;EACAyV,EAAAA,UAAU,EAAE;EACVzV,IAAAA,IAAI,EAAEpG;EADI,GA/CD;EAkDX8b,EAAAA,WAAW,EAAE;EACX1V,IAAAA,IAAI,EAAEpG;EADK,GAlDF;EAqDX+b,EAAAA,WAAW,EAAE;EACX3V,IAAAA,IAAI,EAAEpG;EADK,GArDF;EAwDX;EACAgc,EAAAA,YAAY,EAAE;EACZ5V,IAAAA,IAAI,EAAE,CAAC,YAAD;EADM,GAzDH;EA4DX;EACA6V,EAAAA,QAAQ,EAAE;EACR9X,IAAAA,GAAG,EAAE,CAAC,MAAD;EADG,GA7DC;EAgEX;EACA+X,EAAAA,UAAU,EAAE;EACV9V,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,MAAtB,EAA8B,QAA9B;EADI,GAjED;EAoEX;EACA3C,EAAAA,YAAY,EAAE,EArEH;EAsEX;EACA0Y,EAAAA,GAAG,EAAE;EACH/V,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,aAAZ,EAA2B,MAA3B,EAAmC,WAAnC,EAAgD,OAAhD,EAAyD,WAAzD,EAAsE,OAAtE;EADH,GAvEM;EA0EXgW,EAAAA,WAAW,EAAE;EACXhW,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C,EAAuD,OAAvD;EADK,GA1EF;EA6EXiW,EAAAA,OAAO,EAAE,EA7EE;EA8EXC,EAAAA,SAAS,EAAE;EACTnY,IAAAA,GAAG,EAAE,CAAC,MAAD,CADI;EAETiC,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,OAA1C;EAFG,GA9EA;EAkFXmW,EAAAA,KAAK,EAAE;EACLnW,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C;EADD,GAlFI;EAqFXoW,EAAAA,QAAQ,EAAE;EACRpW,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C;EADE,GArFC;EAwFXqW,EAAAA,KAAK,EAAE;EACLrW,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C;EADD,GAxFI;EA2FX;EACAlD,EAAAA,OAAO,EAAE;EACPkD,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,cAAX;EADC,GA5FE;EA+FXrE,EAAAA,QAAQ,EAAE;EACRqE,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,OAAtB;EADE,GA/FC;EAkGX;EACAsW,EAAAA,SAAS,EAAE;EACTtW,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,MAAtB,EAA8B,OAA9B;EADG;EAnGA,CAAb;;EAyGA,IAAIuW,QAAQ,GAAG;EACbpE,EAAAA,IAAI,EAAE,MADO;EAEbzW,EAAAA,IAAI,EAAE,OAFO;EAGbC,EAAAA,QAAQ,EAAE,OAHG;EAIbyZ,EAAAA,IAAI,EAAE,KAJO;EAKbhB,EAAAA,KAAK,EAAE,KALM;EAMbU,EAAAA,SAAS,EAAE,SANE;EAOba,EAAAA,WAAW,EAAE,MAPA;EAQbD,EAAAA,WAAW,EAAE,MARA;EASbD,EAAAA,UAAU,EAAE,MATC;EAUbN,EAAAA,MAAM,EAAE;EAVK,CAAf;EAYA;;EAEA,IAAIqB,SAAS,GAAG,SAASA,SAAT,CAAmBnc,IAAnB,EAAyB;EACvCrL,EAAAA,MAAM,CAAC0E,IAAP,CAAY2G,IAAZ,EAAkB1G,OAAlB,CAA0B,UAAUhB,CAAV,EAAa;EACrC;EACA,QAAI0H,IAAI,CAAC1H,CAAD,CAAJ,CAAQ8jB,KAAZ,EAAmB;EACjBpc,MAAAA,IAAI,CAAC1H,CAAD,CAAJ,CAAQ8jB,KAAR,GAAgBpc,IAAI,CAAC1H,CAAD,CAAJ,CAAQ8jB,KAAxB;EACA;EACD,KALoC;;;EAQrC,QAAIF,QAAQ,CAAC5jB,CAAD,CAAZ,EAAiB;EACf0H,MAAAA,IAAI,CAAC1H,CAAD,CAAJ,CAAQ8jB,KAAR,GAAgBF,QAAQ,CAAC5jB,CAAD,CAAxB;EACA;EACD;;EAED0H,IAAAA,IAAI,CAAC1H,CAAD,CAAJ,CAAQoL,GAAR,CAAYnD,IAAZ,CAAiB,UAAU1H,CAAV,EAAa;EAC5B,UAAIqjB,QAAQ,CAACrjB,CAAD,CAAZ,EAAiB;EACfmH,QAAAA,IAAI,CAAC1H,CAAD,CAAJ,CAAQ8jB,KAAR,GAAgBF,QAAQ,CAACrjB,CAAD,CAAxB;EACA,eAAO,IAAP;EACD;;EAED,aAAO,KAAP;EACD,KAPD;EAQD,GArBD;EAsBA,SAAOmH,IAAP;EACD,CAxBD;;EA0BA,IAAIqc,MAAM,GAAGF,SAAb;;EAEA,IAAIG,QAAQ,GAAG,SAASpS,MAAT,CAAgBjF,GAAhB,EAAqB;EAClC,SAAOA,GAAG,CAACsD,MAAJ,CAAW,UAAUxP,CAAV,EAAa1E,CAAb,EAAgBwD,CAAhB,EAAmB;EACnC,WAAOA,CAAC,CAAC8E,OAAF,CAAU5D,CAAV,MAAiB1E,CAAxB;EACD,GAFM,CAAP;EAGD,CAJD;;;EAOA,IAAIkoB,QAAQ,GAAG,SAASA,QAAT,CAAkBvc,IAAlB,EAAwB;EACrCrL,EAAAA,MAAM,CAAC0E,IAAP,CAAY2G,IAAZ,EAAkB1G,OAAlB,CAA0B,UAAUhB,CAAV,EAAa;EACrC,QAAIyH,GAAG,GAAGC,IAAI,CAAC1H,CAAD,CAAd;EACA,QAAImQ,GAAG,GAAG1I,GAAG,CAAC2D,GAAJ,CAAQpP,MAAlB;;EAEA,SAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoU,GAApB,EAAyBpU,CAAC,EAA1B,EAA8B;EAC5B,UAAIoR,IAAI,GAAG1F,GAAG,CAAC2D,GAAJ,CAAQrP,CAAR,CAAX;;EAEA,UAAI2L,IAAI,CAACyF,IAAD,CAAR,EAAgB;EACd1F,QAAAA,GAAG,CAAC2D,GAAJ,GAAU3D,GAAG,CAAC2D,GAAJ,CAAQ2E,MAAR,CAAerI,IAAI,CAACyF,IAAD,CAAJ,CAAW/B,GAA1B,CAAV;EACD;EACF,KAVoC;;;EAarC3D,IAAAA,GAAG,CAAC2D,GAAJ,GAAU4Y,QAAQ,CAACvc,GAAG,CAAC2D,GAAL,CAAlB;EACD,GAdD;EAeA,SAAO1D,IAAP;EACD,CAjBD;;EAmBA,IAAIwc,IAAI,GAAGD,QAAX;;EAEA,IAAIE,QAAQ,GAAG,SAASvS,MAAT,CAAgBjF,GAAhB,EAAqB;EAClC,SAAOA,GAAG,CAACsD,MAAJ,CAAW,UAAUxP,CAAV,EAAa1E,CAAb,EAAgBwD,CAAhB,EAAmB;EACnC,WAAOA,CAAC,CAAC8E,OAAF,CAAU5D,CAAV,MAAiB1E,CAAxB;EACD,GAFM,CAAP;EAGD,CAJD;EAKA;;;EAGA,IAAIqoB,SAAS,GAAG,SAASA,SAAT,CAAmB1c,IAAnB,EAAyB;EACvC,MAAI3G,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAY2G,IAAZ,CAAX;EACA3G,EAAAA,IAAI,CAACC,OAAL,CAAa,UAAUhB,CAAV,EAAa;EACxB,QAAIyH,GAAG,GAAGC,IAAI,CAAC1H,CAAD,CAAd;EACAyH,IAAAA,GAAG,CAAC4F,IAAJ,GAAW5F,GAAG,CAAC4F,IAAJ,IAAY,EAAvB;EACA5F,IAAAA,GAAG,CAAC2D,GAAJ,CAAQpK,OAAR,CAAgB,UAAUmM,IAAV,EAAgB;EAC9B,UAAIzF,IAAI,CAACyF,IAAD,CAAJ,IAAczF,IAAI,CAACyF,IAAD,CAAJ,CAAWE,IAA7B,EAAmC;EACjC;EACA,YAAIA,IAAI,GAAG,OAAO3F,IAAI,CAACyF,IAAD,CAAJ,CAAWE,IAAlB,KAA2B,QAA3B,GAAsC,CAAC3F,IAAI,CAACyF,IAAD,CAAJ,CAAW/B,GAAZ,CAAtC,GAAyD1D,IAAI,CAACyF,IAAD,CAAJ,CAAWE,IAAX,IAAmB,EAAvF;EACA5F,QAAAA,GAAG,CAAC4F,IAAJ,GAAW5F,GAAG,CAAC4F,IAAJ,CAAS0C,MAAT,CAAgB1C,IAAhB,CAAX;EACD;EACF,KAND,EAHwB;;EAWxB,SAAK,IAAItR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgF,IAAI,CAAC/E,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpC,UAAIQ,GAAG,GAAGwE,IAAI,CAAChF,CAAD,CAAd;;EAEA,UAAI2L,IAAI,CAACnL,GAAD,CAAJ,CAAU8Q,IAAV,CAAehJ,OAAf,CAAuBrE,CAAvB,MAA8B,CAAC,CAAnC,EAAsC;EACpCyH,QAAAA,GAAG,CAAC4F,IAAJ,CAAS8B,IAAT,CAAc5S,GAAd;EACD;EACF,KAjBuB;;;EAoBxBkL,IAAAA,GAAG,CAAC4F,IAAJ,GAAW8W,QAAQ,CAAC1c,GAAG,CAAC4F,IAAL,CAAnB;EACD,GArBD;EAsBA,SAAO3F,IAAP;EACD,CAzBD;;EA2BA,IAAI2c,KAAK,GAAGD,SAAZ;;EAGA,IAAIE,YAAY,GAAG,SAASA,YAAT,CAAsB5c,IAAtB,EAA4B;EAC7C,MAAI3G,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAY2G,IAAZ,CAAX;EACA3G,EAAAA,IAAI,CAACC,OAAL,CAAa,UAAUhB,CAAV,EAAa;EACxB,QAAIyH,GAAG,GAAGC,IAAI,CAAC1H,CAAD,CAAd;EACAyH,IAAAA,GAAG,CAAC0D,OAAJ,GAAc,EAAd,CAFwB;;EAIxB,SAAK,IAAIpP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgF,IAAI,CAAC/E,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpC,UAAI2L,IAAI,CAAC3G,IAAI,CAAChF,CAAD,CAAL,CAAJ,CAAcqP,GAAd,CAAkB/G,OAAlB,CAA0BrE,CAA1B,MAAiC,CAAC,CAAtC,EAAyC;EACvCyH,QAAAA,GAAG,CAAC0D,OAAJ,CAAYgE,IAAZ,CAAiBpO,IAAI,CAAChF,CAAD,CAArB;EACD;EACF;EACF,GATD;EAUA,SAAO2L,IAAP;EACD,CAbD;;EAeA,IAAI6c,QAAQ,GAAGD,YAAf;;EAEA,IAAIE,QAAQ,GAAG,SAASA,QAAT,CAAkB9c,IAAlB,EAAwB;EACrC;EACArL,EAAAA,MAAM,CAAC0E,IAAP,CAAY2G,IAAZ,EAAkB1G,OAAlB,CAA0B,UAAUhB,CAAV,EAAa;EACrC,QAAIyH,GAAG,GAAGC,IAAI,CAAC1H,CAAD,CAAd,CADqC;;EAGrCyH,IAAAA,GAAG,CAAC2D,GAAJ,GAAU3D,GAAG,CAAC2D,GAAJ,IAAW,EAArB;;EAEA,QAAI,OAAO3D,GAAG,CAAC2D,GAAX,KAAmB,QAAvB,EAAiC;EAC/B3D,MAAAA,GAAG,CAAC2D,GAAJ,GAAU,CAAC3D,GAAG,CAAC2D,GAAL,CAAV;EACD,KAPoC;;;EAUrC3D,IAAAA,GAAG,CAAC4F,IAAJ,GAAW5F,GAAG,CAAC4F,IAAJ,IAAY,EAAvB;;EAEA,QAAI,OAAO5F,GAAG,CAAC4F,IAAX,KAAoB,QAAxB,EAAkC;EAChC5F,MAAAA,GAAG,CAAC4F,IAAJ,GAAW,CAAC5F,GAAG,CAAC4F,IAAL,CAAX;EACD;EACF,GAfD;EAgBA,SAAO3F,IAAP;EACD,CAnBD;;;EAsBA,IAAI+c,SAAS,GAAG,SAASA,SAAT,CAAmB/c,IAAnB,EAAyB;EACvC;EACAA,EAAAA,IAAI,GAAG8c,QAAQ,CAAC9c,IAAD,CAAf,CAFuC;;EAIvCA,EAAAA,IAAI,GAAGwc,IAAI,CAACxc,IAAD,CAAX,CAJuC;;EAMvCA,EAAAA,IAAI,GAAG2c,KAAK,CAAC3c,IAAD,CAAZ,CANuC;;EAQvCA,EAAAA,IAAI,GAAGqc,MAAM,CAACrc,IAAD,CAAb,CARuC;;EAUvCA,EAAAA,IAAI,GAAG6c,QAAQ,CAAC7c,IAAD,CAAf;EACA,SAAOA,IAAP;EACD,CAZD;;EAcA,IAAIgd,SAAS,GAAGD,SAAhB;;EAEA,IAAIE,KAAK,GAAG,SAASA,KAAT,CAAexpB,GAAf,EAAoBuM,IAApB,EAA0B;EACpCrL,EAAAA,MAAM,CAAC0E,IAAP,CAAY5F,GAAZ,EAAiB6F,OAAjB,CAAyB,UAAUhB,CAAV,EAAa;EACpC0H,IAAAA,IAAI,CAAC1H,CAAD,CAAJ,GAAU7E,GAAG,CAAC6E,CAAD,CAAb;EACD,GAFD;EAGD,CAJD;;EAMA,IAAI4kB,KAAK,GAAG,SAASA,KAAT,GAAiB;EAC3B,MAAIld,IAAI,GAAG,EAAX;EACAid,EAAAA,KAAK,CAACpF,OAAD,EAAU7X,IAAV,CAAL;EACAid,EAAAA,KAAK,CAAC5D,OAAD,EAAUrZ,IAAV,CAAL;EACAid,EAAAA,KAAK,CAACnD,MAAD,EAAS9Z,IAAT,CAAL;EACAid,EAAAA,KAAK,CAACzC,MAAD,EAASxa,IAAT,CAAL,CAL2B;;EAO3BA,EAAAA,IAAI,GAAGgd,SAAS,CAAChd,IAAD,CAAhB;EACA,SAAOA,IAAP;EACD,CATD;;EAWA,IAAIA,IAAI,GAAGkd,KAAK,EAAhB;EAEA,IAAIC,KAAK,GAAG;EACV,iBAAe,aADL;EAEV,iBAAe,cAFL;EAGV,kBAAgB,gBAHN;EAIV,WAAS,YAJC;EAKV,UAAQ,4EALE;EAMV,YAAU,0BANA;EAOV,eAAa,iEAPH;EAQV,eAAa,qBARH;EASV,iBAAe,wTATL;EAUV,YAAU,6CAVA;EAWV,cAAY,sBAXF;EAYV,kBAAgB,+CAZN;EAaV,YAAU,cAbA;EAcV,iBAAe,6KAdL;EAeV,kBAAgB,siBAfN;EAgBV,aAAW,gFAhBD;EAiBV,cAAY,izBAjBF;EAkBV,gBAAc,g9MAlBJ;EAmBV,WAAS,wXAnBC;EAoBV,eAAa,6bApBH;EAqBV,gBAAc,+8CArBJ;EAsBV,iBAAe,yiCAtBL;EAuBV,gBAAc,4lFAvBJ;EAwBV,UAAQ,mtBAxBE;EAyBV,kBAAgB,u1EAzBN;EA0BV,aAAW,gzBA1BD;EA2BV,gBAAc,qGA3BJ;EA4BV,cAAY,8SA5BF;EA6BV,UAAQ,uhGA7BE;EA8BV,aAAW,6yDA9BD;EA+BV,YAAU,shDA/BA;EAgCV,WAAS,inBAhCC;EAiCV,cAAY,07IAjCF;EAkCV,cAAY,yxHAlCF;EAmCV,aAAW,2DAnCD;EAoCV,WAAS,kGApCC;EAqCV,UAAQ,wDArCE;EAsCV,eAAa,6OAtCH;EAuCV,YAAU,uhBAvCA;EAwCV,UAAQ,kHAxCE;EAyCV,iBAAe,kgGAzCL;EA0CV,WAAS,0EA1CC;EA2CV,eAAa,2oGA3CH;EA4CV,gBAAc,qqDA5CJ;EA6CV,iBAAe,8KA7CL;EA8CV,cAAY,yKA9CF;EA+CV,gBAAc,4UA/CJ;EAgDV,YAAU,mjBAhDA;EAiDV,gBAAc;EAjDJ,CAAZ;;EAoDA,IAAIC,GAAG,GAAG,sCAAV;EAAA,IACIC,OAAO,GAAGD,GAAG,CAAChmB,KAAJ,CAAU,EAAV,EAAcsD,MAAd,CAAqB,UAAUjC,CAAV,EAAajD,CAAb,EAAgBa,CAAhB,EAAmB;EACpD,SAAOoC,CAAC,CAACjD,CAAD,CAAD,GAAOa,CAAP,EAAUoC,CAAjB;EACD,CAFa,EAEX,EAFW,CADd;EAAA,IAII6kB,WAAW,GAAG,SAASA,WAAT,CAAqB7kB,CAArB,EAAwB;EACxC,MAAI,KAAK,CAAL,KAAW2kB,GAAG,CAAC3kB,CAAD,CAAlB,EAAuB,OAAO2kB,GAAG,CAAC3kB,CAAD,CAAV;EACvB,MAAIjD,CAAC,GAAG,CAAR;EAAA,MACIa,CAAC,GAAG,EADR;EAAA,MAEIwC,CAAC,GAAG,EAFR;;EAIA,SAAOJ,CAAC,IAAIpC,CAAZ,EAAeoC,CAAC,IAAIpC,CAAL,EAAQb,CAAC,EAAT,EAAaa,CAAC,IAAI,EAAjC,EAAqC;;EAGrC,SAAOb,CAAC,EAAR,GAAa;EACX,QAAI+nB,EAAE,GAAG9kB,CAAC,GAAG,EAAb;;EAEAI,IAAAA,CAAC,GAAGiO,MAAM,CAAC0W,YAAP,CAAoB,CAACD,EAAE,GAAG,EAAL,GAAU,EAAV,GAAe,EAAhB,IAAsBA,EAA1C,IAAgD1kB,CAApD,EAAuDJ,CAAC,GAAG,CAACA,CAAC,GAAG8kB,EAAL,IAAW,EAAtE;EACD;;EAED,SAAO1kB,CAAP;EACD,CApBD;EAAA,IAqBI4kB,aAAa,GAAG,SAASA,aAAT,CAAuBhlB,CAAvB,EAA0B;EAC5C,MAAI,KAAK,CAAL,KAAW4kB,OAAO,CAAC5kB,CAAD,CAAtB,EAA2B,OAAO4kB,OAAO,CAAC5kB,CAAD,CAAd;EAC3B,MAAIjD,CAAC,GAAG,CAAR;EAAA,MACIa,CAAC,GAAG,CADR;EAAA,MAEIwC,CAAC,GAAG,EAFR;EAAA,MAGIF,CAAC,GAAG,CAHR;;EAKA,SAAOtC,CAAC,GAAGoC,CAAC,CAACnE,MAAb,EAAqBkB,CAAC,IAAIqD,CAAL,EAAQxC,CAAC,EAAT,EAAawC,CAAC,IAAI,EAAvC,EAA2C;;EAG3C,OAAK,IAAI6kB,EAAE,GAAGjlB,CAAC,CAACnE,MAAF,GAAW,CAAzB,EAA4BopB,EAAE,IAAI,CAAlC,EAAqCA,EAAE,IAAI/kB,CAAC,IAAI,EAAhD,EAAoD;EAClD,QAAI2a,EAAE,GAAG7a,CAAC,CAACklB,UAAF,CAAaD,EAAb,IAAmB,EAA5B;;EAEApK,IAAAA,EAAE,GAAG,EAAL,KAAYA,EAAE,IAAI,CAAlB,GAAsB9d,CAAC,IAAI8d,EAAE,GAAG3a,CAAhC;EACD;;EAED,SAAOnD,CAAP;EACD,CAtCD;;EAwCA,IAAIooB,QAAQ,GAAG;EACbN,EAAAA,WAAW,EAAEA,WADA;EAEbG,EAAAA,aAAa,EAAEA;EAFF,CAAf;EAAA,IAIII,OAAO,GAAG,SAASA,OAAT,CAAiBplB,CAAjB,EAAoB;EAChC,MAAIjD,CAAC,GAAG,IAAI6b,MAAJ,CAAW,yBAAX,CAAR;;EAEA,OAAK,IAAIhb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoC,CAAC,CAACqlB,KAAF,CAAQxpB,MAA5B,EAAoC+B,CAAC,EAArC,EAAyC;EACvC,QAAIwC,CAAC,GAAGrD,CAAC,CAACoc,IAAF,CAAOnZ,CAAC,CAACqlB,KAAF,CAAQznB,CAAR,CAAP,CAAR;;EAEA,QAAI,CAACwC,CAAL,EAAQ;EACNJ,MAAAA,CAAC,CAACslB,QAAF,GAAa1nB,CAAb;EACA;EACD;;EAEDoC,IAAAA,CAAC,CAACulB,IAAF,CAAOJ,QAAQ,CAACH,aAAT,CAAuB5kB,CAAC,CAAC,CAAD,CAAxB,CAAP,IAAuC+kB,QAAQ,CAACH,aAAT,CAAuB5kB,CAAC,CAAC,CAAD,CAAxB,CAAvC;EACD;;EAEDJ,EAAAA,CAAC,CAACqlB,KAAF,GAAUrlB,CAAC,CAACqlB,KAAF,CAAQ7R,KAAR,CAAcxT,CAAC,CAACslB,QAAhB,EAA0BtlB,CAAC,CAACqlB,KAAF,CAAQxpB,MAAlC,CAAV;EACD,CAnBD;;EAqBA,IAAI2pB,YAAY,GAAG,SAASA,YAAT,CAAsBxlB,CAAtB,EAAyBjD,CAAzB,EAA4Ba,CAA5B,EAA+B;EAChD,MAAIwC,CAAC,GAAG+kB,QAAQ,CAACH,aAAT,CAAuBjoB,CAAvB,CAAR;EACA,SAAOqD,CAAC,GAAGJ,CAAC,CAACslB,QAAN,GAAiBtlB,CAAC,CAACulB,IAAF,CAAOnlB,CAAP,CAAjB,GAA6BxC,CAAC,GAAGwC,CAAJ,GAAQ,CAAR,GAAYJ,CAAC,CAACslB,QAAlD;EACD,CAHD;EAAA,IAIIG,OAAO,GAAG,SAASA,OAAT,CAAiBzlB,CAAjB,EAAoB;EAChC,MAAIjD,CAAC,GAAG,EAAR;EAAA,MACIa,CAAC,GAAG,SAASA,CAAT,CAAWwC,CAAX,EAAcF,CAAd,EAAiB;EACvB,QAAIC,CAAC,GAAGH,CAAC,CAACqlB,KAAF,CAAQjlB,CAAR,CAAR;EACA,YAAQD,CAAC,CAAC,CAAD,CAAT,KAAiBpD,CAAC,CAACiS,IAAF,CAAO9O,CAAP,GAAWC,CAAC,GAAGA,CAAC,CAACqT,KAAF,CAAQ,CAAR,CAAhC;EACA,QAAIlU,CAAC,GAAGa,CAAC,CAACxB,KAAF,CAAQ,eAAR,CAAR;;EAEA,SAAK,IAAI+mB,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGpmB,CAAC,CAACzD,MAAxB,EAAgC6pB,EAAE,IAAI,CAAtC,EAAyC;EACvC,UAAIrlB,CAAC,GAAGf,CAAC,CAAComB,EAAD,CAAT;EAAA,UACI9pB,CAAC,GAAG0D,CAAC,CAAComB,EAAE,GAAG,CAAN,CADT;EAEA,UAAI,CAACrlB,CAAL,EAAQ;EACR,UAAIP,CAAC,GAAGI,CAAC,GAAGG,CAAZ;;EAEA,UAAI,QAAQzE,CAAR,IAAa,KAAK,CAAL,KAAWA,CAA5B,EAA+B;EAC7BmB,QAAAA,CAAC,CAACiS,IAAF,CAAOlP,CAAP;EACA;EACD;;EAED,UAAIN,CAAC,GAAGgmB,YAAY,CAACxlB,CAAD,EAAIpE,CAAJ,EAAOwE,CAAP,CAApB;EACAxC,MAAAA,CAAC,CAAC4B,CAAD,EAAIM,CAAJ,CAAD;EACD;EACF,GApBD;;EAsBA,SAAOlC,CAAC,CAAC,CAAD,EAAI,EAAJ,CAAD,EAAUb,CAAjB;EACD,CA5BD;EAAA,IA6BI4oB,MAAM,GAAG,SAASA,MAAT,CAAgB3lB,CAAhB,EAAmB;EAC9B,MAAIjD,CAAC,GAAG;EACNsoB,IAAAA,KAAK,EAAErlB,CAAC,CAACrB,KAAF,CAAQ,GAAR,CADD;EAEN4mB,IAAAA,IAAI,EAAE,EAFA;EAGND,IAAAA,QAAQ,EAAE;EAHJ,GAAR;EAKA,SAAOtlB,CAAC,CAAC4Q,KAAF,CAAQ,GAAR,KAAgBwU,OAAO,CAACroB,CAAD,CAAvB,EAA4B0oB,OAAO,CAAC1oB,CAAD,CAA1C;EACD,CApCD;;EAsCA,IAAI6oB,UAAU,GAAGD,MAAjB;EAAA,IACIE,YAAY,GAAG,SAASA,YAAT,CAAsB7lB,CAAtB,EAAyB;EAC1C,MAAIjD,CAAC,GAAGiD,CAAC,CAACrB,KAAF,CAAQ,GAAR,EAAasD,MAAb,CAAoB,UAAUjC,CAAV,EAAajD,CAAb,EAAgB;EAC1C,QAAIa,CAAC,GAAGb,CAAC,CAAC4B,KAAF,CAAQ,GAAR,CAAR;EACA,WAAOqB,CAAC,CAACpC,CAAC,CAAC,CAAD,CAAF,CAAD,GAAUA,CAAC,CAAC,CAAD,CAAX,EAAgBoC,CAAvB;EACD,GAHO,EAGL,EAHK,CAAR;EAAA,MAIIpC,CAAC,GAAG,EAJR;EAKA,SAAO1B,MAAM,CAAC0E,IAAP,CAAY7D,CAAZ,EAAe8D,OAAf,CAAuB,UAAUb,CAAV,EAAa;EACzC,QAAII,CAAC,GAAGwlB,UAAU,CAAC7oB,CAAC,CAACiD,CAAD,CAAF,CAAlB;EACA,eAAWA,CAAX,KAAiBA,CAAC,GAAG,CAAC,CAAtB;;EAEA,SAAK,IAAI8lB,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG1lB,CAAC,CAACvE,MAA1B,EAAkCiqB,GAAG,EAArC,EAAyC;EACvC,UAAI5lB,CAAC,GAAGE,CAAC,CAAC0lB,GAAD,CAAT;EACA,OAAC,CAAD,KAAOloB,CAAC,CAACqJ,cAAF,CAAiB/G,CAAjB,CAAP,GAA6B,CAAC,CAAD,KAAO6lB,KAAK,CAACxZ,OAAN,CAAc3O,CAAC,CAACsC,CAAD,CAAf,CAAP,GAA6BtC,CAAC,CAACsC,CAAD,CAAD,GAAO,CAACtC,CAAC,CAACsC,CAAD,CAAF,EAAOF,CAAP,CAApC,GAAgDpC,CAAC,CAACsC,CAAD,CAAD,CAAK8O,IAAL,CAAUhP,CAAV,CAA7E,GAA4FpC,CAAC,CAACsC,CAAD,CAAD,GAAOF,CAAnG;EACD;EACF,GARM,GAQHpC,CARJ;EASD,CAhBD;;EAkBA,IAAIooB,cAAc,GAAGH,YAArB;;EAGA,IAAII,IAAI,GAAG;EACT;EACA,sBAAoB,cAFX;EAGT;EACA,cAAY,cAJH;EAKT,aAAW,cALF;EAMTC,EAAAA,EAAE,EAAE,cANK;EAOTC,EAAAA,GAAG,EAAE,cAPI;EAQTC,EAAAA,EAAE,EAAE,MARK;EASTC,EAAAA,EAAE,EAAE,MATK;EAUTC,EAAAA,EAAE,EAAE,MAVK;EAWTC,EAAAA,EAAE,EAAE,MAXK;EAYTC,EAAAA,GAAG,EAAE,CAAC,YAAD,EAAe,SAAf,CAZI;EAaTC,EAAAA,GAAG,EAAE,CAAC,YAAD,EAAe,SAAf,CAbI;EAcTC,EAAAA,KAAK,EAAE,CAAC,YAAD,EAAe,SAAf,CAdE;EAeTC,EAAAA,UAAU,EAAE,CAAC,YAAD,EAAe,SAAf,CAfH;EAgBTC,EAAAA,IAAI,EAAE,CAAC,YAAD,EAAe,SAAf,CAhBG;EAiBTC,EAAAA,GAAG,EAAE,CAAC,YAAD,EAAe,SAAf,CAjBI;EAkBTC,EAAAA,EAAE,EAAE,CAAC,YAAD,EAAe,SAAf,CAlBK;EAmBTC,EAAAA,GAAG,EAAE,CAAC,YAAD,EAAe,SAAf;EAnBI,CAAX;EAsBA,IAAIC,KAAK,GAAG;EACVtG,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcuG,GAAd,EAAmB1mB,CAAnB,EAAsB;EAC1B0mB,IAAAA,GAAG,CAAC1mB,CAAD,CAAH,GAAS,CAAC,cAAD,EAAiB,MAAjB,CAAT;EACD,GAHS;EAIVihB,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkByF,GAAlB,EAAuB1mB,CAAvB,EAA0B;EAClC0mB,IAAAA,GAAG,CAAC1mB,CAAD,CAAH,GAAS,CAAC,WAAD,EAAc,UAAd,CAAT;EACD,GANS;EAOV2mB,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqBD,GAArB,EAA0B1mB,CAA1B,EAA6B;EACxC0mB,IAAAA,GAAG,CAAC1mB,CAAD,CAAH,GAAS,CAAC,SAAD,EAAY,WAAZ,CAAT;EACA0mB,IAAAA,GAAG,CAAC1mB,CAAC,GAAG,GAAL,CAAH,GAAe,CAAC,WAAD,EAAc,UAAd,CAAf,CAFwC;EAGzC,GAVS;EAWV;EACA+e,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkB2H,GAAlB,EAAuB1mB,CAAvB,EAA0BgI,KAA1B,EAAiC;EACzC0e,IAAAA,GAAG,CAAC1mB,CAAD,CAAH,GAAS,UAAT;EACA,QAAI4mB,MAAM,GAAG5e,KAAK,CAACE,UAAN,CAAiB2e,QAAjB,CAA0B7mB,CAA1B,EAA6BgI,KAA7B,CAAb;EACA0e,IAAAA,GAAG,CAACE,MAAD,CAAH,GAAcF,GAAG,CAACE,MAAD,CAAH,IAAe,QAA7B;EACD,GAhBS;EAiBV;EACAre,EAAAA,UAAU,EAAE,SAASA,UAAT,CAAoBme,GAApB,EAAyB1mB,CAAzB,EAA4BgI,KAA5B,EAAmC;EAC7C0e,IAAAA,GAAG,CAAC1mB,CAAD,CAAH,GAAS,YAAT;EACA,QAAI8mB,IAAI,GAAG9e,KAAK,CAACE,UAAN,CAAiB6e,SAAjB,CAA2B/mB,CAA3B,EAA8BgI,KAA9B,CAAX;EACA,QAAIhB,IAAI,GAAGrL,MAAM,CAAC0E,IAAP,CAAYymB,IAAZ,CAAX;;EAEA,SAAK,IAAIzrB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2L,IAAI,CAAC1L,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpC,UAAIiD,GAAG,GAAGwoB,IAAI,CAAC9f,IAAI,CAAC3L,CAAD,CAAL,CAAd;EACAqrB,MAAAA,GAAG,CAACpoB,GAAD,CAAH,GAAWooB,GAAG,CAACpoB,GAAD,CAAH,IAAY0I,IAAI,CAAC3L,CAAD,CAA3B,CAFoC;EAGrC;EACF,GA3BS;EA4BV;EACAqmB,EAAAA,UAAU,EAAE,SAASA,UAAT,CAAoBgF,GAApB,EAAyB1mB,CAAzB,EAA4BgI,KAA5B,EAAmC;EAC7C0e,IAAAA,GAAG,CAAC1mB,CAAD,CAAH,GAAS,YAAT;EACA,QAAI8mB,IAAI,GAAG9e,KAAK,CAACE,UAAN,CAAiB8e,UAAjB,CAA4BhnB,CAA5B,CAAX;EACA,QAAIgH,IAAI,GAAGrL,MAAM,CAAC0E,IAAP,CAAYymB,IAAZ,CAAX;;EAEA,SAAK,IAAIzrB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2L,IAAI,CAAC1L,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpC,UAAImH,IAAI,GAAGskB,IAAI,CAAC9f,IAAI,CAAC3L,CAAD,CAAL,CAAf;EACAqrB,MAAAA,GAAG,CAAClkB,IAAD,CAAH,GAAYkkB,GAAG,CAAClkB,IAAD,CAAH,IAAawE,IAAI,CAAC3L,CAAD,CAA7B,CAFoC;EAGrC;EACF,GAtCS;EAuCV;EACAulB,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqB8F,GAArB,EAA0B1mB,CAA1B,EAA6BgI,KAA7B,EAAoC;EAC/C;EACA0e,IAAAA,GAAG,CAAC1mB,CAAD,CAAH,GAAS,CAAC,aAAD,EAAgB,YAAhB,CAAT,CAF+C;;EAI/C,QAAI+b,KAAK,GAAG/b,CAAC,CAAC5B,KAAF,CAAQ,GAAR,CAAZ,CAJ+C;EAK/C;;EAEA,QAAI0oB,IAAI,GAAG9e,KAAK,CAACE,UAAN,CAAiB6e,SAAjB,CAA2BhL,KAAK,CAAC,CAAD,CAAhC,EAAqC/T,KAArC,CAAX;EACA,QAAIhB,IAAI,GAAGrL,MAAM,CAAC0E,IAAP,CAAYymB,IAAZ,CAAX;;EAEA,SAAK,IAAIzrB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2L,IAAI,CAAC1L,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpC,UAAIiD,GAAG,GAAGwoB,IAAI,CAAC9f,IAAI,CAAC3L,CAAD,CAAL,CAAJ,GAAgB,GAAhB,GAAsB0gB,KAAK,CAAC,CAAD,CAArC;EACA2K,MAAAA,GAAG,CAACpoB,GAAD,CAAH,GAAWooB,GAAG,CAACpoB,GAAD,CAAH,IAAY,CAAC,aAAD,EAAgB0I,IAAI,CAAC3L,CAAD,CAApB,CAAvB;EACA2M,MAAAA,KAAK,CAACif,WAAN,CAAkBH,IAAI,CAAC9f,IAAI,CAAC3L,CAAD,CAAL,CAAtB,IAAmC,IAAnC;EACD;EACF,GAvDS;EAwDV;EACA+kB,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBsG,GAAjB,EAAsB1mB,CAAtB,EAAyBgI,KAAzB,EAAgC;EACvC0e,IAAAA,GAAG,CAAC1mB,CAAD,CAAH,GAAS,SAAT;EACA,QAAI4mB,MAAM,GAAG5e,KAAK,CAACE,UAAN,CAAiB2e,QAAjB,CAA0B7mB,CAA1B,EAA6BgI,KAA7B,CAAb;EACA0e,IAAAA,GAAG,CAACE,MAAD,CAAH,GAAcF,GAAG,CAACE,MAAD,CAAH,IAAe,CAAC,SAAD,EAAY,QAAZ,CAA7B,CAHuC;EAIxC;EA7DS,CAAZ;;EAgEA,IAAIM,QAAQ,GAAG,SAASA,QAAT,CAAkBC,QAAlB,EAA4BT,GAA5B,EAAiC1e,KAAjC,EAAwC;EACrDrM,EAAAA,MAAM,CAAC0E,IAAP,CAAY8mB,QAAZ,EAAsB7mB,OAAtB,CAA8B,UAAUkC,IAAV,EAAgB;EAC5C,QAAIuE,GAAG,GAAGogB,QAAQ,CAAC3kB,IAAD,CAAlB,CAD4C;;EAG5C,QAAIuE,GAAG,KAAK,cAAR,IAA0BA,GAAG,KAAK,MAAtC,EAA8C;EAC5CiB,MAAAA,KAAK,CAACqG,KAAN,CAAYtE,aAAZ,CAA0BvH,IAA1B,IAAkC,IAAlC;EACD,KAL2C;;;EAQ5C,QAAI4kB,KAAK,GAAG5kB,IAAI,CAACpE,KAAL,CAAW,GAAX,CAAZ;;EAEA,QAAIgpB,KAAK,CAAC9rB,MAAN,GAAe,CAAnB,EAAsB;EACpB0M,MAAAA,KAAK,CAACif,WAAN,CAAkBG,KAAK,CAAC,CAAD,CAAvB,IAA8B,IAA9B;EACD,KAZ2C;;;EAe5C,QAAIX,KAAK,CAAC1f,GAAD,CAAL,KAAenB,SAAnB,EAA8B;EAC5B6gB,MAAAA,KAAK,CAAC1f,GAAD,CAAL,CAAW2f,GAAX,EAAgBlkB,IAAhB,EAAsBwF,KAAtB;EACA;EACD,KAlB2C;;;EAqB5C,QAAI0e,GAAG,CAAClkB,IAAD,CAAH,KAAcoD,SAAlB,EAA6B;EAC3B8gB,MAAAA,GAAG,CAAClkB,IAAD,CAAH,GAAYuE,GAAZ;EACA;EACD,KAxB2C;;;EA2B5C,QAAI,OAAO2f,GAAG,CAAClkB,IAAD,CAAV,KAAqB,QAAzB,EAAmC;EACjCkkB,MAAAA,GAAG,CAAClkB,IAAD,CAAH,GAAY,CAACkkB,GAAG,CAAClkB,IAAD,CAAJ,CAAZ;EACD;;EAED,QAAI,OAAOuE,GAAP,KAAe,QAAnB,EAA6B;EAC3B2f,MAAAA,GAAG,CAAClkB,IAAD,CAAH,CAAUiM,IAAV,CAAe1H,GAAf;EACD,KAFD,MAEO;EACL2f,MAAAA,GAAG,CAAClkB,IAAD,CAAH,GAAYkkB,GAAG,CAAClkB,IAAD,CAAH,CAAU6M,MAAV,CAAiBtI,GAAjB,CAAZ;EACD;EACF,GApCD;EAqCD,CAtCD;;;EAyCA,IAAIsgB,QAAQ,GAAG,SAASA,QAAT,CAAkBrf,KAAlB,EAAyB;EACtC;EACA,MAAIsf,OAAO,GAAG3rB,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBya,IAAlB,CAAd,CAFsC;;EAItC/pB,EAAAA,MAAM,CAAC0E,IAAP,CAAY8jB,KAAZ,EAAmB7jB,OAAnB,CAA2B,UAAUyG,GAAV,EAAe;EACxC,QAAIogB,QAAQ,GAAG1B,cAAc,CAACtB,KAAK,CAACpd,GAAD,CAAN,CAA7B,CADwC;;EAGxCpL,IAAAA,MAAM,CAAC0E,IAAP,CAAY8mB,QAAZ,EAAsB7mB,OAAtB,CAA8B,UAAUN,CAAV,EAAa;EACzCmnB,MAAAA,QAAQ,CAACnnB,CAAD,CAAR,GAAc+G,GAAd;EACD,KAFD;EAGAmgB,IAAAA,QAAQ,CAACC,QAAD,EAAWG,OAAX,EAAoBtf,KAApB,CAAR;EACD,GAPD,EAJsC;;EAatC,SAAOsf,OAAP;EACD,CAdD;;EAgBA,IAAIC,QAAQ,GAAG;EACbF,EAAAA,QAAQ,EAAEA,QADG;EAEbH,EAAAA,QAAQ,EAAEA;EAFG,CAAf;;EAMA,IAAIM,aAAa,GAAG,SAASA,aAAT,CAAuBxf,KAAvB,EAA8B;EAChD;EACA,MAAIyf,KAAK,GAAGzf,KAAK,CAAC0f,UAAN,CAAiBD,KAA7B;EACA,MAAI1L,KAAK,GAAGpgB,MAAM,CAAC0E,IAAP,CAAYonB,KAAZ,CAAZ;;EAEA,OAAK,IAAIpsB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0gB,KAAK,CAACzgB,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;EACrC,QAAI2E,CAAC,GAAG+b,KAAK,CAAC1gB,CAAD,CAAb;EACA2M,IAAAA,KAAK,CAAC+T,KAAN,CAAY/b,CAAZ,IAAiB,UAAjB;EACAgI,IAAAA,KAAK,CAAC+T,KAAN,CAAY0L,KAAK,CAACznB,CAAD,CAAjB,IAAwB,QAAxB;EACD,GAT+C;;;EAYhD,MAAI2nB,KAAK,GAAG3f,KAAK,CAAC0f,UAAN,CAAiBC,KAA7B;EACA,MAAItnB,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAYsnB,KAAZ,CAAX;;EAEA,MAAItN,KAAK,GAAG,SAASA,KAAT,CAAelV,EAAf,EAAmB;EAC7B,QAAIyiB,GAAG,GAAGvnB,IAAI,CAAC8E,EAAD,CAAd,CAD6B;;EAG7B6C,IAAAA,KAAK,CAAC+T,KAAN,CAAY6L,GAAZ,IAAmB5f,KAAK,CAAC+T,KAAN,CAAY6L,GAAZ,KAAoB,YAAvC;EACA,QAAIC,KAAK,GAAG7f,KAAK,CAACE,UAAN,CAAiB6e,SAAjB,CAA2Ba,GAA3B,EAAgC5f,KAAhC,CAAZ;EACA6f,IAAAA,KAAK,GAAGlsB,MAAM,CAACsP,MAAP,CAAc4c,KAAd,EAAqBF,KAAK,CAACC,GAAD,CAA1B,CAAR,CAL6B;;EAO7BjsB,IAAAA,MAAM,CAAC0E,IAAP,CAAYwnB,KAAZ,EAAmBvnB,OAAnB,CAA2B,UAAUyG,GAAV,EAAe;EACxCiB,MAAAA,KAAK,CAAC+T,KAAN,CAAY8L,KAAK,CAAC9gB,GAAD,CAAjB,IAA0BiB,KAAK,CAAC+T,KAAN,CAAY8L,KAAK,CAAC9gB,GAAD,CAAjB,KAA2BA,GAArD,CADwC;;EAGxC,UAAIiB,KAAK,CAAC+T,KAAN,CAAY8L,KAAK,CAAC9gB,GAAD,CAAjB,MAA4B,YAAhC,EAA8C;EAC5CiB,QAAAA,KAAK,CAAC+T,KAAN,CAAY8L,KAAK,CAAC9gB,GAAD,CAAjB,IAA0BA,GAA1B;EACD;EACF,KAND;EAOD,GAdD;;EAgBA,OAAK,IAAI5B,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAG9E,IAAI,CAAC/E,MAA3B,EAAmC6J,EAAE,EAArC,EAAyC;EACvCkV,IAAAA,KAAK,CAAClV,EAAD,CAAL;EACD;EACF,CAlCD;;EAoCA,IAAI2iB,eAAe,GAAGN,aAAtB;EAGA;;EACA,IAAIO,OAAO,GAAG;EACZC,EAAAA,QAAQ,EAAE,SADE;EAEZC,EAAAA,IAAI,EAAE,OAFM;EAGZC,EAAAA,MAAM,EAAE,SAHI;EAIZC,EAAAA,OAAO,EAAE,QAJG;EAKZC,EAAAA,QAAQ,EAAE,UALE;EAMZC,EAAAA,OAAO,EAAE,UANG;EAOZC,EAAAA,QAAQ,EAAE,YAPE;EAQZC,EAAAA,OAAO,EAAE,UARG;EASZC,EAAAA,IAAI,EAAE,MATM;EAUZC,EAAAA,QAAQ,EAAE,SAVE;EAWZC,EAAAA,QAAQ,EAAE,UAXE;EAYZC,EAAAA,IAAI,EAAE,OAZM;EAaZC,EAAAA,GAAG,EAAE,OAbO;EAcZC,EAAAA,MAAM,EAAE,OAdI;EAeZC,EAAAA,OAAO,EAAE,UAfG;EAgBZC,EAAAA,KAAK,EAAE,UAhBK;EAiBZC,EAAAA,MAAM,EAAE,UAjBI;EAkBZC,EAAAA,OAAO,EAAE,SAlBG;EAmBZC,EAAAA,MAAM,EAAE,SAnBI;EAoBZC,EAAAA,SAAS,EAAE,UApBC;EAqBZC,EAAAA,UAAU,EAAE,WArBA;EAsBZC,EAAAA,QAAQ,EAAE,WAtBE;EAuBZC,EAAAA,IAAI,EAAE,MAvBM;EAwBZC,EAAAA,SAAS,EAAE,WAxBC;EAyBZC,EAAAA,IAAI,EAAE,QAzBM;EA0BZC,EAAAA,OAAO,EAAE,WA1BG;EA2BZC,EAAAA,KAAK,EAAE,QA3BK;EA4BZC,EAAAA,IAAI,EAAE,MA5BM;EA6BZC,EAAAA,OAAO,EAAE,UA7BG;EA8BZC,EAAAA,MAAM,EAAE,OA9BI;EA+BZC,EAAAA,KAAK,EAAE,QA/BK;EAgCZC,EAAAA,KAAK,EAAE,OAhCK;EAiCZC,EAAAA,IAAI,EAAE,OAjCM;EAkCZC,EAAAA,YAAY,EAAE,aAlCF;EAmCZ5jB,EAAAA,KAAK,EAAE,SAnCK;EAoCZ6jB,EAAAA,KAAK,EAAE,QApCK;EAqCZC,EAAAA,IAAI,EAAE,QArCM;EAsCZC,EAAAA,QAAQ,EAAE,UAtCE;EAuCZC,EAAAA,IAAI,EAAE,QAvCM;EAwCZC,EAAAA,GAAG,EAAE,KAxCO;EAyCZplB,EAAAA,MAAM,EAAE,UAzCI;EA0CZqlB,EAAAA,UAAU,EAAE,WA1CA;EA2CZC,EAAAA,OAAO,EAAE,QA3CG;EA4CZC,EAAAA,QAAQ,EAAE,YA5CE;EA6CZC,EAAAA,KAAK,EAAE,MA7CK;EA8CZ;EACAC,EAAAA,MAAM,EAAE,SA/CI;EAgDZC,EAAAA,OAAO,EAAE,QAhDG;EAiDZC,EAAAA,OAAO,EAAE,QAjDG;EAkDZC,EAAAA,IAAI,EAAE,OAlDM;EAmDZC,EAAAA,IAAI,EAAE,KAnDM;EAoDZC,EAAAA,EAAE,EAAE,MApDQ;EAqDZC,EAAAA,WAAW,EAAE,aArDD;EAsDZC,EAAAA,MAAM,EAAE,QAtDI;EAuDZC,EAAAA,UAAU,EAAE,WAvDA;EAwDZC,EAAAA,SAAS,EAAE,WAxDC;EAyDZC,EAAAA,IAAI,EAAE,SAzDM;EA0DZC,EAAAA,MAAM,EAAE,OA1DI;EA2DZC,EAAAA,UAAU,EAAE,WA3DA;EA4DZC,EAAAA,KAAK,EAAE,QA5DK;EA6DZC,EAAAA,GAAG,EAAE,OA7DO;EA8DZC,EAAAA,IAAI,EAAE,OA9DM;EA+DZC,EAAAA,QAAQ,EAAE,WA/DE;EAgEZC,EAAAA,QAAQ,EAAE,SAhEE;EAiEZC,EAAAA,OAAO,EAAE,UAjEG;EAkEZC,EAAAA,QAAQ,EAAE,SAlEE;EAmEZC,EAAAA,QAAQ,EAAE,UAnEE;EAoEZC,EAAAA,OAAO,EAAE,UApEG;EAqEZC,EAAAA,MAAM,EAAE,QArEI;EAsEZC,EAAAA,KAAK,EAAE,SAtEK;EAuEZC,EAAAA,KAAK,EAAE,OAvEK;EAwEZC,EAAAA,OAAO,EAAE,UAxEG;EAyEZC,EAAAA,MAAM,EAAE,SAzEI;EA0EZC,EAAAA,QAAQ,EAAE,WA1EE;EA2EZ;;EA3EY,CAAd;EAgFA;EACA;EACA;;EACA,IAAIC,SAAS,GAAG;EACdrtB,EAAAA,CAAC,EAAE,QADW;EAEdstB,EAAAA,GAAG,EAAE,YAFS;EAGdC,EAAAA,IAAI,EAAE,cAHQ;EAIdC,EAAAA,GAAG,EAAE,WAJS;EAKdC,EAAAA,GAAG,EAAE,eALS;EAMdC,EAAAA,IAAI,EAAE,cANQ;EAOdC,EAAAA,OAAO,EAAE,YAPK;EAQdhuB,EAAAA,CAAC,EAAE;EARW,CAAhB;EAUA;;EAEA,IAAIiuB,YAAY,GAAG;EACjBC,EAAAA,GAAG,EAAE;EACHluB,IAAAA,CAAC,EAAE;EADA,GADY;EAIjBmuB,EAAAA,IAAI,EAAE;EACJN,IAAAA,GAAG,EAAE,OADD;EAEJxtB,IAAAA,CAAC,EAAE;EAFC,GAJW;EAQjB+tB,EAAAA,GAAG,EAAE;EACH/tB,IAAAA,CAAC,EAAE,QADA;EAEHwtB,IAAAA,GAAG,EAAE,MAFF;EAGHE,IAAAA,IAAI,EAAE;EAHH,GARY;EAajBM,EAAAA,GAAG,EAAE;EACHruB,IAAAA,CAAC,EAAE,KADA;EAEHK,IAAAA,CAAC,EAAE,MAFA;EAGHwtB,IAAAA,GAAG,EAAE;EAHF,GAbY;EAkBjBS,EAAAA,KAAK,EAAE;EACLX,IAAAA,GAAG,EAAE,IADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GAlBU;EAsBjBU,EAAAA,OAAO,EAAE;EACPvuB,IAAAA,CAAC,EAAE,MADI;EAEP6tB,IAAAA,GAAG,EAAE;EAFE,GAtBQ;EA0BjBW,EAAAA,GAAG,EAAE;EACHxuB,IAAAA,CAAC,EAAE,EADA;EAEHK,IAAAA,CAAC,EAAE,OAFA;EAGHwtB,IAAAA,GAAG,EAAE;EAHF,GA1BY;EA+BjBY,EAAAA,EAAE,EAAE;EACFzuB,IAAAA,CAAC,EAAE,EADD;EAEFK,IAAAA,CAAC,EAAE,IAFD;EAGFstB,IAAAA,GAAG,EAAE,MAHH;EAIFE,IAAAA,GAAG,EAAE,KAJH;EAKFE,IAAAA,IAAI,EAAE;EALJ,GA/Ba;EAsCjBW,EAAAA,IAAI,EAAE;EACJ1uB,IAAAA,CAAC,EAAE,KADC;EAEJK,IAAAA,CAAC,EAAE,MAFC;EAGJstB,IAAAA,GAAG,EAAE;EAHD,GAtCW;EA2CjBgB,EAAAA,MAAM,EAAE;EACNhB,IAAAA,GAAG,EAAE;EADC,GA3CS;EA8CjBiB,EAAAA,KAAK,EAAE;EACLvuB,IAAAA,CAAC,EAAE,OADE;EAELstB,IAAAA,GAAG,EAAE,OAFA;EAGLE,IAAAA,GAAG,EAAE;EAHA,GA9CU;EAmDjBgB,EAAAA,KAAK,EAAE;EACLxuB,IAAAA,CAAC,EAAE,KADE;EAELwtB,IAAAA,GAAG,EAAE,MAFA;EAGLE,IAAAA,IAAI,EAAE;EAHD,GAnDU;EAwDjBe,EAAAA,IAAI,EAAE;EACJnB,IAAAA,GAAG,EAAE;EADD,GAxDW;EA2DjBoB,EAAAA,GAAG,EAAE;EACH/uB,IAAAA,CAAC,EAAE,MADA;EAEH2tB,IAAAA,GAAG,EAAE;EAFF,GA3DY;EA+DjBqB,EAAAA,IAAI,EAAE;EACJnB,IAAAA,GAAG,EAAE;EADD,GA/DW;EAkEjBoB,EAAAA,IAAI,EAAE;EACJ5uB,IAAAA,CAAC,EAAE,QADC;EAEJstB,IAAAA,GAAG,EAAE,QAFD;EAGJE,IAAAA,GAAG,EAAE;EAHD,GAlEW;EAuEjBqB,EAAAA,KAAK,EAAE;EACLrB,IAAAA,GAAG,EAAE,MADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GAvEU;EA2EjBwB,EAAAA,IAAI,EAAE;EACJxB,IAAAA,GAAG,EAAE,IADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA3EW;EA+EjBuB,EAAAA,IAAI,EAAE;EACJpvB,IAAAA,CAAC,EAAE;EADC,GA/EW;EAkFjBqvB,EAAAA,KAAK,EAAE;EACL1B,IAAAA,GAAG,EAAE;EADA,GAlFU;EAqFjB,WAAS;EACPE,IAAAA,GAAG,EAAE;EADE,GArFQ;EAwFjByB,EAAAA,KAAK,EAAE;EACLzB,IAAAA,GAAG,EAAE;EADA,GAxFU;EA2FjB0B,EAAAA,KAAK,EAAE;EACL1B,IAAAA,GAAG,EAAE,SADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GA3FU;EA+FjB6B,EAAAA,SAAS,EAAE;EACT3B,IAAAA,GAAG,EAAE;EADI,GA/FM;EAkGjB4B,EAAAA,MAAM,EAAE;EACN5B,IAAAA,GAAG,EAAE;EADC,GAlGS;EAqGjBxI,EAAAA,KAAK,EAAE;EACLwI,IAAAA,GAAG,EAAE,OADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GArGU;EAyGjB+B,EAAAA,IAAI,EAAE;EACJ/B,IAAAA,GAAG,EAAE;EADD,GAzGW;EA4GjBgC,EAAAA,KAAK,EAAE;EACLhC,IAAAA,GAAG,EAAE;EADA,GA5GU;EA+GjBiC,EAAAA,GAAG,EAAE;EACH/B,IAAAA,GAAG,EAAE,QADF;EAEHF,IAAAA,GAAG,EAAE;EAFF,GA/GY;EAmHjB9Q,EAAAA,GAAG,EAAE;EACH7c,IAAAA,CAAC,EAAE,EADA;EAEH8tB,IAAAA,GAAG,EAAE,GAFF;EAGHztB,IAAAA,CAAC,EAAE,EAHA;EAIHwtB,IAAAA,GAAG,EAAE,OAJF;EAKHD,IAAAA,IAAI,EAAE,OALH;EAMHI,IAAAA,OAAO,EAAE,OANN;EAOHD,IAAAA,IAAI,EAAE;EAPH,GAnHY;EA4HjB,WAAS;EACPF,IAAAA,GAAG,EAAE;EADE,GA5HQ;EA+HjBgC,EAAAA,MAAM,EAAE;EACNxvB,IAAAA,CAAC,EAAE,UADG;EAENstB,IAAAA,GAAG,EAAE,QAFC;EAGNE,IAAAA,GAAG,EAAE;EAHC,GA/HS;EAoIjBiC,EAAAA,KAAK,EAAE;EACLnC,IAAAA,GAAG,EAAE;EADA,GApIU;EAuIjBoC,EAAAA,IAAI,EAAE;EACJpC,IAAAA,GAAG,EAAE,GADD;EAEJE,IAAAA,GAAG,EAAE,MAFD;EAGJxtB,IAAAA,CAAC,EAAE;EAHC,GAvIW;EA4IjB2vB,EAAAA,OAAO,EAAE;EACPhwB,IAAAA,CAAC,EAAE,YADI;EAEPK,IAAAA,CAAC,EAAE,WAFI;EAGPwtB,IAAAA,GAAG,EAAE;EAHE,GA5IQ;EAiJjBpnB,EAAAA,IAAI,EAAE;EACJonB,IAAAA,GAAG,EAAE;EADD,GAjJW;EAoJjBoC,EAAAA,KAAK,EAAE;EACLtC,IAAAA,GAAG,EAAE;EADA,GApJU;EAuJjBuC,EAAAA,GAAG,EAAE;EACHvC,IAAAA,GAAG,EAAE;EADF,GAvJY;EA0JjBwC,EAAAA,IAAI,EAAE;EACJtC,IAAAA,GAAG,EAAE,IADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GA1JW;EA8JjByC,EAAAA,OAAO,EAAE;EACPpwB,IAAAA,CAAC,EAAE,KADI;EAEPK,IAAAA,CAAC,EAAE,MAFI;EAGPwtB,IAAAA,GAAG,EAAE;EAHE,GA9JQ;EAmKjBwC,EAAAA,GAAG,EAAE;EACHhwB,IAAAA,CAAC,EAAE,OADA;EAEHwtB,IAAAA,GAAG,EAAE;EAFF,GAnKY;EAuKjByC,EAAAA,GAAG,EAAE;EACHjwB,IAAAA,CAAC,EAAE,OADA;EAEHwtB,IAAAA,GAAG,EAAE,KAFF;EAGHF,IAAAA,GAAG,EAAE;EAHF,GAvKY;EA4KjB4C,EAAAA,IAAI,EAAE;EACJ5C,IAAAA,GAAG,EAAE;EADD,GA5KW;EA+KjB,QAAM;EACJE,IAAAA,GAAG,EAAE,KADD;EAEJE,IAAAA,IAAI,EAAE;EAFF,GA/KW;EAmLjByC,EAAAA,IAAI,EAAE;EACJ7C,IAAAA,GAAG,EAAE,IADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAnLW;EAuLjB4C,EAAAA,KAAK,EAAE;EACL9C,IAAAA,GAAG,EAAE;EADA,GAvLU;EA0LjB+C,EAAAA,KAAK,EAAE;EACL/C,IAAAA,GAAG,EAAE,OADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GA1LU;EA8LjB8C,EAAAA,KAAK,EAAE;EACLtwB,IAAAA,CAAC,EAAE,SADE;EAELstB,IAAAA,GAAG,EAAE,IAFA;EAGLE,IAAAA,GAAG,EAAE;EAHA,GA9LU;EAmMjB+C,EAAAA,IAAI,EAAE;EACJvwB,IAAAA,CAAC,EAAE,OADC;EAEJwtB,IAAAA,GAAG,EAAE;EAFD,GAnMW;EAuMjBgD,EAAAA,GAAG,EAAE;EACH7wB,IAAAA,CAAC,EAAE,KADA;EAEHK,IAAAA,CAAC,EAAE,MAFA;EAGHstB,IAAAA,GAAG,EAAE,KAHF;EAIHE,IAAAA,GAAG,EAAE;EAJF,GAvMY;EA6MjBiD,EAAAA,IAAI,EAAE;EACJjD,IAAAA,GAAG,EAAE,KADD;EAEJxtB,IAAAA,CAAC,EAAE;EAFC,GA7MW;EAiNjB0wB,EAAAA,GAAG,EAAE;EACHlD,IAAAA,GAAG,EAAE;EADF,GAjNY;EAoNjBmD,EAAAA,IAAI,EAAE;EACJrD,IAAAA,GAAG,EAAE,KADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GApNW;EAwNjBoD,EAAAA,IAAI,EAAE;EACJtD,IAAAA,GAAG,EAAE,KADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAxNW;EA4NjBqD,EAAAA,IAAI,EAAE;EACJlxB,IAAAA,CAAC,EAAE,KADC;EAEJ6tB,IAAAA,GAAG,EAAE;EAFD,GA5NW;EAgOjBsD,EAAAA,KAAK,EAAE;EACLtD,IAAAA,GAAG,EAAE,QADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GAhOU;EAoOjBla,EAAAA,IAAI,EAAE;EACJoa,IAAAA,GAAG,EAAE;EADD,GApOW;EAuOjBuD,EAAAA,IAAI,EAAE;EACJ/wB,IAAAA,CAAC,EAAE,MADC;EAEJstB,IAAAA,GAAG,EAAE;EAFD,GAvOW;EA2OjB0D,EAAAA,KAAK,EAAE;EACL1D,IAAAA,GAAG,EAAE;EADA,GA3OU;EA8OjB2D,EAAAA,GAAG,EAAE;EACH3D,IAAAA,GAAG,EAAE,OADF;EAEHE,IAAAA,GAAG,EAAE;EAFF,GA9OY;EAkPjB0D,EAAAA,MAAM,EAAE;EACN1D,IAAAA,GAAG,EAAE;EADC,GAlPS;EAqPjB2D,EAAAA,MAAM,EAAE;EACNnxB,IAAAA,CAAC,EAAE,MADG;EAENstB,IAAAA,GAAG,EAAE,WAFC;EAGNE,IAAAA,GAAG,EAAE;EAHC,GArPS;EA0PjB4D,EAAAA,OAAO,EAAE;EACPpxB,IAAAA,CAAC,EAAE,WADI;EAEPstB,IAAAA,GAAG,EAAE,IAFE;EAGPE,IAAAA,GAAG,EAAE;EAHE,GA1PQ;EA+PjB6D,EAAAA,IAAI,EAAE;EACJ1xB,IAAAA,CAAC,EAAE,EADC;EAEJK,IAAAA,CAAC,EAAE;EAFC,GA/PW;EAmQjBsxB,EAAAA,MAAM,EAAE;EACNtxB,IAAAA,CAAC,EAAE,UADG;EAENstB,IAAAA,GAAG,EAAE,QAFC;EAGNE,IAAAA,GAAG,EAAE;EAHC,GAnQS;EAwQjBne,EAAAA,GAAG,EAAE;EACHme,IAAAA,GAAG,EAAE,KADF;EAEHF,IAAAA,GAAG,EAAE;EAFF,GAxQY;EA4QjBiE,EAAAA,IAAI,EAAE;EACJvxB,IAAAA,CAAC,EAAE,QADC;EAEJstB,IAAAA,GAAG,EAAE,IAFD;EAGJE,IAAAA,GAAG,EAAE;EAHD,GA5QW;EAiRjBgE,EAAAA,EAAE,EAAE;EACFlE,IAAAA,GAAG,EAAE,KADH;EAEFE,IAAAA,GAAG,EAAE,MAFH;EAGFE,IAAAA,IAAI,EAAE;EAHJ,GAjRa;EAsRjB+D,EAAAA,IAAI,EAAE;EACJnE,IAAAA,GAAG,EAAE;EADD,GAtRW;EAyRjBoE,EAAAA,KAAK,EAAE;EACLlE,IAAAA,GAAG,EAAE;EADA,GAzRU;EA4RjBmE,EAAAA,IAAI,EAAE;EACJnE,IAAAA,GAAG,EAAE,MADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GA5RW;EAgSjBsE,EAAAA,IAAI,EAAE;EACJ5xB,IAAAA,CAAC,EAAE,QADC;EAEJwtB,IAAAA,GAAG,EAAE,KAFD;EAGJF,IAAAA,GAAG,EAAE,KAHD;EAIJI,IAAAA,IAAI,EAAE;EAJF,GAhSW;EAsSjBmE,EAAAA,IAAI,EAAE;EACJrE,IAAAA,GAAG,EAAE,IADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GAtSW;EA0SjBwE,EAAAA,IAAI,EAAE;EACJxE,IAAAA,GAAG,EAAE,QADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA1SW;EA8SjBuE,EAAAA,GAAG,EAAE;EACHzE,IAAAA,GAAG,EAAE;EADF,GA9SY;EAiTjB0E,EAAAA,IAAI,EAAE;EACJxE,IAAAA,GAAG,EAAE,MADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GAjTW;EAqTjB2E,EAAAA,IAAI,EAAE;EACJzE,IAAAA,GAAG,EAAE,GADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GArTW;EAyTjB4E,EAAAA,GAAG,EAAE;EACHlyB,IAAAA,CAAC,EAAE,OADA;EAEHwtB,IAAAA,GAAG,EAAE;EAFF,GAzTY;EA6TjB2E,EAAAA,KAAK,EAAE;EACL3E,IAAAA,GAAG,EAAE,SADA;EAELE,IAAAA,IAAI,EAAE;EAFD,GA7TU;EAiUjB0E,EAAAA,EAAE,EAAE;EACFzyB,IAAAA,CAAC,EAAE,EADD;EAEFK,IAAAA,CAAC,EAAE,OAFD;EAGFwtB,IAAAA,GAAG,EAAE,KAHH;EAIFE,IAAAA,IAAI,EAAE;EAJJ,GAjUa;EAuUjB2E,EAAAA,IAAI,EAAE;EACJ/E,IAAAA,GAAG,EAAE;EADD,GAvUW;EA0UjBgF,EAAAA,KAAK,EAAE;EACLhF,IAAAA,GAAG,EAAE;EADA,GA1UU;EA6UjBiF,EAAAA,IAAI,EAAE;EACJjF,IAAAA,GAAG,EAAE;EADD,GA7UW;EAgVjBkF,EAAAA,GAAG,EAAE;EACHhF,IAAAA,GAAG,EAAE,MADF;EAEHF,IAAAA,GAAG,EAAE;EAFF,GAhVY;EAoVjBmF,EAAAA,IAAI,EAAE;EACJjF,IAAAA,GAAG,EAAE,KADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GApVW;EAwVjBoF,EAAAA,IAAI,EAAE;EACJpF,IAAAA,GAAG,EAAE;EADD,GAxVW;EA2VjBqF,EAAAA,KAAK,EAAE;EACLnF,IAAAA,GAAG,EAAE,MADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GA3VU;EA+VjBsF,EAAAA,IAAI,EAAE;EACJtF,IAAAA,GAAG,EAAE;EADD,GA/VW;EAkWjBuF,EAAAA,GAAG,EAAE;EACH7yB,IAAAA,CAAC,EAAE,OADA;EAEHwtB,IAAAA,GAAG,EAAE;EAFF,GAlWY;EAsWjBsF,EAAAA,KAAK,EAAE;EACLtF,IAAAA,GAAG,EAAE,KADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GAtWU;EA0WjB3gB,EAAAA,GAAG,EAAE;EACH3M,IAAAA,CAAC,EAAE,OADA;EAEHwtB,IAAAA,GAAG,EAAE;EAFF,GA1WY;EA8WjBuF,EAAAA,KAAK,EAAE;EACLzF,IAAAA,GAAG,EAAE;EADA,GA9WU;EAiXjB0F,EAAAA,IAAI,EAAE;EACJhzB,IAAAA,CAAC,EAAE,QADC;EAEJwtB,IAAAA,GAAG,EAAE;EAFD,GAjXW;EAqXjByF,EAAAA,IAAI,EAAE;EACJzF,IAAAA,GAAG,EAAE,MADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GArXW;EAyXjB4F,EAAAA,IAAI,EAAE;EACJ1F,IAAAA,GAAG,EAAE,IADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GAzXW;EA6XjB6F,EAAAA,IAAI,EAAE;EACJxzB,IAAAA,CAAC,EAAE,KADC;EAEJK,IAAAA,CAAC,EAAE,MAFC;EAGJwtB,IAAAA,GAAG,EAAE,KAHD;EAIJF,IAAAA,GAAG,EAAE;EAJD,GA7XW;EAmYjB8F,EAAAA,IAAI,EAAE;EACJ1F,IAAAA,IAAI,EAAE;EADF,GAnYW;EAsYjB/W,EAAAA,IAAI,EAAE;EACJ3W,IAAAA,CAAC,EAAE;EADC,GAtYW;EAyYjBqzB,EAAAA,MAAM,EAAE;EACNrzB,IAAAA,CAAC,EAAE,OADG;EAENwtB,IAAAA,GAAG,EAAE;EAFC,GAzYS;EA6YjB8F,EAAAA,GAAG,EAAE;EACH9F,IAAAA,GAAG,EAAE,MADF;EAEHF,IAAAA,GAAG,EAAE;EAFF,GA7YY;EAiZjBiG,EAAAA,KAAK,EAAE;EACLjG,IAAAA,GAAG,EAAE;EADA,GAjZU;EAoZjBkG,EAAAA,IAAI,EAAE;EACJxzB,IAAAA,CAAC,EAAE;EADC,GApZW;EAuZjByzB,EAAAA,GAAG,EAAE;EACHnG,IAAAA,GAAG,EAAE;EADF,GAvZY;EA0ZjBoG,EAAAA,IAAI,EAAE;EACJpG,IAAAA,GAAG,EAAE;EADD,GA1ZW;EA6ZjBqG,EAAAA,IAAI,EAAE;EACJnG,IAAAA,GAAG,EAAE,GADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GA7ZW;EAiajBsG,EAAAA,IAAI,EAAE;EACJtG,IAAAA,GAAG,EAAE;EADD,GAjaW;EAoajBuG,EAAAA,MAAM,EAAE;EACNrG,IAAAA,GAAG,EAAE;EADC,GApaS;EAuajBsG,EAAAA,IAAI,EAAE;EACJtG,IAAAA,GAAG,EAAE,MADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GAvaW;EA2ajByG,EAAAA,IAAI,EAAE;EACJtG,IAAAA,GAAG,EAAE,cADD;EAEJztB,IAAAA,CAAC,EAAE,QAFC;EAGJstB,IAAAA,GAAG,EAAE,IAHD;EAIJE,IAAAA,GAAG,EAAE,MAJD;EAKJG,IAAAA,OAAO,EAAE;EALL,GA3aW;EAkbjBqG,EAAAA,GAAG,EAAE;EACHh0B,IAAAA,CAAC,EAAE,OADA;EAEHwtB,IAAAA,GAAG,EAAE;EAFF,GAlbY;EAsbjByG,EAAAA,GAAG,EAAE;EACHj0B,IAAAA,CAAC,EAAE,OADA;EAEHstB,IAAAA,GAAG,EAAE,GAFF;EAGHE,IAAAA,GAAG,EAAE;EAHF,GAtbY;EA2bjB0G,EAAAA,GAAG,EAAE;EACH1G,IAAAA,GAAG,EAAE,MADF;EAEHF,IAAAA,GAAG,EAAE,MAFF;EAGHI,IAAAA,IAAI,EAAE;EAHH,GA3bY;EAgcjByG,EAAAA,IAAI,EAAE;EACJ3G,IAAAA,GAAG,EAAE,KADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GAhcW;EAocjB8G,EAAAA,GAAG,EAAE;EACHp0B,IAAAA,CAAC,EAAE,MADA;EAEHstB,IAAAA,GAAG,EAAE,IAFF;EAGHE,IAAAA,GAAG,EAAE;EAHF,GApcY;EAycjB6G,EAAAA,IAAI,EAAE;EACJ/G,IAAAA,GAAG,EAAE;EADD,GAzcW;EA4cjBgH,EAAAA,IAAI,EAAE;EACJ9G,IAAAA,GAAG,EAAE,MADD;EAEJF,IAAAA,GAAG,EAAE;EAFD,GA5cW;EAgdjBiH,EAAAA,IAAI,EAAE;EACJjH,IAAAA,GAAG,EAAE;EADD,GAhdW;EAmdjBve,EAAAA,GAAG,EAAE;EACHue,IAAAA,GAAG,EAAE;EADF,GAndY;EAsdjBkH,EAAAA,GAAG,EAAE;EACHlH,IAAAA,GAAG,EAAE;EADF,GAtdY;EAydjBmH,EAAAA,KAAK,EAAE;EACLnH,IAAAA,GAAG,EAAE;EADA,GAzdU;EA4djBoH,EAAAA,KAAK,EAAE;EACLpH,IAAAA,GAAG,EAAE;EADA,GA5dU;EA+djBqH,EAAAA,IAAI,EAAE;EACJ30B,IAAAA,CAAC,EAAE,OADC;EAEJwtB,IAAAA,GAAG,EAAE,GAFD;EAGJE,IAAAA,IAAI,EAAE;EAHF,GA/dW;EAoejBkH,EAAAA,KAAK,EAAE;EACLpH,IAAAA,GAAG,EAAE,OADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GApeU;EAwejBuH,EAAAA,KAAK,EAAE;EACLrH,IAAAA,GAAG,EAAE,MADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GAxeU;EA4ejBwH,EAAAA,IAAI,EAAE;EACJtH,IAAAA,GAAG,EAAE;EADD,GA5eW;EA+ejBuH,EAAAA,IAAI,EAAE;EACJzH,IAAAA,GAAG,EAAE;EADD,GA/eW;EAkfjB0H,EAAAA,IAAI,EAAE;EACJ1H,IAAAA,GAAG,EAAE,MADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAlfW;EAsfjByH,EAAAA,IAAI,EAAE;EACJzH,IAAAA,GAAG,EAAE,MADD;EAEJG,IAAAA,OAAO,EAAE;EAFL,GAtfW;EA0fjBuH,EAAAA,GAAG,EAAE;EACH1H,IAAAA,GAAG,EAAE;EADF,GA1fY;EA6fjB2H,EAAAA,GAAG,EAAE;EACH3H,IAAAA,GAAG,EAAE;EADF,GA7fY;EAggBjB4H,EAAAA,IAAI,EAAE;EACJ9H,IAAAA,GAAG,EAAE;EADD,GAhgBW;EAmgBjB+H,EAAAA,KAAK,EAAE;EACL/H,IAAAA,GAAG,EAAE;EADA,GAngBU;EAsgBjBgI,EAAAA,KAAK,EAAE;EACL9H,IAAAA,GAAG,EAAE,MADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GAtgBU;EA0gBjBiI,EAAAA,KAAK,EAAE;EACL7H,IAAAA,IAAI,EAAE;EADD,GA1gBU;EA6gBjB8H,EAAAA,KAAK,EAAE;EACLlI,IAAAA,GAAG,EAAE;EADA,GA7gBU;EAghBjBmI,EAAAA,KAAK,EAAE;EACLhI,IAAAA,GAAG,EAAE,kBADA;EAELH,IAAAA,GAAG,EAAE,QAFA;EAGLE,IAAAA,GAAG,EAAE,OAHA;EAILD,IAAAA,IAAI,EAAE,aAJD;EAKLI,IAAAA,OAAO,EAAE;EALJ,GAhhBU;EAuhBjB+H,EAAAA,KAAK,EAAE;EACLpI,IAAAA,GAAG,EAAE;EADA,GAvhBU;EA0hBjBqI,EAAAA,KAAK,EAAE;EACLrI,IAAAA,GAAG,EAAE;EADA,GA1hBU;EA6hBjBsI,EAAAA,KAAK,EAAE;EACLtI,IAAAA,GAAG,EAAE,KADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GA7hBU;EAiiBjBqI,EAAAA,IAAI,EAAE;EACJ71B,IAAAA,CAAC,EAAE,OADC;EAEJwtB,IAAAA,GAAG,EAAE,MAFD;EAGJF,IAAAA,GAAG,EAAE;EAHD,GAjiBW;EAsiBjBwI,EAAAA,IAAI,EAAE;EACJxI,IAAAA,GAAG,EAAE;EADD,GAtiBW;EAyiBjBpuB,EAAAA,KAAK,EAAE;EACLouB,IAAAA,GAAG,EAAE;EADA,GAziBU;EA4iBjByI,EAAAA,MAAM,EAAE;EACNvI,IAAAA,GAAG,EAAE;EADC,GA5iBS;EA+iBjBwI,EAAAA,MAAM,EAAE;EACN1I,IAAAA,GAAG,EAAE;EADC,GA/iBS;EAkjBjB2I,EAAAA,KAAK,EAAE;EACLzI,IAAAA,GAAG,EAAE;EADA,GAljBU;EAqjBjB0I,EAAAA,KAAK,EAAE;EACLv2B,IAAAA,CAAC,EAAE,KADE;EAEL6tB,IAAAA,GAAG,EAAE;EAFA,GArjBU;EAyjBjB2I,EAAAA,KAAK,EAAE;EACL3I,IAAAA,GAAG,EAAE;EADA,GAzjBU;EA4jBjB4I,EAAAA,KAAK,EAAE;EACL5I,IAAAA,GAAG,EAAE;EADA,GA5jBU;EA+jBjB6I,EAAAA,KAAK,EAAE;EACL7I,IAAAA,GAAG,EAAE,OADA;EAELF,IAAAA,GAAG,EAAE;EAFA,GA/jBU;EAmkBjBgJ,EAAAA,MAAM,EAAE;EACN32B,IAAAA,CAAC,EAAE;EADG,GAnkBS;EAskBjB42B,EAAAA,KAAK,EAAE;EACLjJ,IAAAA,GAAG,EAAE;EADA,GAtkBU;EAykBjBkJ,EAAAA,MAAM,EAAE;EACNx2B,IAAAA,CAAC,EAAE,UADG;EAENwtB,IAAAA,GAAG,EAAE;EAFC,GAzkBS;EA6kBjBiJ,EAAAA,IAAI,EAAE;EACJ92B,IAAAA,CAAC,EAAE,KADC;EAEJK,IAAAA,CAAC,EAAE,MAFC;EAGJwtB,IAAAA,GAAG,EAAE;EAHD,GA7kBW;EAklBjBkJ,EAAAA,KAAK,EAAE;EACLpJ,IAAAA,GAAG,EAAE;EADA,GAllBU;EAqlBjBqJ,EAAAA,KAAK,EAAE;EACLnJ,IAAAA,GAAG,EAAE;EADA,GArlBU;EAwlBjBoJ,EAAAA,KAAK,EAAE;EACLtJ,IAAAA,GAAG,EAAE;EADA,GAxlBU;EA2lBjBuJ,EAAAA,IAAI,EAAE;EACJ72B,IAAAA,CAAC,EAAE,OADC;EAEJwtB,IAAAA,GAAG,EAAE;EAFD,GA3lBW;EA+lBjBsJ,EAAAA,KAAK,EAAE;EACLtJ,IAAAA,GAAG,EAAE;EADA,GA/lBU;EAkmBjBuJ,EAAAA,IAAI,EAAE;EACJtJ,IAAAA,GAAG,EAAE,cADD;EAEJD,IAAAA,GAAG,EAAE,MAFD;EAGJD,IAAAA,IAAI,EAAE,SAHF;EAIJI,IAAAA,OAAO,EAAE;EAJL,GAlmBW;EAwmBjBqJ,EAAAA,KAAK,EAAE;EACLxJ,IAAAA,GAAG,EAAE,QADA;EAELE,IAAAA,IAAI,EAAE;EAFD,GAxmBU;EA4mBjBuJ,EAAAA,IAAI,EAAE;EACJzJ,IAAAA,GAAG,EAAE;EADD,GA5mBW;EA+mBjB0J,EAAAA,IAAI,EAAE;EACJ1J,IAAAA,GAAG,EAAE;EADD,GA/mBW;EAknBjB2J,EAAAA,KAAK,EAAE;EACL3J,IAAAA,GAAG,EAAE;EADA,GAlnBU;EAqnBjB4J,EAAAA,MAAM,EAAE;EACN9J,IAAAA,GAAG,EAAE;EADC,GArnBS;EAwnBjB+J,EAAAA,GAAG,EAAE;EACHr3B,IAAAA,CAAC,EAAE,OADA;EAEHwtB,IAAAA,GAAG,EAAE;EAFF,GAxnBY;EA4nBjB8J,EAAAA,OAAO,EAAE;EACPhK,IAAAA,GAAG,EAAE;EADE,GA5nBQ;EA+nBjBiK,EAAAA,UAAU,EAAE;EACV/J,IAAAA,GAAG,EAAE;EADK,GA/nBK;EAkoBjBgK,EAAAA,KAAK,EAAE;EACLlK,IAAAA,GAAG,EAAE;EADA,GAloBU;EAqoBjBmK,EAAAA,IAAI,EAAE;EACJ93B,IAAAA,CAAC,EAAE,KADC;EAEJK,IAAAA,CAAC,EAAE,MAFC;EAGJwtB,IAAAA,GAAG,EAAE;EAHD,GAroBW;EA0oBjBkK,EAAAA,IAAI,EAAE;EACJlK,IAAAA,GAAG,EAAE;EADD,GA1oBW;EA6oBjBmK,EAAAA,IAAI,EAAE;EACJnK,IAAAA,GAAG,EAAE;EADD,GA7oBW;EAgpBjBoK,EAAAA,KAAK,EAAE;EACLtK,IAAAA,GAAG,EAAE;EADA,GAhpBU;EAmpBjBuK,EAAAA,GAAG,EAAE;EACHrK,IAAAA,GAAG,EAAE;EADF,GAnpBY;EAspBjBsK,EAAAA,IAAI,EAAE;EACJxK,IAAAA,GAAG,EAAE;EADD,GAtpBW;EAypBjByK,EAAAA,GAAG,EAAE;EACH/3B,IAAAA,CAAC,EAAE,OADA;EAEHwtB,IAAAA,GAAG,EAAE;EAFF,GAzpBY;EA6pBjBwK,EAAAA,IAAI,EAAE;EACJ1K,IAAAA,GAAG,EAAE;EADD,GA7pBW;EAgqBjB2K,EAAAA,QAAQ,EAAE;EACRzK,IAAAA,GAAG,EAAE;EADG,GAhqBO;EAmqBjB0K,EAAAA,KAAK,EAAE;EACL5K,IAAAA,GAAG,EAAE;EADA,GAnqBU;EAsqBjB6K,EAAAA,KAAK,EAAE;EACLn4B,IAAAA,CAAC,EAAE,SADE;EAELstB,IAAAA,GAAG,EAAE,SAFA;EAGLE,IAAAA,GAAG,EAAE;EAHA;EAtqBU,CAAnB;;EA6qBA,IAAIrsB,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAYysB,YAAZ,CAAX;;EAEA,IAAIzS,KAAK,GAAG,SAASA,KAAT,CAAehf,CAAf,EAAkB;EAC5B,MAAIusB,GAAG,GAAGvnB,IAAI,CAAChF,CAAD,CAAd;EACA,MAAI2c,MAAM,GAAG,EAAb;EACArc,EAAAA,MAAM,CAAC0E,IAAP,CAAYysB,YAAY,CAAClF,GAAD,CAAxB,EAA+BtnB,OAA/B,CAAuC,UAAUzE,GAAV,EAAe;EACpD,QAAIyC,GAAG,GAAGwuB,YAAY,CAAClF,GAAD,CAAZ,CAAkB/rB,GAAlB,CAAV,CADoD;;EAGpDyC,IAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,GAAZ,EAAiBqmB,GAAjB,CAAN;EACA,QAAI0P,IAAI,GAAG/K,SAAS,CAAC1wB,GAAD,CAApB;EACAmc,IAAAA,MAAM,CAACsf,IAAD,CAAN,GAAeh5B,GAAf;EACD,GAND,EAH4B;;EAW5BwuB,EAAAA,YAAY,CAAClF,GAAD,CAAZ,GAAoB5P,MAApB;EACD,CAZD;;EAcA,KAAK,IAAI3c,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgF,IAAI,CAAC/E,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpCgf,EAAAA,KAAK,CAAChf,CAAD,CAAL;EACD;;EAED,IAAIk8B,cAAc,GAAGzK,YAArB;EAEA,IAAI0K,UAAU,GAAG;EACf14B,EAAAA,CAAC,EAAE,CAAC;EACFsH,IAAAA,GAAG,EAAE,sBADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD,CADY;EASf54B,EAAAA,CAAC,EAAE,CAAC;EACFoH,IAAAA,GAAG,EAAE,SADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFJ,GAAD,EAQA;EACDzxB,IAAAA,GAAG,EAAE,SADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFL,GARA,EAgBA;EACDzxB,IAAAA,GAAG,EAAE,QADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,OAFA;EAGJE,MAAAA,EAAE,EAAE,OAHA;EAIJD,MAAAA,EAAE,EAAE;EAJA;EAFL,GAhBA,EAwBA;EACDxxB,IAAAA,GAAG,EAAE,mBADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFL,GAxBA,CATY;EAyCfv6B,EAAAA,CAAC,EAAE,CAAC;EACF+I,IAAAA,GAAG,EAAE,UADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE,QAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFJ,GAAD,EAQA;EACDzxB,IAAAA,GAAG,EAAE,SADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFL,GARA,EAgBA;EACD;EACAzxB,IAAAA,GAAG,EAAE,gBAFJ;EAGDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,OADA;EAEJC,MAAAA,EAAE,EAAE,OAFA;EAGJC,MAAAA,EAAE,EAAE,SAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAHL,GAhBA,EAyBA;EACD;EACAzxB,IAAAA,GAAG,EAAE,UAFJ;EAGDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,QAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAHL,GAzBA,EAkCA;EACD;EACAzxB,IAAAA,GAAG,EAAE,UAFJ;EAGDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,QAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAHL,GAlCA,EA2CA;EACDzxB,IAAAA,GAAG,EAAE,8BADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;;EAAA;EAFL,GA3CA,EAmDA;EACDxxB,IAAAA,GAAG,EAAE,YADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFL,GAnDA,EA0DA;EACDxxB,IAAAA,GAAG,EAAE,SADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFL,GA1DA,CAzCY;EA2Gf14B,EAAAA,CAAC,EAAE,CAAC;EACFkH,IAAAA,GAAG,EAAE,mBADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD,CA3GY;EAmHfz4B,EAAAA,CAAC,EAAE,CAAC;EACFiH,IAAAA,GAAG,EAAE,eADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,QADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD,CAnHY;EA2Hft4B,EAAAA,CAAC,EAAE,CAAC;EACF8G,IAAAA,GAAG,EAAE,SADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFJ,GAAD,CA3HY;EAoIfr4B,EAAAA,CAAC,EAAE,CAAC;EACF4G,IAAAA,GAAG,EAAE,sBADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD,CApIY;EA4Ifn4B,EAAAA,CAAC,EAAE,CAAC;EACF2G,IAAAA,GAAG,EAAE,QADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD,CA5IY;EAoJfh7B,EAAAA,CAAC,EAAE,CAAC;EACFwJ,IAAAA,GAAG,EAAE,WADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,OADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,SAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFJ,GAAD,EAQA;EACDzxB,IAAAA,GAAG,EAAE,sBADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFL,GARA,EAeA;EACDxxB,IAAAA,GAAG,EAAE,aADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFL,GAfA,CApJY;EA2Kfj4B,EAAAA,CAAC,EAAE,CAAC;EACFyG,IAAAA,GAAG,EAAE,YADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD,EAOA;EACDxxB,IAAAA,GAAG,EAAE,QADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFL,GAPA,CA3KY;EA0Lfh4B,EAAAA,CAAC,EAAE,CAAC;EACFwG,IAAAA,GAAG,EAAE,iBADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD,CA1LY;EAkMf/3B,EAAAA,CAAC,EAAE,CAAC;EACFuG,IAAAA,GAAG,EAAE,oBADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD,EAOA;EACDxxB,IAAAA,GAAG,EAAE,UADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFL,GAPA,EAcA;EACDxxB,IAAAA,GAAG,EAAE,aADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFL,GAdA,EAqBA;EACDxxB,IAAAA,GAAG,EAAE,sBADJ;EAEDqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFL,GArBA,CAlMY;EA+Nf53B,EAAAA,CAAC,EAAE,CAAC;EACFoG,IAAAA,GAAG,EAAE,WADH;EAEF;EACAqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE;EAFA;EAHJ,GAAD,EAOA;EACDvxB,IAAAA,GAAG,EAAE,YADJ;EAED;EACAqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,OADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,SAHA;EAIJpL,MAAAA,GAAG,EAAE;EAJD;EAHL,GAPA,CA/NY;EAgPftsB,EAAAA,CAAC,EAAE,CAAC;EACFkG,IAAAA,GAAG,EAAE,aADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,OADA;EAEJC,MAAAA,EAAE,EAAE,OAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD,CAhPY;EAwPfz3B,EAAAA,CAAC,EAAE,CAAC;EACFiG,IAAAA,GAAG,EAAE,eADH;EAEFqxB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFJ,GAAD;EAxPY,CAAjB;EAiQA,IAAIE,UAAU,GAAGN,UAAjB;EAEA,IAAIO,MAAM,GAAG;EACXL,EAAAA,EAAE,EAAE,cADO;EAEXC,EAAAA,EAAE,EAAE,WAFO;EAGXC,EAAAA,EAAE,EAAE,QAHO;EAIXpL,EAAAA,GAAG,EAAE,YAJM;EAKXqL,EAAAA,EAAE,EAAE;EALO,CAAb;;EAQA,IAAIG,WAAW,GAAG,SAASA,WAAT,CAAqB15B,GAArB,EAA0B7D,GAA1B,EAA+B;EAC/C,MAAI4H,KAAK,GAAG,EAAZ;EACA,MAAIhC,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAY5F,GAAG,CAACg9B,IAAhB,CAAX;;EAEA,OAAK,IAAIp8B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgF,IAAI,CAAC/E,MAAzB,EAAiCD,CAAC,IAAI,CAAtC,EAAyC;EACvC,QAAI48B,GAAG,GAAG53B,IAAI,CAAChF,CAAD,CAAd;EACAgH,IAAAA,KAAK,CAAC01B,MAAM,CAACE,GAAD,CAAP,CAAL,GAAqB35B,GAAG,CAACiD,OAAJ,CAAY9G,GAAG,CAAC2L,GAAhB,EAAqB3L,GAAG,CAACg9B,IAAJ,CAASQ,GAAT,CAArB,CAArB;EACD;;EAED,SAAO51B,KAAP;EACD,CAVD;;;EAaA,IAAI61B,WAAW,GAAG,SAASA,WAAT,GAAuB;EACvC,MAAI55B,GAAG,GAAGL,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACA,MAAIc,CAAC,GAAGT,GAAG,CAACA,GAAG,CAAChD,MAAJ,GAAa,CAAd,CAAX;;EAEA,MAAIw8B,UAAU,CAACpxB,cAAX,CAA0B3H,CAA1B,MAAiC,IAArC,EAA2C;EACzC,SAAK,IAAIY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm4B,UAAU,CAAC/4B,CAAD,CAAV,CAAczD,MAAlC,EAA0CqE,CAAC,IAAI,CAA/C,EAAkD;EAChD,UAAIyG,GAAG,GAAG0xB,UAAU,CAAC/4B,CAAD,CAAV,CAAcY,CAAd,EAAiByG,GAA3B;;EAEA,UAAIA,GAAG,CAACpF,IAAJ,CAAS1C,GAAT,MAAkB,IAAtB,EAA4B;EAC1B,eAAO05B,WAAW,CAAC15B,GAAD,EAAMw5B,UAAU,CAAC/4B,CAAD,CAAV,CAAcY,CAAd,CAAN,CAAlB;EACD;EACF;EACF;;EAED,SAAO,EAAP;EACD,CAfD;;EAiBA,IAAIw4B,WAAW,GAAGD,WAAlB;;EAGA,IAAIE,IAAI,GAAG,0BAAX;EACA,IAAIC,OAAO,GAAG;EACZ3vB,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBkf,GAAhB,EAAqB;EAC3B,QAAIA,GAAG,CAACzb,MAAJ,CAAWyb,GAAG,CAACtsB,MAAJ,GAAa,CAAxB,MAA+B,GAAnC,EAAwC;EACtC,aAAOssB,GAAG,CAACrmB,OAAJ,CAAY,IAAZ,EAAkB,KAAlB,CAAP;EACD;;EAED,WAAOqmB,GAAG,GAAG,KAAb;EACD,GAPW;EAQZjf,EAAAA,YAAY,EAAE,SAASA,YAAT,CAAsBif,GAAtB,EAA2B;EACvC,QAAIA,GAAG,CAACzb,MAAJ,CAAWyb,GAAG,CAACtsB,MAAJ,GAAa,CAAxB,MAA+B,GAAnC,EAAwC;EACtC,aAAOssB,GAAG,GAAG,IAAb;EACD;;EAED,QAAIwQ,IAAI,CAACp3B,IAAL,CAAU4mB,GAAV,MAAmB,IAAvB,EAA6B;EAC3B,aAAOA,GAAG,CAAC3U,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,IAAmB,KAA1B;EACD;;EAED,WAAO2U,GAAG,GAAG,GAAb;EACD,GAlBW;EAmBZnf,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBmf,GAAnB,EAAwB;EACjC,QAAIA,GAAG,CAACzb,MAAJ,CAAWyb,GAAG,CAACtsB,MAAJ,GAAa,CAAxB,MAA+B,GAAnC,EAAwC;EACtC,aAAOssB,GAAG,GAAG,GAAb;EACD;;EAED,QAAIA,GAAG,CAACxb,MAAJ,CAAW,CAAC,CAAZ,MAAmB,IAAvB,EAA6B;EAC3B,aAAOwb,GAAP;EACD;;EAED,QAAIwQ,IAAI,CAACp3B,IAAL,CAAU4mB,GAAV,MAAmB,IAAvB,EAA6B;EAC3B,aAAOA,GAAG,CAAC3U,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,IAAmB,KAA1B;EACD;;EAED,WAAO2U,GAAG,GAAG,IAAb;EACD;EAjCW,CAAd;EAmCA,IAAI0Q,UAAU,GAAGD,OAAjB;;EAIA,IAAIE,WAAW,GAAG,SAASxR,SAAT,GAAqB;EACrC,MAAIa,GAAG,GAAG3pB,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACA,MAAI+J,KAAK,GAAG/J,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,GAAuB2C,SAAS,CAAC,CAAD,CAAhC,GAAsC2H,SAAlD;EACA,MAAIvD,KAAK,GAAG,EAAZ,CAHqC;EAIrC;;EAEA,MAAI2F,KAAK,IAAIA,KAAK,CAAC0f,UAAnB,EAA+B;EAC7B,QAAI1f,KAAK,CAAC0f,UAAN,CAAiBC,KAAjB,CAAuBjhB,cAAvB,CAAsCkhB,GAAtC,MAA+C,IAAnD,EAAyD;EACvDvlB,MAAAA,KAAK,GAAG1G,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBjD,KAAK,CAAC0f,UAAN,CAAiBC,KAAjB,CAAuBC,GAAvB,CAAlB,CAAR;EACD;EACF,GAVoC;;;EAarCvlB,EAAAA,KAAK,GAAG1G,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBktB,WAAW,CAACvQ,GAAD,CAA7B,EAAoCvlB,KAApC,CAAR,CAbqC;EAcrC;;EAEA,MAAIA,KAAK,CAACqG,MAAN,KAAiB9C,SAArB,EAAgC;EAC9BvD,IAAAA,KAAK,CAACqG,MAAN,GAAe4vB,UAAU,CAAC5vB,MAAX,CAAkBkf,GAAlB,CAAf;EACD,GAlBoC;;;EAqBrC,MAAIvlB,KAAK,CAACoG,SAAN,KAAoB7C,SAAxB,EAAmC;EACjCvD,IAAAA,KAAK,CAACoG,SAAN,GAAkB6vB,UAAU,CAAC7vB,SAAX,CAAqBmf,GAArB,CAAlB;EACD,GAvBoC;;;EA0BrC,MAAIvlB,KAAK,CAACsG,YAAN,KAAuB/C,SAA3B,EAAsC;EACpCvD,IAAAA,KAAK,CAACsG,YAAN,GAAqB2vB,UAAU,CAAC3vB,YAAX,CAAwBif,GAAxB,CAArB;EACD;;EAED,SAAOvlB,KAAP;EACD,CA/BD;;EAiCA,IAAIm2B,aAAa,GAAGD,WAApB;EAEA;;EACA,IAAIE,UAAU,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,OAAjB,EAA0B,MAA1B,EAAkC,MAAlC,EAA0C,SAA1C,EAAqD,KAArD,EAA4D,MAA5D,EAAoE,OAApE,CAAjB;EACA,IAAIC,YAAY,GAAG,CAAC,MAAD,CAAnB;EACA,IAAIC,YAAY,GAAG;EACjBC,EAAAA,IAAI,EAAE,QADW;EAEjBC,EAAAA,IAAI,EAAE,QAFW;EAGjBC,EAAAA,IAAI,EAAE,SAHW;EAIjBC,EAAAA,KAAK,EAAE,WAJU;EAKjBC,EAAAA,KAAK,EAAE,WALU;EAMjBC,EAAAA,GAAG,EAAE,UANY;EAOjBC,EAAAA,KAAK,EAAE,OAPU;EAQjBC,EAAAA,GAAG,EAAE,OARY;EASjBC,EAAAA,IAAI,EAAE,MATW;EAUjBC,EAAAA,GAAG,EAAE,SAVY;EAWjBC,EAAAA,KAAK,EAAE;EAXU,CAAnB;EAaA,IAAIC,YAAY,GAAG,CAAC;EAClBnzB,EAAAA,GAAG,EAAE,KADa;EAElBqxB,EAAAA,IAAI,EAAE;EAFY,CAAD,EAGhB;EACDrxB,EAAAA,GAAG,EAAE,cADJ;EAEDqxB,EAAAA,IAAI,EAAE;EAFL,CAHgB,EAMhB;EACDrxB,EAAAA,GAAG,EAAE,cADJ;EAEDqxB,EAAAA,IAAI,EAAE;EAFL,CANgB,EAShB;EACDrxB,EAAAA,GAAG,EAAE,OADJ;EAEDqxB,EAAAA,IAAI,EAAE;EAFL,CATgB,EAYhB;EACDrxB,EAAAA,GAAG,EAAE,eADJ;EAEDqxB,EAAAA,IAAI,EAAE;EAFL,CAZgB,CAAnB;;EAiBA,IAAI+B,cAAc,GAAG,SAASA,cAAT,CAAwBl7B,GAAxB,EAA6B;EAChD;EACA,MAAIq6B,YAAY,CAACjyB,cAAb,CAA4BpI,GAA5B,CAAJ,EAAsC;EACpC,WAAOq6B,YAAY,CAACr6B,GAAD,CAAnB;EACD,GAJ+C;;;EAOhD,OAAK,IAAIjD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGk+B,YAAY,CAACj+B,MAAjC,EAAyCD,CAAC,EAA1C,EAA8C;EAC5C,QAAIk+B,YAAY,CAACl+B,CAAD,CAAZ,CAAgB+K,GAAhB,CAAoBpF,IAApB,CAAyB1C,GAAzB,CAAJ,EAAmC;EACjC,aAAOA,GAAG,CAACiD,OAAJ,CAAYg4B,YAAY,CAACl+B,CAAD,CAAZ,CAAgB+K,GAA5B,EAAiCmzB,YAAY,CAACl+B,CAAD,CAAZ,CAAgBo8B,IAAjD,CAAP;EACD;EACF,GAX+C;;;EAchD,OAAK,IAAItyB,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGuzB,YAAY,CAACp9B,MAAnC,EAA2C6J,EAAE,EAA7C,EAAiD;EAC/C,QAAIuzB,YAAY,CAACvzB,EAAD,CAAZ,CAAiBnE,IAAjB,CAAsB1C,GAAtB,MAA+B,IAAnC,EAAyC;EACvC,aAAO,IAAP;EACD;EACF,GAlB+C;;;EAqBhD,OAAK,IAAIkH,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGizB,UAAU,CAACn9B,MAAnC,EAA2CkK,GAAG,EAA9C,EAAkD;EAChD,QAAIizB,UAAU,CAACjzB,GAAD,CAAV,CAAgBxE,IAAhB,CAAqB1C,GAArB,MAA8B,IAAlC,EAAwC;EACtC,UAAIA,GAAG,CAAC6N,MAAJ,CAAW7N,GAAG,CAAChD,MAAJ,GAAa,CAAxB,MAA+B,GAAnC,EAAwC;EACtC,eAAOgD,GAAG,GAAG,IAAb;EACD;;EAED,aAAOA,GAAG,GAAG,KAAb;EACD;EACF;;EAED,SAAOA,GAAG,GAAG,KAAb;EACD,CAhCD;;EAkCA,IAAIm7B,aAAa,GAAGD,cAApB;;EAGA,IAAIE,QAAQ,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,OAAjB,EAA0B,MAA1B,EAAkC,MAAlC,EAA0C,SAA1C,EAAqD,KAArD,EAA4D,MAA5D,EAAoE,MAApE,EAA4E,SAA5E,CAAf;EACA,IAAIC,UAAU,GAAG,CAAC,MAAD,EAAS,MAAT,CAAjB;EACA,IAAIC,YAAY,GAAG;EACjBC,EAAAA,IAAI,EAAE,QADW;EAEjBC,EAAAA,IAAI,EAAE,QAFW;EAGjBC,EAAAA,KAAK,EAAE,SAHU;EAIjBC,EAAAA,MAAM,EAAE,UAJS;EAKjBC,EAAAA,GAAG,EAAE,QALY;EAMjBb,EAAAA,IAAI,EAAE,QANW;EAOjBc,EAAAA,IAAI,EAAE,QAPW;EAQjBf,EAAAA,GAAG,EAAE,OARY;EASjBgB,EAAAA,GAAG,EAAE,QATY;EAUjBd,EAAAA,GAAG,EAAE;EAVY,CAAnB;EAYA,IAAIe,YAAY,GAAG,CAAC;EAClBh0B,EAAAA,GAAG,EAAE,KADa;EAElBqxB,EAAAA,IAAI,EAAE;EAFY,CAAD,EAGhB;EACDrxB,EAAAA,GAAG,EAAE,cADJ;EAEDqxB,EAAAA,IAAI,EAAE;EAFL,CAHgB,EAMhB;EACDrxB,EAAAA,GAAG,EAAE,cADJ;EAEDqxB,EAAAA,IAAI,EAAE;EAFL,CANgB,EAShB;EACDrxB,EAAAA,GAAG,EAAE,OADJ;EAEDqxB,EAAAA,IAAI,EAAE;EAFL,CATgB,CAAnB;;EAcA,IAAI4C,cAAc,GAAG,SAASA,cAAT,CAAwB/7B,GAAxB,EAA6B;EAChD;EACA,MAAIs7B,YAAY,CAAClzB,cAAb,CAA4BpI,GAA5B,CAAJ,EAAsC;EACpC,WAAOs7B,YAAY,CAACt7B,GAAD,CAAnB;EACD,GAJ+C;;;EAOhD,OAAK,IAAIjD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG++B,YAAY,CAAC9+B,MAAjC,EAAyCD,CAAC,EAA1C,EAA8C;EAC5C,QAAI++B,YAAY,CAAC/+B,CAAD,CAAZ,CAAgB+K,GAAhB,CAAoBpF,IAApB,CAAyB1C,GAAzB,MAAkC,IAAtC,EAA4C;EAC1C,aAAOA,GAAG,CAACiD,OAAJ,CAAY64B,YAAY,CAAC/+B,CAAD,CAAZ,CAAgB+K,GAA5B,EAAiCg0B,YAAY,CAAC/+B,CAAD,CAAZ,CAAgBo8B,IAAjD,CAAP;EACD;EACF,GAX+C;;;EAchD,OAAK,IAAItyB,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGw0B,UAAU,CAACr+B,MAAjC,EAAyC6J,EAAE,EAA3C,EAA+C;EAC7C,QAAIw0B,UAAU,CAACx0B,EAAD,CAAV,CAAenE,IAAf,CAAoB1C,GAApB,MAA6B,IAAjC,EAAuC;EACrC,aAAO,IAAP;EACD;EACF,GAlB+C;;;EAqBhD,OAAK,IAAIkH,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGk0B,QAAQ,CAACp+B,MAAjC,EAAyCkK,GAAG,EAA5C,EAAgD;EAC9C,QAAIk0B,QAAQ,CAACl0B,GAAD,CAAR,CAAcxE,IAAd,CAAmB1C,GAAnB,MAA4B,IAAhC,EAAsC;EACpC,aAAOA,GAAG,GAAG,IAAb;EACD;EACF,GAzB+C;;;EA4BhD,MAAI,KAAK0C,IAAL,CAAU1C,GAAV,MAAmB,IAAvB,EAA6B;EAC3B,WAAOA,GAAG,GAAG,GAAb;EACD;;EAED,SAAOA,GAAG,GAAG,IAAb;EACD,CAjCD;;EAmCA,IAAIg8B,aAAa,GAAGD,cAApB;EAEA,IAAIE,GAAG,GAAG;EACRd,EAAAA,aAAa,EAAEA,aADP;EAERa,EAAAA,aAAa,EAAEA;EAFP,CAAV;EAIA;;EAEA,IAAIE,WAAW,GAAG,SAASzT,SAAT,CAAmB/mB,CAAnB,EAAsB;EACtC,MAAImT,GAAG,GAAG,EAAV,CADsC;;EAGtC,MAAIsnB,GAAG,GAAGF,GAAG,CAACd,aAAJ,CAAkBz5B,CAAlB,CAAV;;EAEA,MAAIy6B,GAAJ,EAAS;EACPtnB,IAAAA,GAAG,CAACyO,WAAJ,GAAkB6Y,GAAlB;EACD,GAPqC;;;EAUtC,MAAIC,IAAI,GAAGH,GAAG,CAACD,aAAJ,CAAkBt6B,CAAlB,CAAX;;EAEA,MAAI06B,IAAJ,EAAU;EACRvnB,IAAAA,GAAG,CAACwO,WAAJ,GAAkB+Y,IAAlB;EACD;;EAED,SAAOvnB,GAAP;EACD,CAjBD;;EAmBA,IAAIwnB,YAAY,GAAGH,WAAnB;EAEA;;EACA,IAAII,QAAQ,GAAG;EACb/7B,EAAAA,CAAC,EAAE,CAAC,CAAC,sCAAD,EAAyC,MAAzC,CAAD,EAAmD,CAAC,WAAD,EAAc,KAAd,CAAnD,CADU;EAEbxB,EAAAA,CAAC,EAAE,CAAC,CAAC,eAAD,EAAkB,QAAlB,CAAD,EAA8B,CAAC,UAAD,EAAa,KAAb,CAA9B,EAAmD,CAAC,eAAD,EAAkB,OAAlB,CAAnD,EAA+E,CAAC,cAAD,EAAiB,OAAjB,CAA/E,CAFU;EAGb4B,EAAAA,CAAC,EAAE,CAAC,CAAC,sCAAD,EAAyC,OAAzC,CAAD,EAAoD,CAAC,kEAAD,EAAqE,OAArE,CAApD,CAHU;EAIb5D,EAAAA,CAAC,EAAE,CAAC,CAAC,gBAAD,EAAmB,KAAnB,CAAD,CAJU;EAKbmE,EAAAA,CAAC,EAAE,CAAC,CAAC,YAAD,EAAe,KAAf,CAAD,CALU;EAMbC,EAAAA,CAAC,EAAE,CAAC,CAAC,WAAD,EAAc,IAAd,CAAD,CANU;EAObjD,EAAAA,CAAC,EAAE,CAAC,CAAC,2BAAD,EAA8B,OAA9B,CAAD,CAPU;EAQboD,EAAAA,CAAC,EAAE,CAAC,CAAC,eAAD,EAAkB,MAAlB,CAAD,EAA4B,CAAC,kBAAD,EAAqB,MAArB,CAA5B,EAA0D,CAAC,OAAD,EAAU,KAAV,CAA1D,EAA4E,CAAC,SAAD,EAAY,OAAZ,CAA5E,EAAkG,CAAC,SAAD,EAAY,KAAZ,CAAlG,EAAsH,CAAC,0BAAD,EAA6B,OAA7B,CAAtH,EAA6J,CAAC,6CAAD,EAAgD,KAAhD,CAA7J,CARU;EASbK,EAAAA,CAAC,EAAE,CAAC,CAAC,+BAAD,EAAkC,QAAlC,CAAD,EAA8C,CAAC,SAAD,EAAY,MAAZ,CAA9C,CATU;EAUbC,EAAAA,CAAC,EAAE,CAAC,CAAC,mBAAD,EAAsB,OAAtB,CAAD,CAVU;EAWbC,EAAAA,CAAC,EAAE,CAAC,CAAC,UAAD,EAAa,OAAb,CAAD;EAXU,CAAf;EAaA,IAAI06B,QAAQ,GAAGD,QAAf;EAEA,IAAIE,IAAI,GAAG,gBAAX;;EAEA,IAAIC,SAAS,GAAG,SAASA,SAAT,CAAmBz8B,GAAnB,EAAwB;EACtC,MAAIS,CAAC,GAAGT,GAAG,CAACA,GAAG,CAAChD,MAAJ,GAAa,CAAd,CAAX;;EAEA,MAAIu/B,QAAQ,CAACn0B,cAAT,CAAwB3H,CAAxB,MAA+B,IAAnC,EAAyC;EACvC,SAAK,IAAI1D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGw/B,QAAQ,CAAC97B,CAAD,CAAR,CAAYzD,MAAhC,EAAwCD,CAAC,IAAI,CAA7C,EAAgD;EAC9C,UAAI+K,GAAG,GAAGy0B,QAAQ,CAAC97B,CAAD,CAAR,CAAY1D,CAAZ,EAAe,CAAf,CAAV;;EAEA,UAAI+K,GAAG,CAACpF,IAAJ,CAAS1C,GAAT,MAAkB,IAAtB,EAA4B;EAC1B,eAAOA,GAAG,CAACiD,OAAJ,CAAY6E,GAAZ,EAAiBy0B,QAAQ,CAAC97B,CAAD,CAAR,CAAY1D,CAAZ,EAAe,CAAf,CAAjB,CAAP;EACD;EACF;EACF;;EAED,SAAO,IAAP;EACD,CAdD;EAeA;EACA;EACA;;;EAGA,IAAI2/B,SAAS,GAAG,SAASA,SAAT,GAAqB;EACnC,MAAI18B,GAAG,GAAGL,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACA,MAAI+J,KAAK,GAAG/J,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,GAAuB2C,SAAS,CAAC,CAAD,CAAhC,GAAsC2H,SAAlD;EACA,MAAI8hB,UAAU,GAAG1f,KAAK,CAAC0f,UAAN,CAAiBD,KAAlC,CAHmC;;EAKnC,MAAIC,UAAU,CAAChhB,cAAX,CAA0BpI,GAA1B,CAAJ,EAAoC;EAClC,WAAOopB,UAAU,CAACppB,GAAD,CAAjB;EACD,GAPkC;;;EAUnC,MAAIsoB,MAAM,GAAGmU,SAAS,CAACz8B,GAAD,CAAtB;;EAEA,MAAIsoB,MAAM,KAAK,IAAf,EAAqB;EACnB,WAAOA,MAAP;EACD,GAdkC;;;EAiBnC,MAAIkU,IAAI,CAAC95B,IAAL,CAAU1C,GAAV,CAAJ,EAAoB;EAClB,WAAOA,GAAG,GAAG,IAAb;EACD,GAnBkC;;;EAsBnC,SAAOA,GAAG,GAAG,GAAb;EACD,CAvBD;;EAyBA,IAAIuoB,QAAQ,GAAGmU,SAAf;;EAGA,IAAIC,QAAQ,GAAG,CAAC,CAAC,aAAD,EAAgB,KAAhB,CAAD,EAAyB,CAAC,QAAD,EAAW,MAAX,CAAzB,EAA6C,CAAC,oBAAD,EAAuB,OAAvB,CAA7C,EAA8E,CAAC,oEAAD,EAAuE,KAAvE,CAA9E,EAA6J,CAAC,wCAAD,EAA2C,KAA3C,CAA7J,EAAgN,CAAC,uCAAD,EAA0C,KAA1C,CAAhN,EAAkQ,CAAC,8CAAD,EAAiD,MAAjD,CAAlQ,EAA4T,CAAC,8BAAD,EAAiC,KAAjC,CAA5T;EACf,CAAC,WAAD,EAAc,KAAd,CADe;EAEf,CAAC,kBAAD,EAAqB,IAArB,CAFe;EAGf,CAAC,yBAAD,EAA4B,MAA5B,CAHe,EAGsB,CAAC,uBAAD,EAA0B,MAA1B,CAHtB,EAGyD,CAAC,sBAAD,EAAyB,IAAzB,CAHzD,EAGyF,CAAC,OAAD,EAAU,KAAV,CAHzF,EAG2G,CAAC,UAAD,EAAa,OAAb,CAH3G,EAGkI,CAAC,WAAD,EAAc,MAAd,CAHlI,EAGyJ,CAAC,qBAAD,EAAwB,KAAxB,CAHzJ,EAGyL,CAAC,YAAD,EAAe,SAAf,CAHzL,EAGoN,CAAC,YAAD,EAAe,QAAf,CAHpN,EAG8O,CAAC,cAAD,EAAiB,QAAjB,CAH9O,EAG0Q,CAAC,oBAAD,EAAuB,MAAvB,CAH1Q,EAG0S,CAAC,oBAAD,EAAuB,IAAvB,CAH1S,EAGwU,CAAC,QAAD,EAAW,IAAX,CAHxU,EAG0V,CAAC,SAAD,EAAY,IAAZ,CAH1V,EAG6W,CAAC,KAAD,EAAQ,EAAR,CAH7W,CAAf;;EAKA,IAAIC,SAAS,GAAG,SAASA,SAAT,CAAmBzgC,GAAnB,EAAwB;EACtC,SAAOkB,MAAM,CAAC0E,IAAP,CAAY5F,GAAZ,EAAiBiH,MAAjB,CAAwB,UAAUvC,CAAV,EAAaG,CAAb,EAAgB;EAC7CH,IAAAA,CAAC,CAAC1E,GAAG,CAAC6E,CAAD,CAAJ,CAAD,GAAYA,CAAZ;EACA,WAAOH,CAAP;EACD,GAHM,EAGJ,EAHI,CAAP;EAID,CALD;;EAOA,IAAIiJ,UAAU,GAAG,SAASA,UAAT,CAAoB9J,GAApB,EAAyB0J,KAAzB,EAAgC;EAC/C,MAAI0f,UAAU,GAAG1f,KAAK,CAAC0f,UAAN,CAAiBD,KAAlC;EACA,MAAI0T,MAAM,GAAGD,SAAS,CAACxT,UAAD,CAAtB,CAF+C;EAG/C;;EAEA,MAAIyT,MAAM,CAACz0B,cAAP,CAAsBpI,GAAtB,CAAJ,EAAgC;EAC9B,WAAO68B,MAAM,CAAC78B,GAAD,CAAb;EACD,GAP8C;;;EAU/C,OAAK,IAAIjD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4/B,QAAQ,CAAC3/B,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;EACxC,QAAI4/B,QAAQ,CAAC5/B,CAAD,CAAR,CAAY,CAAZ,EAAe2F,IAAf,CAAoB1C,GAApB,MAA6B,IAAjC,EAAuC;EACrCA,MAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY05B,QAAQ,CAAC5/B,CAAD,CAAR,CAAY,CAAZ,CAAZ,EAA4B4/B,QAAQ,CAAC5/B,CAAD,CAAR,CAAY,CAAZ,CAA5B,CAAN;EACA,aAAOiD,GAAP;EACD;EACF;;EAED,SAAOA,GAAP;EACD,CAlBD;;EAoBA,IAAI88B,YAAY,GAAGhzB,UAAnB;;EAGA,IAAIizB,KAAK,GAAG;EACVzyB,EAAAA,UAAU,EAAE,CAAC;EACXxC,IAAAA,GAAG,EAAE,OADM;EAEXk1B,IAAAA,EAAE,EAAE;EAFO,GAAD,EAGT;EACDl1B,IAAAA,GAAG,EAAE,gBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAHS,CADF;EAQVzyB,EAAAA,KAAK,EAAE,CAAC;EACNzC,IAAAA,GAAG,EAAE,UADC;EAENk1B,IAAAA,EAAE,EAAE;EAFE,GAAD,CARG;EAYV3yB,EAAAA,YAAY,EAAE,CAAC;EACbvC,IAAAA,GAAG,EAAE,aADQ;EAEbk1B,IAAAA,EAAE,EAAE;EAFS,GAAD,EAGX;EACDl1B,IAAAA,GAAG,EAAE,cADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAHW,EAMX;EACDl1B,IAAAA,GAAG,EAAE,aADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GANW,EASX;EACDl1B,IAAAA,GAAG,EAAE,yBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GATW,EAYX;EACDl1B,IAAAA,GAAG,EAAE,0CADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAZW,EAeX;EACDl1B,IAAAA,GAAG,EAAE,SADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAfW,EAkBX;EACDl1B,IAAAA,GAAG,EAAE,SADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAlBW,EAqBX;EACDl1B,IAAAA,GAAG,EAAE,cADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GArBW,EAwBX;EACDl1B,IAAAA,GAAG,EAAE,SADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAxBW,EA2BX;EACDl1B,IAAAA,GAAG,EAAE,SADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA3BW,EA8BX;EACDl1B,IAAAA,GAAG,EAAE,UADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA9BW,EAiCX;EACDl1B,IAAAA,GAAG,EAAE,MADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAjCW,EAoCX;EACDl1B,IAAAA,GAAG,EAAE,KADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GApCW,CAZJ;EAoDV5yB,EAAAA,MAAM,EAAE,CAAC;EACP;EACAtC,IAAAA,GAAG,EAAE,uBAFE;EAGPk1B,IAAAA,EAAE,EAAE;EAHG,GAAD,EAIL;EACD;EACAl1B,IAAAA,GAAG,EAAE,iBAFJ;EAGDk1B,IAAAA,EAAE,EAAE;EAHH,GAJK,EAQL;EACDl1B,IAAAA,GAAG,EAAE,kBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GARK,EAWL;EACDl1B,IAAAA,GAAG,EAAE,gBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAXK,EAcL;EACD;EACAl1B,IAAAA,GAAG,EAAE,oBAFJ;EAGDk1B,IAAAA,EAAE,EAAE;EAHH,GAdK,EAkBL;EACD;EACAl1B,IAAAA,GAAG,EAAE,cAFJ;EAGDk1B,IAAAA,EAAE,EAAE;EAHH,GAlBK;EAuBR;EACE;EACAl1B,IAAAA,GAAG,EAAE,UAFP;EAGEk1B,IAAAA,EAAE,EAAE;EAHN,GAvBQ,EA2BL;EACD;EACAl1B,IAAAA,GAAG,EAAE,kBAFJ;EAGDk1B,IAAAA,EAAE,EAAE;EAHH,GA3BK,EA+BL;EACD;EACAl1B,IAAAA,GAAG,EAAE,iBAFJ;EAGDk1B,IAAAA,EAAE,EAAE;EAHH,GA/BK,EAmCL;EACD;EACAl1B,IAAAA,GAAG,EAAE,uBAFJ;EAGDk1B,IAAAA,EAAE,EAAE;EAHH,GAnCK,EAuCL;EACD;EACAl1B,IAAAA,GAAG,EAAE,iBAFJ;EAGD;EACAk1B,IAAAA,EAAE,EAAE;EAJH,GAvCK,EA4CL;EACD;EACAl1B,IAAAA,GAAG,EAAE,YAFJ;EAGD;EACAk1B,IAAAA,EAAE,EAAE;EAJH,GA5CK;EAkDR;EACA;EACA;EACA;EACA;EACE;EACAl1B,IAAAA,GAAG,EAAE,WAFP;EAGEk1B,IAAAA,EAAE,EAAE;EAHN,GAtDQ,CApDE;EA+GV7yB,EAAAA,SAAS,EAAE,CAAC;EACVrC,IAAAA,GAAG,EAAE,SADK;EAEVk1B,IAAAA,EAAE,EAAE;EAFM,GAAD,EAGR;EACDl1B,IAAAA,GAAG,EAAE,kBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAHQ,EAMR;EACDl1B,IAAAA,GAAG,EAAE,iBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GANQ,EASR;EACDl1B,IAAAA,GAAG,EAAE,aADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GATQ,EAYR;EACDl1B,IAAAA,GAAG,EAAE,gBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAZQ,EAeR;EACDl1B,IAAAA,GAAG,EAAE,aADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAfQ,EAkBR;EACDl1B,IAAAA,GAAG,EAAE,cADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAlBQ,EAqBR;EACDl1B,IAAAA,GAAG,EAAE,UADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GArBQ,EAwBR;EACDl1B,IAAAA,GAAG,EAAE,QADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAxBQ,EA2BR;EACDl1B,IAAAA,GAAG,EAAE,QADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA3BQ,EA8BR;EACDl1B,IAAAA,GAAG,EAAE,YADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA9BQ,EAiCR;EACDl1B,IAAAA,GAAG,EAAE,YADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAjCQ,EAoCR;EACDl1B,IAAAA,GAAG,EAAE,yBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GApCQ,EAuCR;EACDl1B,IAAAA,GAAG,EAAE,iBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAvCQ,EA0CR;EACDl1B,IAAAA,GAAG,EAAE,wFADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA1CQ,EA6CR;EACDl1B,IAAAA,GAAG,EAAE,WADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA7CQ,EAgDR;EACDl1B,IAAAA,GAAG,EAAE,WADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAhDQ,EAmDR;EACDl1B,IAAAA,GAAG,EAAE,UADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAnDQ,EAsDR;EACDl1B,IAAAA,GAAG,EAAE,UADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAtDQ,EAyDR;EACDl1B,IAAAA,GAAG,EAAE,mBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAzDQ,EA4DR;EACDl1B,IAAAA,GAAG,EAAE,WADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA5DQ,EA+DR;EACDl1B,IAAAA,GAAG,EAAE,UADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA/DQ,EAkER;EACDl1B,IAAAA,GAAG,EAAE,WADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GAlEQ,EAqER;EACDl1B,IAAAA,GAAG,EAAE,kBADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GArEQ,EAwER;EACD;EACAl1B,IAAAA,GAAG,EAAE,uBAFJ;EAGDk1B,IAAAA,EAAE,EAAE;EAHH,GAxEQ,EA4ER;EACDl1B,IAAAA,GAAG,EAAE,YADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA5EQ,EA+ER;EACDl1B,IAAAA,GAAG,EAAE,WADJ;EAEDk1B,IAAAA,EAAE,EAAE;EAFH,GA/EQ;EA/GD,CAAZ;EAmMA,IAAIC,UAAU,GAAGF,KAAjB;EAEA,IAAIG,SAAS,GAAG;EACd9yB,EAAAA,MAAM,EAAE,CAAC,KAAD,CADM;EAEdG,EAAAA,KAAK,EAAE,CAAC,MAAD,CAFO;EAGdN,EAAAA,UAAU,EAAE,CAAC,KAAD,EAAQ,KAAR,EAAe,MAAf,EAAuB,MAAvB,EAA+B,MAA/B,EAAuC,MAAvC,EAA+C,KAA/C,EAAsD,KAAtD,EAA6D,KAA7D,EAAoE,KAApE,EAA2E,KAA3E,EAAkF,KAAlF,EAAyF,KAAzF,EAAgG,KAAhG,EAAuG,KAAvG,EAA8G,KAA9G,EAAqH,KAArH,EAA4H,KAA5H,EAAmI,KAAnI,EAA0I,KAA1I,EAAiJ,KAAjJ,EAAwJ,KAAxJ,EAA+J,KAA/J,EAAsK,KAAtK,EAA6K,KAA7K,EAAoL,KAApL,EAA2L,KAA3L,EAAkM,KAAlM,EAAyM,KAAzM,EAAgN,KAAhN,EAAuN,KAAvN,EAA8N,KAA9N,EAAqO,KAArO,EAA4O,KAA5O,EAAmP,KAAnP,EAA0P,KAA1P,EAAiQ,IAAjQ,EAAuQ,IAAvQ,EAA6Q,KAA7Q,EAAoR,KAApR,EAA2R,KAA3R,EAAkS,IAAlS,CAHE;EAIdE,EAAAA,SAAS,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,CAJG;EAKdE,EAAAA,YAAY,EAAE,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,EAAyD,KAAzD,EAAgE,MAAhE,EAAwE,MAAxE,EAAgF,MAAhF,EAAwF,MAAxF,EAAgG,MAAhG,EAAwG,MAAxG,EAAgH,KAAhH,EAAuH,KAAvH,EAA8H,KAA9H,EAAqI,KAArI,EAA4I,KAA5I,EAAmJ,KAAnJ,EAA0J,KAA1J,EAAiK,KAAjK,EAAwK,KAAxK,EAA+K,KAA/K,EAAsL,KAAtL,EAA6L,KAA7L,EAAoM,KAApM,EAA2M,KAA3M,EAAkN,KAAlN,EAAyN,IAAzN,EAA+N,IAA/N,EAAqO,IAArO;EALA,CAAhB;;EAQA6yB,SAAS,GAAG7/B,MAAM,CAAC0E,IAAP,CAAYm7B,SAAZ,EAAuB95B,MAAvB,CAA8B,UAAUvC,CAAV,EAAaG,CAAb,EAAgB;EACxDk8B,EAAAA,SAAS,CAACl8B,CAAD,CAAT,CAAagB,OAAb,CAAqB,UAAUzB,CAAV,EAAa;EAChC,WAAOM,CAAC,CAACN,CAAD,CAAD,GAAOS,CAAd;EACD,GAFD;EAGA,SAAOH,CAAP;EACD,CALW,EAKT,EALS,CAAZ;EAMA,IAAIs8B,MAAM,GAAGD,SAAb;EAEA;;EAEA,IAAIE,UAAU,GAAG,SAASA,UAAT,CAAoBp9B,GAApB,EAAyB;EACxC,MAAIq9B,KAAK,GAAGr9B,GAAG,CAAC8N,MAAJ,CAAW9N,GAAG,CAAChD,MAAJ,GAAa,CAAxB,CAAZ;;EAEA,MAAImgC,MAAM,CAAC/0B,cAAP,CAAsBi1B,KAAtB,MAAiC,IAArC,EAA2C;EACzC,WAAOF,MAAM,CAACE,KAAD,CAAb;EACD;;EAED,MAAIC,GAAG,GAAGt9B,GAAG,CAAC8N,MAAJ,CAAW9N,GAAG,CAAChD,MAAJ,GAAa,CAAxB,CAAV;;EAEA,MAAImgC,MAAM,CAAC/0B,cAAP,CAAsBk1B,GAAtB,MAA+B,IAAnC,EAAyC;EACvC,WAAOH,MAAM,CAACG,GAAD,CAAb;EACD;;EAED,MAAIC,GAAG,GAAGv9B,GAAG,CAAC8N,MAAJ,CAAW9N,GAAG,CAAChD,MAAJ,GAAa,CAAxB,CAAV;;EAEA,MAAIugC,GAAG,KAAK,GAAZ,EAAiB;EACf,WAAO,cAAP;EACD;;EAED,SAAO,IAAP;EACD,CApBD;;EAsBA,IAAIC,cAAc,GAAG,SAAShzB,YAAT,CAAsBxK,GAAtB,EAA2B0J,KAA3B,EAAkCQ,KAAlC,EAAyC;EAC5D,MAAI,CAAClK,GAAL,EAAU;EACR,WAAO,EAAP;EACD,GAH2D;;;EAM5D,MAAI0J,KAAK,CAAC+T,KAAN,CAAYrV,cAAZ,CAA2BpI,GAA3B,MAAoC,IAAxC,EAA8C;EAC5C,QAAIy9B,MAAM,GAAG/zB,KAAK,CAAC0f,UAAN,CAAiBC,KAA9B;EACA,QAAItnB,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAY07B,MAAZ,CAAX;;EAEA,SAAK,IAAI1gC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgF,IAAI,CAAC/E,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpC,UAAIwsB,KAAK,GAAGlsB,MAAM,CAAC0E,IAAP,CAAY07B,MAAM,CAAC17B,IAAI,CAAChF,CAAD,CAAL,CAAlB,CAAZ;;EAEA,WAAK,IAAImB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqrB,KAAK,CAACvsB,MAA1B,EAAkCkB,CAAC,EAAnC,EAAuC;EACrC,YAAI8B,GAAG,KAAKy9B,MAAM,CAAC17B,IAAI,CAAChF,CAAD,CAAL,CAAN,CAAgBwsB,KAAK,CAACrrB,CAAD,CAArB,CAAZ,EAAuC;EACrC,iBAAO6D,IAAI,CAAChF,CAAD,CAAX;EACD;EACF;EACF;EACF,GAnB2D;;;EAsB5DmN,EAAAA,KAAK,GAAGA,KAAK,IAAIkzB,UAAU,CAACp9B,GAAD,CAA3B;;EAEA,MAAIkK,KAAK,IAAI+yB,UAAU,CAAC/yB,KAAD,CAAvB,EAAgC;EAC9B,SAAK,IAAIrD,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGo2B,UAAU,CAAC/yB,KAAD,CAAV,CAAkBlN,MAAxC,EAAgD6J,EAAE,EAAlD,EAAsD;EACpD,UAAI62B,IAAI,GAAGT,UAAU,CAAC/yB,KAAD,CAAV,CAAkBrD,EAAlB,CAAX;;EAEA,UAAI62B,IAAI,CAAC51B,GAAL,CAASpF,IAAT,CAAc1C,GAAd,MAAuB,IAA3B,EAAiC;EAC/B;EACA,eAAOA,GAAG,CAACiD,OAAJ,CAAYy6B,IAAI,CAAC51B,GAAjB,EAAsB41B,IAAI,CAACV,EAA3B,CAAP;EACD;EACF;EACF;;EAED,SAAOh9B,GAAP;EACD,CApCD;;EAsCA,IAAI29B,gBAAgB,GAAGH,cAAvB;EAEA,IAAII,YAAY,GAAG;EACjBzU,EAAAA,KAAK,EAAEM,OADU;EAEjBJ,EAAAA,KAAK,EAAE4P;EAFU,CAAnB;;EAKA,IAAIrvB,UAAU,GAAG;EACf6e,EAAAA,SAAS,EAAEyR,aADI;EAEfxR,EAAAA,UAAU,EAAE2T,YAFG;EAGf9T,EAAAA,QAAQ,EAAEA,QAHK;EAIfze,EAAAA,UAAU,EAAEgzB,YAJG;EAKftyB,EAAAA,YAAY,EAAEmzB;EALC,CAAjB;EAOA,IAAIE,UAAU,GAAG,KAAjB;EACA;;EAEA,IAAIC,KAAK,gBAAgB,YAAY;EACnC,WAASA,KAAT,GAAiB;EACfthC,IAAAA,eAAe,CAAC,IAAD,EAAOshC,KAAP,CAAf,CADe;;;EAIfzgC,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCJ,MAAAA,UAAU,EAAE,KADuB;EAEnCa,MAAAA,KAAK,EAAE,EAF4B;EAGnCX,MAAAA,QAAQ,EAAE;EAHyB,KAArC;EAKAC,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,aAA5B,EAA2C;EACzCJ,MAAAA,UAAU,EAAE,KAD6B;EAEzCa,MAAAA,KAAK,EAAE,EAFkC;EAGzCX,MAAAA,QAAQ,EAAE;EAH+B,KAA3C;EAKAC,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,YAA5B,EAA0C;EACxCJ,MAAAA,UAAU,EAAE,KAD4B;EAExCa,MAAAA,KAAK,EAAE6/B,YAFiC;EAGxCxgC,MAAAA,QAAQ,EAAE;EAH8B,KAA1C;EAKAC,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;EAClCJ,MAAAA,UAAU,EAAE,KADsB;EAElCa,MAAAA,KAAK,EAAEV,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBjE,IAAlB,CAF2B;EAGlCtL,MAAAA,QAAQ,EAAE;EAHwB,KAApC;EAKAC,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,YAA5B,EAA0C;EACxCJ,MAAAA,UAAU,EAAE,KAD4B;EAExCa,MAAAA,KAAK,EAAE6L,UAFiC;EAGxCxM,MAAAA,QAAQ,EAAE;EAH8B,KAA1C;EAKAC,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,SAA5B,EAAuC;EACrCJ,MAAAA,UAAU,EAAE,KADyB;EAErCa,MAAAA,KAAK,EAAE,EAF8B;EAGrCX,MAAAA,QAAQ,EAAE;EAH2B,KAAvC,EA7Be;;EAmCfC,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCJ,MAAAA,UAAU,EAAE,KADuB;EAEnCa,MAAAA,KAAK,EAAE;EACL0N,QAAAA,aAAa,EAAE;EADV;EAF4B,KAArC,EAnCe;;EA0Cf,SAAKgS,KAAL,GAAawL,QAAQ,CAACF,QAAT,CAAkB,IAAlB,CAAb,CA1Ce;;EA4CfS,IAAAA,eAAe,CAAC,IAAD,CAAf;EACD;EACD;;;EAGAhsB,EAAAA,YAAY,CAACsgC,KAAD,EAAQ,CAAC;EACnBvgC,IAAAA,GAAG,EAAE,SADc;EAEnBQ,IAAAA,KAAK,EAAE,SAASggC,OAAT,CAAiBC,IAAjB,EAAuB;EAC5BH,MAAAA,UAAU,GAAGG,IAAb;EACA,aAAO,IAAP;EACD;EALkB,GAAD,EAMjB;EACDzgC,IAAAA,GAAG,EAAE,WADJ;EAEDQ,IAAAA,KAAK,EAAE,SAASmQ,SAAT,GAAqB;EAC1B,aAAO2vB,UAAP;EACD;EACD;;EALC,GANiB,EAajB;EACDtgC,IAAAA,GAAG,EAAE,UADJ;EAEDQ,IAAAA,KAAK,EAAE,SAAS6qB,QAAT,CAAkBqV,OAAlB,EAA2B;EAChC;EACA,UAAIC,OAAO,GAAG,EAAd;EACA7gC,MAAAA,MAAM,CAAC0E,IAAP,CAAYk8B,OAAZ,EAAqBj8B,OAArB,CAA6B,UAAUN,CAAV,EAAa;EACxC,YAAI+G,GAAG,GAAGw1B,OAAO,CAACv8B,CAAD,CAAjB;EACAA,QAAAA,CAAC,GAAGA,CAAC,CAACoB,WAAF,GAAgBC,IAAhB,EAAJ;EACAm7B,QAAAA,OAAO,CAACx8B,CAAD,CAAP,GAAa+G,GAAb;EACD,OAJD;EAKAwgB,MAAAA,QAAQ,CAACL,QAAT,CAAkBsV,OAAlB,EAA2B,KAAKzgB,KAAhC,EAAuC,IAAvC;EACD;EACD;;EAZC,GAbiB,EA2BjB;EACDlgB,IAAAA,GAAG,EAAE,iBADJ;EAEDQ,IAAAA,KAAK,EAAE,SAASogC,eAAT,CAAyBhiC,GAAzB,EAA8B;EACnCkB,MAAAA,MAAM,CAACsP,MAAP,CAAc,KAAKyc,UAAL,CAAgBC,KAA9B,EAAqCltB,GAArC;EACA,aAAO,IAAP;EACD;EACD;;EANC,GA3BiB,EAmCjB;EACDoB,IAAAA,GAAG,EAAE,YADJ;EAEDQ,IAAAA,KAAK,EAAE,SAASqgC,UAAT,CAAoBjiC,GAApB,EAAyB;EAC9BkB,MAAAA,MAAM,CAACsP,MAAP,CAAc,KAAKyc,UAAL,CAAgBD,KAA9B,EAAqChtB,GAArC;EACA,aAAO,IAAP;EACD;EACD;;EANC,GAnCiB,EA2CjB;EACDoB,IAAAA,GAAG,EAAE,SADJ;EAEDQ,IAAAA,KAAK,EAAE,SAASuQ,OAAT,CAAiB5F,IAAjB,EAAuB;EAC5BA,MAAAA,IAAI,GAAGrL,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBjE,IAAlB,CAAP;EACA,WAAKA,IAAL,GAAYrL,MAAM,CAACsP,MAAP,CAAc,KAAKjE,IAAnB,EAAyBA,IAAzB,CAAZ,CAF4B;;EAI5B,WAAKA,IAAL,GAAYgd,SAAS,CAAC,KAAKhd,IAAN,CAArB;EACA,aAAO,IAAP;EACD;EACD;;EATC,GA3CiB,EAsDjB;EACDnL,IAAAA,GAAG,EAAE,aADJ;EAEDQ,IAAAA,KAAK,EAAE,SAAS+a,WAAT,CAAqBxU,EAArB,EAAyB;EAC9B,WAAK+5B,OAAL,CAAaluB,IAAb,CAAkB7L,EAAlB;EACA,aAAO,IAAP;EACD;EACD;;EANC,GAtDiB,EA8DjB;EACD/G,IAAAA,GAAG,EAAE,OADJ;EAEDQ,IAAAA,KAAK,EAAE,SAAS6f,KAAT,GAAiB;EACtB,aAAO;EACLH,QAAAA,KAAK,EAAEpgB,MAAM,CAAC0E,IAAP,CAAY,KAAK0b,KAAjB,EAAwBzgB,MAD1B;EAELysB,QAAAA,OAAO,EAAEpsB,MAAM,CAAC0E,IAAP,CAAY,KAAKqnB,UAAL,CAAgBD,KAA5B,EAAmCnsB,MAFvC;EAGLwxB,QAAAA,YAAY,EAAEnxB,MAAM,CAAC0E,IAAP,CAAY,KAAKqnB,UAAL,CAAgBC,KAA5B,EAAmCrsB,MAH5C;EAILshC,QAAAA,SAAS,EAAEjhC,MAAM,CAAC0E,IAAP,CAAY,KAAK4mB,WAAjB,EAA8B3rB,MAJpC;EAKLuhC,QAAAA,cAAc,EAAE,KAAKF,OAAL,CAAarhC;EALxB,OAAP;EAOD;EAVA,GA9DiB,CAAR,CAAZ;;EA2EA,SAAO8gC,KAAP;EACD,CA9HwB,EAAzB;;;EAiIA,IAAIluB,KAAK,GAAG,SAASA,KAAT,CAAezT,GAAf,EAAoB;EAC9B,SAAOqiC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeviC,GAAf,CAAX,CAAP;EACD,CAFD;EAGA;;;EAGA2hC,KAAK,CAACvhC,SAAN,CAAgBqT,KAAhB,GAAwB,YAAY;EAClC,MAAI+uB,EAAE,GAAG,IAAIb,KAAJ,EAAT,CADkC;;EAGlCa,EAAAA,EAAE,CAAClhB,KAAH,GAAWpgB,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkB,KAAK8Q,KAAvB,CAAX;EACAkhB,EAAAA,EAAE,CAAChW,WAAH,GAAiBtrB,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkB,KAAKgc,WAAvB,CAAjB,CAJkC;;EAMlCgW,EAAAA,EAAE,CAACvV,UAAH,GAAgBxZ,KAAK,CAAC,KAAKwZ,UAAN,CAArB;EACAuV,EAAAA,EAAE,CAACj2B,IAAH,GAAUkH,KAAK,CAAC,KAAKlH,IAAN,CAAf,CAPkC;;EASlCi2B,EAAAA,EAAE,CAAC/0B,UAAH,GAAgB,KAAKA,UAArB;EACA+0B,EAAAA,EAAE,CAACN,OAAH,GAAa,KAAKA,OAAlB;EACA,SAAOM,EAAP;EACD,CAZD;;EAcA,IAAIC,OAAO,GAAGd,KAAd;EAEA;;EAEA,IAAIe,QAAQ,GAAGx6B,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EAC7DA,EAAAA,OAAO,CAAC0Q,GAAR,GAAc,YAAY;EACxB,WAAO,KAAK/B,OAAL,GAAe,CAAf,KAAqB,IAA5B;EACD,GAFD;EAGA;;;EAGA3O,EAAAA,OAAO,CAAC4O,MAAR,GAAiB,YAAY;EAC3B,QAAI,KAAK0rB,IAAT,EAAe;EACb,aAAO,KAAKA,IAAZ;EACD;;EAED,WAAO,IAAP;EACD,GAND;EAOA;;;EAGAt6B,EAAAA,OAAO,CAAC2O,OAAR,GAAkB,UAAUhS,CAAV,EAAa;EAC7B,QAAIwM,GAAG,GAAG,EAAV;;EAEA,QAAIoxB,SAAS,GAAG,SAASA,SAAT,CAAmB/rB,GAAnB,EAAwB;EACtC,UAAIA,GAAG,CAAC8rB,IAAR,EAAc;EACZnxB,QAAAA,GAAG,CAACwC,IAAJ,CAAS6C,GAAG,CAAC8rB,IAAb;EACAC,QAAAA,SAAS,CAAC/rB,GAAG,CAAC8rB,IAAL,CAAT;EACD;EACF,KALD;;EAOAC,IAAAA,SAAS,CAAC,IAAD,CAAT;EACApxB,IAAAA,GAAG,GAAGA,GAAG,CAACqxB,OAAJ,EAAN;;EAEA,QAAI,OAAO79B,CAAP,KAAa,QAAjB,EAA2B;EACzB,aAAOwM,GAAG,CAACxM,CAAD,CAAV;EACD;;EAED,WAAOwM,GAAP;EACD,GAlBD;EAmBA;;;EAGAnJ,EAAAA,OAAO,CAACoL,KAAR,GAAgB,UAAUqvB,SAAV,EAAqB;EACnC,QAAIpsB,IAAI,GAAG,KAAKA,IAAL,CAAUpC,GAAV,CAAc,UAAUgM,EAAV,EAAc;EACrC,aAAOA,EAAE,CAAC7M,KAAH,CAASqvB,SAAT,CAAP;EACD,KAFU,CAAX;EAGA,QAAIzqB,GAAG,GAAG,KAAKjE,SAAL,CAAesC,IAAf,CAAV;EACA,WAAO2B,GAAP;EACD,GAND;EAOA;;;EAGAhQ,EAAAA,OAAO,CAACwM,SAAR,GAAoB,YAAY;EAC9B,WAAO,KAAK6B,IAAL,CAAUzP,MAAV,CAAiB,UAAU6S,KAAV,EAAiB3X,CAAjB,EAAoB;EAC1C2X,MAAAA,KAAK,IAAI3X,CAAC,CAAC0S,SAAF,EAAT;EACA,aAAOiF,KAAP;EACD,KAHM,EAGJ,CAHI,CAAP;EAID,GALD;;EAOAzR,EAAAA,OAAO,CAAC06B,SAAR,GAAoB16B,OAAO,CAACwM,SAA5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAhEkC,CAAnC;EAkEA;;;EAEA,IAAImuB,YAAY,GAAG96B,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EACjEA,EAAAA,OAAO,CAAC46B,KAAR,GAAgB,UAAUj+B,CAAV,EAAa;EAC3B,QAAIA,CAAC,KAAKmG,SAAV,EAAqB;EACnB,aAAO,KAAK2I,GAAL,CAAS,CAAT,CAAP;EACD;;EAED,WAAO,KAAK0E,KAAL,CAAW,CAAX,EAAcxT,CAAd,CAAP;EACD,GAND;EAOA;;;EAGAqD,EAAAA,OAAO,CAAC+G,IAAR,GAAe,UAAUpK,CAAV,EAAa;EAC1B,QAAIA,CAAC,KAAKmG,SAAV,EAAqB;EACnB,aAAO,KAAK2I,GAAL,CAAS,KAAK4C,IAAL,CAAU7V,MAAV,GAAmB,CAA5B,CAAP;EACD;;EAED,QAAImL,GAAG,GAAG,KAAK0K,IAAL,CAAU7V,MAApB;EACA,WAAO,KAAK2X,KAAL,CAAWxM,GAAG,GAAGhH,CAAjB,EAAoBgH,GAApB,CAAP;EACD,GAPD;EAQA;;;EAGA3D,EAAAA,OAAO,CAACmQ,KAAR,GAAgB,UAAUzM,KAAV,EAAiBC,GAAjB,EAAsB;EACpC,QAAI0K,IAAI,GAAG,KAAKA,IAAL,CAAU8B,KAAV,CAAgBzM,KAAhB,EAAuBC,GAAvB,CAAX;EACA,WAAO,KAAKoI,SAAL,CAAesC,IAAf,CAAP;EACD,GAHD;EAIA;;;EAGArO,EAAAA,OAAO,CAAC66B,EAAR,GAAa,UAAUl+B,CAAV,EAAa;EACxB,QAAI7C,CAAC,GAAG,KAAKuU,IAAL,CAAU1R,CAAV,CAAR;;EAEA,QAAI7C,CAAC,KAAKgJ,SAAV,EAAqB;EACnB,aAAO,KAAKiJ,SAAL,CAAe,EAAf,CAAP;EACD;;EAED,WAAO,KAAKA,SAAL,CAAe,CAACjS,CAAD,CAAf,CAAP;EACD,GARD;;EAUAkG,EAAAA,OAAO,CAACyL,GAAR,GAAczL,OAAO,CAAC66B,EAAtB;EACA;;EAEA76B,EAAAA,OAAO,CAAC86B,UAAR,GAAqB,YAAY;EAC/B,WAAO,KAAKvtB,KAAL,CAAW,IAAX,CAAP;EACD,GAFD;;EAIAvN,EAAAA,OAAO,CAAC+6B,SAAR,GAAoB/6B,OAAO,CAAC86B,UAA5B;EACA;;EAEA96B,EAAAA,OAAO,CAACg7B,SAAR,GAAoB,YAAY;EAC9B,WAAO,KAAKztB,KAAL,CAAW,IAAX,CAAP;EACD,GAFD;;EAIAvN,EAAAA,OAAO,CAACkM,QAAR,GAAmBlM,OAAO,CAACg7B,SAA3B;EACA;;EAEAh7B,EAAAA,OAAO,CAACi7B,QAAR,GAAmB,UAAUC,GAAV,EAAe;EAChC,QAAI/xB,GAAG,GAAG,EAAV,CADgC;;EAGhC,SAAK,IAAI5Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK8V,IAAL,CAAU7V,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;EACzC,UAAI+S,KAAK,GAAG,KAAK+C,IAAL,CAAU9V,CAAV,EAAa+S,KAAb,EAAZ;;EAEA,WAAK,IAAI5R,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4R,KAAK,CAAC9S,MAA1B,EAAkCkB,CAAC,EAAnC,EAAuC;EACrCyP,QAAAA,GAAG,CAACwC,IAAJ,CAASL,KAAK,CAAC5R,CAAD,CAAd,EADqC;;EAGrC,YAAIwhC,GAAG,KAAKp4B,SAAR,IAAqBqG,GAAG,CAAC+xB,GAAD,CAAH,KAAap4B,SAAtC,EAAiD;EAC/C,iBAAOqG,GAAG,CAAC+xB,GAAD,CAAV;EACD;EACF;EACF;;EAED,WAAO/xB,GAAP;EACD,GAhBD;EAiBA;;;EAGA,MAAIgyB,SAAS,GAAG,SAASA,SAAT,CAAmB3sB,GAAnB,EAAwB;EACtC,QAAI6B,GAAG,GAAG,EAAV;EACA,QAAI+qB,SAAS,GAAG,EAAhB;;EAEA,QAAI7jB,KAAK,GAAG,SAASA,KAAT,CAAehf,CAAf,EAAkB;EAC5B,UAAIgX,MAAM,GAAGf,GAAG,CAACH,IAAJ,CAAS9V,CAAT,CAAb;EACA,UAAIya,MAAM,GAAGna,MAAM,CAAC0E,IAAP,CAAYgS,MAAM,CAACyD,MAAnB,EAA2B/G,GAA3B,CAA+B,UAAUzP,CAAV,EAAa;EACvD,eAAO+S,MAAM,CAACyD,MAAP,CAAcxW,CAAd,CAAP;EACD,OAFY,CAAb;;EAIA,WAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyW,MAAM,CAACxa,MAA3B,EAAmC+D,CAAC,EAApC,EAAwC;EACtC,YAAI8+B,SAAS,GAAGroB,MAAM,CAACzW,CAAD,CAAtB;EAAA,YACI4W,KAAK,GAAGkoB,SAAS,CAACloB,KADtB;EAAA,YAEIzP,KAAK,GAAG23B,SAAS,CAAC33B,KAFtB;EAAA,YAGIlL,MAAM,GAAG6iC,SAAS,CAAC7iC,MAHvB;;EAKA,YAAI,CAAC4iC,SAAS,CAACjoB,KAAD,CAAd,EAAuB;EACrBioB,UAAAA,SAAS,CAACjoB,KAAD,CAAT,GAAmB,EAAnB;EACD;;EAEDioB,QAAAA,SAAS,CAACjoB,KAAD,CAAT,CAAiBxH,IAAjB,CAAsB4D,MAAM,CAACxD,SAAP,CAAiBrI,KAAjB,EAAwBlL,MAAxB,CAAtB;EACD;EACF,KAlBD;;EAoBA,SAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiW,GAAG,CAACH,IAAJ,CAAS7V,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;EACxCgf,MAAAA,KAAK,CAAChf,CAAD,CAAL;EACD;;EAED,QAAIgF,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAY69B,SAAZ,CAAX;;EAEA,SAAK,IAAI/4B,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAG9E,IAAI,CAAC/E,MAA3B,EAAmC6J,EAAE,EAArC,EAAyC;EACvC,UAAItJ,GAAG,GAAGwE,IAAI,CAAC8E,EAAD,CAAd;EACAgO,MAAAA,GAAG,CAACtX,GAAD,CAAH,GAAWyV,GAAG,CAACzC,SAAJ,CAAcqvB,SAAS,CAACriC,GAAD,CAAvB,CAAX;EACD;;EAED,WAAOsX,GAAP;EACD,GApCD;EAqCA;;;EAGA,MAAIirB,UAAU,GAAG,SAASA,UAAT,CAAoB9sB,GAApB,EAAyBuE,IAAzB,EAA+B;EAC9C,QAAI5J,GAAG,GAAG,EAAV;;EAEA,QAAIoyB,MAAM,GAAG,SAASA,MAAT,CAAgBhjC,CAAhB,EAAmB;EAC9B,UAAIgX,MAAM,GAAGf,GAAG,CAACH,IAAJ,CAAS9V,CAAT,CAAb;EACA,UAAIgF,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAYgS,MAAM,CAACyD,MAAnB,CAAX;EACAzV,MAAAA,IAAI,GAAGA,IAAI,CAACkP,MAAL,CAAY,UAAUjJ,EAAV,EAAc;EAC/B,eAAO+L,MAAM,CAACyD,MAAP,CAAcxP,EAAd,EAAkB2P,KAAlB,KAA4BJ,IAAnC;EACD,OAFM,CAAP;EAGAxV,MAAAA,IAAI,CAACC,OAAL,CAAa,UAAUgG,EAAV,EAAc;EACzB2F,QAAAA,GAAG,CAACwC,IAAJ,CAAS4D,MAAM,CAACxD,SAAP,CAAiBwD,MAAM,CAACyD,MAAP,CAAcxP,EAAd,EAAkBE,KAAnC,EAA0C6L,MAAM,CAACyD,MAAP,CAAcxP,EAAd,EAAkBhL,MAA5D,CAAT;EACD,OAFD;EAGD,KATD;;EAWA,SAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiW,GAAG,CAACH,IAAJ,CAAS7V,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;EACxCgjC,MAAAA,MAAM,CAAChjC,CAAD,CAAN;EACD;;EAED,WAAOiW,GAAG,CAACzC,SAAJ,CAAc5C,GAAd,CAAP;EACD,GAnBD;EAoBA;;;EAGAnJ,EAAAA,OAAO,CAACgT,MAAR,GAAiB,UAAU3a,MAAV,EAAkB;EACjC,QAAIA,MAAM,KAAKyK,SAAf,EAA0B;EACxB,aAAOq4B,SAAS,CAAC,IAAD,CAAhB;EACD;;EAED,QAAI,OAAO9iC,MAAP,KAAkB,QAAtB,EAAgC;EAC9BA,MAAAA,MAAM,GAAG2S,MAAM,CAAC3S,MAAD,CAAf;EACD;;EAED,WAAOijC,UAAU,CAAC,IAAD,EAAOjjC,MAAP,CAAV,IAA4B,KAAK0T,SAAL,CAAe,EAAf,CAAnC;EACD,GAVD;;EAYA/L,EAAAA,OAAO,CAACmT,KAAR,GAAgBnT,OAAO,CAACgT,MAAxB;EACA;;EAEAhT,EAAAA,OAAO,CAACqa,SAAR,GAAoB,UAAU1d,CAAV,EAAa;EAC/B,QAAIwM,GAAG,GAAG,EAAV;EACA,SAAKkF,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7BqP,MAAAA,GAAG,CAACwC,IAAJ,CAAS7R,CAAC,CAAC4S,YAAF,EAAT;EACD,KAFD;;EAIA,QAAI,OAAO/P,CAAP,KAAa,QAAjB,EAA2B;EACzB,aAAO,KAAKoP,SAAL,CAAe,CAAC5C,GAAG,CAACxM,CAAD,CAAJ,CAAf,CAAP;EACD;;EAED,WAAO,KAAKoP,SAAL,CAAe5C,GAAf,CAAP;EACD,GAXD;;EAaAnJ,EAAAA,OAAO,CAACw7B,QAAR,GAAmBx7B,OAAO,CAACqa,SAA3B;EACD,CAxKsC,CAAvC;;;EA2KA,IAAIohB,eAAe,GAAG,SAASC,aAAT,CAAuBp4B,GAAvB,EAA4B;EAChD,MAAIq4B,QAAQ,GAAG,EAAf;EACA,MAAIC,SAAS,GAAG,EAAhB;EACAt4B,EAAAA,GAAG,CAAC9F,OAAJ,CAAY,UAAU7F,GAAV,EAAe;EACzB,QAAIA,GAAG,CAACsZ,QAAJ,KAAiB,IAAjB,IAAyBtZ,GAAG,CAAC+M,QAAJ,KAAiB,IAA9C,EAAoD;EAClD;EACD;;EAED,QAAI/M,GAAG,CAACsM,GAAJ,KAAYnB,SAAhB,EAA2B;EACzB64B,MAAAA,QAAQ,CAAChwB,IAAT,CAAchU,GAAG,CAACsM,GAAlB;EACD;;EAED,QAAItM,GAAG,CAAC+H,IAAJ,KAAaoD,SAAjB,EAA4B;EAC1B84B,MAAAA,SAAS,CAACjwB,IAAV,CAAehU,GAAG,CAAC+H,IAAnB;EACD;EACF,GAZD;EAaA,SAAO;EACLwE,IAAAA,IAAI,EAAEy3B,QADD;EAEL1iB,IAAAA,KAAK,EAAE2iB;EAFF,GAAP;EAID,CApBD;;;EAuBA,IAAI5qB,QAAQ,GAAG,SAASA,QAAT,CAAkBxC,GAAlB,EAAuBgC,IAAvB,EAA6B;EAC1C,MAAIhC,GAAG,CAACqtB,MAAJ,IAAcrtB,GAAG,CAACqtB,MAAJ,CAAW1wB,GAAX,KAAmB,IAArC,EAA2C;EACzC,QAAI2wB,cAAc,GAAGL,eAAe,CAACjrB,IAAD,CAApC;EAAA,QACIyI,KAAK,GAAG6iB,cAAc,CAAC7iB,KAD3B;EAAA,QAEI/U,IAAI,GAAG43B,cAAc,CAAC53B,IAF1B,CADyC;;;EAMzC,SAAK,IAAI3L,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0gB,KAAK,CAACzgB,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;EACrC,UAAIiW,GAAG,CAACqtB,MAAJ,CAAW5iB,KAAX,CAAiBA,KAAK,CAAC1gB,CAAD,CAAtB,MAA+BuK,SAAnC,EAA8C;EAC5C,eAAO,KAAP;EACD;EACF,KAVwC;;;EAazC,SAAK,IAAIT,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAG6B,IAAI,CAAC1L,MAA3B,EAAmC6J,EAAE,EAArC,EAAyC;EACvC,UAAImM,GAAG,CAACqtB,MAAJ,CAAW33B,IAAX,CAAgBA,IAAI,CAAC7B,EAAD,CAApB,MAA8BS,SAAlC,EAA6C;EAC3C,eAAO,KAAP;EACD;EACF;EACF;;EAED,SAAO,IAAP;EACD,CAtBD;;EAwBA,IAAIi5B,SAAS,GAAG/qB,QAAhB;;EAEA,IAAIgrB,QAAQ,GAAGn8B,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EAC7D;EACAA,EAAAA,OAAO,CAACuN,KAAR,GAAgB,UAAUjK,GAAV,EAAe;EAC7B,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E,CAD6B;;EAI7B,QAAI,OAAOsb,IAAP,KAAgB,QAAhB,IAA4B,OAAOA,IAAP,KAAgB,QAA5C,IAAwDA,IAAI,KAAK,IAArE,EAA2E;EACzEA,MAAAA,IAAI,GAAG;EACLtD,QAAAA,KAAK,EAAEsD;EADF,OAAP;EAGD,KAR4B;;;EAW7B,QAAIjG,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB;;EAEA,QAAIjG,IAAI,CAAChY,MAAL,KAAgB,CAApB,EAAuB;EACrB,aAAO,KAAKuT,SAAL,CAAe,EAAf,CAAP;EACD,KAf4B;;;EAkB7B,QAAIgwB,SAAS,CAAC,IAAD,EAAOvrB,IAAP,CAAT,KAA0B,KAA9B,EAAqC;EACnC,aAAO,KAAKzE,SAAL,CAAe,EAAf,CAAP;EACD,KApB4B;;;EAuB7B,QAAIwI,OAAO,GAAG,KAAKlG,IAAL,CAAUzP,MAAV,CAAiB,UAAUuK,GAAV,EAAerP,CAAf,EAAkB;EAC/C,aAAOqP,GAAG,CAACoD,MAAJ,CAAWzS,CAAC,CAACyT,KAAF,CAAQiD,IAAR,CAAX,CAAP;EACD,KAFa,EAEX,EAFW,CAAd,CAvB6B;;EA2B7B,QAAIiG,IAAI,CAACtD,KAAL,KAAerQ,SAAf,IAA4B2T,IAAI,CAACtD,KAAL,KAAe,IAA3C,IAAmDsD,IAAI,CAACtD,KAAL,KAAe,EAAtE,EAA0E;EACxE,aAAO,KAAKpH,SAAL,CAAewI,OAAf,EAAwBvB,MAAxB,CAA+ByD,IAAI,CAACtD,KAApC,CAAP;EACD;;EAED,WAAO,KAAKpH,SAAL,CAAewI,OAAf,CAAP;EACD,GAhCD;EAiCA;;;EAGAvU,EAAAA,OAAO,CAACsY,GAAR,GAAc,UAAUhV,GAAV,EAAe;EAC3B,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E,CAD2B;;EAG3B,QAAIqV,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB,CAH2B;;EAK3B,QAAIjG,IAAI,CAAChY,MAAL,KAAgB,CAAhB,IAAqBujC,SAAS,CAAC,IAAD,EAAOvrB,IAAP,CAAT,KAA0B,KAAnD,EAA0D;EACxD,aAAO,IAAP;EACD,KAP0B;;;EAU3B,QAAI+D,OAAO,GAAG,KAAKlG,IAAL,CAAUzP,MAAV,CAAiB,UAAUuK,GAAV,EAAerP,CAAf,EAAkB;EAC/C,aAAOqP,GAAG,CAACoD,MAAJ,CAAWzS,CAAC,CAACwe,GAAF,CAAM9H,IAAN,CAAX,CAAP;EACD,KAFa,EAEX,EAFW,CAAd;EAGA,WAAO,KAAKzE,SAAL,CAAewI,OAAf,CAAP;EACD,GAdD;EAeA;;;EAGAvU,EAAAA,OAAO,CAAC4X,QAAR,GAAmB,UAAUtU,GAAV,EAAe;EAChC,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,QAAIqV,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB,CAFgC;;EAIhC,QAAIslB,SAAS,CAAC,IAAD,EAAOvrB,IAAP,CAAT,KAA0B,KAA9B,EAAqC;EACnC,aAAO,KAAKzE,SAAL,CAAe,EAAf,CAAP;EACD;;EAED,SAAK,IAAIxT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK8V,IAAL,CAAU7V,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;EACzC,UAAIgV,KAAK,GAAG,KAAKc,IAAL,CAAU9V,CAAV,EAAagV,KAAb,CAAmBiD,IAAnB,EAAyB,IAAzB,CAAZ;EACA,aAAO,KAAKzE,SAAL,CAAewB,KAAf,CAAP;EACD;;EAED,WAAO,KAAKxB,SAAL,CAAe,EAAf,CAAP;EACD,GAdD;EAeA;;;EAGA/L,EAAAA,OAAO,CAAC,IAAD,CAAP,GAAgB,UAAUsD,GAAV,EAAe;EAC7B,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,QAAIqV,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB,CAF6B;;EAI7B,QAAIslB,SAAS,CAAC,IAAD,EAAOvrB,IAAP,CAAT,KAA0B,KAA9B,EAAqC;EACnC,aAAO,KAAKzE,SAAL,CAAe,EAAf,CAAP;EACD;;EAED,QAAIxM,KAAK,GAAG,KAAK8O,IAAL,CAAU5B,MAAV,CAAiB,UAAU3S,CAAV,EAAa;EACxC,aAAOA,CAAC,CAACue,GAAF,CAAM7H,IAAN,MAAgB,IAAvB;EACD,KAFW,CAAZ;EAGA,WAAO,KAAKzE,SAAL,CAAexM,KAAf,CAAP;EACD,GAZD;EAaA;;;EAGAS,EAAAA,OAAO,CAACi8B,IAAR,GAAe,UAAU34B,GAAV,EAAe;EAC5B,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,QAAIqV,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB;EACA,QAAIlX,KAAK,GAAG,KAAK8O,IAAL,CAAU5B,MAAV,CAAiB,UAAU3S,CAAV,EAAa;EACxC,aAAOA,CAAC,CAACue,GAAF,CAAM7H,IAAN,MAAgB,KAAvB;EACD,KAFW,CAAZ;EAGA,WAAO,KAAKzE,SAAL,CAAexM,KAAf,CAAP;EACD,GAPD;EAQA;;;EAGAS,EAAAA,OAAO,CAACqY,GAAR,GAAc,UAAU/U,GAAV,EAAe;EAC3B,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,QAAIqV,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB,CAF2B;;EAI3B,QAAIslB,SAAS,CAAC,IAAD,EAAOvrB,IAAP,CAAT,KAA0B,KAA9B,EAAqC;EACnC,aAAO,KAAP;EACD;;EAED,WAAO,KAAKnC,IAAL,CAAU5J,IAAV,CAAe,UAAU3K,CAAV,EAAa;EACjC,aAAOA,CAAC,CAACue,GAAF,CAAM7H,IAAN,MAAgB,IAAvB;EACD,KAFM,CAAP;EAGD,GAXD;EAYA;;;EAGAxQ,EAAAA,OAAO,CAACuQ,SAAR,GAAoB,UAAUjN,GAAV,EAAe;EACjC,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E,CADiC;;EAIjC,QAAI,CAACmI,GAAL,EAAU;EACRA,MAAAA,GAAG,GAAG,IAAN;EACD;;EAED,QAAIkN,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB;EACA,QAAIlC,OAAO,GAAG,EAAd;EACA,SAAKlG,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7Bya,MAAAA,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAezS,CAAC,CAACyW,SAAF,CAAYC,IAAZ,CAAf,CAAV;EACD,KAFD;EAGA+D,IAAAA,OAAO,GAAGA,OAAO,CAAC9H,MAAR,CAAe,UAAU3S,CAAV,EAAa;EACpC,aAAOA,CAAP;EACD,KAFS,CAAV;EAGA,WAAO,KAAKiS,SAAL,CAAewI,OAAf,CAAP;EACD,GAjBD;;EAmBAvU,EAAAA,OAAO,CAACk8B,SAAR,GAAoBl8B,OAAO,CAACuQ,SAA5B;EACA;;EAEAvQ,EAAAA,OAAO,CAAC2Q,UAAR,GAAqB,UAAUrN,GAAV,EAAe;EAClC,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E,CADkC;;EAIlC,QAAI,CAACmI,GAAL,EAAU;EACRA,MAAAA,GAAG,GAAG,IAAN;EACD;;EAED,QAAIkN,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB;EACA,QAAIlC,OAAO,GAAG,EAAd;EACA,SAAKlG,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7Bya,MAAAA,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAezS,CAAC,CAAC6W,UAAF,CAAaH,IAAb,CAAf,CAAV;EACD,KAFD;EAGA+D,IAAAA,OAAO,GAAGA,OAAO,CAAC9H,MAAR,CAAe,UAAU3S,CAAV,EAAa;EACpC,aAAOA,CAAP;EACD,KAFS,CAAV;EAGA,WAAO,KAAKiS,SAAL,CAAewI,OAAf,CAAP;EACD,GAjBD;;EAmBAvU,EAAAA,OAAO,CAACm8B,UAAR,GAAqBn8B,OAAO,CAAC2Q,UAA7B;EACA;;EAEA3Q,EAAAA,OAAO,CAACuG,MAAR,GAAiB,UAAUjD,GAAV,EAAe;EAC9B,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,QAAIqV,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB,CAF8B;;EAI9B,QAAIgF,OAAO,GAAG,KAAK,IAAL,EAAWjL,IAAX,EAAiBnC,IAA/B;EACA,QAAI+tB,OAAO,GAAG3gB,OAAO,CAACxP,GAAR,CAAY,UAAUnS,CAAV,EAAa;EACrC,UAAIid,GAAG,GAAGjd,CAAC,CAACwR,KAAF,GAAUW,GAAV,CAAc,UAAUlP,CAAV,EAAa;EACnC,eAAOA,CAAC,CAACyG,EAAT;EACD,OAFS,CAAV,CADqC;;EAKrC,UAAI9G,CAAC,GAAG5C,CAAC,CAACyT,KAAF,CAAQiD,IAAR,EAAc,CAAd,CAAR;EACA,UAAIjN,KAAK,GAAGwT,GAAG,CAAClW,OAAJ,CAAYnE,CAAC,CAACgH,KAAd,CAAZ,CANqC;;EAQrC,UAAIH,KAAK,KAAK,CAAV,IAAeA,KAAK,KAAK,CAAC,CAA9B,EAAiC;EAC/B,eAAO,IAAP;EACD;;EAED,aAAOzJ,CAAC,CAACiS,SAAF,CAAYjS,CAAC,CAAC4J,KAAd,EAAqBH,KAArB,CAAP;EACD,KAba,CAAd;EAcA64B,IAAAA,OAAO,GAAGA,OAAO,CAAC3vB,MAAR,CAAe,UAAU3S,CAAV,EAAa;EACpC,aAAOA,CAAC,KAAK,IAAb;EACD,KAFS,CAAV;EAGA,WAAO,KAAKiS,SAAL,CAAeqwB,OAAf,CAAP;EACD,GAvBD;EAwBA;;;EAGAp8B,EAAAA,OAAO,CAACR,KAAR,GAAgB,UAAU8D,GAAV,EAAe;EAC7B,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,QAAIqV,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,EAAMmT,IAAN,CAAtB,CAF6B;;EAI7B,QAAIgF,OAAO,GAAG,KAAK,IAAL,EAAWjL,IAAX,EAAiBnC,IAA/B;EACA,QAAI+tB,OAAO,GAAG3gB,OAAO,CAACxP,GAAR,CAAY,UAAUnS,CAAV,EAAa;EACrC,UAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACA,UAAIyL,GAAG,GAAGzL,KAAK,CAACW,GAAN,CAAU,UAAUlP,CAAV,EAAa;EAC/B,eAAOA,CAAC,CAACyG,EAAT;EACD,OAFS,CAAV,CAFqC;;EAMrC,UAAI9G,CAAC,GAAG5C,CAAC,CAACyT,KAAF,CAAQiD,IAAR,EAAc,CAAd,CAAR;EACA,UAAIjN,KAAK,GAAGwT,GAAG,CAAClW,OAAJ,CAAYnE,CAAC,CAACgH,KAAd,CAAZ,CAPqC;;EASrC,UAAIH,KAAK,KAAK,CAAC,CAAX,IAAgB,CAAC+H,KAAK,CAAC/H,KAAK,GAAG7G,CAAC,CAAClE,MAAX,CAA1B,EAA8C;EAC5C,eAAO,IAAP;EACD,OAXoC;;;EAcrC,UAAIgL,EAAE,GAAG8H,KAAK,CAAC/H,KAAK,GAAG7G,CAAC,CAAClE,MAAX,CAAL,CAAwBgL,EAAjC;EACA,UAAImJ,GAAG,GAAG7S,CAAC,CAACtB,MAAF,GAAW+K,KAAX,GAAmB7G,CAAC,CAAClE,MAA/B;EACA,aAAOsB,CAAC,CAACiS,SAAF,CAAYvI,EAAZ,EAAgBmJ,GAAhB,CAAP;EACD,KAjBa,CAAd;EAkBAyvB,IAAAA,OAAO,GAAGA,OAAO,CAAC3vB,MAAR,CAAe,UAAU3S,CAAV,EAAa;EACpC,aAAOA,CAAC,KAAK,IAAb;EACD,KAFS,CAAV;EAGA,WAAO,KAAKiS,SAAL,CAAeqwB,OAAf,CAAP;EACD,GA3BD;EA4BA;;;EAGAp8B,EAAAA,OAAO,CAACq8B,QAAR,GAAmB,UAAU/4B,GAAV,EAAe;EAChC,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,WAAO,KAAKsR,MAAL,CAAY,UAAU+B,GAAV,EAAe;EAChC,aAAOA,GAAG,CAAC0tB,SAAJ,CAAc54B,GAAd,EAAmBmT,IAAnB,EAAyBlX,KAAhC;EACD,KAFM,CAAP;EAGD,GALD;EAMA;;;EAGAS,EAAAA,OAAO,CAACs8B,SAAR,GAAoB,UAAUh5B,GAAV,EAAe;EACjC,QAAImT,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,WAAO,KAAKsR,MAAL,CAAY,UAAU+B,GAAV,EAAe;EAChC,aAAOA,GAAG,CAAC2tB,UAAJ,CAAe74B,GAAf,EAAoBmT,IAApB,EAA0BlX,KAAjC;EACD,KAFM,CAAP;EAGD,GALD;EAMD,CAzOkC,CAAnC;EA2OA;;;EACA,IAAIg9B,QAAQ,GAAG,SAASA,QAAT,CAAkBt4B,GAAlB,EAAuBuK,GAAvB,EAA4BguB,IAA5B,EAAkC3zB,MAAlC,EAA0C;EACvD,MAAI4zB,OAAO,GAAG,EAAd;;EAEA,MAAI,OAAOx4B,GAAP,KAAe,QAAnB,EAA6B;EAC3Bw4B,IAAAA,OAAO,GAAGx4B,GAAG,CAAC3I,KAAJ,CAAU,GAAV,CAAV;EACD,GALsD;EAMvD;;;EAGAkT,EAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5B,QAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ,CAD4B;;EAG5B,QAAIkxB,IAAI,KAAK,IAAb,EAAmB;EACjBlxB,MAAAA,KAAK,GAAGA,KAAK,CAACmB,MAAN,CAAa,UAAU1P,CAAV,EAAa;EAChC,eAAOA,CAAC,CAACuN,KAAF,CAAQrG,GAAR,EAAauK,GAAG,CAACtJ,KAAjB,CAAP;EACD,OAFO,CAAR;EAGD;;EAEDoG,IAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAaxE,CAAb,EAAgB;EAC5B;EACA,UAAIkkC,OAAO,CAACjkC,MAAR,GAAiB,CAArB,EAAwB;EACtB,YAAIikC,OAAO,CAAClkC,CAAD,CAAP,IAAckkC,OAAO,CAAClkC,CAAD,CAAP,KAAe,GAAjC,EAAsC;EACpCwE,UAAAA,CAAC,CAACkH,GAAF,CAAMw4B,OAAO,CAAClkC,CAAD,CAAb,EAAkBsQ,MAAlB,EAA0B2F,GAAG,CAACtJ,KAA9B;EACD;EACF,OAJD,MAIO;EACL;EACAnI,QAAAA,CAAC,CAACkH,GAAF,CAAMA,GAAN,EAAW4E,MAAX,EAAmB2F,GAAG,CAACtJ,KAAvB;EACD;EACF,KAVD;EAWD,GApBD;EAqBA;EACD,CA/BD;;EAiCA,IAAIw3B,OAAO,GAAGH,QAAd;EAEA;;EAEA,IAAIt4B,GAAG,GAAG,SAASA,GAAT,CAAaC,IAAb,EAAmBy4B,GAAnB,EAAwB;EAChC,MAAI,CAACz4B,IAAL,EAAW;EACT,WAAO,IAAP;EACD;;EAEDw4B,EAAAA,OAAO,CAACx4B,IAAD,EAAO,IAAP,EAAa,KAAb,EAAoBy4B,GAApB,CAAP;;EACA,SAAO,IAAP;EACD,CAPD;EAQA;;;EAGA,IAAIhyB,OAAO,GAAG,SAASA,OAAT,CAAiBzG,IAAjB,EAAuBy4B,GAAvB,EAA4B;EACxC,MAAI,CAACz4B,IAAL,EAAW;EACT,WAAO,IAAP;EACD;;EAEDw4B,EAAAA,OAAO,CAACx4B,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmBy4B,GAAnB,CAAP;;EACA,SAAO,IAAP;EACD,CAPD;EAQA;;;EAGA,IAAI/yB,KAAK,GAAG,SAASA,KAAT,CAAe1F,IAAf,EAAqBy4B,GAArB,EAA0B;EACpC,MAAI7wB,KAAK,GAAG,IAAZ;;EAEA,OAAKuC,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7BA,IAAAA,CAAC,CAACwR,KAAF,GAAU9N,OAAV,CAAkB,UAAUT,CAAV,EAAa;EAC7B,aAAOA,CAAC,CAAC6M,KAAF,CAAQ1F,IAAR,EAAcy4B,GAAd,EAAmB7wB,KAAK,CAAC5G,KAAzB,CAAP;EACD,KAFD;EAGD,GAJD;EAKA,SAAO,IAAP;EACD,CATD;EAUA;;;EAGA,IAAIoF,KAAK,GAAG,SAASA,KAAT,CAAerG,GAAf,EAAoB;EAC9B,MAAI,CAACA,GAAL,EAAU;EACR,WAAO,IAAP;EACD;;EAED,MAAIiB,KAAK,GAAG,KAAKA,KAAjB;EACA,MAAIqP,OAAO,GAAG,KAAKlG,IAAL,CAAUzP,MAAV,CAAiB,UAAUuK,GAAV,EAAerP,CAAf,EAAkB;EAC/C,WAAOqP,GAAG,CAACoD,MAAJ,CAAWzS,CAAC,CAACwQ,KAAF,CAAQrG,GAAR,EAAaiB,KAAb,CAAX,CAAP;EACD,GAFa,EAEX,EAFW,CAAd;EAGA,SAAO,KAAK6G,SAAL,CAAewI,OAAf,CAAP;EACD,CAVD;;EAYA,IAAIqoB,MAAM,GAAG;EACX34B,EAAAA,GAAG,EAAEA,GADM;EAEX0G,EAAAA,OAAO,EAAEA,OAFE;EAGXf,EAAAA,KAAK,EAAEA,KAHI;EAIXU,EAAAA,KAAK,EAAEA;EAJI,CAAb;EAOA;;EACA,IAAI2B,GAAG,GAAG,SAASA,GAAT,CAAanM,EAAb,EAAiB;EACzB,MAAIgM,KAAK,GAAG,IAAZ;;EAEA,MAAI,CAAChM,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EAED,MAAIuO,IAAI,GAAG,KAAKA,IAAL,CAAUpC,GAAV,CAAc,UAAUnS,CAAV,EAAavB,CAAb,EAAgB;EACvC,QAAIiW,GAAG,GAAG1C,KAAK,CAACC,SAAN,CAAgB,CAACjS,CAAD,CAAhB,CAAV;;EAEA0U,IAAAA,GAAG,CAAC8rB,IAAJ,GAAW,IAAX,CAHuC;;EAKvC,QAAIjqB,GAAG,GAAGvQ,EAAE,CAAC0O,GAAD,EAAMjW,CAAN,CAAZ,CALuC;;EAOvC,QAAI8X,GAAG,IAAIA,GAAG,CAAChC,IAAX,IAAmBgC,GAAG,CAAChC,IAAJ,CAAS,CAAT,CAAvB,EAAoC;EAClC,aAAOgC,GAAG,CAAChC,IAAJ,CAAS,CAAT,CAAP;EACD;;EAED,WAAOgC,GAAP;EACD,GAZU,CAAX,CAPyB;;EAqBzBhC,EAAAA,IAAI,GAAGA,IAAI,CAAC5B,MAAL,CAAY,UAAUtP,CAAV,EAAa;EAC9B,WAAOA,CAAP;EACD,GAFM,CAAP,CArByB;;EAyBzB,MAAIkR,IAAI,CAAC7V,MAAL,KAAgB,CAApB,EAAuB;EACrB,WAAO,KAAKuT,SAAL,CAAesC,IAAf,CAAP;EACD,GA3BwB;;;EA8BzB,MAAI3W,OAAO,CAAC2W,IAAI,CAAC,CAAD,CAAL,CAAP,KAAqB,QAArB,IAAiCA,IAAI,CAAC,CAAD,CAAJ,CAAQzG,GAAR,KAAgB,QAArD,EAA+D;EAC7D,WAAOyG,IAAP;EACD;;EAED,SAAO,KAAKtC,SAAL,CAAesC,IAAf,CAAP;EACD,CAnCD;EAoCA;;;EAGA,IAAI7Q,OAAO,GAAG,SAASA,OAAT,CAAiBsC,EAAjB,EAAqB+8B,YAArB,EAAmC;EAC/C,MAAItkB,MAAM,GAAG,IAAb;;EAEA,MAAI,CAACzY,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EAED,OAAKuO,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAavB,CAAb,EAAgB;EAChC,QAAIukC,GAAG,GAAGvkB,MAAM,CAACxM,SAAP,CAAiB,CAACjS,CAAD,CAAjB,CAAV,CADgC;;;EAIhC,QAAI+iC,YAAY,KAAK,IAArB,EAA2B;EACzBC,MAAAA,GAAG,CAACxC,IAAJ,GAAW,IAAX,CADyB;EAE1B;;EAEDx6B,IAAAA,EAAE,CAACg9B,GAAD,EAAMvkC,CAAN,CAAF;EACD,GATD;EAUA,SAAO,IAAP;EACD,CAlBD;EAmBA;;;EAGA,IAAIkU,MAAM,GAAG,SAASA,MAAT,CAAgB3M,EAAhB,EAAoB;EAC/B,MAAI2Y,MAAM,GAAG,IAAb;;EAEA,MAAI,CAAC3Y,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EAED,MAAIuO,IAAI,GAAG,KAAKA,IAAL,CAAU5B,MAAV,CAAiB,UAAU3S,CAAV,EAAavB,CAAb,EAAgB;EAC1C,QAAIiW,GAAG,GAAGiK,MAAM,CAAC1M,SAAP,CAAiB,CAACjS,CAAD,CAAjB,CAAV;;EAEA0U,IAAAA,GAAG,CAAC8rB,IAAJ,GAAW,IAAX,CAH0C;;EAK1C,WAAOx6B,EAAE,CAAC0O,GAAD,EAAMjW,CAAN,CAAT;EACD,GANU,CAAX;EAOA,SAAO,KAAKwT,SAAL,CAAesC,IAAf,CAAP;EACD,CAfD;EAgBA;;;EAGA,IAAImB,IAAI,GAAG,SAASA,IAAT,CAAc1P,EAAd,EAAkB;EAC3B,MAAIi9B,MAAM,GAAG,IAAb;;EAEA,MAAI,CAACj9B,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EAED,MAAIyP,MAAM,GAAG,KAAKlB,IAAL,CAAUmB,IAAV,CAAe,UAAU1V,CAAV,EAAavB,CAAb,EAAgB;EAC1C,QAAIiW,GAAG,GAAGuuB,MAAM,CAAChxB,SAAP,CAAiB,CAACjS,CAAD,CAAjB,CAAV;;EAEA0U,IAAAA,GAAG,CAAC8rB,IAAJ,GAAW,IAAX,CAH0C;;EAK1C,WAAOx6B,EAAE,CAAC0O,GAAD,EAAMjW,CAAN,CAAT;EACD,GANY,CAAb;;EAQA,MAAIgX,MAAJ,EAAY;EACV,WAAO,KAAKxD,SAAL,CAAe,CAACwD,MAAD,CAAf,CAAP;EACD;;EAED,SAAOzM,SAAP;EACD,CApBD;EAqBA;;;EAGA,IAAI2B,IAAI,GAAG,SAASA,IAAT,CAAc3E,EAAd,EAAkB;EAC3B,MAAIk9B,MAAM,GAAG,IAAb;;EAEA,MAAI,CAACl9B,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EAED,SAAO,KAAKuO,IAAL,CAAU5J,IAAV,CAAe,UAAU3K,CAAV,EAAavB,CAAb,EAAgB;EACpC,QAAIiW,GAAG,GAAGwuB,MAAM,CAACjxB,SAAP,CAAiB,CAACjS,CAAD,CAAjB,CAAV;;EAEA0U,IAAAA,GAAG,CAAC8rB,IAAJ,GAAW,IAAX,CAHoC;;EAKpC,WAAOx6B,EAAE,CAAC0O,GAAD,EAAMjW,CAAN,CAAT;EACD,GANM,CAAP;EAOD,CAdD;EAeA;;;EAGA,IAAIqD,MAAM,GAAG,SAASA,MAAT,CAAgBe,CAAhB,EAAmB;EAC9B,MAAI,CAAC,KAAK4C,KAAV,EAAiB;EACf,WAAO,IAAP;EACD;;EAED,MAAI1C,CAAC,GAAGnB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,KAAKyS,IAAL,CAAU7V,MAArC,CAAR;;EAEA,MAAImE,CAAC,KAAKmG,SAAV,EAAqB;EACnB,QAAIuL,IAAI,GAAG,CAAC,KAAKA,IAAL,CAAUxR,CAAV,CAAD,CAAX;EACA,WAAO,KAAKkP,SAAL,CAAesC,IAAf,CAAP;EACD,GAV6B;;;EAa9B,MAAIxR,CAAC,GAAGF,CAAJ,GAAQ,KAAKnE,MAAjB,EAAyB;EACvBqE,IAAAA,CAAC,GAAG,KAAKrE,MAAL,GAAcmE,CAAlB;EACAE,IAAAA,CAAC,GAAGA,CAAC,GAAG,CAAJ,GAAQ,CAAR,GAAYA,CAAhB;EACD;;EAED,SAAO,KAAKsT,KAAL,CAAWtT,CAAX,EAAcA,CAAC,GAAGF,CAAlB,CAAP;EACD,CAnBD;EAoBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAGA,IAAIsgC,QAAQ,GAAG;EACbhxB,EAAAA,GAAG,EAAEA,GADQ;EAEbzO,EAAAA,OAAO,EAAEA,OAFI;EAGbiP,EAAAA,MAAM,EAAEA,MAHK;EAIb+C,EAAAA,IAAI,EAAEA,IAJO;EAKb/K,EAAAA,IAAI,EAAEA,IALO;EAMb7I,EAAAA,MAAM,EAAEA;EANK,CAAf;;EAUA,IAAIshC,QAAQ,GAAG,SAASA,QAAT,CAAkB1hC,GAAlB,EAAuB;EACpC,SAAOA,GAAG,CAACF,KAAJ,CAAU,OAAV,CAAP;EACD,CAFD;EAGA;;;EAGA,IAAI6hC,SAAS,GAAG,SAASA,SAAT,CAAmBlC,QAAnB,EAA6B;EAC3C,MAAIjd,MAAM,GAAG7iB,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAjF;EACA,MAAI2I,IAAI,GAAG,EAAX,CAF2C;;EAI3Cm3B,EAAAA,QAAQ,CAACz9B,OAAT,CAAiB,UAAUhC,GAAV,EAAejD,CAAf,EAAkB;EACjC,QAAI6kC,GAAG,GAAG,IAAV;;EAEA,QAAIpf,MAAM,CAACzlB,CAAD,CAAN,KAAcuK,SAAlB,EAA6B;EAC3Bs6B,MAAAA,GAAG,GAAGpf,MAAM,CAACzlB,CAAD,CAAZ;EACD,KALgC;;;EAQjCiD,IAAAA,GAAG,GAAG,CAACA,GAAG,IAAI,EAAR,EAAY8C,WAAZ,EAAN;EACA9C,IAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,WAAZ,EAAyB,EAAzB,CAAN;EACA,QAAI0K,GAAG,GAAG+zB,QAAQ,CAAC1hC,GAAD,CAAR,CAAcyQ,GAAd,CAAkB,UAAUnP,CAAV,EAAa;EACvC,aAAOA,CAAC,CAACyB,IAAF,EAAP;EACD,KAFS,CAAV;EAGAuF,IAAAA,IAAI,CAACqF,GAAG,CAAC,CAAD,CAAJ,CAAJ,GAAerF,IAAI,CAACqF,GAAG,CAAC,CAAD,CAAJ,CAAJ,IAAgB,EAA/B;;EAEA,QAAIA,GAAG,CAAC3Q,MAAJ,KAAe,CAAnB,EAAsB;EACpBsL,MAAAA,IAAI,CAACqF,GAAG,CAAC,CAAD,CAAJ,CAAJ,CAAa5P,KAAb,GAAqB6jC,GAArB;EACD,KAFD,MAEO;EACLt5B,MAAAA,IAAI,CAACqF,GAAG,CAAC,CAAD,CAAJ,CAAJ,CAAak0B,IAAb,GAAoBv5B,IAAI,CAACqF,GAAG,CAAC,CAAD,CAAJ,CAAJ,CAAak0B,IAAb,IAAqB,EAAzC;EACAv5B,MAAAA,IAAI,CAACqF,GAAG,CAAC,CAAD,CAAJ,CAAJ,CAAak0B,IAAb,CAAkB1xB,IAAlB,CAAuB;EACrB2xB,QAAAA,IAAI,EAAEn0B,GAAG,CAACgH,KAAJ,CAAU,CAAV,CADe;EAErB5W,QAAAA,KAAK,EAAE6jC;EAFc,OAAvB;EAID;EACF,GAxBD,EAJ2C;EA6B3C;;EAEA,SAAOt5B,IAAP;EACD,CAhCD;;EAkCA,IAAIy5B,UAAU,GAAG,SAASA,UAAT,CAAoBtC,QAApB,EAA8Bjd,MAA9B,EAAsCxP,GAAtC,EAA2C;EAC1D,MAAI1K,IAAI,GAAGq5B,SAAS,CAAClC,QAAD,EAAWjd,MAAX,CAApB;EACA,MAAIze,KAAK,GAAG,EAAZ,CAF0D;;EAI1D,MAAIgY,KAAK,GAAG,SAASA,KAAT,CAAehf,CAAf,EAAkB;EAC5B,QAAIuB,CAAC,GAAG0U,GAAG,CAACH,IAAJ,CAAS9V,CAAT,CAAR;EACA,QAAI+S,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACA,QAAI2N,KAAK,GAAG3N,KAAK,CAACW,GAAN,CAAU,UAAUlP,CAAV,EAAa;EACjC,aAAOA,CAAC,CAAC4B,OAAT;EACD,KAFW,CAAZ,CAH4B;;EAO5B,QAAI48B,MAAM,GAAG,SAASA,MAAT,CAAgBr+B,CAAhB,EAAmB;EAC9B,UAAI4G,IAAI,CAACmV,KAAK,CAAC/b,CAAD,CAAN,CAAJ,KAAmB4F,SAAvB,EAAkC;EAChC;EACA,YAAIgB,IAAI,CAACmV,KAAK,CAAC/b,CAAD,CAAN,CAAJ,CAAemgC,IAAf,KAAwBv6B,SAA5B,EAAuC;EACrCgB,UAAAA,IAAI,CAACmV,KAAK,CAAC/b,CAAD,CAAN,CAAJ,CAAemgC,IAAf,CAAoB7/B,OAApB,CAA4B,UAAU6/B,IAAV,EAAgB;EAC1C;EACA,gBAAIpkB,KAAK,CAAC/b,CAAC,GAAGmgC,IAAI,CAACC,IAAL,CAAU9kC,MAAf,CAAL,KAAgCsK,SAApC,EAA+C;EAC7C;EACD,aAJyC;;;EAO1C,gBAAI06B,SAAS,GAAGH,IAAI,CAACC,IAAL,CAAU94B,KAAV,CAAgB,UAAU9E,IAAV,EAAgB7C,CAAhB,EAAmB;EACjD,qBAAO6C,IAAI,KAAKuZ,KAAK,CAAC/b,CAAC,GAAGL,CAAJ,GAAQ,CAAT,CAArB;EACD,aAFe,CAAhB;;EAIA,gBAAI2gC,SAAS,KAAK,IAAlB,EAAwB;EACtBj+B,cAAAA,KAAK,CAACoM,IAAN,CAAW;EACTnI,gBAAAA,EAAE,EAAE1J,CAAC,CAACwR,KAAF,GAAUpO,CAAV,EAAasG,EADR;EAETjK,gBAAAA,KAAK,EAAE8jC,IAAI,CAAC9jC,KAFH;EAGTf,gBAAAA,MAAM,EAAE6kC,IAAI,CAACC,IAAL,CAAU9kC,MAAV,GAAmB;EAHlB,eAAX;EAKD;EACF,WAlBD;EAmBD,SAtB+B;;;EAyBhC,YAAIsL,IAAI,CAACmV,KAAK,CAAC/b,CAAD,CAAN,CAAJ,CAAe3D,KAAf,KAAyBuJ,SAA7B,EAAwC;EACtCvD,UAAAA,KAAK,CAACoM,IAAN,CAAW;EACTnI,YAAAA,EAAE,EAAE1J,CAAC,CAACwR,KAAF,GAAUpO,CAAV,EAAasG,EADR;EAETjK,YAAAA,KAAK,EAAEuK,IAAI,CAACmV,KAAK,CAAC/b,CAAD,CAAN,CAAJ,CAAe3D,KAFb;EAGTf,YAAAA,MAAM,EAAE;EAHC,WAAX;EAKD;EACF;EACF,KAlCD;;EAoCA,SAAK,IAAI0E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+b,KAAK,CAACzgB,MAA1B,EAAkC0E,CAAC,EAAnC,EAAuC;EACrCq+B,MAAAA,MAAM,CAACr+B,CAAD,CAAN;EACD;EACF,GA9CD;;EAgDA,OAAK,IAAI3E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiW,GAAG,CAACH,IAAJ,CAAS7V,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;EACxCgf,IAAAA,KAAK,CAAChf,CAAD,CAAL;EACD;;EAED,SAAOgH,KAAP;EACD,CAzDD;;EA2DA,IAAIk+B,OAAO,GAAGF,UAAd;;EAEA,IAAIG,SAAS,GAAG79B,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EAC9D;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAI29B,QAAQ,GAAG,SAASA,QAAT,CAAkBhmC,GAAlB,EAAuB;EACpC,WAAOA,GAAG,IAAIkB,MAAM,CAACd,SAAP,CAAiB4Q,QAAjB,CAA0BrO,IAA1B,CAA+B3C,GAA/B,MAAwC,iBAAtD;EACD,GAFD;EAGA;;;EAGAqI,EAAAA,OAAO,CAAC49B,MAAR,GAAiB,UAAUz0B,GAAV,EAAe;EAC9B,QAAI2C,KAAK,GAAG,IAAZ;;EAEA,QAAIkS,MAAM,GAAG,EAAb,CAH8B;;EAK9B,QAAI6f,KAAK,GAAGF,QAAQ,CAACx0B,GAAD,CAApB;;EAEA,QAAI00B,KAAK,KAAK,IAAd,EAAoB;EAClB10B,MAAAA,GAAG,GAAGtQ,MAAM,CAAC0E,IAAP,CAAY4L,GAAZ,EAAiB8C,GAAjB,CAAqB,UAAUzP,CAAV,EAAa;EACtCwhB,QAAAA,MAAM,CAACrS,IAAP,CAAYxC,GAAG,CAAC3M,CAAD,CAAf;EACA,eAAOA,CAAP;EACD,OAHK,CAAN;EAID,KAZ6B;;;EAe9B,QAAI,OAAO2M,GAAP,KAAe,QAAnB,EAA6B;EAC3BA,MAAAA,GAAG,GAAG,CAACA,GAAD,CAAN;EACD,KAjB6B;;;EAoB9B,QAAI,KAAK0yB,MAAL,CAAY1wB,GAAZ,KAAoB,IAAxB,EAA8B;EAC5B,WAAKI,KAAL;EACD;;EAED,QAAIhM,KAAK,GAAGk+B,OAAO,CAACt0B,GAAD,EAAM6U,MAAN,EAAc,IAAd,CAAnB;;EACA,QAAIlkB,CAAC,GAAG,KAAKuU,IAAL,CAAU,CAAV,CAAR,CAzB8B;;EA2B9B,QAAIwvB,KAAK,KAAK,IAAd,EAAoB;EAClB,UAAIC,KAAK,GAAG,EAAZ;EACAv+B,MAAAA,KAAK,CAAC/B,OAAN,CAAc,UAAU9D,CAAV,EAAa;EACzBokC,QAAAA,KAAK,CAACpkC,CAAC,CAACH,KAAH,CAAL,GAAiBukC,KAAK,CAACpkC,CAAC,CAACH,KAAH,CAAL,IAAkB,EAAnC;EACAukC,QAAAA,KAAK,CAACpkC,CAAC,CAACH,KAAH,CAAL,CAAeoS,IAAf,CAAoB7R,CAAC,CAACiS,SAAF,CAAYrS,CAAC,CAAC8J,EAAd,EAAkB9J,CAAC,CAAClB,MAApB,CAApB;EACD,OAHD;EAIAK,MAAAA,MAAM,CAAC0E,IAAP,CAAYugC,KAAZ,EAAmBtgC,OAAnB,CAA2B,UAAUhB,CAAV,EAAa;EACtCshC,QAAAA,KAAK,CAACthC,CAAD,CAAL,GAAWsP,KAAK,CAACC,SAAN,CAAgB+xB,KAAK,CAACthC,CAAD,CAArB,CAAX;EACD,OAFD;EAGA,aAAOshC,KAAP;EACD,KArC6B;;;EAwC9Bv+B,IAAAA,KAAK,GAAGA,KAAK,CAAC0M,GAAN,CAAU,UAAUvS,CAAV,EAAa;EAC7B,aAAOI,CAAC,CAACiS,SAAF,CAAYrS,CAAC,CAAC8J,EAAd,EAAkB9J,CAAC,CAAClB,MAApB,CAAP;EACD,KAFO,CAAR;EAGA,WAAO,KAAKuT,SAAL,CAAexM,KAAf,CAAP;EACD,GA5CD;;EA8CAS,EAAAA,OAAO,CAAC+9B,MAAR,GAAiB/9B,OAAO,CAAC49B,MAAzB;EACD,CA7DmC,CAApC;EA+DA;;;EACA,IAAIryB,KAAK,GAAG,SAASA,KAAT,CAAenF,OAAf,EAAwB;EAClC,MAAI0F,KAAK,GAAG,IAAZ;;EAEA1F,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACA,MAAI6S,KAAK,GAAG,EAAZ;EACA,MAAI/U,IAAI,GAAG,EAAX;EACA,OAAK23B,MAAL,CAAY5iB,KAAZ,GAAoBA,KAApB;EACA,OAAK4iB,MAAL,CAAY33B,IAAZ,GAAmBA,IAAnB;EACA,OAAK23B,MAAL,CAAY1wB,GAAZ,GAAkB,IAAlB;EACA,OAAKkD,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAavB,CAAb,EAAgB;EAChCuB,IAAAA,CAAC,CAACyR,KAAF,GAAUzR,CAAC,CAACyR,KAAF,IAAW,EAArB,CADgC;;EAGhC,QAAID,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ,CAHgC;;EAKhCA,IAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzB,UAAIkc,KAAK,CAAClc,CAAC,CAAC4B,OAAH,CAAL,IAAoB,CAACsa,KAAK,CAACrV,cAAN,CAAqB7G,CAAC,CAAC4B,OAAvB,CAAzB,EAA0D;EACxD,eADwD;EAEzD;;EAEDsa,MAAAA,KAAK,CAAClc,CAAC,CAAC4B,OAAH,CAAL,GAAmBsa,KAAK,CAAClc,CAAC,CAAC4B,OAAH,CAAL,IAAoB,EAAvC;EACAsa,MAAAA,KAAK,CAAClc,CAAC,CAAC4B,OAAH,CAAL,CAAiBgN,IAAjB,CAAsBpT,CAAtB;EACAM,MAAAA,MAAM,CAAC0E,IAAP,CAAYR,CAAC,CAACmH,IAAd,EAAoB1G,OAApB,CAA4B,UAAUyG,GAAV,EAAe;EACzCC,QAAAA,IAAI,CAACD,GAAD,CAAJ,GAAYC,IAAI,CAACD,GAAD,CAAJ,IAAa,EAAzB;EACAC,QAAAA,IAAI,CAACD,GAAD,CAAJ,CAAU0H,IAAV,CAAepT,CAAf;EACD,OAHD,EAPyB;;EAYzB,UAAI6N,OAAO,CAACtC,IAAZ,EAAkB;EAChB/G,QAAAA,CAAC,CAACkI,OAAF,CAAU6G,KAAK,CAAC5G,KAAhB;EACA+T,QAAAA,KAAK,CAAClc,CAAC,CAAC+G,IAAH,CAAL,GAAgB,CAACvL,CAAD,CAAhB;EACD;EACF,KAhBD;EAiBD,GAtBD;EAuBA,SAAO,IAAP;EACD,CAjCD;EAkCA;;;EAGA,IAAIylC,OAAO,GAAG,SAASA,OAAT,GAAmB;EAC/B,OAAKnC,MAAL,GAAc,EAAd;EACA,OAAKxtB,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7BA,IAAAA,CAAC,CAACyR,KAAF,GAAU,EAAV;EACD,GAFD,EAF+B;;EAM/B,OAAKoD,OAAL,GAAenR,OAAf,CAAuB,UAAUgR,GAAV,EAAe;EACpCA,IAAAA,GAAG,CAACqtB,MAAJ,GAAa,EAAb;EACArtB,IAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5BA,MAAAA,CAAC,CAACyR,KAAF,GAAU,EAAV;EACD,KAFD;EAGD,GALD;EAMA,SAAO,IAAP;EACD,CAbD;;EAeA,IAAI0yB,QAAQ,GAAG;EACb1yB,EAAAA,KAAK,EAAEA,KADM;EAEbyyB,EAAAA,OAAO,EAAEA;EAFI,CAAf;;EAKA,IAAIE,WAAW,GAAG,SAASh+B,SAAT,CAAmB1E,GAAnB,EAAwB;EACxC,SAAOA,GAAG,CAAC6N,MAAJ,CAAW,CAAX,EAAcjJ,WAAd,KAA8B5E,GAAG,CAAC8N,MAAJ,CAAW,CAAX,CAArC;EACD,CAFD;EAGA;;;EAGA,IAAI60B,WAAW,GAAG,SAASA,WAAT,CAAqB1/B,OAArB,EAA8B;EAC9C,MAAIqN,KAAK,GAAG,IAAZ;;EAEA,MAAI1F,OAAO,GAAGjL,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF;;EAEA,MAAI,CAACsD,OAAL,EAAc;EACZ,WAAO,KAAK,QAAL,GAAP;EACD,GAP6C;;;EAU9C,MAAI2H,OAAO,KAAK,IAAhB,EAAsB;EACpBA,IAAAA,OAAO,GAAG;EACRg4B,MAAAA,QAAQ,EAAE;EADF,KAAV;EAGD;;EAED,MAAIh4B,OAAO,KAAK,KAAhB,EAAuB;EACrBA,IAAAA,OAAO,GAAG;EACRg4B,MAAAA,QAAQ,EAAE;EADF,KAAV;EAGD;;EAEDh4B,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB,CAtB8C;;EAwB9C,OAAK43B,OAAL,GAxB8C;;EA0B9C,OAAK3vB,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,QAAIqd,KAAK,GAAG1Y,OAAZ,CAD6B;;EAG7B,QAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;EACjC0Y,MAAAA,KAAK,GAAG1Y,OAAO,CAAC3E,CAAD,CAAf;EACD;;EAED,QAAIukC,UAAJ,CAP6B;;EAS7B,QAAIlnB,KAAK,IAAIzf,OAAO,CAACyf,KAAD,CAAP,KAAmB,QAA5B,IAAwCA,KAAK,CAACvP,GAAN,KAAc,KAA1D,EAAiE;EAC/Dy2B,MAAAA,UAAU,GAAGlnB,KAAK,CAAC9I,IAAnB;;EAEAvC,MAAAA,KAAK,CAACN,IAAN,GAAa2N,KAAb,CAAmBhC,KAAK,CAAC3L,IAAN,EAAnB;EACD,KAJD,MAIO,IAAI,OAAO2L,KAAP,KAAiB,QAArB,EAA+B;EACpC;EACA,UAAI/Q,OAAO,CAACk4B,QAAR,KAAqB,KAArB,IAA8BxkC,CAAC,CAACwR,KAAF,CAAQ,CAAR,EAAW/K,WAAX,EAAlC,EAA4D;EAC1D4W,QAAAA,KAAK,GAAG+mB,WAAW,CAAC/mB,KAAD,CAAnB;EACD;;EAEDknB,MAAAA,UAAU,GAAG3iB,YAAY,CAACvE,KAAD,EAAQrL,KAAK,CAAC5G,KAAd,EAAqB4G,KAAK,CAACN,IAAN,EAArB,CAAzB,CANoC;;EAQpC,UAAI+yB,MAAM,GAAGzyB,KAAK,CAACC,SAAN,CAAgBsyB,UAAhB,CAAb;;EAEAE,MAAAA,MAAM,CAACC,MAAP;EACAH,MAAAA,UAAU,GAAGE,MAAM,CAAClwB,IAApB;EACD,KAZM,MAYA;EACL,aADK;EAEN,KA3B4B;;;EA8B7B,QAAIjI,OAAO,CAACg4B,QAAR,KAAqB,IAAzB,EAA+B;EAC7B,UAAIK,OAAO,GAAG3kC,CAAC,CAACoO,IAAF,CAAO;EACnBoD,QAAAA,KAAK,EAAE;EACLpH,UAAAA,IAAI,EAAE;EADD;EADY,OAAP,EAIXoH,KAJH;EAKA+yB,MAAAA,UAAU,CAAC,CAAD,CAAV,CAAc/yB,KAAd,GAAsB9N,OAAtB,CAA8B,UAAUT,CAAV,EAAaxE,CAAb,EAAgB;EAC5C,YAAIkmC,OAAO,CAAClmC,CAAD,CAAX,EAAgB;EACdwE,UAAAA,CAAC,CAAC4N,OAAF,CAAU8zB,OAAO,CAAClmC,CAAD,CAAP,CAAW2L,IAArB,EAA2B,SAA3B,EAAsC4H,KAAK,CAAC5G,KAA5C;EACD;EACF,OAJD;EAKD;;EAEDpL,IAAAA,CAAC,CAAC2E,OAAF,CAAU4/B,UAAU,CAAC,CAAD,CAApB,EAAyBvyB,KAAzB,EA3C6B;EA4C9B,GA5CD;EA6CA,SAAO,IAAP;EACD,CAxED;EAyEA;;;EAGA,IAAIrN,OAAO,GAAG,SAASA,OAAT,CAAiB8O,KAAjB,EAAwBmxB,QAAxB,EAAkCt4B,OAAlC,EAA2C;EACvD;EACA,MAAIs4B,QAAQ,KAAK57B,SAAjB,EAA4B;EAC1B,WAAO,KAAKq7B,WAAL,CAAiB5wB,KAAjB,EAAwBnH,OAAxB,CAAP;EACD;;EAED,OAAKmH,KAAL,CAAWA,KAAX,EAAkB4wB,WAAlB,CAA8BO,QAA9B,EAAwCt4B,OAAxC;EACA,SAAO,IAAP;EACD,CARD;;EAUA,IAAIu4B,UAAU,GAAG;EACfR,EAAAA,WAAW,EAAEA,WADE;EAEf1/B,EAAAA,OAAO,EAAEA;EAFM,CAAjB;;EAKA,IAAImgC,SAAS,GAAG/+B,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EAC9D,MAAI29B,QAAQ,GAAG,SAASA,QAAT,CAAkBhmC,GAAlB,EAAuB;EACpC,WAAOA,GAAG,IAAIkB,MAAM,CAACd,SAAP,CAAiB4Q,QAAjB,CAA0BrO,IAA1B,CAA+B3C,GAA/B,MAAwC,iBAAtD;EACD,GAFD,CAD8D;;;EAM9D,MAAIknC,OAAO,GAAG,SAASA,OAAT,CAAiBrjC,GAAjB,EAAsBgT,GAAtB,EAA2B;EACvC,QAAIe,MAAM,GAAGmM,YAAY,CAAClgB,GAAD,EAAMgT,GAAG,CAACtJ,KAAV,CAAZ,CAA6B,CAA7B,CAAb,CADuC;;;EAGvC,QAAIq5B,MAAM,GAAG/vB,GAAG,CAACzC,SAAJ,CAAc,CAACwD,MAAD,CAAd,CAAb;EACAgvB,IAAAA,MAAM,CAACC,MAAP;EACAhwB,IAAAA,GAAG,CAACH,IAAJ,GAAWkwB,MAAM,CAAClwB,IAAlB;EACA,WAAOG,GAAP;EACD,GAPD;EAQA;;;EAGAxO,EAAAA,OAAO,CAAC8O,MAAR,GAAiB,YAAY;EAC3B,QAAIhD,KAAK,GAAG,IAAZ;;EAEA,QAAItQ,GAAG,GAAGL,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;;EAEA,QAAI,CAACK,GAAL,EAAU;EACR,aAAO,IAAP;EACD,KAP0B;;;EAU3B,QAAI,CAAC,KAAK+D,KAAV,EAAiB;EACf,aAAOs/B,OAAO,CAACrjC,GAAD,EAAM,IAAN,CAAd;EACD,KAZ0B;;;EAe3B,SAAKwiC,OAAL,GAf2B;;EAiB3B,SAAK3vB,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B;EACA,UAAIyV,MAAJ;;EAEA,UAAIouB,QAAQ,CAACniC,GAAD,CAAR,IAAiBA,GAAG,CAACoM,GAAJ,KAAY,KAAjC,EAAwC;EACtC2H,QAAAA,MAAM,GAAG/T,GAAG,CAAC6S,IAAJ,CAAS,CAAT,EAAYjD,KAAZ,EAAT,CADsC;EAEvC,OAFD,MAEO,IAAI,OAAO5P,GAAP,KAAe,QAAnB,EAA6B;EAClC+T,QAAAA,MAAM,GAAGmM,YAAY,CAAClgB,GAAD,EAAMsQ,KAAK,CAAC5G,KAAZ,EAAmB4G,KAAK,CAACN,IAAN,EAAnB,CAAZ,CAA6C,CAA7C,CAAT,CADkC;EAEnC,OAR4B;;;EAW7B,UAAI+yB,MAAM,GAAGzyB,KAAK,CAACC,SAAN,CAAgB,CAACwD,MAAD,CAAhB,CAAb;;EAEAgvB,MAAAA,MAAM,CAACC,MAAP,GAb6B;;EAe7B1kC,MAAAA,CAAC,CAACgV,MAAF,CAASS,MAAT,EAAiBzD,KAAjB;EACD,KAhBD;EAiBA,WAAO,IAAP;EACD,GAnCD;;EAqCA9L,EAAAA,OAAO,CAAC8+B,WAAR,GAAsB9+B,OAAO,CAAC8O,MAA9B;EACA9O,EAAAA,OAAO,CAAC++B,QAAR,GAAmB/+B,OAAO,CAAC8O,MAA3B;EACA;;EAEA9O,EAAAA,OAAO,CAACoP,OAAR,GAAkB,UAAU5T,GAAV,EAAe;EAC/B,QAAI+c,MAAM,GAAG,IAAb;;EAEA,QAAI,CAAC/c,GAAL,EAAU;EACR,aAAO,IAAP;EACD,KAL8B;;;EAQ/B,QAAI,CAAC,KAAK+D,KAAV,EAAiB;EACf,aAAOs/B,OAAO,CAACrjC,GAAD,EAAM,IAAN,CAAd;EACD,KAV8B;;;EAa/B,SAAKwiC,OAAL,GAb+B;;EAe/B,SAAK3vB,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B;EACA,UAAIyV,MAAJ;;EAEA,UAAIouB,QAAQ,CAACniC,GAAD,CAAR,IAAiBA,GAAG,CAACoM,GAAJ,KAAY,KAAjC,EAAwC;EACtC2H,QAAAA,MAAM,GAAG/T,GAAG,CAAC6S,IAAJ,CAAS,CAAT,EAAYjD,KAAZ,EAAT,CADsC;EAEvC,OAFD,MAEO,IAAI,OAAO5P,GAAP,KAAe,QAAnB,EAA6B;EAClC+T,QAAAA,MAAM,GAAGmM,YAAY,CAAClgB,GAAD,EAAM+c,MAAM,CAACrT,KAAb,EAAoBqT,MAAM,CAAC/M,IAAP,EAApB,CAAZ,CAA+C,CAA/C,CAAT,CADkC;EAEnC,OAR4B;;;EAW7B,UAAI+yB,MAAM,GAAGhmB,MAAM,CAACxM,SAAP,CAAiB,CAACwD,MAAD,CAAjB,CAAb;;EAEAgvB,MAAAA,MAAM,CAACC,MAAP,GAb6B;;EAe7B1kC,MAAAA,CAAC,CAACsV,OAAF,CAAUG,MAAV,EAAkBgJ,MAAlB;EACD,KAhBD;EAiBA,WAAO,IAAP;EACD,GAjCD;;EAmCAvY,EAAAA,OAAO,CAACg/B,YAAR,GAAuBh/B,OAAO,CAACoP,OAA/B;EACA;;EAEApP,EAAAA,OAAO,CAACuM,MAAR,GAAiB,YAAY;EAC3B;EACA,SAAKyxB,OAAL;EACA,QAAI3vB,IAAI,GAAG,KAAKA,IAAL,CAAU8B,KAAV,CAAgB,CAAhB,CAAX,CAH2B;;EAK3B,SAAK,IAAI5X,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4C,SAAS,CAAC3C,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;EACzC,UAAI0mC,GAAG,GAAG9jC,SAAS,CAAC5C,CAAD,CAAnB,CADyC;;EAGzC,UAAI,OAAO0mC,GAAP,KAAe,QAAnB,EAA6B;EAC3B,YAAI91B,GAAG,GAAGuS,YAAY,CAACujB,GAAD,EAAM,KAAK/5B,KAAX,CAAtB,CAD2B;;;EAG3BmJ,QAAAA,IAAI,GAAGA,IAAI,CAAC9B,MAAL,CAAYpD,GAAZ,CAAP;EACD,OAJD,MAIO,IAAI81B,GAAG,CAACr3B,GAAJ,KAAY,KAAhB,EAAuB;EAC5ByG,QAAAA,IAAI,GAAGA,IAAI,CAAC9B,MAAL,CAAY0yB,GAAG,CAAC5wB,IAAhB,CAAP;EACD,OAFM,MAEA,IAAI4wB,GAAG,CAACr3B,GAAJ,KAAY,QAAhB,EAA0B;EAC/ByG,QAAAA,IAAI,CAAC1C,IAAL,CAAUszB,GAAV;EACD;EACF;;EAED,WAAO,KAAKlzB,SAAL,CAAesC,IAAf,CAAP;EACD,GApBD;EAqBA;;;EAGArO,EAAAA,OAAO,CAAC,QAAD,CAAP,GAAoB,UAAUuN,KAAV,EAAiB;EACnC,QAAIkL,MAAM,GAAG,IAAb,CADmC;;;EAInC,SAAKulB,OAAL;EACA,QAAIkB,QAAQ,GAAG,IAAf;;EAEA,QAAI3xB,KAAJ,EAAW;EACT2xB,MAAAA,QAAQ,GAAG,KAAK3xB,KAAL,CAAWA,KAAX,CAAX;EACD;;EAED2xB,IAAAA,QAAQ,CAAC7wB,IAAT,CAAc7Q,OAAd,CAAsB,UAAU+R,MAAV,EAAkB;EACtC,aAAOA,MAAM,CAAC,QAAD,CAAN,CAAiBkJ,MAAjB,CAAP;EACD,KAFD;EAGA,WAAO,IAAP;EACD,GAfD,CAxH8D;;;EA0I9DzY,EAAAA,OAAO,CAACkZ,MAAR,GAAiBlZ,OAAO,CAAC,QAAD,CAAxB;EACD,CA3ImC,CAApC;;EA6IA,IAAIm/B,UAAU,GAAG;EACf9gC,EAAAA,KAAK,EAAE,IADQ;EAEfM,EAAAA,OAAO,EAAE,IAFM;EAGfmF,EAAAA,IAAI,EAAE;EAHS,CAAjB;EAKA;;EAEA,IAAIrI,IAAI,GAAG,SAASA,IAAT,CAAc2K,OAAd,EAAuB;EAChC,MAAI0F,KAAK,GAAG,IAAZ;;EAEA1F,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB,CAHgC;;EAKhC,MAAIg5B,QAAQ,GAAG,KAAf;;EAEA,MAAI,KAAKzwB,OAAL,GAAenW,MAAf,KAA0B,CAA9B,EAAiC;EAC/B4mC,IAAAA,QAAQ,GAAG,IAAX;EACD,GAT+B;;;EAYhC,MAAIh5B,OAAO,KAAK,MAAZ,IAAsB1O,OAAO,CAAC0O,OAAD,CAAP,KAAqB,QAArB,IAAiCA,OAAO,CAACtC,IAAnE,EAAyE;EACvE,SAAKuK,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7BA,MAAAA,CAAC,CAACwR,KAAF,GAAU9N,OAAV,CAAkB,UAAUT,CAAV,EAAa;EAC7B,YAAIA,CAAC,CAAC+G,IAAF,KAAW,IAAf,EAAqB;EACnB/G,UAAAA,CAAC,CAACkI,OAAF,CAAU6G,KAAK,CAAC5G,KAAhB;EACD;EACF,OAJD;EAKD,KAND;EAOD;;EAED,MAAIgI,GAAG,GAAG,KAAKmB,IAAL,CAAUzP,MAAV,CAAiB,UAAUpD,GAAV,EAAe1B,CAAf,EAAkBvB,CAAlB,EAAqB;EAC9C,QAAI8mC,OAAO,GAAG,CAACD,QAAD,IAAa7mC,CAAC,KAAK,CAAjC;EACA,QAAI+mC,QAAQ,GAAG,CAACF,QAAD,IAAa7mC,CAAC,KAAKuT,KAAK,CAACuC,IAAN,CAAW7V,MAAX,GAAoB,CAAtD;EACA,WAAOgD,GAAG,GAAG1B,CAAC,CAAC2B,IAAF,CAAO2K,OAAP,EAAgBi5B,OAAhB,EAAyBC,QAAzB,CAAb;EACD,GAJS,EAIP,EAJO,CAAV,CAtBgC;;EA4BhC,MAAIH,UAAU,CAAC/4B,OAAD,CAAV,KAAwB,IAAxB,IAAgCA,OAAO,CAACzH,OAAR,KAAoB,IAApD,IAA4DyH,OAAO,CAAC/H,KAAR,KAAkB,IAA9E,IAAsF+H,OAAO,CAACtC,IAAR,KAAiB,IAA3G,EAAiH;EAC/GoJ,IAAAA,GAAG,GAAGA,GAAG,CAAC3O,IAAJ,EAAN;EACD;;EAED,SAAO2O,GAAP;EACD,CAjCD;;EAmCA,IAAIqyB,OAAO,GAAG;EACZ9jC,EAAAA,IAAI,EAAEA;EADM,CAAd;;EAKA,IAAI+jC,WAAW,GAAG,SAASA,WAAT,CAAqBhxB,GAArB,EAA0B;EAC1C,MAAIixB,OAAO,GAAG,CAAd;EACA,MAAIl8B,KAAK,GAAG,CAAZ;EACA,MAAIm8B,OAAO,GAAG,EAAd;EACAlxB,EAAAA,GAAG,CAACysB,QAAJ,GAAez9B,OAAf,CAAuB,UAAUgK,IAAV,EAAgB;EACrCk4B,IAAAA,OAAO,CAACl4B,IAAI,CAAChE,EAAN,CAAP,GAAmB;EACjBD,MAAAA,KAAK,EAAEA,KADU;EAEjBG,MAAAA,KAAK,EAAE+7B,OAAO,GAAGj4B,IAAI,CAACnI,GAAL,CAAS7G,MAFT;EAGjBA,MAAAA,MAAM,EAAEgP,IAAI,CAAC/L,IAAL,CAAUjD;EAHD,KAAnB;EAKAinC,IAAAA,OAAO,IAAIj4B,IAAI,CAACnI,GAAL,CAAS7G,MAAT,GAAkBgP,IAAI,CAAC/L,IAAL,CAAUjD,MAA5B,GAAqCgP,IAAI,CAAClI,IAAL,CAAU9G,MAA1D;EACA+K,IAAAA,KAAK,IAAI,CAAT;EACD,GARD;EASA,SAAOm8B,OAAP;EACD,CAdD;;EAgBA,IAAIC,UAAU,GAAG,SAASA,UAAT,CAAoBnxB,GAApB,EAAyBvT,MAAzB,EAAiCmL,OAAjC,EAA0C;EACzD;EACA,MAAIs5B,OAAO,GAAGF,WAAW,CAAChxB,GAAG,CAACkC,GAAJ,EAAD,CAAzB,CAFyD;;EAIzD,MAAItK,OAAO,CAACkF,KAAR,CAAc/H,KAAd,IAAuB6C,OAAO,CAAC7C,KAAnC,EAA0C;EACxCtI,IAAAA,MAAM,CAACuC,OAAP,CAAe,UAAU9D,CAAV,EAAa;EAC1BA,MAAAA,CAAC,CAAC4R,KAAF,CAAQ9N,OAAR,CAAgB,UAAUT,CAAV,EAAa;EAC3BA,QAAAA,CAAC,CAACwG,KAAF,GAAUm8B,OAAO,CAAC3iC,CAAC,CAACyG,EAAH,CAAP,CAAcD,KAAxB;EACD,OAFD;EAGA7J,MAAAA,CAAC,CAAC6J,KAAF,GAAU7J,CAAC,CAAC4R,KAAF,CAAQ,CAAR,EAAW/H,KAArB;EACD,KALD;EAMD,GAXwD;;;EAczD,MAAI6C,OAAO,CAACkF,KAAR,CAAcvD,MAAd,IAAwB3B,OAAO,CAAC2B,MAApC,EAA4C;EAC1C9M,IAAAA,MAAM,CAACuC,OAAP,CAAe,UAAU9D,CAAV,EAAa;EAC1BA,MAAAA,CAAC,CAAC4R,KAAF,CAAQ9N,OAAR,CAAgB,UAAUT,CAAV,EAAa;EAC3BA,QAAAA,CAAC,CAACgL,MAAF,GAAW23B,OAAO,CAAC3iC,CAAC,CAACyG,EAAH,CAAP,IAAiB,EAA5B;EACD,OAFD,EAD0B;EAI1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA9J,MAAAA,CAAC,CAACqO,MAAF,GAAW;EACTxE,QAAAA,KAAK,EAAE7J,CAAC,CAAC4R,KAAF,CAAQ,CAAR,EAAWvD,MAAX,CAAkBxE,KADhB;EAETG,QAAAA,KAAK,EAAEhK,CAAC,CAAC4R,KAAF,CAAQ,CAAR,EAAWvD,MAAX,CAAkBrE,KAAlB,GAA0BhK,CAAC,CAAC+B,IAAF,CAAOoF,OAAP,CAAenH,CAAC,CAAC4R,KAAF,CAAQ,CAAR,EAAW7P,IAA1B,CAFxB;EAGTjD,QAAAA,MAAM,EAAEkB,CAAC,CAAC+B,IAAF,CAAOjD;EAHN,OAAX;EAKD,KApBD;EAqBD;EACF,CArCD;;EAuCA,IAAIonC,OAAO,GAAGD,UAAd;;EAEA,IAAIE,OAAO,GAAGhgC,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EAC5D,MAAI8/B,YAAY,GAAG;EACjBrkC,IAAAA,IAAI,EAAE,IADW;EAEjB6P,IAAAA,KAAK,EAAE,IAFU;EAGjB/M,IAAAA,IAAI,EAAE;EAHW,GAAnB,CAD4D;;EAO5D,MAAIwhC,UAAU,GAAG,SAASA,UAAT,CAAoB35B,OAApB,EAA6B;EAC5CA,IAAAA,OAAO,GAAGvN,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkB23B,YAAlB,EAAgC15B,OAAhC,CAAV;;EAEA,QAAIA,OAAO,CAACgI,MAAZ,EAAoB;EAClBhI,MAAAA,OAAO,CAACzH,OAAR,GAAkB,IAAlB;EACD,KAL2C;;;EAQ5C,QAAIyH,OAAO,CAAC2B,MAAZ,EAAoB;EAClB3B,MAAAA,OAAO,CAAC3K,IAAR,GAAe,IAAf;;EAEA,UAAI,CAAC2K,OAAO,CAACkF,KAAT,IAAkBlF,OAAO,CAACkF,KAAR,KAAkB,IAAxC,EAA8C;EAC5ClF,QAAAA,OAAO,CAACkF,KAAR,GAAgB,EAAhB;EACD;;EAEDlF,MAAAA,OAAO,CAACkF,KAAR,CAAcvD,MAAd,GAAuB,IAAvB;EACD;;EAED,QAAI3B,OAAO,CAAC7C,KAAR,IAAiB6C,OAAO,CAACkF,KAAR,CAAc/H,KAAnC,EAA0C;EACxC6C,MAAAA,OAAO,CAACkF,KAAR,GAAgBlF,OAAO,CAACkF,KAAR,KAAkB,IAAlB,GAAyB,EAAzB,GAA8BlF,OAAO,CAACkF,KAAtD;EACAlF,MAAAA,OAAO,CAACkF,KAAR,CAAc9H,EAAd,GAAmB,IAAnB;EACD;;EAED,WAAO4C,OAAP;EACD,GAxBD;EAyBA;;;EAGApG,EAAAA,OAAO,CAACkI,IAAR,GAAe,YAAY;EACzB,QAAI4D,KAAK,GAAG,IAAZ;;EAEA,QAAI1F,OAAO,GAAGjL,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF,CAHyB;;EAMzB,QAAI,OAAOiL,OAAP,KAAmB,QAAnB,IAA+B,KAAKiI,IAAL,CAAUjI,OAAV,CAAnC,EAAuD;EACrD,aAAO,KAAKiI,IAAL,CAAUjI,OAAV,EAAmB8B,IAAnB,CAAwB43B,YAAxB,CAAP;EACD;;EAED15B,IAAAA,OAAO,GAAG25B,UAAU,CAAC35B,OAAD,CAApB,CAVyB;;EAYzB,QAAIA,OAAO,CAACtC,IAAR,KAAiB,IAArB,EAA2B;EACzB,WAAKuK,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7BA,QAAAA,CAAC,CAACwR,KAAF,GAAU9N,OAAV,CAAkB,UAAUT,CAAV,EAAa;EAC7B,cAAIA,CAAC,CAAC+G,IAAF,KAAW,IAAf,EAAqB;EACnB/G,YAAAA,CAAC,CAACkI,OAAF,CAAU6G,KAAK,CAAC5G,KAAhB;EACD;EACF,SAJD;EAKD,OAND;EAOD;;EAED,QAAIjK,MAAM,GAAG,KAAKoT,IAAL,CAAUpC,GAAV,CAAc,UAAUnS,CAAV,EAAa;EACtC,aAAOA,CAAC,CAACoO,IAAF,CAAO9B,OAAP,EAAgB0F,KAAK,CAAC5G,KAAtB,CAAP;EACD,KAFY,CAAb,CAtByB;;EA0BzB,QAAIkB,OAAO,CAACkF,KAAR,CAAcvD,MAAd,IAAwB3B,OAAO,CAAC2B,MAAhC,IAA0C3B,OAAO,CAACkF,KAAR,CAAc/H,KAAxD,IAAiE6C,OAAO,CAAC7C,KAA7E,EAAoF;EAClFq8B,MAAAA,OAAO,CAAC,IAAD,EAAO3kC,MAAP,EAAemL,OAAf,CAAP;EACD,KA5BwB;;;EA+BzB,QAAIA,OAAO,CAAC45B,SAAR,IAAqB55B,OAAO,CAAC65B,IAA7B,IAAqC75B,OAAO,CAACqL,KAAjD,EAAwD;EACtD,UAAI9Z,GAAG,GAAG,EAAV;EACA,WAAK0W,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,YAAI0B,GAAG,GAAG1B,CAAC,CAAC2B,IAAF,CAAO,SAAP,CAAV;EACA9D,QAAAA,GAAG,CAAC6D,GAAD,CAAH,GAAW7D,GAAG,CAAC6D,GAAD,CAAH,IAAY,CAAvB;EACA7D,QAAAA,GAAG,CAAC6D,GAAD,CAAH,IAAY,CAAZ;EACD,OAJD;EAKA,WAAK6S,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAavB,CAAb,EAAgB;EAChC0C,QAAAA,MAAM,CAAC1C,CAAD,CAAN,CAAUkZ,KAAV,GAAkB9Z,GAAG,CAACmC,CAAC,CAAC2B,IAAF,CAAO,SAAP,CAAD,CAArB;EACD,OAFD;EAGD,KAzCwB;;;EA4CzB,QAAI2K,OAAO,CAACgI,MAAZ,EAAoB;EAClB,UAAI8xB,OAAO,GAAG,EAAd;EACAjlC,MAAAA,MAAM,GAAGA,MAAM,CAACwR,MAAP,CAAc,UAAU/S,CAAV,EAAa;EAClC,YAAIwmC,OAAO,CAACxmC,CAAC,CAACiF,OAAH,CAAP,KAAuB,IAA3B,EAAiC;EAC/B,iBAAO,KAAP;EACD;;EAEDuhC,QAAAA,OAAO,CAACxmC,CAAC,CAACiF,OAAH,CAAP,GAAqB,IAArB;EACA,eAAO,IAAP;EACD,OAPQ,CAAT;EAQD;;EAED,WAAO1D,MAAP;EACD,GAzDD,CAnC4D;;;EA+F5D+E,EAAAA,OAAO,CAACmgC,IAAR,GAAengC,OAAO,CAACkI,IAAvB;EACD,CAhGiC,CAAlC;;EAkGA,IAAIk4B,MAAM,GAAGvgC,oBAAoB,CAAC,UAAUE,MAAV,EAAkB;EAClD;EACA,MAAIsgC,KAAK,GAAG,SAAZ;;EAEA,MAAI53B,MAAM,GAAG,SAASA,MAAT,CAAgBjN,GAAhB,EAAqBkN,KAArB,EAA4B;EACvClN,IAAAA,GAAG,GAAGA,GAAG,CAACmN,QAAJ,EAAN;;EAEA,WAAOnN,GAAG,CAAChD,MAAJ,GAAakQ,KAApB,EAA2B;EACzBlN,MAAAA,GAAG,IAAI,GAAP;EACD;;EAED,WAAOA,GAAP;EACD,GARD;;EAUA,WAAS8M,YAAT,GAAwB;EACtB,WAAO,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACC,QAA/C;EACD,GAhBiD;;;EAmBlD,MAAI83B,GAAG,GAAG;EACRrJ,IAAAA,KAAK,EAAE,SADC;EAERE,IAAAA,GAAG,EAAE,SAFG;EAGRoJ,IAAAA,IAAI,EAAE,SAHE;EAIRC,IAAAA,OAAO,EAAE,SAJD;EAKRC,IAAAA,IAAI,EAAE,SALE;EAMRvJ,IAAAA,MAAM,EAAE,SANA;EAORwJ,IAAAA,KAAK,EAAE;EAPC,GAAV;;EAUA,MAAIC,aAAa,GAAG,SAASA,aAAT,CAAuBnyB,GAAvB,EAA4B;EAC9C,QAAI/E,MAAM,GAAG+E,GAAG,CAACtJ,KAAJ,CAAUhB,IAAvB;EACAsK,IAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5BgP,MAAAA,OAAO,CAACC,GAAR,CAAY,UAAUjP,CAAC,CAAC2B,IAAF,EAAV,GAAqB,GAAjC,EAAsC,iBAAtC;EACA,UAAI6P,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACAA,MAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzB,YAAImH,IAAI,GAAGrL,MAAM,CAAC0E,IAAP,CAAYR,CAAC,CAACmH,IAAd,CAAX;EACA,YAAIzI,IAAI,GAAGsB,CAAC,CAACtB,IAAF,IAAU,GAArB;;EAEA,YAAIsB,CAAC,CAAC4E,QAAN,EAAgB;EACdlG,UAAAA,IAAI,GAAG,MAAMsB,CAAC,CAAC4E,QAAR,GAAmB,GAA1B;EACD;;EAED,YAAIjC,IAAI,GAAG,MAAMjE,IAAN,GAAa,GAAxB;EACAiE,QAAAA,IAAI,GAAG+I,MAAM,CAAC/I,IAAD,EAAO,CAAP,CAAb;EACA,YAAIH,KAAK,GAAG2E,IAAI,CAACsL,IAAL,CAAU,UAAUvL,GAAV,EAAe;EACnC,iBAAOwF,MAAM,CAACxF,GAAD,CAAN,IAAewF,MAAM,CAACxF,GAAD,CAAN,CAAYqc,KAAlC;EACD,SAFW,CAAZ;EAGA,YAAIA,KAAK,GAAG,WAAZ;;EAEA,YAAI7W,MAAM,CAAClK,KAAD,CAAV,EAAmB;EACjB+gB,UAAAA,KAAK,GAAG7W,MAAM,CAAClK,KAAD,CAAN,CAAc+gB,KAAtB;EACAA,UAAAA,KAAK,GAAGggB,GAAG,CAAChgB,KAAD,CAAX;EACD;;EAEDxX,QAAAA,OAAO,CAACC,GAAR,CAAY,MAAMwD,MAAN,CAAa7M,IAAb,EAAmB,SAAnB,EAA8B6M,MAA9B,CAAqCrI,IAAI,CAACxG,IAAL,CAAU,IAAV,CAArC,CAAZ,EAAmE,UAAU6O,MAAV,CAAiB+T,KAAK,IAAI,WAA1B,EAAuC,GAAvC,CAAnE;EACD,OArBD;EAsBD,KAzBD;EA0BD,GA5BD,CA7BkD;;;EA4DlD,MAAIsgB,GAAG,GAAG;EACR3J,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAez7B,GAAf,EAAoB;EACzB,aAAO,aAAaA,GAAb,GAAmB6kC,KAA1B;EACD,KAHO;EAIRlJ,IAAAA,GAAG,EAAE,SAASA,GAAT,CAAa37B,GAAb,EAAkB;EACrB,aAAO,aAAaA,GAAb,GAAmB6kC,KAA1B;EACD,KANO;EAORE,IAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/kC,GAAd,EAAmB;EACvB,aAAO,aAAaA,GAAb,GAAmB6kC,KAA1B;EACD,KATO;EAURG,IAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBhlC,GAAjB,EAAsB;EAC7B,aAAO,aAAaA,GAAb,GAAmB6kC,KAA1B;EACD,KAZO;EAaRI,IAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjlC,GAAd,EAAmB;EACvB,aAAO,aAAaA,GAAb,GAAmB6kC,KAA1B;EACD,KAfO;EAgBRnJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB17B,GAAhB,EAAqB;EAC3B,aAAO,aAAaA,GAAb,GAAmB6kC,KAA1B;EACD,KAlBO;EAmBRK,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAellC,GAAf,EAAoB;EACzB,aAAO,aAAaA,GAAb,GAAmB6kC,KAA1B;EACD;EArBO,GAAV;;EAwBA,MAAIQ,SAAS,GAAG,SAASA,SAAT,CAAmB38B,IAAnB,EAAyBgB,KAAzB,EAAgC;EAC9ChB,IAAAA,IAAI,GAAGA,IAAI,CAAC+H,GAAL,CAAS,UAAUhI,GAAV,EAAe;EAC7B,UAAI,CAACiB,KAAK,CAAChB,IAAN,CAAWN,cAAX,CAA0BK,GAA1B,CAAL,EAAqC;EACnC,eAAOA,GAAP;EACD;;EAED,UAAIhI,CAAC,GAAGiJ,KAAK,CAAChB,IAAN,CAAWD,GAAX,EAAgBqc,KAAhB,IAAyB,MAAjC;EACA,aAAOsgB,GAAG,CAAC3kC,CAAD,CAAH,CAAOgI,GAAP,CAAP;EACD,KAPM,CAAP;EAQA,WAAOC,IAAI,CAACxG,IAAL,CAAU,IAAV,CAAP;EACD,GAVD,CApFkD;;;EAiGlD,MAAIojC,KAAK,GAAG,SAASA,KAAT,CAAetyB,GAAf,EAAoB;EAC9B,QAAIlG,YAAY,EAAhB,EAAoB;EAClBq4B,MAAAA,aAAa,CAACnyB,GAAD,CAAb;EACA,aAAOA,GAAP;EACD;;EAED1F,IAAAA,OAAO,CAACC,GAAR,CAAY63B,GAAG,CAACL,IAAJ,CAAS,OAAT,CAAZ;EACA/xB,IAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5BgP,MAAAA,OAAO,CAACC,GAAR,CAAY63B,GAAG,CAACL,IAAJ,CAAS,SAAT,CAAZ;EACA,UAAIj1B,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACAA,MAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzB,YAAImH,IAAI,GAAGrL,MAAM,CAAC0E,IAAP,CAAYR,CAAC,CAACmH,IAAd,CAAX;EACA,YAAIzI,IAAI,GAAGsB,CAAC,CAACtB,IAAF,IAAU,GAArB;;EAEA,YAAIsB,CAAC,CAAC4E,QAAN,EAAgB;EACdlG,UAAAA,IAAI,GAAG,MAAMsB,CAAC,CAAC4E,QAAR,GAAmB,GAA1B;EACD;;EAED;EACElG,UAAAA,IAAI,GAAGmlC,GAAG,CAAC1J,MAAJ,CAAWz7B,IAAX,CAAP;EACD;EAED,YAAIiE,IAAI,GAAG,MAAMjE,IAAN,GAAa,GAAxB;EACAiE,QAAAA,IAAI,GAAG+I,MAAM,CAAC/I,IAAD,EAAO,EAAP,CAAb;EACA,YAAIlE,GAAG,GAAGolC,GAAG,CAACL,IAAJ,CAAS,MAAT,IAAmB7gC,IAAnB,GAA0B,MAA1B,GAAmCmhC,SAAS,CAAC38B,IAAD,EAAOsK,GAAG,CAACtJ,KAAX,CAAtD;EACA4D,QAAAA,OAAO,CAACC,GAAR,CAAYvN,GAAZ;EACD,OAhBD;EAiBD,KApBD;EAqBAsN,IAAAA,OAAO,CAACC,GAAR,CAAY,EAAZ;EACA,WAAOyF,GAAP;EACD,GA9BD;;EAgCAzO,EAAAA,MAAM,CAACC,OAAP,GAAiB8gC,KAAjB;EACD,CAlIgC,CAAjC;;EAoIA,IAAIC,IAAI,GAAG,SAASA,IAAT,CAAcvyB,GAAd,EAAmB;EAC5B,MAAIH,IAAI,GAAGG,GAAG,CAACtG,IAAJ,CAAS;EAClBzM,IAAAA,IAAI,EAAE,KADY;EAElB6P,IAAAA,KAAK,EAAE,KAFW;EAGlB3M,IAAAA,OAAO,EAAE;EAHS,GAAT,CAAX,CAD4B;;EAO5B,MAAIhH,GAAG,GAAG,EAAV;EACA0W,EAAAA,IAAI,CAAC7Q,OAAL,CAAa,UAAU9D,CAAV,EAAa;EACxB,QAAI,CAAC/B,GAAG,CAAC+B,CAAC,CAACiF,OAAH,CAAR,EAAqB;EACnBjF,MAAAA,CAAC,CAAC+X,KAAF,GAAU,CAAV;EACA9Z,MAAAA,GAAG,CAAC+B,CAAC,CAACiF,OAAH,CAAH,GAAiBjF,CAAjB;EACD;;EAED/B,IAAAA,GAAG,CAAC+B,CAAC,CAACiF,OAAH,CAAH,CAAe8S,KAAf,IAAwB,CAAxB;EACD,GAPD;EAQA,MAAItI,GAAG,GAAGtQ,MAAM,CAAC0E,IAAP,CAAY5F,GAAZ,EAAiBsU,GAAjB,CAAqB,UAAUzP,CAAV,EAAa;EAC1C,WAAO7E,GAAG,CAAC6E,CAAD,CAAV;EACD,GAFS,CAAV,CAhB4B;;EAoB5B2M,EAAAA,GAAG,CAACzB,IAAJ,CAAS,UAAU3L,CAAV,EAAaC,CAAb,EAAgB;EACvB,QAAID,CAAC,CAAC0V,KAAF,GAAUzV,CAAC,CAACyV,KAAhB,EAAuB;EACrB,aAAO,CAAC,CAAR;EACD,KAFD,MAEO,IAAI1V,CAAC,CAAC0V,KAAF,GAAUzV,CAAC,CAACyV,KAAhB,EAAuB;EAC5B,aAAO,CAAP;EACD;;EAED,WAAO,CAAP;EACD,GARD;EASA,SAAOtI,GAAP;EACD,CA9BD;;EAgCA,IAAI63B,KAAK,GAAGD,IAAZ;EAEA;;EAEA,IAAIE,OAAO,GAAG,SAASA,OAAT,GAAmB;EAC/Bb,EAAAA,MAAM,CAAC,IAAD,CAAN;;EACA,SAAO,IAAP;EACD,CAHD;EAIA;;;EAGA,IAAIc,GAAG,GAAG,SAASA,GAAT,CAAa/8B,MAAb,EAAqB;EAC7B,MAAIA,MAAM,KAAK,MAAf,EAAuB;EACrB,WAAO,KAAK1I,IAAL,EAAP;EACD;;EAED,MAAI0I,MAAM,KAAK,QAAf,EAAyB;EACvB,WAAO,KAAK1I,IAAL,CAAU,QAAV,CAAP;EACD;;EAED,MAAI0I,MAAM,KAAK,MAAf,EAAuB;EACrB,WAAO,KAAK+D,IAAL,EAAP;EACD;;EAED,MAAI/D,MAAM,KAAK,QAAX,IAAuBA,MAAM,KAAK,SAAtC,EAAiD;EAC/C,WAAO,KAAK+D,IAAL,CAAU;EACfH,MAAAA,MAAM,EAAE;EADO,KAAV,CAAP;EAGD;;EAED,MAAI5D,MAAM,KAAK,OAAf,EAAwB;EACtB,WAAO,KAAK+D,IAAL,CAAU;EACfoD,MAAAA,KAAK,EAAE;EADQ,KAAV,EAEJW,GAFI,CAEA,UAAUtU,GAAV,EAAe;EACpB,aAAOA,GAAG,CAAC8D,IAAX;EACD,KAJM,EAIJgR,MAJI,CAIG,UAAUjR,GAAV,EAAe;EACvB,aAAOA,GAAP;EACD,KANM,CAAP;EAOD;;EAED,MAAI2I,MAAM,KAAK,MAAX,IAAqBA,MAAM,KAAK,WAApC,EAAiD;EAC/C,WAAO68B,KAAK,CAAC,IAAD,CAAZ;EACD;;EAED,MAAI78B,MAAM,KAAK,OAAf,EAAwB;EACtB,QAAIkK,IAAI,GAAG,EAAX;EACA,SAAKnG,IAAL,CAAU;EACRzM,MAAAA,IAAI,EAAE,KADE;EAER6P,MAAAA,KAAK,EAAE;EACL7P,QAAAA,IAAI,EAAE;EADD;EAFC,KAAV,EAKG+B,OALH,CAKW,UAAU7F,GAAV,EAAe;EACxB,UAAI2T,KAAK,GAAG3T,GAAG,CAAC2T,KAAJ,CAAUW,GAAV,CAAc,UAAUlP,CAAV,EAAa;EACrC,eAAOA,CAAC,CAACtB,IAAT;EACD,OAFW,CAAZ;EAGA6P,MAAAA,KAAK,GAAGA,KAAK,CAACmB,MAAN,CAAa,UAAU1P,CAAV,EAAa;EAChC,eAAOA,CAAP;EACD,OAFO,CAAR;EAGAsR,MAAAA,IAAI,GAAGA,IAAI,CAAC9B,MAAL,CAAYjB,KAAZ,CAAP;EACD,KAbD;EAcA,WAAO+C,IAAP;EACD;;EAED,MAAIlK,MAAM,KAAK,MAAf,EAAuB;EACrB,WAAO,KAAKkK,IAAL,CAAUpC,GAAV,CAAc,UAAUnS,CAAV,EAAa;EAChC,aAAOA,CAAC,CAACwR,KAAF,GAAU1M,MAAV,CAAiB,UAAUvC,CAAV,EAAaU,CAAb,EAAgB;EACtCV,QAAAA,CAAC,CAACU,CAAC,CAACsB,KAAF,IAAWtB,CAAC,CAAC4E,QAAd,CAAD,GAA2B9I,MAAM,CAAC0E,IAAP,CAAYR,CAAC,CAACmH,IAAd,CAA3B;EACA,eAAO7H,CAAP;EACD,OAHM,EAGJ,EAHI,CAAP;EAID,KALM,CAAP;EAMD;;EAED,MAAI8H,MAAM,KAAK,OAAf,EAAwB;EACtBi8B,IAAAA,MAAM,CAAC,IAAD,CAAN;;EACA,WAAO,IAAP;EACD;;EAED,SAAO,KAAK3kC,IAAL,EAAP;EACD,CAnED;;EAqEA,IAAI0lC,MAAM,GAAG;EACXL,EAAAA,KAAK,EAAEG,OADI;EAEXC,EAAAA,GAAG,EAAEA;EAFM,CAAb;EAKA,IAAIE,SAAS,GAAG;EACd;EACAC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetlC,CAAf,EAAkBC,CAAlB,EAAqB;EAC1B,QAAIslC,IAAI,GAAGvlC,CAAC,CAACN,IAAF,CAAO,OAAP,CAAX;EACA,QAAI8lC,KAAK,GAAGvlC,CAAC,CAACP,IAAF,CAAO,OAAP,CAAZ;;EAEA,QAAI6lC,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAC,CAAR;EACD;;EAED,QAAID,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAP;EACD;;EAED,WAAO,CAAP;EACD,GAfa;;EAiBd;EACA/oC,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBuD,CAAhB,EAAmBC,CAAnB,EAAsB;EAC5B,QAAIslC,IAAI,GAAGvlC,CAAC,CAACN,IAAF,GAAS8C,IAAT,GAAgB/F,MAA3B;EACA,QAAI+oC,KAAK,GAAGvlC,CAAC,CAACP,IAAF,GAAS8C,IAAT,GAAgB/F,MAA5B;;EAEA,QAAI8oC,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAP;EACD;;EAED,QAAID,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAC,CAAR;EACD;;EAED,WAAO,CAAP;EACD,GA/Ba;;EAiCd;EACA/0B,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBzQ,CAAnB,EAAsBC,CAAtB,EAAyB;EAClC,QAAIslC,IAAI,GAAGvlC,CAAC,CAACyQ,SAAF,EAAX;EACA,QAAI+0B,KAAK,GAAGvlC,CAAC,CAACwQ,SAAF,EAAZ;;EAEA,QAAI80B,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAP;EACD;;EAED,QAAID,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAC,CAAR;EACD;;EAED,WAAO,CAAP;EACD;EA/Ca,CAAhB;EAiDA;;EAEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBhzB,GAAhB,EAAqB;EAChC,MAAIizB,MAAM,GAAG,EAAb;EACA,MAAIr7B,OAAO,GAAG;EACZ,YAAQ,IADI;EAEZY,IAAAA,WAAW,EAAE,KAFD;EAGZF,IAAAA,UAAU,EAAE,IAHA;EAIZxJ,IAAAA,OAAO,EAAE;EAJG,GAAd;EAMAkR,EAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5B,QAAI0B,GAAG,GAAG1B,CAAC,CAAC2B,IAAF,CAAO2K,OAAP,CAAV;EACAq7B,IAAAA,MAAM,CAACjmC,GAAD,CAAN,GAAcimC,MAAM,CAACjmC,GAAD,CAAN,IAAe,CAA7B;EACAimC,IAAAA,MAAM,CAACjmC,GAAD,CAAN,IAAe,CAAf;EACD,GAJD,EARgC;;EAchCgT,EAAAA,GAAG,CAACH,IAAJ,CAAS3G,IAAT,CAAc,UAAU3L,CAAV,EAAaC,CAAb,EAAgB;EAC5B,QAAIslC,IAAI,GAAGG,MAAM,CAAC1lC,CAAC,CAACN,IAAF,CAAO2K,OAAP,CAAD,CAAjB;EACA,QAAIm7B,KAAK,GAAGE,MAAM,CAACzlC,CAAC,CAACP,IAAF,CAAO2K,OAAP,CAAD,CAAlB;;EAEA,QAAIk7B,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAP;EACD;;EAED,QAAID,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAC,CAAR;EACD;;EAED,WAAO,CAAP;EACD,GAbD;EAcA,SAAO/yB,GAAP;EACD,CA7BD;;;EAgCA,IAAIkzB,cAAc,GAAG,SAASA,cAAT,CAAwBlzB,GAAxB,EAA6B;EAChD,MAAImzB,KAAK,GAAG,EAAZ;EACAnzB,EAAAA,GAAG,CAACtG,IAAJ,CAAS;EACPoD,IAAAA,KAAK,EAAE;EACLvD,MAAAA,MAAM,EAAE;EADH;EADA,GAAT,EAIGvK,OAJH,CAIW,UAAU9D,CAAV,EAAa;EACtBioC,IAAAA,KAAK,CAACjoC,CAAC,CAAC4R,KAAF,CAAQ,CAAR,EAAW9H,EAAZ,CAAL,GAAuB9J,CAAC,CAAC4R,KAAF,CAAQ,CAAR,EAAWvD,MAAX,CAAkBrE,KAAzC;EACD,GAND;EAOA8K,EAAAA,GAAG,CAACH,IAAJ,GAAWG,GAAG,CAACH,IAAJ,CAAS3G,IAAT,CAAc,UAAU3L,CAAV,EAAaC,CAAb,EAAgB;EACvC,QAAI2lC,KAAK,CAAC5lC,CAAC,CAAC2H,KAAH,CAAL,GAAiBi+B,KAAK,CAAC3lC,CAAC,CAAC0H,KAAH,CAA1B,EAAqC;EACnC,aAAO,CAAP;EACD,KAFD,MAEO,IAAIi+B,KAAK,CAAC5lC,CAAC,CAAC2H,KAAH,CAAL,GAAiBi+B,KAAK,CAAC3lC,CAAC,CAAC0H,KAAH,CAA1B,EAAqC;EAC1C,aAAO,CAAC,CAAR;EACD;;EAED,WAAO,CAAP;EACD,GARU,CAAX;EASA,SAAO8K,GAAP;EACD,CAnBD;;;EAsBA4yB,SAAS,CAACQ,YAAV,GAAyBR,SAAS,CAACC,KAAnC;EACAD,SAAS,CAAC1G,SAAV,GAAsB0G,SAAS,CAAC50B,SAAhC;;EAEA,IAAIq1B,QAAQ,GAAG;EACbt+B,EAAAA,KAAK,EAAE,IADM;EAEbu+B,EAAAA,QAAQ,EAAE,IAFG;EAGbxgB,EAAAA,GAAG,EAAE,IAHQ;EAIbygB,EAAAA,UAAU,EAAE,IAJC;EAKbC,EAAAA,KAAK,EAAE,IALM;EAMbC,EAAAA,aAAa,EAAE;EANF,CAAf;EAQA;;EAEA,IAAIv6B,IAAI,GAAG,SAASA,IAAT,CAAcyP,KAAd,EAAqB;EAC9BA,EAAAA,KAAK,GAAGA,KAAK,IAAI,OAAjB,CAD8B;;EAG9B,MAAIA,KAAK,KAAK,MAAV,IAAoBA,KAAK,KAAK,WAA9B,IAA6CA,KAAK,KAAK,MAA3D,EAAmE;EACjE,WAAOqqB,MAAM,CAAC,IAAD,CAAb;EACD;;EAED,MAAIK,QAAQ,CAACj+B,cAAT,CAAwBuT,KAAxB,CAAJ,EAAoC;EAClC,WAAOuqB,cAAc,CAAC,IAAD,CAArB;EACD;;EAEDvqB,EAAAA,KAAK,GAAGiqB,SAAS,CAACjqB,KAAD,CAAT,IAAoBA,KAA5B,CAX8B;;EAa9B,MAAI,OAAOA,KAAP,KAAiB,UAArB,EAAiC;EAC/B,SAAK9I,IAAL,GAAY,KAAKA,IAAL,CAAU3G,IAAV,CAAeyP,KAAf,CAAZ;EACA,WAAO,IAAP;EACD;;EAED,SAAO,IAAP;EACD,CAnBD;EAoBA;;;EAGA,IAAIqjB,OAAO,GAAG,SAASA,OAAT,GAAmB;EAC/B,MAAInsB,IAAI,GAAG,GAAG9B,MAAH,CAAU,KAAK8B,IAAf,CAAX;EACAA,EAAAA,IAAI,GAAGA,IAAI,CAACmsB,OAAL,EAAP;EACA,SAAO,KAAKzuB,SAAL,CAAesC,IAAf,CAAP;EACD,CAJD;EAKA;;;EAGA,IAAI6zB,QAAQ,GAAG,SAAS9zB,MAAT,GAAkB;EAC/B,MAAIC,IAAI,GAAG,GAAG9B,MAAH,CAAU,KAAK8B,IAAf,CAAX;EACA,MAAI1W,GAAG,GAAG,EAAV;EACA0W,EAAAA,IAAI,GAAGA,IAAI,CAAC5B,MAAL,CAAY,UAAU3S,CAAV,EAAa;EAC9B,QAAI0B,GAAG,GAAG1B,CAAC,CAAC2B,IAAF,CAAO,SAAP,EAAkB8C,IAAlB,MAA4BzE,CAAC,CAAC2B,IAAF,CAAO,UAAP,EAAmB8C,IAAnB,EAAtC;;EAEA,QAAI5G,GAAG,CAACiM,cAAJ,CAAmBpI,GAAnB,MAA4B,IAAhC,EAAsC;EACpC,aAAO,KAAP;EACD;;EAED7D,IAAAA,GAAG,CAAC6D,GAAD,CAAH,GAAW,IAAX;EACA,WAAO,IAAP;EACD,GATM,CAAP;EAUA,SAAO,KAAKuQ,SAAL,CAAesC,IAAf,CAAP;EACD,CAdD;;EAgBA,IAAI8zB,OAAO,GAAG;EACZz6B,EAAAA,IAAI,EAAEA,IADM;EAEZ8yB,EAAAA,OAAO,EAAEA,OAFG;EAGZpsB,EAAAA,MAAM,EAAE8zB;EAHI,CAAd;EAMA,IAAIE,OAAO,GAAG,mEAAd;EACA,IAAIC,MAAM,GAAG,eAAb;EACA,IAAIC,SAAS,GAAG;EACd;EACAx7B,EAAAA,UAAU,EAAE,SAASA,UAAT,CAAoB0H,GAApB,EAAyB;EACnC,QAAI+zB,OAAO,GAAG/zB,GAAG,CAACH,IAAJ,CAASpC,GAAT,CAAa,UAAUgM,EAAV,EAAc;EACvC,aAAOA,EAAE,CAAC3M,KAAH,EAAP;EACD,KAFa,CAAd;EAGAi3B,IAAAA,OAAO,CAAC/kC,OAAR,CAAgB,UAAU8N,KAAV,EAAiB5R,CAAjB,EAAoB;EAClC4R,MAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAaxE,CAAb,EAAgB;EAC5B;EACA,YAAIwE,CAAC,CAAC0E,OAAF,OAAgB,IAApB,EAA0B;EACxB1E,UAAAA,CAAC,CAACuC,IAAF,GAAS,KAAT;EACA;EACD,SAL2B;;;EAQ5BvC,QAAAA,CAAC,CAACsC,GAAF,GAAQtC,CAAC,CAACsC,GAAF,CAAMZ,OAAN,CAAc,KAAd,EAAqB,EAArB,CAAR;EACA1B,QAAAA,CAAC,CAACuC,IAAF,GAASvC,CAAC,CAACuC,IAAF,CAAOb,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT,CAT4B;;EAW5B,YAAI6M,KAAK,CAAC9S,MAAN,GAAe,CAAf,KAAqBD,CAArB,IAA0B,CAACgqC,OAAO,CAAC7oC,CAAC,GAAG,CAAL,CAAtC,EAA+C;EAC7C;EACD,SAb2B;;;EAgB5B,YAAIqD,CAAC,CAAC4E,QAAF,IAAcvH,OAAO,CAAC2C,CAAC,CAACtB,IAAH,CAAP,KAAoB,IAAtC,EAA4C;EAC1C;EACD,SAlB2B;;;EAqB5B,YAAIsB,CAAC,CAACwE,SAAF,OAAkB,IAAtB,EAA4B;EAC1B;EACD;;EAEDxE,QAAAA,CAAC,CAACuC,IAAF,IAAU,GAAV;EACD,OA1BD;EA2BD,KA5BD;EA6BD,GAnCa;EAoCd0H,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqBi0B,QAArB,EAA+B;EAC1CA,IAAAA,QAAQ,CAACz9B,OAAT,CAAiB,UAAUT,CAAV,EAAa;EAC5B;EACA,UAAIA,CAAC,CAACwE,SAAF,OAAkB,IAAtB,EAA4B;EAC1BxE,QAAAA,CAAC,CAACuC,IAAF,GAAS,GAAT;EACD;;EAEDvC,MAAAA,CAAC,CAACsC,GAAF,GAAQtC,CAAC,CAACsC,GAAF,CAAMZ,OAAN,CAAc2jC,OAAd,EAAuB,EAAvB,CAAR;EACArlC,MAAAA,CAAC,CAACuC,IAAF,GAASvC,CAAC,CAACuC,IAAF,CAAOb,OAAP,CAAe2jC,OAAf,EAAwB,EAAxB,CAAT,CAP4B;;EAS5BrlC,MAAAA,CAAC,CAACuC,IAAF,GAASvC,CAAC,CAACuC,IAAF,CAAOb,OAAP,CAAe,QAAf,EAAyB,EAAzB,CAAT,CAT4B;;EAW5B,UAAI,IAAIP,IAAJ,CAASnB,CAAC,CAACuC,IAAX,MAAqB,IAAzB,EAA+B;EAC7BvC,QAAAA,CAAC,CAACuC,IAAF,GAASvC,CAAC,CAACuC,IAAF,CAAOb,OAAP,CAAe,IAAf,EAAqB,EAArB,CAAT;EACA1B,QAAAA,CAAC,CAACuC,IAAF,GAAS,MAAMvC,CAAC,CAACuC,IAAjB;EACD,OAd2B;;;EAiB5B,UAAI,KAAKpB,IAAL,CAAUnB,CAAC,CAACuC,IAAZ,MAAsB,IAA1B,EAAgC;EAC9BvC,QAAAA,CAAC,CAACuC,IAAF,GAASvC,CAAC,CAACuC,IAAF,CAAOb,OAAP,CAAe,QAAf,EAAyB,EAAzB,CAAT;EACA1B,QAAAA,CAAC,CAACuC,IAAF,GAAS,MAAMvC,CAAC,CAACuC,IAAjB;EACD;EACF,KArBD;EAsBD,GA3Da;EA4DdhC,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB29B,QAAjB,EAA2B;EAClCA,IAAAA,QAAQ,CAACz9B,OAAT,CAAiB,UAAUT,CAAV,EAAa;EAC5B,UAAIA,CAAC,CAACgI,UAAF,OAAmB,IAAvB,EAA6B;EAC3B;EACD;;EAEDhI,MAAAA,CAAC,CAACtB,IAAF,GAASkC,SAAS,CAACZ,CAAC,CAACtB,IAAH,CAAlB;EACD,KAND;EAOD,GApEa;EAqEd+mC,EAAAA,UAAU,EAAE,SAASA,UAAT,CAAoBvH,QAApB,EAA8B;EACxCA,IAAAA,QAAQ,CAACz9B,OAAT,CAAiB,UAAUT,CAAV,EAAa;EAC5BA,MAAAA,CAAC,CAACuC,IAAF,GAASvC,CAAC,CAACuC,IAAF,CAAOb,OAAP,CAAe4jC,MAAf,EAAuB,EAAvB,CAAT;EACAtlC,MAAAA,CAAC,CAACsC,GAAF,GAAQtC,CAAC,CAACsC,GAAF,CAAMZ,OAAN,CAAc4jC,MAAd,EAAsB,EAAtB,CAAR;EACD,KAHD;EAID,GA1Ea;EA2EdI,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBj0B,GAAjB,EAAsB;EAC7BA,IAAAA,GAAG,CAACjB,KAAJ,CAAU,SAAV,EAAqB+K,GAArB,CAAyB,oDAAzB,EAA+EY,MAA/E;EACD,GA7Ea;EA8Ed;EACAjS,EAAAA,aAAa,EAAE,SAASA,aAAT,CAAuBuH,GAAvB,EAA4B;EACzCA,IAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAUya,EAAV,EAAc;EAC7B,UAAI3M,KAAK,GAAG2M,EAAE,CAAC3M,KAAH,EAAZ;EACAA,MAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAaxE,CAAb,EAAgB;EAC5B,YAAIwE,CAAC,CAACmH,IAAF,CAAOgD,YAAP,KAAwB,IAAxB,IAAgCoE,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAAzC,EAAkD;EAChDwE,UAAAA,CAAC,CAACuC,IAAF,GAASvC,CAAC,CAACuC,IAAF,CAAOb,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;EACD;EACF,OAJD;EAKD,KAPD;EAQD;EAxFa,CAAhB;EA0FA,IAAIikC,QAAQ,GAAGJ,SAAf;EAEA,IAAIK,UAAQ,GAAG;EACb;EACA77B,EAAAA,UAAU,EAAE,IAFC;EAGbxJ,EAAAA,OAAO,EAAE,IAHI;EAIb0J,EAAAA,WAAW,EAAE,IAJA;EAKb47B,EAAAA,KAAK,EAAE,IALM;EAMb/7B,EAAAA,QAAQ,EAAE,IANG;EAObI,EAAAA,aAAa,EAAE,IAPF;EAQb;EACA,UAAQ,KATK;EAUb47B,EAAAA,YAAY,EAAE,KAVD;EAWbC,EAAAA,WAAW,EAAE,KAXA;EAYbN,EAAAA,UAAU,EAAE,KAZC;EAabC,EAAAA,OAAO,EAAE,KAbI;EAcb;EACAM,EAAAA,WAAW,EAAE,KAfA;EAgBble,EAAAA,KAAK,EAAE,KAhBM;EAiBbF,EAAAA,KAAK,EAAE,KAjBM;EAkBbqe,EAAAA,UAAU,EAAE,KAlBC;;EAAA,CAAf;EAqBA,IAAIC,OAAO,GAAG;EACZ/T,EAAAA,KAAK,EAAE,EADK;EAEZgU,EAAAA,MAAM,EAAE;EACN,YAAQ,IADF;EAENL,IAAAA,YAAY,EAAE,IAFR;EAGNC,IAAAA,WAAW,EAAE,IAHP;EAINN,IAAAA,UAAU,EAAE,IAJN;EAKNC,IAAAA,OAAO,EAAE;EALH;EAFI,CAAd;EAUAQ,OAAO,CAACE,KAAR,GAAgBtqC,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkB86B,OAAO,CAACC,MAA1B,EAAkC;EAChDH,EAAAA,WAAW,EAAE,IADmC;EAEhDle,EAAAA,KAAK,EAAE,IAFyC;EAGhDF,EAAAA,KAAK,EAAE,IAHyC;EAIhDqe,EAAAA,UAAU,EAAE;EAJoC,CAAlC,CAAhB;EAMA;;EAEA,IAAII,SAAS,GAAG,SAASA,SAAT,CAAmBh9B,OAAnB,EAA4B;EAC1CA,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB,CAD0C;;EAG1C,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;EAC/BA,IAAAA,OAAO,GAAG68B,OAAO,CAAC78B,OAAD,CAAP,IAAoB,EAA9B;EACD,GALyC;;;EAQ1CA,EAAAA,OAAO,GAAGvN,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBw6B,UAAlB,EAA4Bv8B,OAA5B,CAAV,CAR0C;;EAU1C,OAAK43B,OAAL;EACA,MAAI/C,QAAQ,GAAG,KAAKA,QAAL,EAAf,CAX0C;;EAa1C,MAAI70B,OAAO,CAAC,MAAD,CAAX,EAAqB;EACnB,SAAK9H,WAAL;EACD,GAfyC;;;EAkB1C,MAAI8H,OAAO,CAACU,UAAZ,EAAwB;EACtB47B,IAAAA,QAAQ,CAAC57B,UAAT,CAAoB,IAApB;EACD,GApByC;;;EAuB1C,MAAIV,OAAO,CAAC9I,OAAZ,EAAqB;EACnBolC,IAAAA,QAAQ,CAACplC,OAAT,CAAiB29B,QAAjB;EACD,GAzByC;;;EA4B1C,MAAI70B,OAAO,CAACY,WAAZ,EAAyB;EACvB07B,IAAAA,QAAQ,CAAC17B,WAAT,CAAqBi0B,QAArB;EACD,GA9ByC;;;EAiC1C,MAAI70B,OAAO,CAACw8B,KAAZ,EAAmB;EACjB,SAAK1pB,MAAL,CAAY,oBAAZ;EACD,GAnCyC;;;EAsC1C,MAAI9S,OAAO,CAACS,QAAZ,EAAsB;EACpB,SAAKA,QAAL,GAAgBw8B,KAAhB,GADoB;EAErB,GAxCyC;;;EA2C1C,MAAIj9B,OAAO,CAACa,aAAZ,EAA2B;EACzBy7B,IAAAA,QAAQ,CAACz7B,aAAT,CAAuB,IAAvB;EACD,GA7CyC;EA8C1C;;;EAGA,MAAIb,OAAO,CAACk9B,WAAR,IAAuBl9B,OAAO,CAACy8B,YAAnC,EAAiD;EAC/C,SAAKA,YAAL,GAAoBU,MAApB;EACD,GAnDyC;;;EAsD1C,MAAIn9B,OAAO,CAAC08B,WAAZ,EAAyB;EACvB,SAAKA,WAAL,GAAmBU,MAAnB;EACD,GAxDyC;;;EA2D1C,MAAIp9B,OAAO,CAACo8B,UAAR,IAAsBp8B,OAAO,CAACi8B,MAAlC,EAA0C;EACxCK,IAAAA,QAAQ,CAACF,UAAT,CAAoBvH,QAApB;EACD,GA7DyC;;;EAgE1C,MAAI70B,OAAO,CAACq8B,OAAZ,EAAqB;EACnBC,IAAAA,QAAQ,CAACD,OAAT,CAAiB,IAAjB;EACD,GAlEyC;EAmE1C;;;EAGA,MAAIr8B,OAAO,CAACq9B,UAAR,IAAsBr9B,OAAO,CAAC28B,WAAlC,EAA+C;EAC7C,SAAKA,WAAL,GAAmBM,KAAnB;EACD,GAxEyC;;;EA2E1C,MAAIj9B,OAAO,CAACye,KAAZ,EAAmB;EACjB,SAAKA,KAAL,GAAa7e,YAAb;EACD,GA7EyC;;;EAgF1C,MAAII,OAAO,CAACue,KAAR,IAAiBve,OAAO,CAAC6e,OAA7B,EAAsC;EACpC,SAAKN,KAAL,GAAarf,UAAb;EACD,GAlFyC;;;EAqF1C,MAAIc,OAAO,CAAC48B,UAAZ,EAAwB;EACtB,SAAK9pB,MAAL,CAAY,YAAZ;EACD;;EAED,SAAO,IAAP;EACD,CA1FD;;EA4FA,IAAIwqB,YAAY,GAAG;EACjBN,EAAAA,SAAS,EAAEA;EADM,CAAnB;;EAIA,IAAIO,QAAQ,GAAG9jC,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EAC7D;EACF;EACA;EACEA,EAAAA,OAAO,CAACiQ,OAAR,GAAkB,UAAU3M,GAAV,EAAe;EAC/B;EACA,QAAI,CAACA,GAAL,EAAU;EACR,UAAIsL,MAAM,GAAG,KAAKA,MAAL,EAAb;EACA,aAAOA,MAAM,CAACqB,OAAP,CAAe,IAAf,CAAP;EACD,KAL8B;;;EAQ/B,QAAIO,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,CAAtB;EACA,QAAIiR,OAAO,GAAG,EAAd;EACA,SAAKlG,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAI8pC,OAAO,GAAG9pC,CAAC,CAACyT,KAAF,CAAQiD,IAAR,CAAd,CAD6B;;EAG7B,UAAIozB,OAAO,CAACprC,MAAR,KAAmB,CAAvB,EAA0B;EACxB+b,QAAAA,OAAO,CAAC5I,IAAR,CAAa7R,CAAb;EACA;EACD,OAN4B;;;EAS7B,UAAIwhB,KAAK,GAAGxhB,CAAZ;EACA8pC,MAAAA,OAAO,CAACpmC,OAAR,CAAgB,UAAU+B,KAAV,EAAiB;EAC/B,YAAIskC,KAAK,GAAGvoB,KAAK,CAACrL,OAAN,CAAc1Q,KAAd,CAAZ,CAD+B;;EAG/B,YAAIskC,KAAK,CAACt9B,MAAV,EAAkB;EAChBgO,UAAAA,OAAO,CAAC5I,IAAR,CAAak4B,KAAK,CAACt9B,MAAnB;EACD;;EAED,YAAIs9B,KAAK,CAACt2B,KAAV,EAAiB;EACfgH,UAAAA,OAAO,CAAC5I,IAAR,CAAak4B,KAAK,CAACt2B,KAAnB;EACD,SAT8B;;;EAY/B+N,QAAAA,KAAK,GAAGuoB,KAAK,CAACrkC,KAAd;EACD,OAbD,EAV6B;;EAyB7B,UAAI8b,KAAJ,EAAW;EACT/G,QAAAA,OAAO,CAAC5I,IAAR,CAAa2P,KAAb;EACD;EACF,KA5BD;EA6BA,WAAO,KAAKvP,SAAL,CAAewI,OAAf,CAAP;EACD,GAxCD;EAyCA;EACF;EACA;;;EAGEvU,EAAAA,OAAO,CAAC8jC,UAAR,GAAqB,UAAUxgC,GAAV,EAAe;EAClC;EACA,QAAI,CAACA,GAAL,EAAU;EACR,UAAIsL,MAAM,GAAG,KAAKA,MAAL,EAAb;EACA,aAAOA,MAAM,CAACk1B,UAAP,CAAkB,IAAlB,CAAP;EACD,KALiC;;;EAQlC,QAAItzB,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,CAAtB;EACA,QAAIiR,OAAO,GAAG,EAAd;EACA,SAAKlG,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAI8pC,OAAO,GAAG9pC,CAAC,CAACyT,KAAF,CAAQiD,IAAR,CAAd,CAD6B;;EAG7B,UAAIozB,OAAO,CAACprC,MAAR,KAAmB,CAAvB,EAA0B;EACxB+b,QAAAA,OAAO,CAAC5I,IAAR,CAAa7R,CAAb;EACA;EACD,OAN4B;;;EAS7B,UAAIwhB,KAAK,GAAGxhB,CAAZ;EACA8pC,MAAAA,OAAO,CAACpmC,OAAR,CAAgB,UAAU+B,KAAV,EAAiB;EAC/B,YAAIskC,KAAK,GAAGvoB,KAAK,CAACrL,OAAN,CAAc1Q,KAAd,CAAZ,CAD+B;;EAG/B,YAAIskC,KAAK,CAACt9B,MAAN,IAAgBs9B,KAAK,CAACt2B,KAA1B,EAAiC;EAC/B;EACAs2B,UAAAA,KAAK,CAACt9B,MAAN,CAAa/N,MAAb,IAAuBqrC,KAAK,CAACt2B,KAAN,CAAY/U,MAAnC;EACA+b,UAAAA,OAAO,CAAC5I,IAAR,CAAak4B,KAAK,CAACt9B,MAAnB;EACD,SAJD,MAIO,IAAIs9B,KAAK,CAACt2B,KAAV,EAAiB;EACtBgH,UAAAA,OAAO,CAAC5I,IAAR,CAAak4B,KAAK,CAACt2B,KAAnB;EACD,SAT8B;;;EAY/B+N,QAAAA,KAAK,GAAGuoB,KAAK,CAACrkC,KAAd;EACD,OAbD,EAV6B;;EAyB7B,UAAI8b,KAAJ,EAAW;EACT/G,QAAAA,OAAO,CAAC5I,IAAR,CAAa2P,KAAb;EACD;EACF,KA5BD;EA6BA,WAAO,KAAKvP,SAAL,CAAewI,OAAf,CAAP;EACD,GAxCD;;EA0CAvU,EAAAA,OAAO,CAAC1E,KAAR,GAAgB0E,OAAO,CAAC8jC,UAAxB,CA5F6D;;EA8F7D;;EAEA9jC,EAAAA,OAAO,CAAC+jC,WAAR,GAAsB,UAAUzgC,GAAV,EAAe;EACnC;EACA,QAAI,CAACA,GAAL,EAAU;EACR,UAAIsL,MAAM,GAAG,KAAKA,MAAL,EAAb;EACA,aAAOA,MAAM,CAACm1B,WAAP,CAAmB,IAAnB,CAAP;EACD,KALkC;;;EAQnC,QAAIvzB,IAAI,GAAG4G,WAAW,CAAC9T,GAAD,CAAtB;EACA,QAAIiR,OAAO,GAAG,EAAd;EACA,SAAKlG,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAI8pC,OAAO,GAAG9pC,CAAC,CAACyT,KAAF,CAAQiD,IAAR,CAAd,CAD6B;;EAG7B,UAAIozB,OAAO,CAACprC,MAAR,KAAmB,CAAvB,EAA0B;EACxB+b,QAAAA,OAAO,CAAC5I,IAAR,CAAa7R,CAAb;EACA;EACD,OAN4B;;;EAS7B,UAAIwhB,KAAK,GAAGxhB,CAAZ;EACA8pC,MAAAA,OAAO,CAACpmC,OAAR,CAAgB,UAAU+B,KAAV,EAAiB;EAC/B,YAAIskC,KAAK,GAAGvoB,KAAK,CAACrL,OAAN,CAAc1Q,KAAd,CAAZ,CAD+B;;EAG/B,YAAIskC,KAAK,CAACt9B,MAAV,EAAkB;EAChBgO,UAAAA,OAAO,CAAC5I,IAAR,CAAak4B,KAAK,CAACt9B,MAAnB;EACD,SAL8B;;;EAQ/B,YAAIs9B,KAAK,CAACt2B,KAAN,IAAes2B,KAAK,CAACrkC,KAAzB,EAAgC;EAC9BqkC,UAAAA,KAAK,CAACt2B,KAAN,CAAY/U,MAAZ,IAAsBqrC,KAAK,CAACrkC,KAAN,CAAYhH,MAAlC;EACD,SAV8B;;;EAa/B8iB,QAAAA,KAAK,GAAGuoB,KAAK,CAACt2B,KAAd;EACD,OAdD,EAV6B;;EA0B7B,UAAI+N,KAAJ,EAAW;EACT/G,QAAAA,OAAO,CAAC5I,IAAR,CAAa2P,KAAb;EACD;EACF,KA7BD;EA8BA,WAAO,KAAKvP,SAAL,CAAewI,OAAf,CAAP;EACD,GAzCD;EA0CA;;;EAGAvU,EAAAA,OAAO,CAACgkC,OAAR,GAAkB,UAAUxzB,IAAV,EAAgBpK,OAAhB,EAAyB;EACzCoK,IAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;EACApK,IAAAA,OAAO,GAAGA,OAAO,IAAI;EACnB3K,MAAAA,IAAI,EAAE;EADa,KAArB;EAGA,QAAI+S,GAAG,GAAG,IAAV;EACA,QAAIjR,IAAI,GAAG1E,MAAM,CAAC0E,IAAP,CAAYiT,IAAZ,CAAX,CANyC;;EAQzCjT,IAAAA,IAAI,CAACC,OAAL,CAAa,UAAUhB,CAAV,EAAa;EACxBgS,MAAAA,GAAG,GAAGA,GAAG,CAACyB,OAAJ,CAAYzT,CAAZ,CAAN;EACD,KAFD,EARyC;;EAYzCgS,IAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5B,WAAK,IAAIvB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgF,IAAI,CAAC/E,MAAzB,EAAiCD,CAAC,IAAI,CAAtC,EAAyC;EACvC,YAAIuB,CAAC,CAACue,GAAF,CAAM9a,IAAI,CAAChF,CAAD,CAAV,CAAJ,EAAoB;EAClBuB,UAAAA,CAAC,CAACkqC,OAAF,GAAYxzB,IAAI,CAACjT,IAAI,CAAChF,CAAD,CAAL,CAAhB;EACA;EACD;EACF;EACF,KAPD;EAQA,WAAOiW,GAAG,CAACH,IAAJ,CAASpC,GAAT,CAAa,UAAUnS,CAAV,EAAa;EAC/B,UAAIuW,GAAG,GAAGvW,CAAC,CAACoO,IAAF,CAAO9B,OAAP,CAAV;EACAiK,MAAAA,GAAG,CAAC2zB,OAAJ,GAAclqC,CAAC,CAACkqC,OAAF,IAAa,IAA3B;EACA,aAAO3zB,GAAP;EACD,KAJM,CAAP;EAKD,GAzBD;EA0BD,CAvKkC,CAAnC;;EAyKA,IAAI4zB,QAAQ,GAAG,SAASA,QAAT,CAAkBz1B,GAAlB,EAAuB1O,EAAvB,EAA2B;EACxC,MAAIoF,KAAK,GAAGsJ,GAAG,CAACtJ,KAAhB;EACAsJ,EAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5BA,IAAAA,CAAC,CAACwR,KAAF,GAAU9N,OAAV,CAAkB,UAAUT,CAAV,EAAa;EAC7B,aAAOA,CAAC,CAAC+C,EAAD,CAAD,CAAMoF,KAAN,CAAP;EACD,KAFD;EAGD,GAJD;EAKA,SAAOsJ,GAAP;EACD,CARD;EASA;;;EAGA,IAAIlQ,WAAW,GAAG,SAASA,WAAT,GAAuB;EACvC,SAAO2lC,QAAQ,CAAC,IAAD,EAAO,aAAP,CAAf;EACD,CAFD;EAGA;;;EAGA,IAAI7jC,WAAW,GAAG,SAASA,WAAT,GAAuB;EACvC,SAAO6jC,QAAQ,CAAC,IAAD,EAAO,aAAP,CAAf;EACD,CAFD;EAGA;;;EAGA,IAAI5jC,WAAW,GAAG,SAASA,WAAT,GAAuB;EACvC,SAAO4jC,QAAQ,CAAC,IAAD,EAAO,aAAP,CAAf;EACD,CAFD;EAGA;;;EAGA,IAAIC,WAAW,GAAG,SAASA,WAAT,GAAuB;EACvC,OAAK71B,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B;EACA,QAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACAA,IAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAaxE,CAAb,EAAgB;EAC5B,UAAIA,CAAC,KAAK,CAAV,EAAa;EACXwE,QAAAA,CAAC,CAACsD,WAAF;EACD;;EAED,UAAI9H,CAAC,KAAK+S,KAAK,CAAC9S,MAAN,GAAe,CAAzB,EAA4B;EAC1BuE,QAAAA,CAAC,CAACuC,IAAF,GAAS,EAAT;EACD;EACF,KARD;EASD,GAZD,EADuC;;EAevC,SAAO,IAAP;EACD,CAhBD;;EAkBA,IAAI6kC,OAAO,GAAG;EACZ7lC,EAAAA,WAAW,EAAEA,WADD;EAEZ8B,EAAAA,WAAW,EAAEA,WAFD;EAGZC,EAAAA,WAAW,EAAEA,WAHD;EAIZ6jC,EAAAA,WAAW,EAAEA;EAJD,CAAd;EAOA;;EAEA,IAAIE,aAAa,GAAGvkC,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EAClEA,EAAAA,OAAO,CAACX,GAAR,GAAc,UAAU7D,GAAV,EAAe+Q,MAAf,EAAuB;EACnC,QAAI/Q,GAAG,KAAKsH,SAAZ,EAAuB;EACrB,aAAO,KAAKuL,IAAL,CAAU,CAAV,EAAa/C,KAAb,CAAmB,CAAnB,EAAsBjM,GAA7B;EACD;;EAED,SAAKgP,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAI0N,IAAI,GAAG1N,CAAC,CAACwR,KAAF,CAAQ,CAAR,CAAX;;EAEA,UAAIiB,MAAM,KAAK,IAAf,EAAqB;EACnB/E,QAAAA,IAAI,CAACnI,GAAL,IAAY7D,GAAZ;EACD,OAFD,MAEO;EACLgM,QAAAA,IAAI,CAACnI,GAAL,GAAW7D,GAAX;EACD;EACF,KARD;EASA,WAAO,IAAP;EACD,GAfD;EAgBA;;;EAGAwE,EAAAA,OAAO,CAACV,IAAR,GAAe,UAAU9D,GAAV,EAAe+Q,MAAf,EAAuB;EACpC;EACA,QAAI/Q,GAAG,KAAKsH,SAAZ,EAAuB;EACrB,aAAO,KAAKuL,IAAL,CAAUpC,GAAV,CAAc,UAAUnS,CAAV,EAAa;EAChC,YAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACA,YAAI9D,IAAI,GAAG8D,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAAhB;EACA,eAAOgP,IAAI,CAAClI,IAAZ;EACD,OAJM,CAAP;EAKD,KARmC;;;EAWpC,SAAK+O,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACA,UAAI9D,IAAI,GAAG8D,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAAhB;;EAEA,UAAI+T,MAAM,KAAK,IAAf,EAAqB;EACnB/E,QAAAA,IAAI,CAAClI,IAAL,IAAa9D,GAAb;EACD,OAFD,MAEO;EACLgM,QAAAA,IAAI,CAAClI,IAAL,GAAY9D,GAAZ;EACD;EACF,KATD;EAUA,WAAO,IAAP;EACD,GAtBD;EAuBA;;;EAGAwE,EAAAA,OAAO,CAACzB,IAAR,GAAe,YAAY;EACzB,SAAK8P,IAAL,GAAY,KAAKA,IAAL,CAAUpC,GAAV,CAAc,UAAUnS,CAAV,EAAa;EACrC,aAAOA,CAAC,CAACyE,IAAF,EAAP;EACD,KAFW,CAAZ;EAGA,WAAO,IAAP;EACD,GALD;EAMA;;;EAGAyB,EAAAA,OAAO,CAACqkC,SAAR,GAAoB,YAAY;EAC9B,SAAKh2B,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ,CAD6B;;EAG7BA,MAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAaxE,CAAb,EAAgB;EAC5B,YAAIA,CAAC,KAAK,CAAV,EAAa;EACXwE,UAAAA,CAAC,CAACsC,GAAF,GAAQ,EAAR;EACD;;EAED,YAAIiM,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAAT,EAAkB;EAChBwE,UAAAA,CAAC,CAACuC,IAAF,GAAS,GAAT;EACD;EACF,OARD;EASD,KAZD;EAaA,WAAO,IAAP;EACD,GAfD;EAgBA;;;EAGAU,EAAAA,OAAO,CAACskC,WAAR,GAAsB,YAAY;EAChC,QAAI/iC,SAAS,GAAG,SAAhB;EACA,SAAK8M,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ,CAD6B;;EAG7BA,MAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzB,YAAIwE,SAAS,CAACrD,IAAV,CAAenB,CAAC,CAACuC,IAAjB,CAAJ,EAA4B;EAC1BvC,UAAAA,CAAC,CAACuC,IAAF,GAAS,GAAT;EACD;EACF,OAJD;EAKD,KARD;EASA,WAAO,IAAP;EACD,GAZD;;EAcAU,EAAAA,OAAO,CAACukC,WAAR,GAAsBvkC,OAAO,CAACskC,WAA9B;EACA;;EAEAtkC,EAAAA,OAAO,CAACwkC,YAAR,GAAuB,UAAU9gC,KAAV,EAAiBC,GAAjB,EAAsB;EAC3CD,IAAAA,KAAK,GAAGA,KAAK,IAAI,IAAjB;EACAC,IAAAA,GAAG,GAAGA,GAAG,IAAI,IAAb;EACA,SAAK0K,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACAA,MAAAA,KAAK,CAAC,CAAD,CAAL,CAASjM,GAAT,GAAeqE,KAAK,GAAG4H,KAAK,CAAC,CAAD,CAAL,CAASjM,GAAhC;EACA,UAAI0H,IAAI,GAAGuE,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAAhB;EACAuO,MAAAA,IAAI,CAACzH,IAAL,GAAYqE,GAAG,GAAGoD,IAAI,CAACzH,IAAvB;EACD,KALD;EAMA,WAAO,IAAP;EACD,GAVD;;EAYAU,EAAAA,OAAO,CAACykC,WAAR,GAAsBzkC,OAAO,CAACwkC,YAA9B;EACA;;EAEAxkC,EAAAA,OAAO,CAAC0kC,aAAR,GAAwB,UAAUhhC,KAAV,EAAiBC,GAAjB,EAAsB;EAC5CD,IAAAA,KAAK,GAAGA,KAAK,IAAI,GAAjB;EACAC,IAAAA,GAAG,GAAGA,GAAG,IAAI,GAAb;EACA,SAAK0K,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACAA,MAAAA,KAAK,CAAC,CAAD,CAAL,CAASjM,GAAT,GAAeqE,KAAK,GAAG4H,KAAK,CAAC,CAAD,CAAL,CAASjM,GAAhC;EACA,UAAI0H,IAAI,GAAGuE,KAAK,CAACA,KAAK,CAAC9S,MAAN,GAAe,CAAhB,CAAhB;EACAuO,MAAAA,IAAI,CAACzH,IAAL,GAAYqE,GAAG,GAAGoD,IAAI,CAACzH,IAAvB;EACD,KALD;EAMA,WAAO,IAAP;EACD,GAVD;EAWD,CArHuC,CAAxC;EAuHA;;;EACA,IAAI5B,IAAI,GAAG,SAASA,IAAT,CAAclC,GAAd,EAAmB;EAC5B;EACA,OAAKwiC,OAAL,GAF4B;;EAI5B,MAAIhvB,IAAI,GAAG,KAAKX,IAAL,CAAU,CAAV,CAAX;EACA,MAAI9H,MAAM,GAAGyI,IAAI,CAACxW,MAAlB;EACA,MAAImsC,OAAO,GAAG,EAAd;;EAEA,OAAK,IAAIpsC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK8V,IAAL,CAAU7V,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;EACzC,QAAIuB,CAAC,GAAG,KAAKuU,IAAL,CAAU9V,CAAV,CAAR;EACAosC,IAAAA,OAAO,CAAC7qC,CAAC,CAAC4J,KAAH,CAAP,GAAmB,IAAnB;EACA,QAAI8D,IAAI,GAAGwH,IAAI,CAAC9C,QAAL,EAAX,CAHyC;;EAKzC,QAAI1Q,GAAJ,EAAS;EACPgM,MAAAA,IAAI,CAAClI,IAAL,IAAa9D,GAAb;EACD,KAPwC;;;EAUzCgM,IAAAA,IAAI,CAAC0D,IAAL,GAAYpR,CAAC,CAAC4J,KAAd,CAVyC;;EAYzC5J,IAAAA,CAAC,CAACwR,KAAF,CAAQ,CAAR,EAAWL,IAAX,GAAkBzD,IAAI,CAAChE,EAAvB;EACAwL,IAAAA,IAAI,CAACxW,MAAL,IAAesB,CAAC,CAACtB,MAAjB;EACAwW,IAAAA,IAAI,CAACzD,KAAL,GAAa,EAAb;EACD,GAvB2B;EAwB5B;;;EAGA,MAAIq5B,QAAQ,GAAG51B,IAAI,CAACxW,MAAL,GAAc+N,MAA7B;EACA,OAAKoI,OAAL,GAAenR,OAAf,CAAuB,UAAUgR,GAAV,EAAe;EACpC;EACAA,IAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5B,UAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;;EAEA,WAAK,IAAIjJ,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGiJ,KAAK,CAAC9S,MAA5B,EAAoC6J,EAAE,EAAtC,EAA0C;EACxC,YAAIiJ,KAAK,CAACjJ,EAAD,CAAL,CAAUmB,EAAV,KAAiBwL,IAAI,CAACtL,KAA1B,EAAiC;EAC/B5J,UAAAA,CAAC,CAACtB,MAAF,IAAYosC,QAAZ;EACA;EACD;EACF;;EAED9qC,MAAAA,CAAC,CAACyR,KAAF,GAAU,EAAV;EACD,KAXD,EAFoC;;EAepCiD,IAAAA,GAAG,CAACH,IAAJ,GAAWG,GAAG,CAACH,IAAJ,CAAS5B,MAAT,CAAgB,UAAU3S,CAAV,EAAa;EACtC,aAAO6qC,OAAO,CAAC7qC,CAAC,CAAC4J,KAAH,CAAP,KAAqB,IAA5B;EACD,KAFU,CAAX;EAGD,GAlBD,EA5B4B;;EAgD5B,SAAO,KAAKqI,SAAL,CAAe,CAACiD,IAAD,CAAf,CAAP;EACD,CAjDD;;EAmDA,IAAI61B,OAAO,GAAG;EACZnnC,EAAAA,IAAI,EAAEA;EADM,CAAd;EAIA,IAAIonC,SAAS,GAAG,kBAAhB;EACA;EACA;EACA;;EAEA,IAAIC,cAAc,GAAG,SAASA,cAAT,CAAwBroC,CAAxB,EAA2BsoC,MAA3B,EAAmC;EACtD,MAAI,CAACtoC,CAAC,CAAC6C,KAAP,EAAc;EACZ;EACD;;EAED,MAAI+L,KAAK,GAAG5O,CAAC,CAACu+B,QAAF,EAAZ,CALsD;;EAOtD,OAAK,IAAI1iC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAAN,GAAe,CAAnC,EAAsCD,CAAC,EAAvC,EAA2C;EACzC,QAAIwE,CAAC,GAAGuO,KAAK,CAAC/S,CAAD,CAAb;;EAEA,QAAIusC,SAAS,CAAC5mC,IAAV,CAAenB,CAAC,CAACuC,IAAjB,CAAJ,EAA4B;EAC1B;EACD;EACF,GAbqD;;;EAgBtDgM,EAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzBA,IAAAA,CAAC,CAAC4E,QAAF,GAAa5E,CAAC,CAACsB,KAAf;EACD,GAFD,EAhBsD;;EAoBtDiN,EAAAA,KAAK,CAAC,CAAD,CAAL,CAAS7P,IAAT,IAAiBupC,MAAjB,CApBsD;;EAsBtD15B,EAAAA,KAAK,CAAC6E,KAAN,CAAY,CAAZ,EAAe3S,OAAf,CAAuB,UAAUT,CAAV,EAAa;EAClCA,IAAAA,CAAC,CAACtB,IAAF,GAAS,EAAT;EACD,GAFD;;EAIA,OAAK,IAAI4G,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGiJ,KAAK,CAAC9S,MAAN,GAAe,CAArC,EAAwC6J,EAAE,EAA1C,EAA8C;EAC5C,QAAImV,EAAE,GAAGlM,KAAK,CAACjJ,EAAD,CAAd;EACAmV,IAAAA,EAAE,CAAClY,IAAH,GAAUkY,EAAE,CAAClY,IAAH,CAAQb,OAAR,CAAgB,GAAhB,EAAqB,EAArB,CAAV;EACD;EACF,CA9BD;EA+BA;;;EAGA,IAAIwmC,QAAQ,GAAG,SAASA,QAAT,GAAoB;EACjC,MAAIz2B,GAAG,GAAG,KAAK8J,GAAL,CAAS,iBAAT,CAAV,CADiC;;EAGjC,MAAI5b,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,mBAAV,CAAR;EACAw3B,EAAAA,cAAc,CAACroC,CAAD,EAAI,KAAJ,CAAd,CAJiC;;EAMjCA,EAAAA,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,8BAAV,CAAJ;EACAw3B,EAAAA,cAAc,CAACroC,CAAD,EAAI,KAAJ,CAAd,CAPiC;;EASjCA,EAAAA,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,wBAAV,CAAJ;EACAw3B,EAAAA,cAAc,CAACroC,CAAD,EAAI,IAAJ,CAAd,CAViC;;EAYjCA,EAAAA,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,YAAV,CAAJ;EACAw3B,EAAAA,cAAc,CAACroC,CAAD,EAAI,IAAJ,CAAd,CAbiC;;EAejCA,EAAAA,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,eAAV,CAAJ;EACAw3B,EAAAA,cAAc,CAACroC,CAAD,EAAI,IAAJ,CAAd,CAhBiC;;EAkBjCA,EAAAA,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,0DAAV,CAAJ;EACAw3B,EAAAA,cAAc,CAACroC,CAAD,EAAI,KAAJ,CAAd,CAnBiC;;EAqBjCA,EAAAA,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,kBAAV,CAAJ;EACAw3B,EAAAA,cAAc,CAACroC,CAAD,EAAI,KAAJ,CAAd,CAtBiC;;EAwBjCA,EAAAA,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,2BAAV,CAAJ;EACAw3B,EAAAA,cAAc,CAACroC,CAAD,EAAI,KAAJ,CAAd,CAzBiC;;EA2BjCA,EAAAA,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,MAAV,CAAJ;EACAw3B,EAAAA,cAAc,CAACroC,CAAD,EAAI,IAAJ,CAAd,CA5BiC;;EA8BjCA,EAAAA,CAAC,GAAG8R,GAAG,CAACjB,KAAJ,CAAU,UAAV,CAAJ;EACA,SAAO,IAAP;EACD,CAhCD;;EAkCA,IAAI23B,WAAW,GAAG;EAChBD,EAAAA,QAAQ,EAAEA;EADM,CAAlB;EAIA,IAAIE,SAAS,GAAGtsC,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBkyB,QAAlB,EAA4BM,YAA5B,EAA0CqB,QAA1C,EAAoDY,MAApD,EAA4DK,QAA5D,EAAsES,SAAtE,EAAiFO,QAAjF,EAA2FU,UAA3F,EAAuGC,SAAvG,EAAkHW,OAAlH,EAA2HM,OAA3H,EAAoIsB,MAApI,EAA4IgB,OAA5I,EAAqJuB,YAArJ,EAAmKC,QAAnK,EAA6KQ,OAA7K,EAAsLC,aAAtL,EAAqMS,OAArM,EAA8MK,WAA9M,CAAhB;EAEA,IAAIE,SAAS,GAAG,EAAhB;;EAEA,IAAIj8B,GAAG,GAAG,CAAC,CAAC,OAAD,EAAU,GAAV,CAAD,EAAiB,CAAC,YAAD,EAAe,cAAf,CAAjB,EAAiD,CAAC,YAAD,EAAe,YAAf,CAAjD,EAA+E,CAAC,UAAD,EAAa,UAAb,CAA/E,EAAyG,CAAC,QAAD,EAAW,QAAX,CAAzG,EAA+H,CAAC,OAAD,EAAU,QAAV,CAA/H,EAAoJ,CAAC,WAAD,EAAc,WAAd,CAApJ,EAAgL,CAAC,YAAD,EAAe,YAAf,CAAhL,EAA8M,CAAC,MAAD,EAAS,MAAT,CAA9M,EAAgO,CAAC,SAAD,EAAY,SAAZ,CAAhO,EAAwP,CAAC,UAAD,EAAa,UAAb,CAAxP,EAAkR,CAAC,cAAD,EAAiB,cAAjB,CAAlR,EAAoT,CAAC,cAAD,EAAiB,cAAjB,CAApT,CAAV;EACAA,GAAG,CAAC3L,OAAJ,CAAY,UAAUzB,CAAV,EAAa;EACvBqpC,EAAAA,SAAS,CAACrpC,CAAC,CAAC,CAAD,CAAF,CAAT,GAAkB,UAAUY,CAAV,EAAa;EAC7B,QAAID,CAAC,GAAG,KAAK6Q,KAAL,CAAWxR,CAAC,CAAC,CAAD,CAAZ,CAAR;;EAEA,QAAI,OAAOY,CAAP,KAAa,QAAjB,EAA2B;EACzBD,MAAAA,CAAC,GAAGA,CAAC,CAAC+O,GAAF,CAAM9O,CAAN,CAAJ;EACD;;EAED,WAAOD,CAAP;EACD,GARD;EASD,CAVD;;EAYA0oC,SAAS,CAACC,MAAV,GAAmBD,SAAS,CAACxC,KAA7B;EACAwC,SAAS,CAACE,UAAV,GAAuBF,SAAS,CAACG,UAAjC;EACAH,SAAS,CAACnsB,KAAV,GAAkBmsB,SAAS,CAAC95B,KAA5B;EACA;;EAEA85B,SAAS,CAACI,YAAV,GAAyB,UAAU7oC,CAAV,EAAa;EACpC,MAAID,CAAC,GAAG,KAAKonC,UAAL,CAAgB,WAAhB,CAAR;EACApnC,EAAAA,CAAC,GAAGA,CAAC,CAAC6Q,KAAF,CAAQ,eAAR,CAAJ;;EAEA,MAAI,OAAO5Q,CAAP,KAAa,QAAjB,EAA2B;EACzBD,IAAAA,CAAC,GAAGA,CAAC,CAAC+O,GAAF,CAAM9O,CAAN,CAAJ;EACD;;EAED,SAAOD,CAAP;EACD,CATD;EAUA;;;EAGA0oC,SAAS,CAACK,KAAV,GAAkB,UAAU9oC,CAAV,EAAa;EAC7B,MAAID,CAAC,GAAG,KAAK6Q,KAAL,CAAW,mBAAX,CAAR;;EAEA,MAAI,OAAO5Q,CAAP,KAAa,QAAjB,EAA2B;EACzBD,IAAAA,CAAC,GAAGA,CAAC,CAAC+O,GAAF,CAAM9O,CAAN,CAAJ;EACD;;EAED,SAAOD,CAAP;EACD,CARD;EASA;;;EAGA0oC,SAAS,CAACM,MAAV,GAAmB,UAAU/oC,CAAV,EAAa;EAC9B;EACA,MAAI8xB,IAAI,GAAG,KAAKlhB,KAAL,CAAW,yCAAX,CAAX,CAF8B;;EAI9B,MAAI7Q,CAAC,GAAG,KAAK4b,GAAL,CAASmW,IAAT,EAAeqV,UAAf,CAA0B,WAA1B,CAAR,CAJ8B;;EAM9BpnC,EAAAA,CAAC,GAAGA,CAAC,CAAC6P,MAAF,CAASkiB,IAAT,CAAJ;EACA/xB,EAAAA,CAAC,CAACgL,IAAF,CAAO,OAAP;EACAhL,EAAAA,CAAC,GAAGA,CAAC,CAAC6Q,KAAF,CAAQ,SAAR,CAAJ;;EAEA,MAAI,OAAO5Q,CAAP,KAAa,QAAjB,EAA2B;EACzBD,IAAAA,CAAC,GAAGA,CAAC,CAAC+O,GAAF,CAAM9O,CAAN,CAAJ;EACD;;EAED,SAAOD,CAAP;EACD,CAfD;EAgBA;;;EAGA0oC,SAAS,CAACO,aAAV,GAA0B,UAAUhpC,CAAV,EAAa;EACrC,MAAID,CAAC,GAAG,KAAKkpC,OAAL,EAAR;EACAlpC,EAAAA,CAAC,GAAGA,CAAC,CAAC6Q,KAAF,CAAQ,gBAAR,CAAJ;;EAEA,MAAI,OAAO5Q,CAAP,KAAa,QAAjB,EAA2B;EACzBD,IAAAA,CAAC,GAAGA,CAAC,CAAC+O,GAAF,CAAM9O,CAAN,CAAJ;EACD;;EAED,SAAOD,CAAP;EACD,CATD;;;EAYA0oC,SAAS,CAACS,QAAV,GAAqB,UAAUlpC,CAAV,EAAa;EAChC,MAAIE,CAAC,GAAG,KAAK+oC,OAAL,EAAR,CADgC;;EAGhC,MAAIE,GAAG,GAAGjpC,CAAC,CAACkpC,MAAF,EAAV;EACAD,EAAAA,GAAG,GAAGA,GAAG,CAACv5B,MAAJ,CAAW1P,CAAC,CAAC6oC,MAAF,EAAX,CAAN;EACAI,EAAAA,GAAG,GAAGA,GAAG,CAACv5B,MAAJ,CAAW1P,CAAC,CAAC8oC,aAAF,EAAX,CAAN;EACA,MAAIK,MAAM,GAAG,CAAC,SAAD,EAAY,KAAZ,EAAmB,OAAnB,EAA4B,QAA5B,EAAsC,SAAtC,EAAiD,QAAjD,EAA2D,QAA3D,CAAb;EACAF,EAAAA,GAAG,GAAGA,GAAG,CAACxtB,GAAJ,CAAQ0tB,MAAR,CAAN,CAPgC;;EAShCF,EAAAA,GAAG,CAACp+B,IAAJ,CAAS,UAAT,EATgC;;EAWhC,MAAI,OAAO/K,CAAP,KAAa,QAAjB,EAA2B;EACzBmpC,IAAAA,GAAG,GAAGA,GAAG,CAACr6B,GAAJ,CAAQ9O,CAAR,CAAN;EACD;;EAED,SAAOmpC,GAAP;EACD,CAhBD;;;EAmBAV,SAAS,CAACa,MAAV,GAAmBb,SAAS,CAACS,QAA7B;EACAT,SAAS,CAACc,MAAV,GAAmBd,SAAS,CAACS,QAA7B;EACA,IAAIM,OAAO,GAAGf,SAAd;EAEA,IAAIgB,SAAS,GAAG,iBAAhB;EACA;;EAEA,IAAIC,WAAW,GAAG,SAASA,WAAT,CAAqB/6B,KAArB,EAA4BvO,CAA5B,EAA+BmI,KAA/B,EAAsC;EACtD,MAAI0e,GAAG,GAAG1e,KAAK,CAAC+T,KAAhB,CADsD;;EAGtD,MAAI/L,GAAG,GAAG5B,KAAK,CAACvO,CAAD,CAAL,CAAS4B,OAAT,GAAmB,GAAnB,GAAyB2M,KAAK,CAACvO,CAAC,GAAG,CAAL,CAAL,CAAa4B,OAAhD;;EAEA,MAAIilB,GAAG,CAAC1W,GAAD,CAAH,KAAapK,SAAb,IAA0B8gB,GAAG,CAAChgB,cAAJ,CAAmBsJ,GAAnB,MAA4B,IAA1D,EAAgE;EAC9D5B,IAAAA,KAAK,CAACvO,CAAD,CAAL,CAASkH,GAAT,CAAa2f,GAAG,CAAC1W,GAAD,CAAhB,EAAuB,aAAvB,EAAsChI,KAAtC;EACAoG,IAAAA,KAAK,CAACvO,CAAC,GAAG,CAAL,CAAL,CAAakH,GAAb,CAAiB2f,GAAG,CAAC1W,GAAD,CAApB,EAA2B,aAA3B,EAA0ChI,KAA1C;EACA,WAAO,CAAP;EACD,GATqD;;;EAYtD,MAAInI,CAAC,GAAG,CAAJ,GAAQuO,KAAK,CAAC9S,MAAlB,EAA0B;EACxB0U,IAAAA,GAAG,IAAI,MAAM5B,KAAK,CAACvO,CAAC,GAAG,CAAL,CAAL,CAAa4B,OAA1B;;EAEA,QAAIilB,GAAG,CAAC1W,GAAD,CAAH,KAAapK,SAAb,IAA0B8gB,GAAG,CAAChgB,cAAJ,CAAmBsJ,GAAnB,MAA4B,IAA1D,EAAgE;EAC9D5B,MAAAA,KAAK,CAACvO,CAAD,CAAL,CAASkH,GAAT,CAAa2f,GAAG,CAAC1W,GAAD,CAAhB,EAAuB,eAAvB,EAAwChI,KAAxC;EACAoG,MAAAA,KAAK,CAACvO,CAAC,GAAG,CAAL,CAAL,CAAakH,GAAb,CAAiB2f,GAAG,CAAC1W,GAAD,CAApB,EAA2B,eAA3B,EAA4ChI,KAA5C;EACAoG,MAAAA,KAAK,CAACvO,CAAC,GAAG,CAAL,CAAL,CAAakH,GAAb,CAAiB2f,GAAG,CAAC1W,GAAD,CAApB,EAA2B,eAA3B,EAA4ChI,KAA5C;EACA,aAAO,CAAP;EACD;EACF,GArBqD;;;EAwBtD,MAAInI,CAAC,GAAG,CAAJ,GAAQuO,KAAK,CAAC9S,MAAlB,EAA0B;EACxB0U,IAAAA,GAAG,IAAI,MAAM5B,KAAK,CAACvO,CAAC,GAAG,CAAL,CAAL,CAAa4B,OAA1B;;EAEA,QAAIilB,GAAG,CAAC1W,GAAD,CAAH,KAAapK,SAAb,IAA0B8gB,GAAG,CAAChgB,cAAJ,CAAmBsJ,GAAnB,MAA4B,IAA1D,EAAgE;EAC9D5B,MAAAA,KAAK,CAACvO,CAAD,CAAL,CAASkH,GAAT,CAAa2f,GAAG,CAAC1W,GAAD,CAAhB,EAAuB,cAAvB,EAAuChI,KAAvC;EACAoG,MAAAA,KAAK,CAACvO,CAAC,GAAG,CAAL,CAAL,CAAakH,GAAb,CAAiB2f,GAAG,CAAC1W,GAAD,CAApB,EAA2B,cAA3B,EAA2ChI,KAA3C;EACAoG,MAAAA,KAAK,CAACvO,CAAC,GAAG,CAAL,CAAL,CAAakH,GAAb,CAAiB2f,GAAG,CAAC1W,GAAD,CAApB,EAA2B,cAA3B,EAA2ChI,KAA3C;EACAoG,MAAAA,KAAK,CAACvO,CAAC,GAAG,CAAL,CAAL,CAAakH,GAAb,CAAiB2f,GAAG,CAAC1W,GAAD,CAApB,EAA2B,cAA3B,EAA2ChI,KAA3C;EACA,aAAO,CAAP;EACD;EACF;;EAED,SAAO,CAAP;EACD,CArCD;EAsCA;;;EAGA,IAAIohC,YAAY,GAAG,SAASA,YAAT,CAAsBh7B,KAAtB,EAA6BpG,KAA7B,EAAoC;EACrD,MAAI0e,GAAG,GAAG1e,KAAK,CAAC+T,KAAhB;EACA,MAAIkL,WAAW,GAAGjf,KAAK,CAACif,WAAxB,CAFqD;EAGrD;;EAEA,OAAK,IAAIpnB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuO,KAAK,CAAC9S,MAA1B,EAAkCuE,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAIvB,GAAG,GAAG8P,KAAK,CAACvO,CAAD,CAAL,CAASsB,KAAnB,CADwC;;EAGxC,QAAI8lB,WAAW,CAAC3oB,GAAD,CAAX,KAAqB,IAArB,IAA6BuB,CAAC,GAAG,CAAJ,GAAQuO,KAAK,CAAC9S,MAA/C,EAAuD;EACrD,UAAI+tC,UAAU,GAAGF,WAAW,CAAC/6B,KAAD,EAAQvO,CAAR,EAAWmI,KAAX,CAA5B;;EAEA,UAAIqhC,UAAU,GAAG,CAAjB,EAAoB;EAClBxpC,QAAAA,CAAC,IAAIwpC,UAAL,CADkB;;EAGlB;EACD;EACF,KAXuC;;;EAcxC,QAAI3iB,GAAG,CAACpoB,GAAD,CAAH,KAAasH,SAAb,IAA0B8gB,GAAG,CAAChgB,cAAJ,CAAmBpI,GAAnB,MAA4B,IAA1D,EAAgE;EAC9D8P,MAAAA,KAAK,CAACvO,CAAD,CAAL,CAASkH,GAAT,CAAa2f,GAAG,CAACpoB,GAAD,CAAhB,EAAuB,SAAvB,EAAkC0J,KAAlC;EACA;EACD,KAjBuC;;;EAoBxC,QAAI1J,GAAG,KAAK8P,KAAK,CAACvO,CAAD,CAAL,CAAS4B,OAAjB,IAA4BilB,GAAG,CAAChgB,cAAJ,CAAmB0H,KAAK,CAACvO,CAAD,CAAL,CAAS4B,OAA5B,MAAyC,IAAzE,EAA+E;EAC7E2M,MAAAA,KAAK,CAACvO,CAAD,CAAL,CAASkH,GAAT,CAAa2f,GAAG,CAACtY,KAAK,CAACvO,CAAD,CAAL,CAAS4B,OAAV,CAAhB,EAAoC,SAApC,EAA+CuG,KAA/C;EACA;EACD,KAvBuC;;;EA0BxC,QAAIkhC,SAAS,CAACloC,IAAV,CAAe1C,GAAf,MAAwB,IAA5B,EAAkC;EAChC,UAAIgrC,QAAQ,GAAGhrC,GAAG,CAACiD,OAAJ,CAAY2nC,SAAZ,EAAuB,EAAvB,CAAf;;EAEA,UAAIxiB,GAAG,CAAChgB,cAAJ,CAAmB4iC,QAAnB,MAAiC,IAArC,EAA2C;EACzCl7B,QAAAA,KAAK,CAACvO,CAAD,CAAL,CAASkH,GAAT,CAAa2f,GAAG,CAAC4iB,QAAD,CAAhB,EAA4B,kBAA5B,EAAgDthC,KAAhD;EACD;EACF;EACF;;EAED,SAAOoG,KAAP;EACD,CAzCD;;EA2CA,IAAIm7B,UAAU,GAAGH,YAAjB;EAEA,IAAII,WAAW,GAAG,cAAlB;EACA,IAAIC,MAAM,GAAG,2BAAb;EACA;;EAEA,IAAIC,gBAAgB,GAAG,SAASA,gBAAT,CAA0Bt7B,KAA1B,EAAiC/S,CAAjC,EAAoC2M,KAApC,EAA2C;EAChE,MAAIsC,IAAI,GAAG8D,KAAK,CAAC/S,CAAD,CAAhB,CADgE;EAEhE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,MAAImuC,WAAW,CAACxoC,IAAZ,CAAiBsJ,IAAI,CAAC/L,IAAtB,CAAJ,EAAiC;EAC/B,QAAI,CAACirC,WAAW,CAACxoC,IAAZ,CAAiBsJ,IAAI,CAACnI,GAAtB,CAAD,IAA+B,CAACqnC,WAAW,CAACxoC,IAAZ,CAAiBsJ,IAAI,CAAClI,IAAtB,CAAhC,IAA+DkI,IAAI,CAACnJ,KAAL,CAAW7F,MAAX,GAAoB,CAAvF,EAA0F;EACxF,UAAIquC,OAAO,GAAGr/B,IAAI,CAACnJ,KAAL,CAAWmJ,IAAI,CAACnJ,KAAL,CAAW7F,MAAX,GAAoB,CAA/B,CAAd,CADwF;;EAGxF,UAAIquC,OAAO,KAAK,GAAhB,EAAqB;EACnBr/B,QAAAA,IAAI,CAACvD,GAAL,CAAS,CAAC,YAAD,EAAe,MAAf,CAAT,EAAiC,UAAjC,EAA6CiB,KAA7C;EACA;EACD,OANuF;;;EASxF,UAAI2hC,OAAO,KAAK,GAAhB,EAAqB;EACnBr/B,QAAAA,IAAI,CAACvD,GAAL,CAAS,CAAC,QAAD,CAAT,EAAqB,SAArB,EAAgCiB,KAAhC;EACD;EACF;EACF,GA1B+D;;;EA6BhE,MAAIyhC,MAAM,CAACzoC,IAAP,CAAYsJ,IAAI,CAAC/L,IAAjB,CAAJ,EAA4B;EAC1B+L,IAAAA,IAAI,CAACvD,GAAL,CAAS,MAAT,EAAiB,SAAjB,EAA4BiB,KAA5B;EACD,GA/B+D;EAgChE;EACA;EACA;EACA;EACA;EACA;EACA;;EAED,CAxCD;;EA0CA,IAAI4hC,cAAc,GAAGF,gBAArB;EAGA;;EACA,IAAIG,UAAU,GAAG;EACjB,CAAC,+BAAD,EAAkC,OAAlC,CADiB;EAEjB,CAAC,+BAAD,EAAkC,SAAlC,CAFiB,EAE6B,CAAC,oBAAD,EAAuB,MAAvB,CAF7B;EAGjB,CAAC,8BAAD,EAAiC,MAAjC,CAHiB;EAIjB,CAAC,WAAD,EAAc,WAAd,CAJiB;EAKjB,CAAC,qCAAD,EAAwC,KAAxC,CALiB;EAMjB,CAAC,+DAAD,EAAkE,KAAlE,CANiB;EAOjB;EACA,CAAC,aAAD,EAAgB,MAAhB,CARiB;EASjB,CAAC,yCAAD,EAA4C,MAA5C,CATiB;EAUjB,CAAC,qDAAD,EAAwD,MAAxD,CAViB;EAWjB,CAAC,qDAAD,EAAwD,MAAxD,CAXiB;EAYjB,CAAC,YAAD,EAAe,MAAf,CAZiB;EAajB,CAAC,qBAAD,EAAwB,MAAxB,CAbiB;EAcjB,CAAC,wBAAD,EAA2B,MAA3B,CAdiB;EAejB,CAAC,gDAAD,EAAmD,MAAnD,CAfiB;EAgBjB,CAAC,oCAAD,EAAuC,MAAvC,CAhBiB;EAiBjB,CAAC,sCAAD,EAAyC,MAAzC,CAjBiB;EAkBjB,CAAC,qCAAD,EAAwC,MAAxC,CAlBiB;EAmBjB,CAAC,uBAAD,EAA0B,UAA1B,CAnBiB;EAoBjB,CAAC,uBAAD,EAA0B,UAA1B,CApBiB;EAqBjB;EACA,CAAC,WAAD,EAAc,UAAd,CAtBiB;EAuBjB,CAAC,eAAD,EAAkB,UAAlB,CAvBiB;EAwBjB,CAAC,eAAD,EAAkB,UAAlB,CAxBiB;EAyBjB;EACA,CAAC,cAAD,EAAiB,YAAjB,CA1BiB;EA2BjB,CAAC,aAAD,EAAgB,YAAhB,CA3BiB;EA4BjB,CAAC,qCAAD,EAAwC,MAAxC,CA5BiB;EA6BjB,CAAC,sCAAD,EAAyC,MAAzC,CA7BiB;EA8BjB;EACA,CAAC,qBAAD,EAAwB,aAAxB,CA/BiB;EAgCjB,CAAC,iDAAD,EAAoD,aAApD,CAhCiB;EAiCjB;EACA;EACA;EACA;EACA,CAAC,yLAAD,EAA4L,CAAC,OAAD,EAAU,OAAV,CAA5L,CArCiB;EAsCjB,CAAC,yKAAD,EAA4K,CAAC,OAAD,EAAU,OAAV,CAA5K,CAtCiB;EAuCjB,CAAC,gFAAD,EAAmF,CAAC,OAAD,EAAU,OAAV,CAAnF,CAvCiB;EAwCjB;EACA,CAAC,yCAAD,EAA4C,CAAC,UAAD,EAAa,cAAb,CAA5C,CAzCiB,EAyC0D,CAAC,qDAAD,EAAwD,CAAC,SAAD,EAAY,cAAZ,CAAxD,CAzC1D;EA0CjB,CAAC,eAAD,EAAkB,CAAC,UAAD,EAAa,cAAb,CAAlB,CA1CiB;EA2CjB,CAAC,0CAAD,EAA6C,CAAC,SAAD,EAAY,UAAZ,EAAwB,cAAxB,CAA7C,CA3CiB;EA4CjB,CAAC,aAAD,EAAgB,CAAC,SAAD,EAAY,UAAZ,EAAwB,cAAxB,CAAhB,CA5CiB;EA6CjB;EACA,CAAC,0CAAD,EAA6C,CAAC,UAAD,EAAa,cAAb,CAA7C,CA9CiB;EA+CjB;EACA,CAAC,kDAAD,EAAqD,CAAC,OAAD,EAAU,aAAV,CAArD,CAhDiB;EAiDjB;EACA,CAAC,2EAAD,EAA8E,CAAC,MAAD,EAAS,aAAT,CAA9E,CAlDiB;EAmDjB;EACA,CAAC,uBAAD,EAA0B,OAA1B,CApDiB;EAqDjB;EACA;EACA;EAvDiB,CAAjB;EA0DA,IAAIC,YAAY,GAAG,iBAAnB;EACA,IAAIC,aAAa,GAAG,0DAApB;EACA;;EAEA,IAAIC,YAAY,GAAG,SAASC,UAAT,CAAoB3/B,IAApB,EAA0BtC,KAA1B,EAAiC;EAClD,MAAI1J,GAAG,GAAGgM,IAAI,CAAC/L,IAAf,CADkD;;EAGlD,OAAK,IAAIoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkqC,UAAU,CAACvuC,MAA/B,EAAuCqE,CAAC,IAAI,CAA5C,EAA+C;EAC7C,QAAIkqC,UAAU,CAAClqC,CAAD,CAAV,CAAc,CAAd,EAAiBqB,IAAjB,CAAsB1C,GAAtB,MAA+B,IAAnC,EAAyC;EACvCgM,MAAAA,IAAI,CAACmD,OAAL,CAAao8B,UAAU,CAAClqC,CAAD,CAAV,CAAc,CAAd,CAAb,EAA+B,aAAaA,CAA5C,EAA+CqI,KAA/C;EACA;EACD;EACF,GARiD;EASlD;;;EAGA,MAAIsC,IAAI,CAAC/L,IAAL,CAAUjD,MAAV,IAAoB,CAApB,IAAyBwuC,YAAY,CAAC9oC,IAAb,CAAkB1C,GAAlB,CAAzB,IAAmDyrC,aAAa,CAAC/oC,IAAd,CAAmB1C,GAAnB,CAAvD,EAAgF;EAC9EgM,IAAAA,IAAI,CAACvD,GAAL,CAAS,cAAT,EAAyB,MAAzB,EAAiCiB,KAAjC;EACD;EACF,CAfD;;EAiBA,IAAIkiC,WAAW,GAAGF,YAAlB;EAGA;EACA;;EACA,IAAIG,KAAK,GAAG,WAAZ;EACA,IAAIC,KAAK,GAAG,YAAZ;EACA,IAAIC,MAAM,GAAG,cAAb;EACA,IAAIC,MAAM,GAAG,UAAb;EACA,IAAIC,MAAM,GAAG,WAAb;EACA,IAAIzoB,MAAM,GAAG,QAAb;EACA,IAAI0oB,GAAG,GAAG,YAAV;EACA,IAAIC,OAAO,GAAG,OAAd;EACA,IAAIpiC,IAAI,GAAG,MAAX;EACA,IAAIqiC,MAAM,GAAG,MAAb;EACA,IAAIC,MAAM,GAAG,UAAb;EACA;;EAEA,IAAIC,QAAQ,GAAG;EACb/rC,EAAAA,CAAC,EAAE,CAAC,CAAC,aAAD,EAAgB6rC,MAAhB,CAAD,EAA0B,CAAC,iBAAD,EAAoBC,MAApB,CAA1B;EACH,GAAC,eAAD,EAAkBL,MAAlB,CADG,EACwB,CAAC,aAAD,EAAgBE,GAAhB,CADxB;EAAA,GADU;EAIbzrC,EAAAA,CAAC,EAAE,CAAC,CAAC,cAAD,EAAiBorC,KAAjB,CAAD,CAJU;EAKbnrC,EAAAA,CAAC,EAAE;EACH;EACA,GAAC,2CAAD,EAA8CurC,MAA9C,CAFG;EAGH;EACA,GAAC,yBAAD,EAA4BA,MAA5B,CAJG;EAKH;EACA,GAAC,kBAAD,EAAqBA,MAArB,CANG;EAOH;EACA,GAAC,cAAD,EAAiBA,MAAjB,CARG;EASH,GAAC,iBAAD,EAAoBA,MAApB,CATG;EAUH;EACA,GAAC,eAAD,EAAkBA,MAAlB,CAXG;EAYH,GAAC,eAAD,EAAkBA,MAAlB,CAZG;EAaH;EACA,GAAC,YAAD,EAAeA,MAAf,CAdG;EAeH,GAAC,kBAAD,EAAqBA,MAArB,CAfG;EAgBH;EACA,GAAC,sBAAD,EAAyBA,MAAzB,CAjBG;EAkBH;EACA,GAAC,oBAAD,EAAuBA,MAAvB,CAnBG;EAoBH;EACA,GAAC,kBAAD,EAAqBA,MAArB,CArBG;EAsBH;EACA,GAAC,cAAD,EAAiBA,MAAjB,CAvBG;EAwBH,GAAC,yBAAD,EAA4BA,MAA5B,CAxBG;EAyBH;EACA,GAAC,mBAAD,EAAsBA,MAAtB,CA1BG;EA2BH,GAAC,cAAD,EAAiBD,MAAjB,CA3BG;EA4BH,GAAC,oBAAD,EAAuBH,KAAvB,CA5BG,EA4B4B,CAAC,WAAD,EAAcA,KAAd,CA5B5B,CALU;EAkCb9sC,EAAAA,CAAC,EAAE,CAAC,CAAC,YAAD,EAAe+sC,KAAf,CAAD,EAAwB,CAAC,eAAD,EAAkBA,KAAlB,CAAxB,EAAkD,CAAC,aAAD,EAAgBA,KAAhB,CAAlD,EAA0E,CAAC,mBAAD,EAAsBD,KAAtB,CAA1E,EAAwG,CAAC,iBAAD,EAAoBA,KAApB,CAAxG,EAAoI,CAAC,WAAD,EAAcA,KAAd,CAApI,CAlCU;EAmCbhrC,EAAAA,CAAC,EAAE,CAAC,CAAC,gBAAD,EAAmBgrC,KAAnB,CAAD,EAA4B,CAAC,WAAD,EAAcQ,MAAd,CAA5B;EACH,GAAC,SAAD,EAAYH,GAAZ,CADG;EAEH,GAAC,aAAD,EAAgBA,GAAhB,CAFG;EAAA,GAnCU;EAuCbnvC,EAAAA,CAAC,EAAE,CAAC,CAAC,iBAAD,EAAoBsvC,MAApB,CAAD;EAAA,GAvCU;EAyCbrrC,EAAAA,CAAC,EAAE,CAAC,CAAC,UAAD,EAAakrC,GAAb,CAAD;EAAA,GAzCU;EA2CbjrC,EAAAA,CAAC,EAAE,CAAC,CAAC,WAAD,EAAc4qC,KAAd,CAAD,EAAuB,CAAC,eAAD,EAAkBA,KAAlB,CAAvB,EAAiD,CAAC,eAAD,EAAkBA,KAAlB,CAAjD,EAA2E,CAAC,kBAAD,EAAqBA,KAArB,CAA3E,CA3CU;EA4Cb3qC,EAAAA,CAAC,EAAE,CAAC,CAAC,eAAD,EAAkB8qC,MAAlB,CAAD,EAA4B,CAAC,cAAD,EAAiBA,MAAjB,CAA5B,EAAsD,CAAC,UAAD,EAAaE,GAAb,CAAtD;EACH,GAAC,cAAD,EAAiB,MAAjB,CADG,CA5CU;EA8Cb/qC,EAAAA,CAAC,EAAE,CAAC,CAAC,eAAD,EAAkB0qC,KAAlB,CAAD,EAA2B,CAAC,gBAAD,EAAmBM,OAAnB,CAA3B,EAAwD,CAAC,kBAAD,EAAqB,QAArB,CAAxD;EAAA,GA9CU;EAgDbjuC,EAAAA,CAAC,EAAE,CAAC,CAAC,OAAD,EAAUguC,GAAV,CAAD;EACH,GAAC,SAAD,EAAYA,GAAZ,CADG;EAEH,GAAC,aAAD,EAAgBA,GAAhB,CAFG;EAAA,GAhDU;EAoDb7qC,EAAAA,CAAC,EAAE,CAAC,CAAC,iBAAD,EAAoB,MAApB,CAAD,EAA8B,CAAC,iBAAD,EAAoB2qC,MAApB,CAA9B,EAA2D,CAAC,UAAD,EAAaF,KAAb,CAA3D,EAAgF,CAAC,oBAAD,EAAuBK,OAAvB,CAAhF,EAAiH,CAAC,UAAD,EAAa,MAAb,CAAjH,EAAuI,CAAC,OAAD,EAAU,aAAV,CAAvI,CApDU;EAqDb5qC,EAAAA,CAAC,EAAE,CAAC,CAAC,WAAD,EAAc,aAAd,CAAD,EAA+B,CAAC,iBAAD,EAAoBsqC,KAApB,CAA/B,EAA2D,CAAC,eAAD,EAAkBA,KAAlB,CAA3D,EAAqF,CAAC,WAAD,EAAc9hC,IAAd,CAArF,CArDU;EAsDbzI,EAAAA,CAAC,EAAE,CAAC,CAAC,gBAAD,EAAmByqC,MAAnB,CAAD,EAA6B,CAAC,aAAD,EAAgBA,MAAhB,CAA7B,EAAsD,CAAC,WAAD,EAAchiC,IAAd,CAAtD,EAA2E,CAAC,aAAD,EAAgBiiC,MAAhB,CAA3E,EAAoG,CAAC,cAAD,EAAiBD,MAAjB,CAApG;EACH,GAAC,cAAD,EAAiBA,MAAjB,CADG;EAEH,GAAC,oBAAD,EAAuBC,MAAvB,CAFG,EAE6B,CAAC,WAAD,EAAcI,MAAd,CAF7B,EAEoD,CAAC,QAAD,EAAWF,GAAX,CAFpD;EAAA,GAtDU;EA0DbzqC,EAAAA,CAAC,EAAE,CAAC,CAAC,uBAAD,EAA0B4qC,MAA1B,CAAD;EAAA,GA1DU;EA4DbzqC,EAAAA,CAAC,EAAE,CAAC,CAAC,WAAD,EAAciqC,KAAd,CAAD,EAAuB,CAAC,UAAD,EAAaA,KAAb,CAAvB,EAA4C,CAAC,SAAD,EAAYA,KAAZ,CAA5C,EAAgE,CAAC,YAAD,EAAeA,KAAf,CAAhE,EAAuF,CAAC,UAAD,EAAaG,MAAb,CAAvF,EAA6G,CAAC,eAAD,EAAkBxoB,MAAlB,CAA7G,EAAwI,CAAC,SAAD,EAAYA,MAAZ,CAAxI,EAA6J,CAAC,cAAD,EAAiBqoB,KAAjB,CAA7J,EAAsL,CAAC,gBAAD,EAAmBA,KAAnB,CAAtL,EAAiN,CAAC,UAAD,EAAaA,KAAb,CAAjN,EAAsO,CAAC,YAAD,EAAeA,KAAf,CAAtO,EAA6P,CAAC,eAAD,EAAkBG,MAAlB,CAA7P;EA5DU,CAAf;;EAgEA,IAAIO,GAAG,GAAG,WAAV;EACA,IAAIC,GAAG,GAAG,YAAV;EACA,IAAIC,IAAI,GAAG,cAAX;EACA,IAAIC,IAAI,GAAG,UAAX;EACA,IAAIC,IAAI,GAAG,WAAX;EACA,IAAIC,GAAG,GAAG,QAAV;EACA,IAAIC,IAAI,GAAG,QAAX;EACA,IAAItiC,KAAK,GAAG,OAAZ;EACA,IAAIuiC,EAAE,GAAG,MAAT;EACA,IAAItsB,IAAI,GAAG,MAAX;EACA,IAAIusB,IAAI,GAAG,UAAX;EACA,IAAI5qB,KAAK,GAAG,OAAZ;EACA,IAAIlB,KAAK,GAAG,OAAZ;;EAEA,IAAI+rB,SAAS,GAAG,CAAC,IAAD;EAChB,IADgB;EAEhB;EACE;EACAC,EAAAA,EAAE,EAAEP,IAFN;EAGEQ,EAAAA,EAAE,EAAE1sB,IAHN;EAIE2sB,EAAAA,EAAE,EAAEZ,GAJN;EAKEa,EAAAA,EAAE,EAAER,GALN;EAME,QAAME,EANR;EAOE,QAAMA;EAPR,CAFgB,EAUb;EACD;EACAO,EAAAA,GAAG,EAAEV,IAFJ;EAGDW,EAAAA,GAAG,EAAEX,IAHJ;EAIDY,EAAAA,GAAG,EAAEZ,IAJJ;EAKD,SAAOC,GALN;EAMD,SAAOzqB,KANN;EAOD,SAAO,QAPN;EAQDqrB,EAAAA,GAAG,EAAEjB,GARJ;EASDkB,EAAAA,GAAG,EAAEjtB,IATJ;EAUDrY,EAAAA,GAAG,EAAE2kC,EAVJ;EAWDY,EAAAA,GAAG,EAAEf,IAXJ;EAYDgB,EAAAA,GAAG,EAAEpB,GAZJ;EAaDqB,EAAAA,GAAG,EAAEpB,GAbJ;EAcDqB,EAAAA,GAAG,EAAE,QAdJ;EAeD;EACAC,EAAAA,GAAG,EAAEtB,GAhBJ;EAiBDuB,EAAAA,GAAG,EAAExB,GAjBJ;EAkBDyB,EAAAA,GAAG,EAAEzB,GAlBJ;EAmBD0B,EAAAA,GAAG,EAAExB,IAnBJ;EAoBDyB,EAAAA,GAAG,EAAE3B,GApBJ;EAqBD4B,EAAAA,GAAG,EAAE5B,GArBJ;EAsBD6B,EAAAA,GAAG,EAAE7B,GAtBJ;EAuBD8B,EAAAA,GAAG,EAAE9B,GAvBJ;EAwBD+B,EAAAA,GAAG,EAAE5B,IAxBJ;EAyBD6B,EAAAA,GAAG,EAAE7B,IAzBJ;EA0BD8B,EAAAA,GAAG,EAAE/B;EA1BJ,CAVa,EAqCb;EACD;EACAgC,EAAAA,IAAI,EAAE9B,IAFL;EAGD+B,EAAAA,IAAI,EAAE/B,IAHL;EAIDgC,EAAAA,IAAI,EAAEhC,IAJL;EAKDiC,EAAAA,IAAI,EAAEjC,IALL;EAMDkC,EAAAA,IAAI,EAAElC,IANL;EAODmC,EAAAA,IAAI,EAAEnC,IAPL;EAQDoC,EAAAA,IAAI,EAAEpC,IARL;EASDqC,EAAAA,IAAI,EAAEjC,IATL;EAUD;EACAkC,EAAAA,IAAI,EAAEzC,GAXL;EAYD0C,EAAAA,IAAI,EAAEnC,IAZL;EAaD;EACAoC,EAAAA,IAAI,EAAEpC,IAdL;EAeD;EACAqC,EAAAA,IAAI,EAAE3C,IAhBL;EAiBD4C,EAAAA,IAAI,EAAEvC,EAjBL;EAkBDwC,EAAAA,IAAI,EAAEvC,IAlBL;EAmBD;EACAwC,EAAAA,IAAI,EAAE7C,IApBL;EAqBD8C,EAAAA,IAAI,EAAE/C,IArBL;EAsBDgD,EAAAA,IAAI,EAAE7C,GAtBL;EAuBD8C,EAAAA,IAAI,EAAElD,GAvBL;EAwBDmD,EAAAA,IAAI,EAAEpD,GAxBL;EAyBDqD,EAAAA,IAAI,EAAE/C,IAzBL;EA0BDgD,EAAAA,IAAI,EAAEhD,IA1BL;EA2BDiD,EAAAA,IAAI,EAAEjD,IA3BL;EA4BDkD,EAAAA,IAAI,EAAElD,IA5BL;EA6BDmD,EAAAA,IAAI,EAAEpD,GA7BL;EA8BDqD,EAAAA,IAAI,EAAE1D,GA9BL;EA+BD2D,EAAAA,IAAI,EAAE3D,GA/BL;EAgCD4D,EAAAA,IAAI,EAAEpD,IAhCL;EAiCD;EACAqD,EAAAA,IAAI,EAAE3D,IAlCL;EAmCD4D,EAAAA,IAAI,EAAEluB,KAnCL;EAoCDlZ,EAAAA,IAAI,EAAEsjC,GApCL;EAqCD+D,EAAAA,IAAI,EAAEvD,IArCL;EAsCD;EACAwD,EAAAA,IAAI,EAAE/D,GAvCL;EAwCDgE,EAAAA,IAAI,EAAE,OAxCL;EAyCDC,EAAAA,IAAI,EAAE/D,IAzCL;EA0CDgE,EAAAA,IAAI,EAAEnE,GA1CL;EA2CDoE,EAAAA,IAAI,EAAEnwB,IA3CL;EA4CDowB,EAAAA,IAAI,EAAElE;EA5CL,CArCa,EAkFb;EACD;EACAmE,EAAAA,KAAK,EAAElE,IAFN;EAGDmE,EAAAA,KAAK,EAAEnE,IAHN;EAIDoE,EAAAA,KAAK,EAAEpE,IAJN;EAKDqE,EAAAA,KAAK,EAAEnE,IALN;EAMDoE,EAAAA,KAAK,EAAE1E,GANN;EAOD2E,EAAAA,KAAK,EAAErE,IAPN;EAQDsE,EAAAA,KAAK,EAAEvE,GARN;EASDwE,EAAAA,KAAK,EAAE3E,IATN;EAUD4E,EAAAA,KAAK,EAAExE,IAVN;EAWDyE,EAAAA,KAAK,EAAEvE,IAXN;EAYD;EACAwE,EAAAA,KAAK,EAAExE,IAbN;EAcD;EACAyE,EAAAA,KAAK,EAAEhxB,IAfN;EAgBDixB,EAAAA,KAAK,EAAE5E,IAhBN;EAiBD6E,EAAAA,KAAK,EAAEnF,GAjBN;EAkBDoF,EAAAA,KAAK,EAAElF,IAlBN;EAmBDmF,EAAAA,KAAK,EAAE,SAnBN;EAoBDC,EAAAA,KAAK,EAAEhF,IApBN;EAqBDiF,EAAAA,KAAK,EAAElF,GArBN;EAsBDmF,EAAAA,KAAK,EAAEnF;EAtBN,CAlFa,EAyGb;EACD;EACAoF,EAAAA,MAAM,EAAEjF,IAFP;EAGD;EACAkF,EAAAA,MAAM,EAAE1nC,KAJP;EAKD2nC,EAAAA,MAAM,EAAE3nC,KALP;EAMD4nC,EAAAA,MAAM,EAAE;EANP,CAzGa,EAgHb;EACD;EACAC,EAAAA,OAAO,EAAErF,IAFR;EAGD;EACAsF,EAAAA,OAAO,EAAEpxB,KAJR;EAKD;EACAqxB,EAAAA,OAAO,EAAEvF,IANR;;EAAA,CAhHa,CAAhB;;EA0HA,IAAIwF,SAAS,GAAG,SAASA,SAAT,CAAmBvmC,IAAnB,EAAyBtC,KAAzB,EAAgC;EAC9C,MAAI1J,GAAG,GAAGgM,IAAI,CAACnJ,KAAf;EACA,MAAI2vC,KAAK,GAAGxyC,GAAG,CAACA,GAAG,CAAChD,MAAJ,GAAa,CAAd,CAAf;;EAEA,MAAIsvC,QAAQ,CAAClkC,cAAT,CAAwBoqC,KAAxB,MAAmC,IAAvC,EAA6C;EAC3C,QAAIx9B,IAAI,GAAGs3B,QAAQ,CAACkG,KAAD,CAAnB;;EAEA,SAAK,IAAInxC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2T,IAAI,CAAChY,MAAzB,EAAiCqE,CAAC,IAAI,CAAtC,EAAyC;EACvC,UAAI2T,IAAI,CAAC3T,CAAD,CAAJ,CAAQ,CAAR,EAAWqB,IAAX,CAAgB1C,GAAhB,MAAyB,IAA7B,EAAmC;EACjCgM,QAAAA,IAAI,CAACmD,OAAL,CAAa6F,IAAI,CAAC3T,CAAD,CAAJ,CAAQ,CAAR,CAAb,EAAyB,UAAU0P,MAAV,CAAiByhC,KAAjB,EAAwB,IAAxB,EAA8BzhC,MAA9B,CAAqC1P,CAArC,CAAzB,EAAkEqI,KAAlE;EACA;EACD;EACF;EACF;EACF,CAdD;;;EAiBA,IAAI+oC,aAAa,GAAG,SAASA,aAAT,CAAuBzmC,IAAvB,EAA6BtC,KAA7B,EAAoC;EACtD,MAAIyH,GAAG,GAAGnF,IAAI,CAACnJ,KAAL,CAAW7F,MAArB;EACA,MAAIwK,GAAG,GAAG,CAAV;;EAEA,MAAI2J,GAAG,IAAI3J,GAAX,EAAgB;EACdA,IAAAA,GAAG,GAAG2J,GAAG,GAAG,CAAZ;EACD;;EAED,OAAK,IAAIpU,CAAC,GAAGyK,GAAb,EAAkBzK,CAAC,GAAG,CAAtB,EAAyBA,CAAC,IAAI,CAA9B,EAAiC;EAC/B,QAAIiD,GAAG,GAAGgM,IAAI,CAACnJ,KAAL,CAAWiL,MAAX,CAAkBqD,GAAG,GAAGpU,CAAxB,EAA2BoU,GAA3B,CAAV;;EAEA,QAAI67B,SAAS,CAAChtC,GAAG,CAAChD,MAAL,CAAT,CAAsBoL,cAAtB,CAAqCpI,GAArC,MAA8C,IAAlD,EAAwD;EACtD,UAAIyI,GAAG,GAAGukC,SAAS,CAAChtC,GAAG,CAAChD,MAAL,CAAT,CAAsBgD,GAAtB,CAAV;EACAgM,MAAAA,IAAI,CAACmD,OAAL,CAAa1G,GAAb,EAAkB,aAAazI,GAA/B,EAAoC0J,KAApC;EACA;EACD;EACF;EACF,CAjBD;;;EAoBA,IAAIiiC,UAAU,GAAG,SAASA,UAAT,CAAoB3/B,IAApB,EAA0BtC,KAA1B,EAAiC;EAChD+oC,EAAAA,aAAa,CAACzmC,IAAD,EAAOtC,KAAP,CAAb;EACA6oC,EAAAA,SAAS,CAACvmC,IAAD,EAAOtC,KAAP,CAAT;EACD,CAHD;;EAKA,IAAIgpC,WAAW,GAAG/G,UAAlB;EAGA;EACA;;EACA,IAAIgH,SAAS,GAAG;EACd,QAAM,IADQ;EAEd,QAAM,IAFQ;EAGd,QAAM,IAHQ;EAId,QAAM,IAJQ;EAKd,QAAM,IALQ;EAMd,QAAM,IANQ;EAOd,QAAM,IAPQ;EAQd,QAAM,IARQ;EASd,SAAO,IATO;EAUd,QAAM,IAVQ;EAWd,QAAM,IAXQ;EAYd,QAAM,IAZQ;EAad,SAAO,IAbO;EAcd,SAAO,IAdO;EAed,SAAO,IAfO;EAgBd,SAAO,IAhBO;EAiBd,SAAO,IAjBO;EAkBd,SAAO,IAlBO;EAmBd,SAAO,IAnBO;EAoBd,SAAO,IApBO;EAqBd,UAAQ,IArBM;EAsBd,SAAO,IAtBO;EAuBd,SAAO,IAvBO;EAwBd,SAAO,IAxBO;EAyBd,SAAO,IAzBO;EA0Bd,SAAO,IA1BO;EA2Bd,SAAO,IA3BO;EA4Bd,SAAO,IA5BO;EA6Bd,SAAO,IA7BO;EA8Bd,SAAO,IA9BO;EA+Bd,SAAO,IA/BO;EAgCd,SAAO,IAhCO;EAiCd,UAAQ,IAjCM;EAkCd,SAAO,IAlCO;EAmCd,SAAO,IAnCO;EAoCd,SAAO,IApCO;EAqCd,QAAM,IArCQ;EAsCd,QAAM,IAtCQ;EAuCd,QAAM,IAvCQ;EAwCd,QAAM,IAxCQ;EAyCd,SAAO,IAzCO;EA0Cd,SAAO,IA1CO;EA2Cd,SAAO,IA3CO;EA4Cd,SAAO,IA5CO;EA6Cd,SAAO,IA7CO;EA8Cd,SAAO,IA9CO;EA+Cd,SAAO,IA/CO;EAgDd,SAAO,IAhDO;EAiDd,QAAM,IAjDQ;EAkDd,SAAO,IAlDO;EAmDd,UAAQ;EAnDM,CAAhB;EAsDA,IAAIC,QAAQ,GAAG,oGAAf;EACA;EACA;EACA;EACA;EACA;;EAEA,IAAIC,YAAY,GAAG,SAASA,YAAT,CAAsBC,GAAtB,EAA2B;EAC5C,MAAIA,GAAG,CAACjlC,MAAJ,CAAW,CAAX,MAAkB,GAAtB,EAA2B;EACzB;EACA,QAAIilC,GAAG,CAAC/gC,KAAJ,CAAU,MAAV,MAAsB,IAA1B,EAAgC;EAC9B,aAAO,KAAP;EACD,KAJwB;;;EAOzB,QAAI+gC,GAAG,CAAC/gC,KAAJ,CAAU,GAAV,CAAJ,EAAoB;EAClB,aAAO,KAAP;EACD,KATwB;;;EAYzB,QAAI+gC,GAAG,CAAC91C,MAAJ,GAAa,EAAjB,EAAqB;EACnB,aAAO,KAAP;EACD;;EAED,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CArBD;;;EAwBA,IAAI+1C,UAAU,GAAG,SAASA,UAAT,CAAoB/yC,GAApB,EAAyB;EACxCA,EAAAA,GAAG,GAAGA,GAAG,CAACiD,OAAJ,CAAY,OAAZ,EAAqB,GAArB,CAAN,CADwC;;EAGxC,SAAO0vC,SAAS,CAACvqC,cAAV,CAAyBpI,GAAzB,CAAP;EACD,CAJD;;EAMA,IAAIgzC,QAAQ,GAAG,SAASA,QAAT,CAAkBhnC,IAAlB,EAAwBtC,KAAxB,EAA+B;EAC5C,MAAIopC,GAAG,GAAG9mC,IAAI,CAACnI,GAAL,GAAWmI,IAAI,CAAC/L,IAAhB,GAAuB+L,IAAI,CAAClI,IAAtC;EACAgvC,EAAAA,GAAG,GAAGA,GAAG,CAAC/vC,IAAJ,EAAN,CAF4C;;EAI5C+vC,EAAAA,GAAG,GAAGA,GAAG,CAAC7vC,OAAJ,CAAY,SAAZ,EAAuB,EAAvB,CAAN,CAJ4C;;EAM5C,MAAI4vC,YAAY,CAACC,GAAD,CAAZ,KAAsB,IAA1B,EAAgC;EAC9B9mC,IAAAA,IAAI,CAACvD,GAAL,CAAS,OAAT,EAAkB,aAAlB,EAAiCiB,KAAjC;EACAsC,IAAAA,IAAI,CAAC/L,IAAL,GAAY6yC,GAAZ;EACA9mC,IAAAA,IAAI,CAACnI,GAAL,GAAWmI,IAAI,CAACnI,GAAL,CAASZ,OAAT,CAAiB,GAAjB,EAAsB,EAAtB,CAAX;EACA+I,IAAAA,IAAI,CAAClI,IAAL,GAAYkI,IAAI,CAAClI,IAAL,CAAUb,OAAV,CAAkB,GAAlB,EAAuB,EAAvB,CAAZ;EACD,GAX2C;;;EAc5C,MAAI+I,IAAI,CAAC/L,IAAL,CAAU8R,KAAV,CAAgB6gC,QAAhB,CAAJ,EAA+B;EAC7B5mC,IAAAA,IAAI,CAACvD,GAAL,CAAS,OAAT,EAAkB,eAAlB,EAAmCiB,KAAnC;EACAsC,IAAAA,IAAI,CAAC/L,IAAL,GAAY6yC,GAAZ;EACD,GAjB2C;;;EAoB5C,MAAIC,UAAU,CAACD,GAAD,CAAV,KAAoB,IAAxB,EAA8B;EAC5B9mC,IAAAA,IAAI,CAACvD,GAAL,CAAS,UAAT,EAAqB,gBAArB,EAAuCiB,KAAvC;EACAsC,IAAAA,IAAI,CAAC/L,IAAL,GAAY6yC,GAAZ;EACD;EACF,CAxBD;;EA0BA,IAAIG,QAAQ,GAAGD,QAAf;EAEA,IAAIzrC,KAAK,GAAG;EACVyhB,EAAAA,OAAO,EAAEiiB,UADC;EAEVz/B,EAAAA,WAAW,EAAE8/B,cAFH;EAGV1iC,EAAAA,KAAK,EAAEgjC,WAHG;EAIVpC,EAAAA,MAAM,EAAEkJ,WAJE;EAKVtL,EAAAA,KAAK,EAAE6L;EALG,CAAZ;;EAQA,IAAIC,OAAO,GAAG,SAASA,OAAT,CAAiBlgC,GAAjB,EAAsBlD,KAAtB,EAA6B;EACzC,MAAIpG,KAAK,GAAGsJ,GAAG,CAACtJ,KAAhB,CADyC;;EAGzCnC,EAAAA,KAAK,CAACyhB,OAAN,CAAclZ,KAAd,EAAqBpG,KAArB,EAHyC;;EAKzC,OAAK,IAAI3M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAIiP,IAAI,GAAG8D,KAAK,CAAC/S,CAAD,CAAhB,CADwC;;EAGxCwK,IAAAA,KAAK,CAACiE,WAAN,CAAkBsE,KAAlB,EAAyB/S,CAAzB,EAA4B2M,KAA5B,EAHwC;;EAKxCnC,IAAAA,KAAK,CAACqB,KAAN,CAAYoD,IAAZ,EAAkBtC,KAAlB,EALwC;;EAOxCnC,IAAAA,KAAK,CAACiiC,MAAN,CAAax9B,IAAb,EAAmBtC,KAAnB,EAPwC;;EASxCnC,IAAAA,KAAK,CAAC6/B,KAAN,CAAYp7B,IAAZ,EAAkBtC,KAAlB;EACD;;EAED,SAAOsJ,GAAP;EACD,CAlBD;;EAoBA,IAAImgC,OAAO,GAAGD,OAAd;EAGA;EACA;EACA;;EACA,IAAIE,aAAa,GAAG;EAClBr2C,EAAAA,CAAC,EAAE,MADe;EAElB;EACAqiC,EAAAA,KAAK,EAAE,MAHW;EAIlB;EACAiU,EAAAA,EAAE,EAAE,MALc;EAMlB;EACAC,EAAAA,KAAK,EAAE,MAPW;EAQlB;EACAx2B,EAAAA,GAAG,EAAE,MATa;EAUlB;EACAy2B,EAAAA,OAAO,EAAE,MAXS;EAYlB;EACA,QAAM,MAbY;EAclB;EACAC,EAAAA,GAAG,EAAE,MAfa;EAgBlB;EACAC,EAAAA,GAAG,EAAE,MAjBa;EAkBlB;EACA,UAAQ,MAnBU;EAoBlB;EACA7rB,EAAAA,GAAG,EAAE,MArBa;EAsBlB;EACA8rB,EAAAA,IAAI,EAAE,MAvBY;EAwBlB;EACAC,EAAAA,GAAG,EAAE,MAzBa;EA0BlB;EACAC,EAAAA,IAAI,EAAE,WA3BY;EA4BlB;EACAC,EAAAA,GAAG,EAAE,MA7Ba;EA8BlB;EACAC,EAAAA,KAAK,EAAE,MA/BW;EAgClB;EACA/oC,EAAAA,MAAM,EAAE,MAjCU;;EAAA,CAApB;;EAqCA,IAAIgpC,cAAc,GAAG;EACnBT,EAAAA,KAAK,EAAE,MADY;EAEnB;EACAU,EAAAA,EAAE,EAAE,MAHe;EAInB;EACAhoB,EAAAA,GAAG,EAAE,WALc;EAMnB;EACAioB,EAAAA,IAAI,EAAE,MAPa;EAQnB;EACAC,EAAAA,GAAG,EAAE,MATc;EAUnB;EACAC,EAAAA,IAAI,EAAE,MAXa;EAYnB;EACAC,EAAAA,IAAI,EAAE,MAba;EAcnB;EACAC,EAAAA,OAAO,EAAE,MAfU;EAgBnB;EACAC,EAAAA,IAAI,EAAE,MAjBa;EAkBnB;EACAb,EAAAA,GAAG,EAAE,MAnBc;EAoBnB;EACAc,EAAAA,EAAE,EAAE;EArBe,CAArB;;EAwBA,IAAIC,YAAY,GAAG;EACjBrxB,EAAAA,SAAS,EAAE,MADM;EAEjB;EACArX,EAAAA,UAAU,EAAE,MAHK;EAIjB;EACAgY,EAAAA,UAAU,EAAE,MALK;EAMjB;EACAN,EAAAA,MAAM,EAAE,MAPS;EAQjB;EACA7B,EAAAA,OAAO,EAAE,MATQ;EAUjB;EACAc,EAAAA,KAAK,EAAE,MAXU;EAYjB;EACAC,EAAAA,OAAO,EAAE,MAbQ;EAcjB;EACAP,EAAAA,KAAK,EAAE,MAfU;EAgBjB;EACAmB,EAAAA,WAAW,EAAE,MAjBI;EAkBjB;EACAxB,EAAAA,OAAO,EAAE,MAnBQ;EAoBjB;EACAd,EAAAA,SAAS,EAAE,QArBM;;EAAA,CAAnB;;EAyBA,IAAIyzB,aAAa,GAAG;EAClBvyB,EAAAA,MAAM,EAAE,MADU;EAElB;EACA/X,EAAAA,SAAS,EAAE,MAHO;EAIlB;EACA4Z,EAAAA,WAAW,EAAE,MALK;EAMlB;EACA5B,EAAAA,KAAK,EAAE,MAPW;EAQlB;EACAE,EAAAA,UAAU,EAAE,MATM;EAUlB;EACAD,EAAAA,YAAY,EAAE,MAXI;;EAAA,CAApB;EAcA,IAAIsyB,MAAM,GAAG;EACXX,EAAAA,cAAc,EAAEA,cADL;EAEXX,EAAAA,aAAa,EAAEA,aAFJ;EAGXuB,EAAAA,aAAa,EAAEF,aAHJ;EAIXG,EAAAA,YAAY,EAAEJ;EAJH,CAAb;EAOA,IAAIK,SAAS,GAAGx3C,MAAM,CAAC0E,IAAP,CAAY2yC,MAAM,CAACE,YAAnB,CAAhB;EACA,IAAIE,UAAU,GAAGz3C,MAAM,CAAC0E,IAAP,CAAY2yC,MAAM,CAACC,aAAnB,CAAjB;;EAEA,IAAII,eAAe,GAAG,SAASA,eAAT,CAAyBjlC,KAAzB,EAAgCpG,KAAhC,EAAuC;EAC3D,MAAIqS,KAAK,GAAG,SAASA,KAAT,CAAehf,CAAf,EAAkB;EAC5B,QAAIiP,IAAI,GAAG8D,KAAK,CAAC/S,CAAD,CAAhB,CAD4B;;EAG5B,QAAIiP,IAAI,CAACxC,OAAL,OAAmB,IAAvB,EAA6B;EAC3B,aAAO,UAAP;EACD,KAL2B;EAM5B;;;EAGA,QAAIkH,QAAQ,GAAGZ,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAApB;;EAEA,QAAI2T,QAAJ,EAAc;EACZ;EACA,UAAIgkC,MAAM,CAACtB,aAAP,CAAqBhrC,cAArB,CAAoCsI,QAAQ,CAAC7N,KAA7C,MAAwD,IAA5D,EAAkE;EAChE,YAAI4F,GAAG,GAAGisC,MAAM,CAACtB,aAAP,CAAqB1iC,QAAQ,CAAC7N,KAA9B,CAAV;EACAmJ,QAAAA,IAAI,CAACvD,GAAL,CAASA,GAAT,EAAc,WAAWiI,QAAQ,CAAC7N,KAAlC,EAAyC6G,KAAzC;EACA,eAAO,UAAP;EACD,OANW;EAOZ;;;EAGA,UAAIsrC,QAAQ,GAAGH,SAAS,CAAC7gC,IAAV,CAAe,UAAUvL,GAAV,EAAe;EAC3C,eAAOiI,QAAQ,CAAChI,IAAT,CAAcD,GAAd,CAAP;EACD,OAFc,CAAf;;EAIA,UAAIusC,QAAQ,KAAK1tC,SAAjB,EAA4B;EAC1B,YAAI2tC,IAAI,GAAGP,MAAM,CAACE,YAAP,CAAoBI,QAApB,CAAX;EACAhpC,QAAAA,IAAI,CAACvD,GAAL,CAASwsC,IAAT,EAAe,WAAWD,QAA1B,EAAoCtrC,KAApC;EACA,eAAO,UAAP;EACD;EACF,KA9B2B;;;EAiC5B,QAAI+O,QAAQ,GAAG3I,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAApB;;EAEA,QAAI0b,QAAJ,EAAc;EACZ;EACA,UAAIi8B,MAAM,CAACX,cAAP,CAAsB3rC,cAAtB,CAAqCqQ,QAAQ,CAAC5V,KAA9C,MAAyD,IAA7D,EAAmE;EACjE,YAAIqyC,KAAK,GAAGR,MAAM,CAACX,cAAP,CAAsBt7B,QAAQ,CAAC5V,KAA/B,CAAZ;EACAmJ,QAAAA,IAAI,CAACvD,GAAL,CAASysC,KAAT,EAAgB,YAAYz8B,QAAQ,CAAC5V,KAArC,EAA4C6G,KAA5C;EACA,eAAO,UAAP;EACD,OANW;EAOZ;;;EAGA,UAAIyrC,SAAS,GAAGL,UAAU,CAAC9gC,IAAX,CAAgB,UAAUvL,GAAV,EAAe;EAC7C,eAAOgQ,QAAQ,CAAC/P,IAAT,CAAcD,GAAd,CAAP;EACD,OAFe,CAAhB;;EAIA,UAAI0sC,SAAS,KAAK7tC,SAAlB,EAA6B;EAC3B,YAAI8tC,KAAK,GAAGV,MAAM,CAACC,aAAP,CAAqBQ,SAArB,CAAZ;EACAnpC,QAAAA,IAAI,CAACvD,GAAL,CAAS2sC,KAAT,EAAgB,YAAYD,SAA5B,EAAuCzrC,KAAvC;EACA,eAAO,UAAP;EACD;EACF;EACF,GAvDD;;EAyDA,OAAK,IAAI3M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAIs4C,IAAI,GAAGt5B,KAAK,CAAChf,CAAD,CAAhB;;EAEA,QAAIs4C,IAAI,KAAK,UAAb,EAAyB;EAC1B;EACF,CA/DD;;EAiEA,IAAIC,aAAa,GAAGP,eAApB;EAEA,IAAIrwC,SAAS,GAAG,2BAAhB;EACA,IAAI6wC,SAAS,GAAG,OAAhB;EACA;;EAEA,IAAIC,SAAS,GAAG,SAASA,SAAT,CAAmBxiC,GAAnB,EAAwB;EACtC,MAAItJ,KAAK,GAAGsJ,GAAG,CAACtJ,KAAhB;EACAsJ,EAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5B,QAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;;EAEA,SAAK,IAAI/S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;EACrC,UAAIiP,IAAI,GAAG8D,KAAK,CAAC/S,CAAD,CAAhB;;EAEA,UAAI2H,SAAS,CAAChC,IAAV,CAAesJ,IAAI,CAAC/L,IAApB,MAA8B,IAA9B,IAAsCs1C,SAAS,CAAC7yC,IAAV,CAAesJ,IAAI,CAAC/L,IAApB,MAA8B,KAApE,IAA6E+L,IAAI,CAACtD,IAAL,CAAU+a,IAAV,KAAmBnc,SAApG,EAA+G;EAC7G0E,QAAAA,IAAI,CAACvD,GAAL,CAAS,YAAT,EAAuB,gBAAvB,EAAyCiB,KAAzC;EACD;EACF;EACF,GAVD;EAWD,CAbD;;EAeA,IAAI+rC,OAAO,GAAGD,SAAd;EAEA,IAAIE,SAAS,GAAG,8BAAhB;EACA,IAAIC,MAAM,GAAG,YAAb;EACA;;EAEA,IAAIC,WAAW,GAAG,SAASA,WAAT,CAAqB9lC,KAArB,EAA4BpG,KAA5B,EAAmC;EACnD,MAAI0e,GAAG,GAAG1e,KAAK,CAAC+T,KAAhB;EACA3N,EAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUgK,IAAV,EAAgB;EAC5B;EACA,QAAIA,IAAI,CAACxC,OAAL,OAAmB,IAAvB,EAA6B;EAC3B;EACD,KAJ2B;;;EAO5B,QAAIksC,SAAS,CAAChzC,IAAV,CAAesJ,IAAI,CAACnJ,KAApB,MAA+B,IAAnC,EAAyC;EACvC;EACA,UAAIgzC,IAAI,GAAG7pC,IAAI,CAACnJ,KAAL,CAAWI,OAAX,CAAmB0yC,MAAnB,EAA2B,EAA3B,CAAX;;EAEA,UAAIE,IAAI,IAAIA,IAAI,CAAC74C,MAAL,GAAc,CAAtB,IAA2BorB,GAAG,CAACytB,IAAD,CAAH,KAAcvuC,SAAzC,IAAsD8gB,GAAG,CAAChgB,cAAJ,CAAmBytC,IAAnB,MAA6B,IAAvF,EAA6F;EAC3F7pC,QAAAA,IAAI,CAACvD,GAAL,CAAS2f,GAAG,CAACytB,IAAD,CAAZ,EAAoB,UAAUA,IAA9B,EAAoCnsC,KAApC;EACD;EACF;EACF,GAfD;EAgBD,CAlBD;;EAoBA,IAAIosC,OAAO,GAAGF,WAAd;;EAGA,IAAIG,UAAU,GAAG,CAAC,WAAD,EAAc,QAAd,EAAwB,QAAxB,EAAkC,uCAAlC,EAA2E,4CAA3E,EAAyH,4BAAzH,EAAuJ,kDAAvJ,EAA2M,uBAA3M,EAAoO,qBAApO,EAA2P,wBAA3P,EAAqR,MAArR,EAA6R,OAA7R,EAAsS,QAAtS,EAAgT,QAAhT,EAA0T,WAA1T,EAAuU,WAAvU,EAAoV,mBAApV,EAAyW,YAAzW,EAAuX,oBAAvX,EAA6Y,oBAA7Y,EAAma,OAAna,CAAjB;;EAEA,IAAIC,YAAY,GAAG,CAAC,eAAD,EAAkB,6CAAlB,EAAiE,gBAAjE,EAAmF,SAAnF,EAA8F,kBAA9F,EAAkH,SAAlH,EAA6H,2BAA7H,EAA0J,UAA1J,EAAsK,SAAtK,EAAiL,OAAjL,EAA0L,oBAA1L,EAAgN,QAAhN,EAA0N,eAA1N;EACnB,iBADmB,EACA,kBADA,EACoB,+BADpB,EACqD,aADrD,EACoE,YADpE,EACkF,sCADlF,EAC0H,QAD1H,EACoI,0BADpI,CAAnB;EAEA,IAAIC,YAAY,GAAG;EACjBC,EAAAA,UAAU,EAAEF,YADK;EAEjBG,EAAAA,QAAQ,EAAEJ;EAFO,CAAnB;EAKA,IAAIK,SAAS,GAAG,CAAC,aAAD,EAAgB,SAAhB,EAA2B,OAA3B,EAAoC,OAApC,EAA6C,QAA7C,EAAuD,OAAvD,EAAgE,SAAhE,EAA2E,SAA3E,CAAhB;EACA,IAAIC,SAAS,GAAG,CAAC,KAAD,EAAQ,MAAR,EAAgB,gBAAhB,EAAkC,KAAlC,CAAhB;EACA,IAAIC,WAAW,GAAG,CAAC,IAAD,EAAO,KAAP,CAAlB;EACA;;EAEA,IAAIC,WAAW,GAAG,SAASA,WAAT,CAAqBh1C,CAArB,EAAwBmI,KAAxB,EAA+B;EAC/C,MAAInI,CAAC,CAACmH,IAAF,CAAO8X,IAAP,IAAe,CAACjf,CAAC,CAACmH,IAAF,CAAOyC,OAA3B,EAAoC;EAClC,QAAInL,GAAG,GAAGuB,CAAC,CAACsB,KAAZ,CADkC;;EAGlC,QAAItB,CAAC,CAACmH,IAAF,CAAO+X,QAAP,IAAmBlf,CAAC,CAACmH,IAAF,CAAOmB,MAA9B,EAAsC;EACpC;EACD,KALiC;;;EAQlC,QAAI7J,GAAG,CAAChD,MAAJ,IAAc,CAAlB,EAAqB;EACnBuE,MAAAA,CAAC,CAACkH,GAAF,CAAM,UAAN,EAAkB,gBAAlB,EAAoCiB,KAApC;EACA;EACD,KAXiC;;;EAclC,QAAI0sC,SAAS,CAACpiC,IAAV,CAAe,UAAUvL,GAAV,EAAe;EAChC,aAAOlH,CAAC,CAACmH,IAAF,CAAOD,GAAP,CAAP;EACD,KAFG,CAAJ,EAEI;EACF;EACD,KAlBiC;;;EAqBlC,QAAIwtC,YAAY,CAACE,QAAb,CAAsBniC,IAAtB,CAA2B,UAAUlM,GAAV,EAAe;EAC5C,aAAOA,GAAG,CAACpF,IAAJ,CAAS1C,GAAT,CAAP;EACD,KAFG,CAAJ,EAEI;EACFuB,MAAAA,CAAC,CAACkH,GAAF,CAAM,QAAN,EAAgB,cAAhB,EAAgCiB,KAAhC;EACA;EACD,KA1BiC;;;EA6BlC,QAAIusC,YAAY,CAACC,UAAb,CAAwBliC,IAAxB,CAA6B,UAAUlM,GAAV,EAAe;EAC9C,aAAOA,GAAG,CAACpF,IAAJ,CAAS1C,GAAT,CAAP;EACD,KAFG,CAAJ,EAEI;EACFuB,MAAAA,CAAC,CAACkH,GAAF,CAAM,UAAN,EAAkB,gBAAlB,EAAoCiB,KAApC;EACA;EACD,KAlCiC;;;EAqClC,QAAI,KAAKhH,IAAL,CAAU1C,GAAV,MAAmB,IAAvB,EAA6B;EAC3B;EACA,UAAIq2C,SAAS,CAACriC,IAAV,CAAe,UAAUlM,GAAV,EAAe;EAChC,eAAOA,GAAG,CAACpF,IAAJ,CAAS1C,GAAT,CAAP;EACD,OAFG,CAAJ,EAEI;EACF;EACD;;EAEDuB,MAAAA,CAAC,CAACkH,GAAF,CAAM,QAAN,EAAgB,iBAAhB,EAAmCiB,KAAnC;EACA;EACD,KA/CiC;;;EAkDlC,QAAI4sC,WAAW,CAACtiC,IAAZ,CAAiB,UAAUlM,GAAV,EAAe;EAClC,aAAOA,GAAG,CAACpF,IAAJ,CAAS1C,GAAT,CAAP;EACD,KAFG,CAAJ,EAEI;EACF;EACD;;EAEDuB,IAAAA,CAAC,CAACkH,GAAF,CAAM,UAAN,EAAkB,mBAAlB,EAAuCiB,KAAvC;EACD;EACF,CA3DD;;EA6DA,IAAI8sC,UAAU,GAAGD,WAAjB;EAGA;;EACA,IAAIE,QAAQ,GAAG,CAAC,SAAD,EAAY,gBAAZ,EAA8B,QAA9B,EAAwC,SAAxC,EAAmD,UAAnD,EAA+D,QAA/D,EAAyE,UAAzE,EAAqF,SAArF,EAAgG,MAAhG,EAAwG,OAAxG,EAAiH,YAAjH,EAA+H,aAA/H,EAA8I,WAA9I,EAA2J,WAA3J,EAAwK,UAAxK,EAAoL,UAApL,EAAgM,MAAhM,EAAwM,QAAxM,EAAkN,OAAlN,EAA2N,MAA3N,EAAmO,QAAnO,EAA6O,SAA7O,EAAwP,aAAxP,EAAuQ,UAAvQ,EAAmR,kBAAnR,EAAuS,QAAvS,EAAiT,MAAjT,EAAyT,QAAzT,EAAmU,SAAnU,EAA8U,MAA9U,EAAsV,WAAtV,EAAmW,QAAnW,EAA6W,cAA7W,EAA6X,QAA7X,EAAuY,WAAvY,EAAoZ,OAApZ,EAA6Z,WAA7Z,EAA0a,QAA1a,EAAob,QAApb,EAA8b,QAA9b,EAAwc,UAAxc,EAAod,MAApd,EAA4d,IAA5d,EAAke,WAAle,EAA+e,QAA/e,EAAyf,YAAzf,EAAugB,SAAvgB,EAAkhB,YAAlhB,EAAgiB,WAAhiB,EAA6iB,gBAA7iB,EAA+jB,WAA/jB,EAA4kB,SAA5kB,EAAulB,eAAvlB,EAAwmB,WAAxmB,EAAqnB,eAArnB,EAAsoB,YAAtoB,EAAopB,SAAppB,EAA+pB,YAA/pB,EAA6qB,YAA7qB,EAA2rB,aAA3rB,EAA0sB,OAA1sB,EAAmtB,MAAntB,EAA2tB,SAA3tB,EAAsuB,MAAtuB,EAA8uB,YAA9uB,EAA4vB,MAA5vB,EAAowB,aAApwB,EAAmxB,YAAnxB,EAAiyB,kBAAjyB,EAAqzB,aAArzB,EAAo0B,QAAp0B,EAA80B,aAA90B,EAA61B,aAA71B,EAA42B,UAA52B,EAAw3B,UAAx3B,EAAo4B,WAAp4B,EAAi5B,QAAj5B,EAA25B,UAA35B,EAAu6B,aAAv6B,EAAs7B,QAAt7B,EAAg8B,UAAh8B,EAA48B,YAA58B,EAA09B,aAA19B,EAAy+B,eAAz+B,EAA0/B,QAA1/B,EAAogC,MAApgC,EAA4gC,cAA5gC,EAA4hC,SAA5hC,EAAuiC,YAAviC,EAAqjC,WAArjC,EAAkkC,IAAlkC,EAAwkC,YAAxkC,EAAslC,MAAtlC,EAA8lC,KAA9lC,EAAqmC,SAArmC,EAAgnC,OAAhnC,EAAynC,YAAznC,EAAuoC,OAAvoC,EAAgpC,OAAhpC,EAAypC,kBAAzpC,EAA6qC,QAA7qC,EAAurC,UAAvrC,EAAmsC,UAAnsC,EAA+sC,OAA/sC,EAAwtC,QAAxtC,EAAkuC,KAAluC,EAAyuC,YAAzuC,EAAuvC,UAAvvC,EAAmwC,WAAnwC,EAAgxC,yBAAhxC,EAA2yC,YAA3yC,EAAyzC,WAAzzC,EAAs0C,eAAt0C,EAAu1C,YAAv1C,EAAq2C,YAAr2C,EAAm3C,aAAn3C,EAAk4C,WAAl4C,EAA+4C,SAA/4C,EAA05C,YAA15C,EAAw6C,MAAx6C;EACf,iBADe,EACI,SADJ,EACe,iBADf,EACkC,wBADlC,EAC4D,UAD5D,EACwE,UADxE,EACoF,YADpF,EACkG,QADlG,EAC4G,WAD5G,EACyH,SADzH,EACoI,OADpI,EAC6I,UAD7I,EACyJ,qBADzJ,EACgL,WADhL,EAC6L,UAD7L,EACyM,UADzM,EACqN,QADrN,EAC+N,OAD/N,EACwO,QADxO,EACkP,OADlP,EAC2P,QAD3P;EAEf,MAFe,EAEP,cAFO,EAES,aAFT,EAEwB,QAFxB,EAEkC,KAFlC,EAEyC,SAFzC,EAEoD,WAFpD,EAEiE,cAFjE,EAEiF,UAFjF,EAE6F,aAF7F;EAGf,gBAHe,EAGG,QAHH,EAGa,WAHb,EAG0B,YAH1B,EAGwC,gBAHxC,EAG0D,iBAH1D,EAG6E,OAH7E,EAGsF,KAHtF,EAG6F,QAH7F,EAGuG,aAHvG,EAGsH,MAHtH,EAG8H,OAH9H,EAGuI,OAHvI,EAGgJ,aAHhJ,EAG+J,SAH/J,EAG0K,OAH1K,EAGmL,oBAHnL,EAGyM,2BAHzM,EAGsO,SAHtO,EAGiP,WAHjP,EAG8P,YAH9P,EAG4Q,aAH5Q,EAG2R,SAH3R,EAGsS,QAHtS,EAGgT,YAHhT,EAG8T,SAH9T,EAGyU,UAHzU,EAGqV,aAHrV,EAGoW,SAHpW,EAG+W,SAH/W,EAG0X,MAH1X,EAGkY,UAHlY,EAG8Y,cAH9Y,EAG8Z,kBAH9Z,EAGkb,gBAHlb,EAGoc,cAHpc,EAGod,UAHpd,EAGge,SAHhe,EAG2e,oBAH3e,EAGigB,WAHjgB,EAG8gB,YAH9gB,EAG4hB,OAH5hB,EAGqiB,UAHriB,EAGijB,IAHjjB,EAGujB,OAHvjB,EAGgkB,YAHhkB,EAG8kB,WAH9kB,EAG2lB,SAH3lB,CAAf;EAIA,IAAItM,aAAa,GAAGsM,QAAQ,CAACrzC,MAAT,CAAgB,UAAUvC,CAAV,EAAab,GAAb,EAAkB;EACpDa,EAAAA,CAAC,CAACb,GAAD,CAAD,GAAS,MAAT;EACA,SAAOa,CAAP;EACD,CAHmB,EAGjB,EAHiB,CAApB;;EAKA,IAAI61C,QAAQ,GAAG,SAASA,QAAT,CAAkBn1C,CAAlB,EAAqB;EAClC;EACA,MAAI,CAACA,CAAC,CAACmH,IAAF,CAAO8X,IAAZ,EAAkB;EAChB,WAAO,KAAP;EACD,GAJiC;;;EAOlC,MAAIjf,CAAC,CAACmH,IAAF,CAAOiZ,OAAP,IAAkBpgB,CAAC,CAACmH,IAAF,CAAOiuC,KAAzB,IAAkCp1C,CAAC,CAACmH,IAAF,CAAOoD,UAA7C,EAAyD;EACvD,WAAO,KAAP;EACD,GATiC;;;EAYlC,MAAIvK,CAAC,CAACmH,IAAF,CAAO4Y,YAAP,IAAuB/f,CAAC,CAACmH,IAAF,CAAOyC,OAA9B,IAAyC5J,CAAC,CAACmH,IAAF,CAAOuY,KAAhD,IAAyD1f,CAAC,CAACmD,SAAF,EAA7D,EAA4E;EAC1E,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CAjBD;;EAmBA,IAAIkyC,OAAO,GAAG,SAASA,OAAT,CAAiB9mC,KAAjB,EAAwBpG,KAAxB,EAA+B;EAC3C,OAAK,IAAI3M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAIwE,CAAC,GAAGuO,KAAK,CAAC/S,CAAD,CAAb;;EAEA,QAAIotC,aAAa,CAAC5oC,CAAC,CAACsB,KAAH,CAAb,KAA2ByE,SAA3B,IAAwC6iC,aAAa,CAAC/hC,cAAd,CAA6B7G,CAAC,CAACsB,KAA/B,MAA0C,IAAtF,EAA4F;EAC1F;EACA,UAAI6N,QAAQ,GAAGZ,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAApB;;EAEA,UAAI2T,QAAQ,KAAKpJ,SAAb,IAA0BovC,QAAQ,CAAChmC,QAAD,CAAR,KAAuB,IAArD,EAA2D;EACzDA,QAAAA,QAAQ,CAACvB,OAAT,CAAiB,cAAjB,EAAiC,YAAjC,EAA+CzF,KAA/C;EACAnI,QAAAA,CAAC,CAAC4N,OAAF,CAAU,cAAV,EAA0B,YAA1B,EAAwCzF,KAAxC;EACA;EACD,OARyF;;;EAW1F,UAAI+O,QAAQ,GAAG3I,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAApB;;EAEA,UAAI0b,QAAQ,KAAKnR,SAAb,IAA0BmR,QAAQ,CAAC5V,KAAT,KAAmB,IAAjD,EAAuD;EACrD,YAAIiN,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAAL,IAAgB25C,QAAQ,CAAC5mC,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAAN,CAA5B,EAA4C;EAC1CwE,UAAAA,CAAC,CAAC4N,OAAF,CAAU,cAAV,EAA0B,eAA1B,EAA2CzF,KAA3C;EACA+O,UAAAA,QAAQ,CAACtJ,OAAT,CAAiB,cAAjB,EAAiC,eAAjC,EAAkDzF,KAAlD;EACAoG,UAAAA,KAAK,CAAC/S,CAAC,GAAG,CAAL,CAAL,CAAaoS,OAAb,CAAqB,cAArB,EAAqC,eAArC,EAAsDzF,KAAtD;EACA;EACD;EACF;EACF;EACF;EACF,CA3BD;;EA6BA,IAAImtC,gBAAgB,GAAGD,OAAvB;EAEA,IAAIE,gBAAgB,GAAG,gBAAvB;EACA,IAAIC,eAAe,GAAG,qBAAtB;EACA,IAAIC,aAAa,GAAG;EAClBl2C,EAAAA,CAAC,EAAE,IADe;EAElBm2C,EAAAA,CAAC,EAAE;EAFe,CAApB;;EAKA,IAAIx0C,SAAS,GAAG,SAASA,SAAT,CAAmBuJ,IAAnB,EAAyBtC,KAAzB,EAAgC;EAC9C,MAAI1J,GAAG,GAAGgM,IAAI,CAAC7I,OAAf,CAD8C;;EAG9C,MAAI6I,IAAI,CAACtD,IAAL,CAAUyC,OAAd,EAAuB;EACrB,WAAO,IAAP;EACD,GAL6C;EAM9C;EACA;EACA;;;EAGA,MAAIzB,KAAK,CAAC+T,KAAN,CAAYzd,GAAZ,CAAJ,EAAsB;EACpB,WAAO,KAAP;EACD,GAb6C;;;EAgB9C,MAAIA,GAAG,CAAChD,MAAJ,GAAa,CAAjB,EAAoB;EAClB,WAAO,KAAP;EACD;;EAED,SAAOgP,IAAI,CAACvJ,SAAL,EAAP;EACD,CArBD;;;EAwBA,IAAIy0C,YAAY,GAAG,SAASA,YAAT,CAAsBpnC,KAAtB,EAA6BpG,KAA7B,EAAoC;EACrDoG,EAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUgK,IAAV,EAAgB;EAC5B;EACA,QAAIA,IAAI,CAACtD,IAAL,CAAUma,YAAV,KAA2B,IAA/B,EAAqC;EACnC;EACD,KAJ2B;;;EAO5B,QAAIk0B,eAAe,CAACr0C,IAAhB,CAAqBsJ,IAAI,CAAC/L,IAA1B,MAAoC,IAAxC,EAA8C;EAC5C+L,MAAAA,IAAI,CAACvD,GAAL,CAAS,SAAT,EAAoB,gBAApB,EAAsCiB,KAAtC;EACD,KAT2B;;;EAY5B,QAAIsC,IAAI,CAAClH,WAAL,MAAsBrC,SAAS,CAACuJ,IAAD,EAAOtC,KAAP,CAAnC,EAAkD;EAChDsC,MAAAA,IAAI,CAACvD,GAAL,CAAS,SAAT,EAAoB,cAApB,EAAoCiB,KAApC;EACAsC,MAAAA,IAAI,CAACvD,GAAL,CAAS,MAAT,EAAiB,eAAjB,EAAkCiB,KAAlC;EACD,KAHD,MAGO,IAAI,CAACstC,aAAa,CAAC5uC,cAAd,CAA6B4D,IAAI,CAAC/L,IAAlC,CAAD,IAA4C62C,gBAAgB,CAACp0C,IAAjB,CAAsBsJ,IAAI,CAAC/L,IAA3B,CAAhD,EAAkF;EACvF+L,MAAAA,IAAI,CAACvD,GAAL,CAAS,SAAT,EAAoB,oBAApB,EAA0CiB,KAA1C;EACAsC,MAAAA,IAAI,CAACvD,GAAL,CAAS,MAAT,EAAiB,kBAAjB,EAAqCiB,KAArC;EACD,KAlB2B;;;EAqB5B,QAAIsC,IAAI,CAACtD,IAAL,CAAU4Y,YAAV,IAA0BtV,IAAI,CAAC/L,IAAL,CAAUjD,MAAV,IAAoB,CAAlD,EAAqD;EACnDgP,MAAAA,IAAI,CAACvD,GAAL,CAAS,SAAT,EAAoB,aAApB,EAAmCiB,KAAnC;EACD;;EAED,QAAIsC,IAAI,CAACtD,IAAL,CAAU4Y,YAAV,IAA0BtV,IAAI,CAAClH,WAAL,EAA1B,IAAgDkH,IAAI,CAAC/L,IAAL,CAAUjD,MAAV,IAAoB,CAAxE,EAA2E;EACzEgP,MAAAA,IAAI,CAACvD,GAAL,CAAS,SAAT,EAAoB,kBAApB,EAAwCiB,KAAxC;EACD;EACF,GA5BD;EA6BD,CA9BD;;EAgCA,IAAIytC,WAAW,GAAGD,YAAlB;EAEA,IAAIE,IAAI,GAAG;EACTC,EAAAA,UAAU,EAAE/B,aADH;EAET,UAAQG,OAFC;EAGTI,EAAAA,IAAI,EAAEC,OAHG;EAITxtB,EAAAA,MAAM,EAAEkuB,UAJC;EAKTrM,EAAAA,aAAa,EAAE0M,gBALN;EAMTxrC,EAAAA,QAAQ,EAAE8rC;EAND,CAAX;;EASA,IAAIG,SAAS,GAAG,SAASA,SAAT,CAAmBtkC,GAAnB,EAAwBlD,KAAxB,EAA+B;EAC7C,MAAIpG,KAAK,GAAGsJ,GAAG,CAACtJ,KAAhB,CAD6C;;EAG7C0tC,EAAAA,IAAI,CAACC,UAAL,CAAgBvnC,KAAhB,EAAuBpG,KAAvB,EAH6C;;EAK7C0tC,EAAAA,IAAI,CAAC,MAAD,CAAJ,CAAapkC,GAAb,EAL6C;;EAO7CokC,EAAAA,IAAI,CAACvB,IAAL,CAAU/lC,KAAV,EAAiBpG,KAAjB,EAP6C;;EAS7CoG,EAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzB,QAAIA,CAAC,CAACiI,OAAF,OAAgB,KAApB,EAA2B;EACzBjI,MAAAA,CAAC,CAACkH,GAAF,CAAM,MAAN,EAAc,eAAd,EAA+BuK,GAAG,CAACtJ,KAAnC;EACD;EACF,GAJD,EAT6C;;EAe7C0tC,EAAAA,IAAI,CAACjN,aAAL,CAAmBr6B,KAAnB,EAA0BpG,KAA1B,EAf6C;;EAiB7C0tC,EAAAA,IAAI,CAAC/rC,QAAL,CAAcyE,KAAd,EAAqBpG,KAArB,EAjB6C;;EAmB7CoG,EAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzB61C,IAAAA,IAAI,CAAC9uB,MAAL,CAAY/mB,CAAZ,EAAeyR,GAAG,CAACtJ,KAAnB;EACD,GAFD;EAGA,SAAOsJ,GAAP;EACD,CAvBD;;EAyBA,IAAIukC,YAAY,GAAGD,SAAnB;EAEA,IAAIE,WAAW,GAAG,MAAlB;EACA,IAAIC,YAAY,GAAG;EACjB,WAAS,CAAC,MAAD,EAAS,KAAT,CADQ;EAEjBC,EAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,KAAT,CAFW;EAGjB,WAAS,CAAC,KAAD,EAAQ,KAAR,CAHQ;EAIjBC,EAAAA,IAAI,EAAE,CAAC,KAAD,EAAQ,KAAR,CAJW;EAKjBC,EAAAA,MAAM,EAAE,CAAC,KAAD,EAAQ,KAAR,CALS;EAMjB,YAAU,CAAC,QAAD,EAAW,KAAX,CANO;EAOjBC,EAAAA,IAAI,EAAE,CAAC,IAAD,EAAO,KAAP,CAPW;EAQjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,KAAP,CARY;;EAAA,CAAnB;;EAYA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgB/rC,IAAhB,EAAsB+H,MAAtB,EAA8B;EACzC,MAAIjE,KAAK,GAAGiE,MAAM,CAACjE,KAAP,EAAZ;EACA,MAAI/H,KAAK,GAAG+H,KAAK,CAACzK,OAAN,CAAc2G,IAAd,CAAZ;EACA,MAAIjB,MAAM,GAAG+E,KAAK,CAAC6E,KAAN,CAAY,CAAZ,EAAe5M,KAAf,CAAb,CAHyC;;EAKzC,MAAIiwC,IAAI,GAAGjtC,MAAM,CAACiJ,IAAP,CAAY,UAAUzS,CAAV,EAAa;EAClC,WAAOA,CAAC,CAACmH,IAAF,CAAO8X,IAAd;EACD,GAFU,CAAX;;EAIA,MAAIw3B,IAAI,IAAIA,IAAI,CAACtvC,IAAL,CAAUmB,MAAtB,EAA8B;EAC5B,WAAO,CAAC,KAAD,EAAQ,KAAR,CAAP;EACD;;EAED,SAAO,CAAC,IAAD,EAAO,KAAP,CAAP;EACD,CAdD;;EAgBA,IAAIouC,aAAa,GAAG,SAASA,aAAT,CAAuBjsC,IAAvB,EAA6B+H,MAA7B,EAAqC;EACvD;EACA,MAAI0jC,YAAY,CAACrvC,cAAb,CAA4B4D,IAAI,CAACnJ,KAAjC,MAA4C,IAAhD,EAAsD;EACpD,WAAO40C,YAAY,CAACzrC,IAAI,CAACnJ,KAAN,CAAnB;EACD,GAJsD;;;EAOvD,MAAImJ,IAAI,CAACnJ,KAAL,KAAe,OAAf,IAA0BmJ,IAAI,CAACnJ,KAAL,KAAe,MAA7C,EAAqD;EACnD,WAAOk1C,MAAM,CAAC/rC,IAAD,EAAO+H,MAAP,CAAb;EACD,GATsD;;;EAYvD,MAAIyjC,WAAW,CAAC90C,IAAZ,CAAiBsJ,IAAI,CAACnJ,KAAtB,MAAiC,IAArC,EAA2C;EACzC,QAAI2Q,IAAI,GAAGxH,IAAI,CAACnJ,KAAL,CAAWI,OAAX,CAAmBu0C,WAAnB,EAAgC,EAAhC,CAAX;EACA,WAAO,CAAChkC,IAAD,EAAO,KAAP,CAAP;EACD;;EAED,SAAO,IAAP;EACD,CAlBD;;EAoBA,IAAI0kC,WAAW,GAAGD,aAAlB;EAEA,IAAIE,aAAa,GAAG,yGAApB;;EAEA,IAAIC,IAAI,GAAG;EACTC,EAAAA,EAAE,EAAE,MADK;EAETC,EAAAA,EAAE,EAAE,MAFK;EAGTC,EAAAA,EAAE,EAAE,KAHK;EAITr3C,EAAAA,CAAC,EAAE,IAJM;EAKT,SAAO;EALE,CAAX;;EAQA,IAAIs3C,eAAe,GAAG,SAASA,eAAT,CAAyBxsC,IAAzB,EAA+B;EACnD,MAAIq8B,KAAK,GAAGr8B,IAAI,CAAC/L,IAAL,CAAU8R,KAAV,CAAgBomC,aAAhB,CAAZ;;EAEA,MAAI9P,KAAK,KAAK,IAAd,EAAoB;EAClB,WAAO,IAAP;EACD;;EAED,MAAI+P,IAAI,CAAChwC,cAAL,CAAoBigC,KAAK,CAAC,CAAD,CAAzB,CAAJ,EAAmC;EACjC,WAAO,CAACA,KAAK,CAAC,CAAD,CAAN,EAAW+P,IAAI,CAAC/P,KAAK,CAAC,CAAD,CAAN,CAAf,CAAP;EACD;;EAED,SAAO,IAAP;EACD,CAZD;;EAcA,IAAIoQ,SAAS,GAAGD,eAAhB;EAEA,IAAIE,YAAY,GAAG;EACjBC,EAAAA,KAAK,EAAE,CAAC,MAAD,EAAS,IAAT,CADU;EAEjBC,EAAAA,KAAK,EAAE,CAAC,OAAD,EAAU,IAAV,CAFU;EAGjBC,EAAAA,EAAE,EAAE,CAAC,GAAD,EAAM,IAAN,CAHa;EAIjBC,EAAAA,IAAI,EAAE,CAAC,GAAD,EAAM,KAAN,CAJW;EAKjBC,EAAAA,GAAG,EAAE,CAAC,GAAD,EAAM,MAAN,CALY;EAMjBC,EAAAA,IAAI,EAAE,CAAC,GAAD,EAAM,MAAN,CANW;EAOjB,aAAW,CAAC,OAAD,EAAU,KAAV,CAPM;EAQjBC,EAAAA,MAAM,EAAE,CAAC,OAAD,EAAU,KAAV,CARS;EASjB,YAAU,CAAC,MAAD,EAAS,KAAT,CATO;EAUjBC,EAAAA,KAAK,EAAE,CAAC,MAAD,EAAS,KAAT,CAVU;EAWjB;EACA;EACAC,EAAAA,IAAI,EAAE,CAAC,KAAD,EAAQ,KAAR,CAbW;EAcjBC,EAAAA,KAAK,EAAE,CAAC,MAAD,EAAS,KAAT,CAdU;EAejB;EACA;EACAC,EAAAA,KAAK,EAAE,CAAC,IAAD,EAAO,KAAP,EAAc,MAAd,CAjBU;EAkBjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,OAAP,EAAgB,MAAhB,CAlBY;EAmBjBC,EAAAA,GAAG,EAAE,CAAC,KAAD,EAAQ,IAAR,EAAc,IAAd,CAnBY;EAoBjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,MAAP,EAAe,MAAf,CApBY;EAqBjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,QAAb,CArBY;EAsBjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,SAAb,CAtBY;EAuBjBC,EAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,GAAV,EAAe,SAAf,CAvBY;EAwBjBC,EAAAA,EAAE,EAAE,CAAC,OAAD,EAAU,KAAV,CAxBa;EAyBjBC,EAAAA,IAAI,EAAE,CAAC,IAAD,EAAO,KAAP,CAzBW;EA0BjB,OAAK,CAAC,IAAD;EA1BY,CAAnB;;EA6BA,IAAIC,eAAe,GAAG,SAASA,eAAT,CAAyB9tC,IAAzB,EAA+B;EACnD;EACA,MAAI0sC,YAAY,CAACtwC,cAAb,CAA4B4D,IAAI,CAACnJ,KAAjC,CAAJ,EAA6C;EAC3C,WAAO61C,YAAY,CAAC1sC,IAAI,CAACnJ,KAAN,CAAnB;EACD;;EAED,SAAO,IAAP;EACD,CAPD;;EASA,IAAIk3C,aAAa,GAAGD,eAApB;EAEA,IAAIE,cAAc,GAAG,8FAArB;EACA,IAAIC,OAAO,GAAG;EACZC,EAAAA,IAAI,EAAE,IADM;EAEZ5G,EAAAA,KAAK,EAAE;EAFK,CAAd;EAIA,IAAI6G,SAAS,GAAG;EACdC,EAAAA,IAAI,EAAE,IADQ;EAEd9G,EAAAA,KAAK,EAAE,IAFO;EAGd+G,EAAAA,UAAU,EAAE;EAHE,CAAhB;;EAMA,IAAIC,YAAY,GAAG,SAASA,YAAT,CAAsBtuC,IAAtB,EAA4BgE,IAA5B,EAAkC;EACnD;EACA,MAAIhE,IAAI,CAACtD,IAAL,CAAUoD,UAAd,EAA0B;EACxB,WAAO,IAAP;EACD,GAJkD;;;EAOnD,MAAIE,IAAI,CAACtD,IAAL,CAAUiZ,OAAV,IAAqB3V,IAAI,CAACtD,IAAL,CAAUub,YAAnC,EAAiD;EAC/C,WAAO,KAAP;EACD;;EAED,MAAIg2B,OAAO,CAAC7xC,cAAR,CAAuB4D,IAAI,CAAC7I,OAA5B,CAAJ,EAA0C;EACxC,WAAO,KAAP;EACD,GAbkD;;;EAgBnD,MAAIsV,QAAQ,GAAGzI,IAAI,CAACC,GAAL,CAASjE,IAAI,CAAC0D,IAAd,CAAf;;EAEA,MAAI,CAAC+I,QAAL,EAAe;EACb,WAAO,IAAP;EACD,GApBkD;;;EAuBnD,MAAIA,QAAQ,CAAC/P,IAAT,CAAcqB,IAAlB,EAAwB;EACtB;EACA,QAAI0O,QAAQ,CAAC/P,IAAT,CAAcuB,UAAlB,EAA8B;EAC5B,aAAO,IAAP;EACD,KAJqB;;;EAOtB,QAAIwO,QAAQ,CAAC/P,IAAT,CAAc2B,YAAlB,EAAgC;EAC9B,aAAO,IAAP;EACD;;EAED,WAAO,KAAP;EACD,GAnCkD;;;EAsCnD,MAAIoO,QAAQ,CAAC/P,IAAT,CAAc8X,IAAlB,EAAwB;EACtB;EACA,QAAI25B,SAAS,CAAC/xC,cAAV,CAAyBqQ,QAAQ,CAACtV,OAAlC,MAA+C,IAAnD,EAAyD;EACvD,aAAO,KAAP;EACD;;EAED,WAAO,IAAP;EACD,GA7CkD;;;EAgDnD,MAAIo3C,OAAO,GAAGvqC,IAAI,CAACC,GAAL,CAASwI,QAAQ,CAAC/I,IAAlB,CAAd;;EAEA,MAAI6qC,OAAO,IAAIA,OAAO,CAAC7xC,IAAR,CAAa8X,IAAxB,IAAgC,CAAC+5B,OAAO,CAAC7xC,IAAR,CAAaiZ,OAAlD,EAA2D;EACzD,WAAO,IAAP;EACD,GApDkD;;;EAuDnD,MAAIlJ,QAAQ,CAAC/P,IAAT,CAAcya,SAAd,IAA2B1K,QAAQ,CAAC/P,IAAT,CAAc8a,MAAzC,IAAmD/K,QAAQ,CAAC/P,IAAT,CAAcqB,IAArE,EAA2E;EACzE,WAAO,KAAP;EACD;;EAED,SAAO,KAAP;EACD,CA5DD;;EA8DA,IAAIywC,KAAK,GAAG,SAASA,KAAT,CAAexuC,IAAf,EAAqB+H,MAArB,EAA6B;EACvC,MAAIjE,KAAK,GAAGiE,MAAM,CAACjE,KAAP,EAAZ;EACA,MAAI/H,KAAK,GAAG+H,KAAK,CAACzK,OAAN,CAAc2G,IAAd,CAAZ;EACA,MAAIhI,KAAK,GAAG8L,KAAK,CAAC6E,KAAN,CAAY5M,KAAK,GAAG,CAApB,EAAuBA,KAAK,GAAG,CAA/B,CAAZ,CAHuC;;EAKvC,SAAO/D,KAAK,CAACgQ,IAAN,CAAW,UAAUzS,CAAV,EAAa;EAC7B,WAAOA,CAAC,CAACmH,IAAF,CAAOyB,SAAd;EACD,GAFM,CAAP;EAGD,CARD;;EAUA,IAAIswC,eAAe,GAAG,SAASA,eAAT,CAAyBzuC,IAAzB,EAA+B+H,MAA/B,EAAuCrK,KAAvC,EAA8C;EAClE;EACA,MAAI3F,KAAK,GAAGiI,IAAI,CAAC/L,IAAL,CAAU8R,KAAV,CAAgBioC,cAAhB,CAAZ;;EAEA,MAAIj2C,KAAK,KAAK,IAAd,EAAoB;EAClB;EACA,QAAIu2C,YAAY,CAACtuC,IAAD,EAAO+H,MAAM,CAAC/D,IAAd,CAAZ,KAAoC,IAAxC,EAA8C;EAC5ChE,MAAAA,IAAI,CAACvD,GAAL,CAAS,aAAT,EAAwB,cAAxB,EAAwCiB,KAAxC;EACA,aAAO,IAAP;EACD,KALiB;;;EAQlB,QAAI3F,KAAK,KAAK,IAAd,EAAoB;EAClB,UAAIy2C,KAAK,CAACxuC,IAAD,EAAO+H,MAAP,CAAT,EAAyB;EACvB,eAAO,CAAChQ,KAAK,CAAC,CAAD,CAAN,EAAW,KAAX,CAAP;EACD;;EAED,aAAO,CAACA,KAAK,CAAC,CAAD,CAAN,EAAW,IAAX,CAAP;EACD;EACF;;EAED,SAAO,IAAP;EACD,CAtBD;;EAwBA,IAAI22C,aAAa,GAAGD,eAApB;EAEA,IAAIE,UAAU,GAAG,uBAAjB;EACA,IAAIC,MAAM,GAAG;EACXC,EAAAA,GAAG,EAAE,IADM;EAEXC,EAAAA,IAAI,EAAE;EAFK,CAAb;EAIA;;EAEA,IAAIC,YAAY,GAAG,SAASA,YAAT,CAAsB/uC,IAAtB,EAA4B+H,MAA5B,EAAoC;EACrD,MAAI4mC,UAAU,CAACj4C,IAAX,CAAgBsJ,IAAI,CAACnJ,KAArB,CAAJ,EAAiC;EAC/B,QAAIyF,IAAI,GAAG0D,IAAI,CAACnJ,KAAL,CAAWI,OAAX,CAAmB,KAAnB,EAA0B,EAA1B,CAAX,CAD+B;;EAG/B,QAAI6M,KAAK,GAAGiE,MAAM,CAACjE,KAAP,EAAZ;EACA,QAAI/H,KAAK,GAAG+H,KAAK,CAACzK,OAAN,CAAc2G,IAAd,CAAZ;EACA,QAAIhI,KAAK,GAAG8L,KAAK,CAAC6E,KAAN,CAAY5M,KAAK,GAAG,CAApB,EAAuBA,KAAK,GAAG,CAA/B,CAAZ,CAL+B;;EAO/B,SAAK,IAAIhL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiH,KAAK,CAAChH,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;EACrC,UAAIwE,CAAC,GAAGyC,KAAK,CAACjH,CAAD,CAAb;;EAEA,UAAIwE,CAAC,CAACmH,IAAF,CAAOqB,IAAX,EAAiB;EACf,YAAIxI,CAAC,CAACmH,IAAF,CAAOyB,SAAX,EAAsB;EACpB,iBAAO,CAAC7B,IAAD,EAAO,KAAP,CAAP;EACD,SAHc;;;EAMf,YAAIsyC,MAAM,CAACtyC,IAAD,CAAN,KAAiB,IAArB,EAA2B;EACzB,iBAAO,CAACA,IAAD,EAAO,KAAP,CAAP;EACD;;EAED,eAAO,CAACA,IAAD,EAAO,OAAP,CAAP;EACD;EACF,KAtB8B;;;EAyB/B,WAAO,CAACA,IAAD,EAAO,OAAP,CAAP;EACD;;EAED,SAAO,IAAP;EACD,CA9BD;;EAgCA,IAAI0yC,eAAe,GAAGD,YAAtB;EAEA,IAAIE,OAAO,GAAG,uDAAd;EACA,IAAIC,SAAS,GAAG,gFAAhB;;EAEA,IAAIC,UAAU,GAAG,SAASA,UAAT,CAAoBnvC,IAApB,EAA0B;EACzC,MAAIA,IAAI,CAACtD,IAAL,CAAU2b,WAAV,KAA0B,IAA9B,EAAoC;EAClC,WAAO,IAAP;EACD;;EAED,MAAIgkB,KAAK,GAAGr8B,IAAI,CAAC/L,IAAL,CAAU8R,KAAV,CAAgBkpC,OAAhB,CAAZ;;EAEA,MAAI5S,KAAK,KAAK,IAAd,EAAoB;EAClB,WAAO,CAACA,KAAK,CAAC,CAAD,CAAN,EAAW,IAAX,EAAiBA,KAAK,CAAC,CAAD,CAAtB,CAAP;EACD,GAFD,MAEO;EACLA,IAAAA,KAAK,GAAGr8B,IAAI,CAAC/L,IAAL,CAAU8R,KAAV,CAAgBmpC,SAAhB,CAAR;;EAEA,QAAI7S,KAAK,KAAK,IAAd,EAAoB;EAClB,aAAO,CAACA,KAAK,CAAC,CAAD,CAAN,EAAW,IAAX,EAAiBA,KAAK,CAAC,CAAD,CAAtB,CAAP;EACD;EACF;;EAED,SAAO,IAAP;EACD,CAlBD;;EAoBA,IAAI+S,SAAS,GAAGD,UAAhB;EAEA,IAAIrT,WAAW,GAAG,kHAAlB;EACA;;EAEA,IAAIuT,MAAM,GAAG;EACXp6C,EAAAA,CAAC,EAAE,IADQ;EAEX;EACAR,EAAAA,CAAC,EAAE,IAHQ;EAIX;EACAC,EAAAA,CAAC,EAAE,IALQ;EAMX;EACAK,EAAAA,CAAC,EAAE,IAPQ;EAQX;EACAG,EAAAA,CAAC,EAAE,IATQ;EAUX;EACAC,EAAAA,CAAC,EAAE,IAXQ;EAYX;EACAm6C,EAAAA,EAAE,EAAE,KAbO;EAcX;EACAh6C,EAAAA,CAAC,EAAE,IAfQ;EAgBX;EACAC,EAAAA,CAAC,EAAE,IAjBQ;;EAAA,CAAb;;EAqBA,IAAIg6C,WAAW,GAAG,SAASA,WAAT,CAAqBvvC,IAArB,EAA2B;EAC3C,MAAIq8B,KAAK,GAAGr8B,IAAI,CAAC/L,IAAL,CAAU8R,KAAV,CAAgB+1B,WAAhB,CAAZ;;EAEA,MAAIO,KAAK,KAAK,IAAV,IAAkBgT,MAAM,CAACjzC,cAAP,CAAsBigC,KAAK,CAAC,CAAD,CAA3B,MAAoC,KAA1D,EAAiE;EAC/D,WAAO,IAAP;EACD;;EAED,MAAI16B,GAAG,GAAG,CAAC0tC,MAAM,CAAChT,KAAK,CAAC,CAAD,CAAN,CAAP,EAAmBA,KAAK,CAAC,CAAD,CAAxB,CAAV;;EAEA,MAAI16B,GAAG,CAAC,CAAD,CAAH,IAAUA,GAAG,CAAC,CAAD,CAAjB,EAAsB;EACpB,WAAOA,GAAP;EACD;;EAED,SAAO,IAAP;EACD,CAdD;;EAgBA,IAAI6tC,SAAS,GAAGD,WAAhB;EAEA,IAAIE,QAAQ,GAAG,UAAf;EACA,IAAIC,SAAS,GAAG,uBAAhB;EACA,IAAIC,MAAM,GAAG,kBAAb;;EAEA,IAAIC,YAAY,GAAG,SAASA,YAAT,CAAsB73C,KAAtB,EAA6BiP,GAA7B,EAAkC;EACnD;EACA,MAAIe,MAAM,GAAGmM,YAAY,CAACnc,KAAK,CAAC7B,IAAN,CAAW,GAAX,CAAD,EAAkB8Q,GAAG,CAACtJ,KAAtB,EAA6BsJ,GAAG,CAAChD,IAAJ,EAA7B,CAAZ,CAAqD,CAArD,CAAb,CAFmD;;;EAInD,MAAIF,KAAK,GAAGiE,MAAM,CAACjE,KAAP,EAAZ;;EACAm7B,EAAAA,UAAU,CAACn7B,KAAD,EAAQkD,GAAG,CAACtJ,KAAZ,CAAV,CALmD;;;EAOnDoG,EAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzBA,IAAAA,CAAC,CAAC4E,QAAF,GAAa5E,CAAC,CAACtB,IAAf;EACAsB,IAAAA,CAAC,CAACtB,IAAF,GAAS,EAAT;EACAsB,IAAAA,CAAC,CAACsB,KAAF,GAAU,EAAV,CAHyB;;EAKzBtB,IAAAA,CAAC,CAACsC,GAAF,GAAQ,EAAR;EACAtC,IAAAA,CAAC,CAACuC,IAAF,GAAS,EAAT,CANyB;;EAQzB,QAAI23C,QAAQ,CAAC/4C,IAAT,CAAcnB,CAAC,CAAC4E,QAAhB,CAAJ,EAA+B;EAC7B5E,MAAAA,CAAC,CAACkH,GAAF,CAAM,UAAN,EAAkB,WAAlB,EAA+BuK,GAAG,CAACtJ,KAAnC;EACD,KAFD,MAEO,IAAIgyC,SAAS,CAACh5C,IAAV,CAAenB,CAAC,CAAC4E,QAAjB,CAAJ,EAAgC;EACrC5E,MAAAA,CAAC,CAACkH,GAAF,CAAM,SAAN,EAAiB,WAAjB,EAA8BuK,GAAG,CAACtJ,KAAlC;EACD,KAFM,MAEA,IAAIiyC,MAAM,CAACj5C,IAAP,CAAYnB,CAAC,CAAC4E,QAAd,CAAJ,EAA6B;EAClC5E,MAAAA,CAAC,CAACkH,GAAF,CAAM,MAAN,EAAc,YAAd,EAA4BuK,GAAG,CAACtJ,KAAhC;EACD,KAFM,MAEA,IAAIrM,MAAM,CAAC0E,IAAP,CAAYR,CAAC,CAACmH,IAAd,EAAoB1L,MAApB,KAA+B,CAAnC,EAAsC;EAC3CuE,MAAAA,CAAC,CAACmH,IAAF,CAAO8X,IAAP,GAAc,IAAd,CAD2C;EAE5C;EACF,GAjBD;EAkBA,SAAOzM,MAAP;EACD,CA1BD;;EA4BA,IAAIszB,YAAY,GAAG,SAASA,YAAT,CAAsBr0B,GAAtB,EAA2B;EAC5C,MAAItJ,KAAK,GAAGsJ,GAAG,CAACtJ,KAAhB;EACAsJ,EAAAA,GAAG,CAACH,IAAJ,CAAS7Q,OAAT,CAAiB,UAAU1D,CAAV,EAAa;EAC5B,QAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;;EAEA,SAAK,IAAI/S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;EACxC,UAAIiP,IAAI,GAAG8D,KAAK,CAAC/S,CAAD,CAAhB;;EACA,UAAIgH,KAAK,GAAGm0C,WAAW,CAAClsC,IAAD,EAAO1N,CAAP,CAAvB;;EACAyF,MAAAA,KAAK,GAAGA,KAAK,IAAI00C,SAAS,CAACzsC,IAAD,CAA1B;EACAjI,MAAAA,KAAK,GAAGA,KAAK,IAAIg2C,aAAa,CAAC/tC,IAAD,CAA9B;EACAjI,MAAAA,KAAK,GAAGA,KAAK,IAAI22C,aAAa,CAAC1uC,IAAD,EAAO1N,CAAP,EAAUoL,KAAV,CAA9B;EACA3F,MAAAA,KAAK,GAAGA,KAAK,IAAIi3C,eAAe,CAAChvC,IAAD,EAAO1N,CAAP,CAAhC;EACAyF,MAAAA,KAAK,GAAGA,KAAK,IAAIq3C,SAAS,CAACpvC,IAAD,CAA1B;EACAjI,MAAAA,KAAK,GAAGA,KAAK,IAAIy3C,SAAS,CAACxvC,IAAD,CAA1B,CARwC;;EAUxC,UAAIjI,KAAK,KAAK,IAAd,EAAoB;EAClB,YAAIgP,SAAS,GAAG6oC,YAAY,CAAC73C,KAAD,EAAQiP,GAAR,CAA5B,CADkB;;EAGlB,YAAI1U,CAAC,CAACue,GAAF,CAAM,cAAN,MAA0B,IAA9B,EAAoC;EAClC7J,UAAAA,GAAG,CAACzC,SAAJ,CAAc,CAACwC,SAAD,CAAd,EAA2BtK,GAA3B,CAA+B,aAA/B;EACD,SALiB;;;EAQlB,YAAI82B,SAAS,GAAGxsB,SAAS,CAACjD,KAAV,CAAgB,CAAhB,CAAhB;EACAyvB,QAAAA,SAAS,CAACt/B,IAAV,GAAiB+L,IAAI,CAAC/L,IAAtB,CATkB;;EAWlB,YAAI8R,KAAK,GAAGzT,CAAC,CAACiS,SAAF,CAAYvE,IAAI,CAAChE,EAAjB,EAAqB,CAArB,EAAwBgL,GAAG,CAAChD,IAAJ,EAAxB,CAAZ;EACA+B,QAAAA,KAAK,CAAC9O,OAAN,CAAc8P,SAAd,EAAyBC,GAAzB,EAA8B,IAA9B;EACD;EACF;EACF,GA5BD;EA6BA,SAAOA,GAAP;EACD,CAhCD;;EAkCA,IAAI6oC,eAAe,GAAGxU,YAAtB;;EAEA,IAAIyU,OAAO,GAAG,SAASA,OAAT,CAAiB9oC,GAAjB,EAAsB9O,IAAtB,EAA4B;EACxC,MAAIyJ,GAAG,GAAGqF,GAAG,CAACqtB,MAAJ,CAAW5iB,KAAX,CAAiBvZ,IAAjB,KAA0B,EAApC;EACAyJ,EAAAA,GAAG,GAAGA,GAAG,CAAC8C,GAAJ,CAAQ,UAAU1T,CAAV,EAAa;EACzB,WAAOiW,GAAG,CAACH,IAAJ,CAAS9V,CAAT,CAAP;EACD,GAFK,CAAN;EAGA,SAAOiW,GAAG,CAACzC,SAAJ,CAAc5C,GAAd,CAAP;EACD,CAND;;EAQA,IAAIouC,MAAM,GAAG,SAASA,MAAT,CAAgB/oC,GAAhB,EAAqBvK,GAArB,EAA0B;EACrC,MAAIkF,GAAG,GAAGqF,GAAG,CAACqtB,MAAJ,CAAW33B,IAAX,CAAgBD,GAAhB,KAAwB,EAAlC;EACAkF,EAAAA,GAAG,GAAGA,GAAG,CAAC8C,GAAJ,CAAQ,UAAU1T,CAAV,EAAa;EACzB,WAAOiW,GAAG,CAACH,IAAJ,CAAS9V,CAAT,CAAP;EACD,GAFK,CAAN;EAGA,SAAOiW,GAAG,CAACzC,SAAJ,CAAc5C,GAAd,CAAP;EACD,CAND;;;EASA,IAAIquC,cAAc,GAAG,SAASA,cAAT,CAAwBhpC,GAAxB,EAA6B;EAChD;EACA,MAAI9R,CAAC,GAAG66C,MAAM,CAAC/oC,GAAD,EAAM,YAAN,CAAd;;EAEA,MAAI9R,CAAC,CAAC6C,KAAN,EAAa;EACX;EACA7C,IAAAA,CAAC,GAAGA,CAAC,CAACu/B,IAAF,CAAO,kBAAP,CAAJ,CAFW;;EAIXv/B,IAAAA,CAAC,GAAGA,CAAC,CAACu/B,IAAF,CAAO,aAAP,CAAJ,CAJW;;EAMXv/B,IAAAA,CAAC,CAAC6Q,KAAF,CAAQ,+CAAR,EAAyD,CAAzD,EAA4DtJ,GAA5D,CAAgE,YAAhE,EAA8E,UAA9E,EANW;;EAQXvH,IAAAA,CAAC,CAAC6Q,KAAF,CAAQ,0BAAR,EAAoC,CAApC,EAAuCtJ,GAAvC,CAA2C,YAA3C,EAAyD,SAAzD,EARW;;EAUXvH,IAAAA,CAAC,CAAC6Q,KAAF,CAAQ,kCAAR,EAA4C,CAA5C,EAA+CtJ,GAA/C,CAAmD,YAAnD,EAAiE,QAAjE,EAVW;;EAYXvH,IAAAA,CAAC,CAAC6Q,KAAF,CAAQ,yBAAR,EAAmC,CAAnC,EAAsCtJ,GAAtC,CAA0C,YAA1C,EAAwD,OAAxD;EACD,GAjB+C;;;EAoBhDvH,EAAAA,CAAC,GAAG46C,OAAO,CAAC9oC,GAAD,EAAM,MAAN,CAAX;EACA9R,EAAAA,CAAC,CAAC6Q,KAAF,CAAQ,cAAR,EAAwBkqC,KAAxB,CAA8B,kEAA9B,EAAkGxzC,GAAlG,CAAsG,QAAtG,EAAgH,aAAhH,EArBgD;;EAuBhDvH,EAAAA,CAAC,GAAG66C,MAAM,CAAC/oC,GAAD,EAAM,WAAN,CAAV;EACA9R,EAAAA,CAAC,CAAC6Q,KAAF,CAAQ,yBAAR,EAAmCkqC,KAAnC,CAAyC,6BAAzC,EAAwEnsC,KAAxE,CAA8E,CAA9E,EAAiFrH,GAAjF,CAAqF,MAArF,EAA6F,WAA7F,EAxBgD;;EA0BhDvH,EAAAA,CAAC,GAAG66C,MAAM,CAAC/oC,GAAD,EAAM,WAAN,CAAV;EACA9R,EAAAA,CAAC,CAAC6Q,KAAF,CAAQ,+BAAR,EAAyC0uB,IAAzC,CAA8C,cAA9C,EAA8DA,IAA9D,CAAmE,oBAAnE,EAAyFA,IAAzF,CAA8F,aAA9F,EAA6G/vB,QAA7G,GAAwHjI,GAAxH,CAA4H,WAA5H,EAAyI,gBAAzI,EA3BgD;;EA6BhDvH,EAAAA,CAAC,GAAG66C,MAAM,CAAC/oC,GAAD,EAAM,OAAN,CAAV;EACA9R,EAAAA,CAAC,GAAGA,CAAC,CAAC6Q,KAAF,CAAQ,sBAAR,EAAgC0uB,IAAhC,CAAqC,SAArC,CAAJ;;EAEA,MAAIv/B,CAAC,CAAC6C,KAAN,EAAa;EACX,QAAI7C,CAAC,CAAC2b,GAAF,CAAM,SAAN,MAAqB,IAAzB,EAA+B;EAC7B3b,MAAAA,CAAC,CAAC4O,KAAF,CAAQ,CAAR,EAAWrH,GAAX,CAAe,UAAf,EAA2B,kBAA3B;EACD,KAFD,MAEO;EACLvH,MAAAA,CAAC,CAAC4O,KAAF,CAAQ,CAAR,EAAWrH,GAAX,CAAe,QAAf,EAAyB,oBAAzB;EACD;EACF,GAtC+C;;;EAyChDuK,EAAAA,GAAG,CAACjB,KAAJ,CAAU,iBAAV,EAA6BtJ,GAA7B,CAAiC,YAAjC,EAA+C,OAA/C,EAzCgD;;EA2ChDuK,EAAAA,GAAG,CAACjB,KAAJ,CAAU,sBAAV,EAAkC,CAAlC,EAAqC3D,KAArC,CAA2C,OAA3C,EAAoD,aAApD,EA3CgD;;EA6ChD4E,EAAAA,GAAG,CAACjB,KAAJ,CAAU,kBAAV,EAA8B,CAA9B,EAAiC3D,KAAjC,CAAuC,OAAvC,EAAgD,YAAhD,EAA8D3F,GAA9D,CAAkE,CAAC,MAAD,EAAS,QAAT,CAAlE,EA7CgD;;EA+ChDvH,EAAAA,CAAC,GAAG66C,MAAM,CAAC/oC,GAAD,EAAM,QAAN,CAAV;EACA9R,EAAAA,CAAC,CAAC6Q,KAAF,CAAQ,mCAAR,EAA6C+K,GAA7C,CAAiD,QAAjD,EAA2DrU,GAA3D,CAA+D,WAA/D,EAA4E,YAA5E,EAhDgD;;EAkDhDuK,EAAAA,GAAG,CAACjB,KAAJ,CAAU,oCAAV,EAAgD0uB,IAAhD,CAAqD,oDAArD,EAA2G/vB,QAA3G,GAAsHjI,GAAtH,CAA0H,OAA1H,EAAmI,SAAnI,EAlDgD;EAmDhD;;EAEAvH,EAAAA,CAAC,GAAG66C,MAAM,CAAC/oC,GAAD,EAAM,YAAN,CAAV;EACA9R,EAAAA,CAAC,GAAGA,CAAC,CAAC6Q,KAAF,CAAQ,2BAAR,EAAqC,CAArC,CAAJ;;EAEA,MAAI,CAAC7Q,CAAC,CAACiU,UAAF,CAAa,2BAAb,EAA0CpR,KAA/C,EAAsD;EACpD7C,IAAAA,CAAC,CAACuH,GAAF,CAAM,MAAN,EAAc,WAAd;EACD;;EAED,SAAOuK,GAAP;EACD,CA7DD;;EA+DA,IAAIkpC,OAAO,GAAGF,cAAd;;EAEA,IAAIppC,MAAM,GAAG,SAASA,MAAT,CAAgBjF,GAAhB,EAAqB;EAChC,MAAIxR,GAAG,GAAG,EAAV;;EAEA,OAAK,IAAIY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Q,GAAG,CAAC3Q,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;EACnCZ,IAAAA,GAAG,CAACwR,GAAG,CAAC5Q,CAAD,CAAJ,CAAH,GAAc,IAAd;EACD;;EAED,SAAOM,MAAM,CAAC0E,IAAP,CAAY5F,GAAZ,CAAP;EACD,CARD;;EAUA,IAAIggD,OAAO,GAAGvpC,MAAd;;EAGA,IAAIwpC,MAAM,GAAG;EACb;EACErqC,EAAAA,KAAK,EAAE,UADT;EAEEtJ,EAAAA,GAAG,EAAE,kBAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CADa;EAMb;EACE0E,EAAAA,KAAK,EAAE,KADT;EAEEtJ,EAAAA,GAAG,EAAE,gBAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CANa;EAWb;EACE0E,EAAAA,KAAK,EAAE,yDADT;EAEEtJ,EAAAA,GAAG,EAAE,4BAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAXa;EAgBb;EACE0E,EAAAA,KAAK,EAAE,0DADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhBa;EAsBb;EACE0E,EAAAA,KAAK,EAAE,iCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtBa;EA4Bb;EACE0E,EAAAA,KAAK,EAAE,kBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA5Ba;EAkCb;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEEtJ,EAAAA,GAAG,EAAE,YAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAlCa;EAuCb;EACE0E,EAAAA,KAAK,EAAE,cADT;EAEEtJ,EAAAA,GAAG,EAAE,OAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAvCa,EA2CV;EACD0E,EAAAA,KAAK,EAAE,kBADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,SAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA3CU;EAiDb;EACE0E,EAAAA,KAAK,EAAE,WADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,SAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjDa;EAuDb;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,YAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvDa;EA6Db;EACA;EACE0E,EAAAA,KAAK,EAAE,YADT;EAEEtJ,EAAAA,GAAG,EAAE,6BAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA9Da;EAmEb;EACA;EACE0E,EAAAA,KAAK,EAAE,qCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,aAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApEa;EA0Eb;EACE0E,EAAAA,KAAK,EAAE,oCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,aAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA1Ea,EA+EV;EACD0E,EAAAA,KAAK,EAAE,qBADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,aAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA/EU;EAqFb;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,aAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArFa;EA2Fb;EACA;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,yBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA9Fa;EAoGb;EACE0E,EAAAA,KAAK,EAAE,8BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApGa;EA0Gb;EACA;EACE0E,EAAAA,KAAK,EAAE,MADT;EAEEtJ,EAAAA,GAAG,EAAE,cAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA3Ga,EA+GV;EACD0E,EAAAA,KAAK,EAAE,+CADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,cAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA/GU;EAqHb;EACE0E,EAAAA,KAAK,EAAE,QADT;EAEEtJ,EAAAA,GAAG,EAAE,cAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CArHa;EA0Hb;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,YADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,aAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA5Ha;EAkIb;EACE0E,EAAAA,KAAK,EAAE,2EADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,aAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAlIa;EAwIb;EACA;EACA;EACA;EACA;EA5Ia,CAAb;EA8IA,IAAIgvC,OAAO,GAAGD,MAAd;EAEA,IAAIE,MAAM,GAAG;EACX;EACAC,EAAAA,eAAe,EAAE,CAAC,MAAD,EAAS,QAAT,EAAmB,MAAnB,EAA2B,OAA3B,EAAoC,MAApC,EAA4C,MAA5C,EAAoD,MAApD,EAA4D,KAA5D,EAAmE,MAAnE,EAA2E,QAA3E,EAAqF,KAArF,EAA4F,OAA5F,EAAqG,MAArG,EAA6G,MAA7G,EAAqH,MAArH,EAA6H,OAA7H,EAAsI,KAAtI,CAFN;EAGX;EACAC,EAAAA,UAAU,EAAE,CAAC,OAAD,EAAU,MAAV,EAAkB,KAAlB,EAAyB,KAAzB,EAAgC,QAAhC,EAA0C,KAA1C,CAJD;EAKX;EACAC,EAAAA,WAAW,EAAE,CAAC,SAAD,EAAY,OAAZ,EAAqB,KAArB,EAA4B,MAA5B,EAAoC,KAApC,EAA2C,KAA3C,CANF;EAOX;EACAC,EAAAA,eAAe,EAAE,CAAC,OAAD,EAAU,OAAV,EAAmB,OAAnB,EAA4B,MAA5B,EAAoC,OAApC,EAA6C,OAA7C,CARN;EASX;EACAC,EAAAA,UAAU,EAAE,CAAC,KAAD,EAAQ,MAAR,EAAgB,OAAhB,EAAyB,MAAzB,EAAiC,KAAjC,EAAwC,MAAxC,EAAgD,KAAhD,EAAuD,MAAvD,EAA+D,MAA/D,CAVD;EAWX;EACAC,EAAAA,WAAW,EAAE,CAAC,QAAD,EAAW,UAAX,EAAuB,OAAvB,EAAgC,YAAhC,EAA8C,SAA9C,EAAyD,MAAzD,EAAiE,UAAjE,EAA6E,UAA7E,EAAyF,QAAzF,EAAmG,UAAnG,CAZF;EAaX;EACAC,EAAAA,UAAU,EAAE,CAAC,KAAD,EAAQ,OAAR,EAAiB,MAAjB,EAAyB,MAAzB,EAAiC,OAAjC,EAA0C,SAA1C,EAAqD,MAArD,EAA6D,WAA7D,EAA0E,OAA1E,EAAmF,OAAnF,EAA4F,MAA5F,EAAoG,MAApG,EAA4G,OAA5G,EAAqH,OAArH,EAA8H,QAA9H,EAAwI,MAAxI,EAAgJ,OAAhJ,EAAyJ,MAAzJ,EAAiK,MAAjK,EAAyK,OAAzK,EAAkL,MAAlL,EAA0L,MAA1L,EAAkM,OAAlM,EAA2M,KAA3M,EAAkN,QAAlN,EAA4N,MAA5N,EAAoO,OAApO,EAA6O,MAA7O,EAAqP,MAArP,EAA6P,QAA7P,EAAuQ,UAAvQ,EAAmR,OAAnR,EAA4R,OAA5R,EAAqS,OAArS,EAA8S,KAA9S,EAAqT,MAArT,EAA6T,OAA7T,EAAsU,KAAtU,EAA6U,MAA7U,EAAqV,KAArV,EAA4V,QAA5V,EAAsW,SAAtW,EAAiX,KAAjX,EAAwX,OAAxX,EAAiY,QAAjY,EAA2Y,MAA3Y,EAAmZ,OAAnZ;EAdD,CAAb;EAiBA,IAAIC,KAAK,GAAG,IAAI/rC,MAAJ,CAAWurC,MAAM,CAACE,UAAP,CAAkBt6C,IAAlB,CAAuB,GAAvB,CAAX,EAAwC,GAAxC,CAAZ;EACA,IAAI66C,MAAM,GAAG;EACb;EACEhrC,EAAAA,KAAK,EAAE,oBADT;EAEEtJ,EAAAA,GAAG,EAAE,SAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CADa;EAMb;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEEtJ,EAAAA,GAAG,EAAE,SAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CARa;EAab;EACE0E,EAAAA,KAAK,EAAE,aADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,SAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAba;EAmBb;EACE0E,EAAAA,KAAK,EAAE,yCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,SAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnBa;EAyBb;EACE0E,EAAAA,KAAK,EAAE,0DADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,SAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzBa,EA8BV;EACD0E,EAAAA,KAAK,EAAE,0DADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,SAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA9BU,EAmCV;EACD0E,EAAAA,KAAK,EAAE,4DADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,OAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAnCU;EAyCb;EACE0E,EAAAA,KAAK,EAAE,aADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,SAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzCa;EA+Cb;EACA;EACE0E,EAAAA,KAAK,EAAE,4BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhDa;EAsDb;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtDa,EA2DV;EACD0E,EAAAA,KAAK,EAAE,oBADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,OAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA3DU,EAgEV;EACD0E,EAAAA,KAAK,EAAE,oBADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,OAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAhEU;EAsEb;EACE0E,EAAAA,KAAK,EAAE,2BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtEa;EA4Eb;EACE0E,EAAAA,KAAK,EAAE,0BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA5Ea;EAkFb;EACE0E,EAAAA,KAAK,EAAE,wBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAlFa;EAwFb;EACE0E,EAAAA,KAAK,EAAE,wBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAxFa;EA8Fb;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA9Fa;EAoGb;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApGa;EA0Gb;EACE0E,EAAAA,KAAK,EAAE,kBADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA1Ga;EA+Gb;EACE0E,EAAAA,KAAK,EAAE,kBADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA/Ga;EAoHb;EACE0E,EAAAA,KAAK,EAAE,yBADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CApHa;EAyHb;EACE0E,EAAAA,KAAK,EAAE,mBADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAzHa;EA8Hb;EACE0E,EAAAA,KAAK,EAAE,0BADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA9Ha;EAmIb;EACE0E,EAAAA,KAAK,EAAE,0BADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAnIa;EAwIb;EACE0E,EAAAA,KAAK,EAAE,kCADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAxIa;EA6Ib;EACE0E,EAAAA,KAAK,EAAE,OAAOhB,MAAP,CAAc+rC,KAAd,EAAqB,GAArB,CADT;EAEEnlC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Ia,EAkJV;EACD0E,EAAAA,KAAK,EAAE,WAAWhB,MAAX,CAAkB+rC,KAAlB,EAAyB,GAAzB,CADN;EAEDnlC,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAlJU,EAuJV;EACD0E,EAAAA,KAAK,EAAE,OAAOhB,MAAP,CAAc+rC,KAAd,EAAqB,GAArB,CADN;EAEDnlC,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAvJU,EA4JV;EACD0E,EAAAA,KAAK,EAAE,OAAOhB,MAAP,CAAc+rC,KAAd,EAAqB,GAArB,CADN;EAEDnlC,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA5JU,EAiKV;EACD0E,EAAAA,KAAK,EAAE,UAAUhB,MAAV,CAAiB+rC,KAAjB,EAAwB,GAAxB,CADN;EAEDnlC,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAjKU,EAsKV;EACD0E,EAAAA,KAAK,EAAE,UAAUhB,MAAV,CAAiB+rC,KAAjB,EAAwB,GAAxB,CADN;EAEDnlC,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAtKU;EA4Kb;EACE0E,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAU+rC,KAAV,EAAiB,SAAjB,CADT;EAEEr0C,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA5Ka,EAgLV;EACD0E,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAU+rC,KAAV,EAAiB,QAAjB,CADN;EAEDr0C,EAAAA,GAAG,EAAE,MAFJ;EAGD4E,EAAAA,MAAM,EAAE;EAHP,CAhLU;EAqLb;EACE0E,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAU+rC,KAAV,EAAiB,cAAjB,CADT;EAEEr0C,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,YAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CArLa;EA2Lb;EACEjvB,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAU+rC,KAAV,EAAiB,qCAAjB,CADT;EAEEr0C,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA3La;EAgMb;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAhMa;EAqMb;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,qBADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAvMa;EA4Mb;EACA;EACE0E,EAAAA,KAAK,EAAE,qEADT;EAEEtJ,EAAAA,GAAG,EAAE,UAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA7Ma;EAkNb;EACE0E,EAAAA,KAAK,EAAE,8EADT;EAEEtJ,EAAAA,GAAG,EAAE,UAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAlNa;EAuNb;EACE0E,EAAAA,KAAK,EAAE,wDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvNa;EA6Nb;EACE0E,EAAAA,KAAK,EAAE,yCADT;EAEEtJ,EAAAA,GAAG,EAAE,UAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA7Na,CAAb;EAkOA,IAAI2vC,QAAQ,GAAGD,MAAf;EAEA,IAAIE,YAAY,GAAG,IAAIlsC,MAAJ,CAAWurC,MAAM,CAACI,eAAP,CAAuBx6C,IAAvB,CAA4B,GAA5B,CAAX,EAA6C,GAA7C,CAAnB;EACA,IAAIg7C,MAAM,GAAG;EACb;EACEnrC,EAAAA,KAAK,EAAE,0BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CADa;EAOb;EACE0E,EAAAA,KAAK,EAAE,YAAYhB,MAAZ,CAAmBksC,YAAnB,EAAiC,GAAjC,CADT;EAEEtlC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAPa;EAab;EACE0E,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAUksC,YAAV,EAAwB,UAAxB,CADT;EAEEx0C,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAba;EAkBb;EACE0E,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAUksC,YAAV,EAAwB,wBAAxB,CADT;EAEEx0C,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAlBa;EAuBb;EACE0E,EAAAA,KAAK,EAAE,yBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvBa;EA6Bb;EACE0E,EAAAA,KAAK,EAAE,qCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Ba;EAmCb;EACE0E,EAAAA,KAAK,EAAE,2BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnCa;EAyCb;EACE0E,EAAAA,KAAK,EAAE,0BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzCa;EA+Cb;EACE0E,EAAAA,KAAK,EAAE,mBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA/Ca;EAqDb;EACE0E,EAAAA,KAAK,EAAE,sBADT;EAEEtJ,EAAAA,GAAG,EAAE,WAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CArDa;EA0Db;EACE0E,EAAAA,KAAK,EAAE,kDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA1Da;EAgEb;EACA;EACE0E,EAAAA,KAAK,EAAE,kBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjEa;EAuEb;EACE0E,EAAAA,KAAK,EAAE,iBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvEa;EA6Eb;EACE0E,EAAAA,KAAK,EAAE,qBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Ea;EAmFb;EACE0E,EAAAA,KAAK,EAAE,+BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnFa;EAyFb;EACE0E,EAAAA,KAAK,EAAE,kEADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzFa;EA+Fb;EACE0E,EAAAA,KAAK,EAAE,qCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA/Fa;EAqGb;EACE0E,EAAAA,KAAK,EAAE,mCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArGa;EA2Gb;EACE0E,EAAAA,KAAK,EAAE,yCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3Ga;EAiHb;EACE0E,EAAAA,KAAK,EAAE,gCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,YAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjHa,CAAb;EAuHA,IAAI8vC,YAAY,GAAGD,MAAnB;EAEA,IAAIE,OAAO,GAAG;EACd;EACA;EACErrC,EAAAA,KAAK,EAAE,8CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAFc;EAQd;EACA;EACE0E,EAAAA,KAAK,EAAE,mBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CATc;EAed;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAfc;EAqBd;EACE0E,EAAAA,KAAK,EAAE,sBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArBc;EA2Bd;EACA;EACE0E,EAAAA,KAAK,EAAE,iDADT;EAEEtJ,EAAAA,GAAG,EAAE,YAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA5Bc;EAiCd;EACE0E,EAAAA,KAAK,EAAE,4BADT;EAEEtJ,EAAAA,GAAG,EAAE,YAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAjCc;EAsCd;EACE0E,EAAAA,KAAK,EAAE,qBADT;EAEEtJ,EAAAA,GAAG,EAAE,YAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAtCc;EA2Cd;EACE0E,EAAAA,KAAK,EAAE,kEADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3Cc;EAiDd;EACE0E,EAAAA,KAAK,EAAE,kCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjDc;EAuDd;EACE0E,EAAAA,KAAK,EAAE,iCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvDc;EA6Dd;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,kDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA/Dc;EAqEd;EACE0E,EAAAA,KAAK,EAAE,6BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArEc;EA2Ed;EACE0E,EAAAA,KAAK,EAAE,mCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3Ec;EAiFd;EACE0E,EAAAA,KAAK,EAAE,wCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjFc;EAuFd;EACE0E,EAAAA,KAAK,EAAE,2CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvFc;EA6Fd;EACE0E,EAAAA,KAAK,EAAE,oCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Fc;EAmGd;EACE0E,EAAAA,KAAK,EAAE,gCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnGc;EAyGd;EACE0E,EAAAA,KAAK,EAAE,uCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzGc;EA+Gd;EACE0E,EAAAA,KAAK,EAAE,yCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA/Gc;EAqHd;EACE0E,EAAAA,KAAK,EAAE,sBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArHc;EA2Hd;EACE0E,EAAAA,KAAK,EAAE,+CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3Hc;EAiId;EACE0E,EAAAA,KAAK,EAAE,2CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjIc;EAuId;EACE0E,EAAAA,KAAK,EAAE,4BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvIc;EA6Id;EACE0E,EAAAA,KAAK,EAAE,sBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Ic;EAmJd;EACE0E,EAAAA,KAAK,EAAE,YADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAnJc,EAuJX;EACD0E,EAAAA,KAAK,EAAE,qDADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAvJW;EA6Jd;EACE0E,EAAAA,KAAK,EAAE,qBADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA7Jc;EAkKd;EACE0E,EAAAA,KAAK,EAAE,SADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAlKc;EAwKd;EACE0E,EAAAA,KAAK,EAAE,mCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAxKc;EA8Kd;EACE0E,EAAAA,KAAK,EAAE,mCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA9Kc;EAoLd;EACE0E,EAAAA,KAAK,EAAE,mCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApLc;EA0Ld;EACE0E,EAAAA,KAAK,EAAE,2CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA1Lc;EAgMd;EACE0E,EAAAA,KAAK,EAAE,mDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhMc;EAsMd;EACE0E,EAAAA,KAAK,EAAE,0DADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtMc;EA4Md;EACE0E,EAAAA,KAAK,EAAE,8CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA5Mc;EAkNd;EACE0E,EAAAA,KAAK,EAAE,iCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAlNc;EAwNd;EACE0E,EAAAA,KAAK,EAAE,kDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAxNc;EA8Nd;EACE0E,EAAAA,KAAK,EAAE,4BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA9Nc;EAoOd;EACE0E,EAAAA,KAAK,EAAE,wBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApOc;EA0Od;EACE0E,EAAAA,KAAK,EAAE,yCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA1Oc;EAgPd;EACE0E,EAAAA,KAAK,EAAE,8BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhPc;EAsPd;EACE0E,EAAAA,KAAK,EAAE,iEADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtPc;EA4Pd;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA5Pc;EAkQd;EACE0E,EAAAA,KAAK,EAAE,+BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAlQc;EAwQd;EACE0E,EAAAA,KAAK,EAAE,kGADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAxQc;EA8Qd;EACE0E,EAAAA,KAAK,EAAE,4CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA9Qc;EAoRd;EACE0E,EAAAA,KAAK,EAAE,kDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApRc,EAyRX;EACD0E,EAAAA,KAAK,EAAE,oDADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAzRW,EA8RX;EACD0E,EAAAA,KAAK,EAAE,iDADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA9RW;EAoSd;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApSc;EA0Sd;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA1Sc;EAgTd;EACE0E,EAAAA,KAAK,EAAE,6BADT;EAEEtJ,EAAAA,GAAG,EAAE,MAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAhTc;EAqTd;EACE0E,EAAAA,KAAK,EAAE,eADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArTc;EA2Td;EACE0E,EAAAA,KAAK,EAAE,cADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3Tc;EAiUd;EACE0E,EAAAA,KAAK,EAAE,iCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjUc;EAuUd;EACE0E,EAAAA,KAAK,EAAE,iDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvUc;EA6Ud;EACE0E,EAAAA,KAAK,EAAE,6BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Uc;EAmVd;EACE0E,EAAAA,KAAK,EAAE,SADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnVc;EAyVd;EACE0E,EAAAA,KAAK,EAAE,6BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzVc;EA+Vd;EACE0E,EAAAA,KAAK,EAAE,8BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA/Vc;EAqWd;EACE0E,EAAAA,KAAK,EAAE,gCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArWc;EA2Wd;EACE0E,EAAAA,KAAK,EAAE,oCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3Wc;EAiXd;EACE0E,EAAAA,KAAK,EAAE,uCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjXc;EAuXd;EACE0E,EAAAA,KAAK,EAAE,qCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvXc;EA6Xd;EACE0E,EAAAA,KAAK,EAAE,6CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Xc;EAmYd;EACE0E,EAAAA,KAAK,EAAE,wCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnYc;EAyYd;EACE0E,EAAAA,KAAK,EAAE,UADT;EAEEtJ,EAAAA,GAAG,EAAE,OAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAzYc,CAAd;EA+YA,IAAIqb,UAAU,GAAG,IAAI3X,MAAJ,CAAWurC,MAAM,CAACC,eAAP,CAAuBr6C,IAAvB,CAA4B,GAA5B,CAAX,EAA6C,GAA7C,CAAjB;EACA,IAAIm7C,SAAS,GAAG;EAChB;EACEtrC,EAAAA,KAAK,EAAE,oBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CADgB;EAOhB;EACE0E,EAAAA,KAAK,EAAE,eADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAPgB;EAahB;EACE0E,EAAAA,KAAK,EAAE,iBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAbgB;EAmBhB;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnBgB;EAyBhB;EACE0E,EAAAA,KAAK,EAAE,0BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzBgB;EA+BhB;EACE0E,EAAAA,KAAK,EAAE,aADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA/BgB;EAqChB;EACE0E,EAAAA,KAAK,EAAE,2BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArCgB;EA2ChB;EACE0E,EAAAA,KAAK,EAAE,sBADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA3CgB;EAgDhB;EACE0E,EAAAA,KAAK,EAAE,cADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhDgB;EAsDhB;EACE0E,EAAAA,KAAK,EAAE,WADT;EAEEtJ,EAAAA,GAAG,EAAE,eAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAtDgB;EA2DhB;EACE0E,EAAAA,KAAK,EAAE,qFADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3DgB;EAiEhB;EACE0E,EAAAA,KAAK,EAAE,mBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjEgB;EAuEhB;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvEgB;EA6EhB;EACE0E,EAAAA,KAAK,EAAE,sCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7EgB;EAmFhB;EACE0E,EAAAA,KAAK,EAAE,IAAIhB,MAAJ,CAAW2X,UAAX,EAAuB,cAAvB,CADT;EAEE/Q,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnFgB;EAyFhB;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzFgB,EA8Fb;EACD0E,EAAAA,KAAK,EAAE,iCADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,WAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA9Fa,CAAhB;EAqGA,IAAIiwC,QAAQ,GAAG;EACf;EACA;EACEvrC,EAAAA,KAAK,EAAE,uBADT;EAEEtJ,EAAAA,GAAG,EAAE,aAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAFe;EAOf;EACE0E,EAAAA,KAAK,EAAE,4BADT;EAEEtJ,EAAAA,GAAG,EAAE,aAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAPe;EAYf;EACA;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEEtJ,EAAAA,GAAG,EAAE,UAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAbe;EAkBf;EACE0E,EAAAA,KAAK,EAAE,gBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,SAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAlBe;EAwBf;EACA;EACE0E,EAAAA,KAAK,EAAE,qBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzBe,EA8BZ;EACD0E,EAAAA,KAAK,EAAE,sBADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA9BY;EAoCf;EACE0E,EAAAA,KAAK,EAAE,yBADT;EAEEtJ,EAAAA,GAAG,EAAE,OAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CApCe;EAyCf;EACE0E,EAAAA,KAAK,EAAE,wBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzCe,EA8CZ;EACD0E,EAAAA,KAAK,EAAE,YADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA9CY,EAmDZ;EACD0E,EAAAA,KAAK,EAAE,eADN;EAEDtJ,EAAAA,GAAG,EAAE,MAFJ;EAGD4E,EAAAA,MAAM,EAAE;EAHP,CAnDY;EAwDf;EACE0E,EAAAA,KAAK,EAAE,+BADT;EAEEtJ,EAAAA,GAAG,EAAE,OAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAxDe;EA6Df;EACE0E,EAAAA,KAAK,EAAE,iCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7De;EAmEf;EACE0E,EAAAA,KAAK,EAAE,uCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnEe,EAwEZ;EACD0E,EAAAA,KAAK,EAAE,UADN;EAEDtJ,EAAAA,GAAG,EAAE,OAFJ;EAGD4E,EAAAA,MAAM,EAAE;EAHP,CAxEY;EA6Ef;EACE0E,EAAAA,KAAK,EAAE,qBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Ee;EAmFf;EACE0E,EAAAA,KAAK,EAAE,qEADT;EAEEtJ,EAAAA,GAAG,EAAE,OAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAnFe;EAwFf;EACE0E,EAAAA,KAAK,EAAE,sEADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAxFe,CAAf;EA+FA,IAAIgc,KAAK,GAAG,IAAItY,MAAJ,CAAWurC,MAAM,CAACK,UAAP,CAAkBz6C,IAAlB,CAAuB,GAAvB,CAAX,EAAwC,GAAxC,CAAZ;EACA,IAAIq7C,MAAM,GAAG;EACb;EACA;EACExrC,EAAAA,KAAK,EAAE,gCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAFa;EAQb;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CARa;EAcb;EACE0E,EAAAA,KAAK,EAAE,+BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAda;EAoBb;EACE0E,EAAAA,KAAK,EAAE,mCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,cAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApBa;EA0Bb;EACE0E,EAAAA,KAAK,EAAE,kDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA1Ba;EAgCb;EACE0E,EAAAA,KAAK,EAAE,kCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,cAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhCa;EAsCb;EACE0E,EAAAA,KAAK,EAAE,6BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,cAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtCa;EA4Cb;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA9Ca;EAoDb;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,cAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApDa;EA0Db;EACA;EACE0E,EAAAA,KAAK,EAAE,gDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3Da;EAiEb;EACE0E,EAAAA,KAAK,EAAE,wCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjEa;EAuEb;EACE0E,EAAAA,KAAK,EAAE,iDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvEa;EA6Eb;EACE0E,EAAAA,KAAK,EAAE,yEADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Ea;EAmFb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,wCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA5Fa;EAkGb;EACE0E,EAAAA,KAAK,EAAE,gDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAlGa;EAwGb;EACE0E,EAAAA,KAAK,EAAE,2BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,CAAC,WAAD,EAAc,MAAd,CAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAxGa;EA8Gb;EACE0E,EAAAA,KAAK,EAAE,iDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA9Ga;EAoHb;EACE0E,EAAAA,KAAK,EAAE,kCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApHa;EA0Hb;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,yEADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA5Ha;EAkIb;EACE0E,EAAAA,KAAK,EAAE,6DADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAlIa;EAwIb;EACE0E,EAAAA,KAAK,EAAE,+BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAxIa;EA8Ib;EACA;EACE0E,EAAAA,KAAK,EAAE,0BADT;EAEEtJ,EAAAA,GAAG,EAAE,aAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA/Ia,EAmJV;EACD0E,EAAAA,KAAK,EAAE,2BADN;EAEDtJ,EAAAA,GAAG,EAAE,aAFJ;EAGD4E,EAAAA,MAAM,EAAE;EAHP,CAnJU,EAuJV;EACD0E,EAAAA,KAAK,EAAE,4BADN;EAEDtJ,EAAAA,GAAG,EAAE,aAFJ;EAGD4E,EAAAA,MAAM,EAAE;EAHP,CAvJU,EA2JV;EACD0E,EAAAA,KAAK,EAAE,2BADN;EAEDtJ,EAAAA,GAAG,EAAE,aAFJ;EAGD4E,EAAAA,MAAM,EAAE;EAHP,CA3JU;EAgKb;EACE0E,EAAAA,KAAK,EAAE,6BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhKa;EAsKb;EACE0E,EAAAA,KAAK,EAAE,+EADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtKa;EA4Kb;EACA;EACE0E,EAAAA,KAAK,EAAE,0CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Ka;EAmLb;EACE0E,EAAAA,KAAK,EAAE,6CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnLa;EAyLb;EACA;EACE0E,EAAAA,KAAK,EAAE,kCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,YAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA1La;EAgMb;EACE0E,EAAAA,KAAK,EAAE,gBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,YAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhMa;EAsMb;EACE0E,EAAAA,KAAK,EAAE,sFADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,YAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtMa;EA4Mb;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,mBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA9Ma;EAoNb;EACE0E,EAAAA,KAAK,EAAE,qDADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CApNa;EA0Nb;EACE0E,EAAAA,KAAK,EAAE,+BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA1Na;EAgOb;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,YAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhOa;EAsOb;EACE0E,EAAAA,KAAK,EAAE,2CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtOa;EA4Ob;EACE0E,EAAAA,KAAK,EAAE,WAAWhB,MAAX,CAAkBsY,KAAlB,EAAyB,GAAzB,CADT;EAEE1R,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA5Oa,EAiPV;EACD0E,EAAAA,KAAK,EAAE,YAAYhB,MAAZ,CAAmBsY,KAAnB,EAA0B,GAA1B,CADN;EAED1R,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAjPU;EAuPb;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,cAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvPa;EA6Pb;EACE0E,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAUsY,KAAV,EAAiB,UAAjB,CADT;EAEE5gB,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA7Pa;EAkQb;EACE0E,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAUsY,KAAV,EAAiB,uBAAjB,CADT;EAEE5gB,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAlQa;EAuQb;EACE0E,EAAAA,KAAK,EAAE,uCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvQa,EA4QV;EACD0E,EAAAA,KAAK,EAAE,uCADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CA5QU,EAiRV;EACD0E,EAAAA,KAAK,EAAE,uCADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,MAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CAjRU,CAAb;EAuRA,IAAImwC,QAAQ,GAAGD,MAAf;EAEA,IAAIE,MAAM,GAAG;EACb;EACA;EACE1rC,EAAAA,KAAK,EAAE,mEADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAFa;EAOb;EACE0E,EAAAA,KAAK,EAAE,gFADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAPa;EAab;EACE0E,EAAAA,KAAK,EAAE,eADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAba;EAmBb;EACE0E,EAAAA,KAAK,EAAE,sGADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAnBa;EAwBb;EACE0E,EAAAA,KAAK,EAAE,gFADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAxBa;EA6Bb;EACE0E,EAAAA,KAAK,EAAE,yBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7Ba;EAmCb;EACE0E,EAAAA,KAAK,EAAE,wEADT;EAEEtJ,EAAAA,GAAG,EAAE,SAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAnCa;EAwCb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA/Ca,CAAb;EAiDA,IAAIqwC,QAAQ,GAAGD,MAAf;EAEA,IAAIE,MAAM,GAAG;EACb;EACE5rC,EAAAA,KAAK,EAAE,mBADT;EAEEtJ,EAAAA,GAAG,EAAE,cAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CADa;EAMb;EACE0E,EAAAA,KAAK,EAAE,mCADT;EAEEtJ,EAAAA,GAAG,EAAE,cAFP;EAGE4E,EAAAA,MAAM,EAAE,cAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CANa;EAYb;EACEjvB,EAAAA,KAAK,EAAE,wBADT;EAEEtJ,EAAAA,GAAG,EAAE,cAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAZa;EAiBb;EACE0E,EAAAA,KAAK,EAAE,2BADT;EAEEtJ,EAAAA,GAAG,EAAE,cAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAjBa;EAsBb;EACE0E,EAAAA,KAAK,EAAE,yCADT;EAEEtJ,EAAAA,GAAG,EAAE,cAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAtBa;EA2Bb;EACE0E,EAAAA,KAAK,EAAE,gBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,cAHP;EAIE4E,EAAAA,MAAM,EAAE,aAJV;EAKE2zB,EAAAA,IAAI,EAAE;EALR,CA3Ba;EAkCb;EACEjvB,EAAAA,KAAK,EAAE,8DADT;EAEEtJ,EAAAA,GAAG,EAAE,cAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAlCa;EAuCb;EACE0E,EAAAA,KAAK,EAAE,gCADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAvCa,CAAb;EA6CA,IAAI8b,KAAK,GAAG,IAAIpY,MAAJ,CAAWurC,MAAM,CAACO,UAAP,CAAkB36C,IAAlB,CAAuB,GAAvB,CAAX,EAAwC,GAAxC,CAAZ;EACA,IAAI07C,MAAM,GAAG,IAAI7sC,MAAJ,CAAWurC,MAAM,CAACG,WAAP,CAAmBv6C,IAAnB,CAAwB,GAAxB,CAAX,EAAyC,GAAzC,CAAb;EACA,IAAIgoC,MAAM,GAAG,IAAIn5B,MAAJ,CAAWurC,MAAM,CAACM,WAAP,CAAmB16C,IAAnB,CAAwB,GAAxB,CAAX,EAAyC,GAAzC,CAAb;EACA,IAAI2Q,IAAI,GAAG;EACX;EACEd,EAAAA,KAAK,EAAE,qCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CADW,EAMR;EACD0E,EAAAA,KAAK,EAAE,oFADN;EAED4F,EAAAA,KAAK,EAAE,CAFN;EAGDlP,EAAAA,GAAG,EAAE,WAHJ;EAID4E,EAAAA,MAAM,EAAE;EAJP,CANQ;EAYX;EACA;EACE0E,EAAAA,KAAK,EAAE,2CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAbW;EAmBX;EACE0E,EAAAA,KAAK,EAAE,iCADT;EAEEtJ,EAAAA,GAAG,EAAE,YAFP;EAGE4E,EAAAA,MAAM,EAAE,gBAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CAnBW,EAwBR;EACDjvB,EAAAA,KAAK,EAAE,gCADN;EAEDtJ,EAAAA,GAAG,EAAE,UAFJ;EAGD4E,EAAAA,MAAM,EAAE,gBAHP;EAID2zB,EAAAA,IAAI,EAAE;EAJL,CAxBQ;EA8BX;EACEjvB,EAAAA,KAAK,EAAE,0GADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA9BW;EAoCX;EACA;EACE0E,EAAAA,KAAK,EAAE,0CADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArCW;EA2CX;EACE0E,EAAAA,KAAK,EAAE,0BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3CW,EAgDR;EACD0E,EAAAA,KAAK,EAAE,2EADN;EAEDtJ,EAAAA,GAAG,EAAE,QAFJ;EAGD4E,EAAAA,MAAM,EAAE,6BAHP;EAID2zB,EAAAA,IAAI,EAAE;EAJL,CAhDQ;EAsDX;EACEjvB,EAAAA,KAAK,EAAE,oBADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,iBAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CAtDW;EA4DX;EACEjvB,EAAAA,KAAK,EAAE,oBADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA5DW;EAiEX;EACE0E,EAAAA,KAAK,EAAE,oCADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAjEW;EAsEX;EACE0E,EAAAA,KAAK,EAAE,4BADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,CAAC,SAAD,EAAY,QAAZ,CAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtEW;EA4EX;EACA;EACE0E,EAAAA,KAAK,EAAE,oBADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA7EW;EAkFX;EACE0E,EAAAA,KAAK,EAAE,qBADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAlFW;EAuFX;EACE0E,EAAAA,KAAK,EAAE,sBADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,cAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CAvFW;EA6FX;EACEjvB,EAAAA,KAAK,EAAE,yCADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,cAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CA7FW;EAmGX;EACEjvB,EAAAA,KAAK,EAAE,sBADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAnGW;EAwGX;EACE0E,EAAAA,KAAK,EAAE,uCADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAxGW;EA6GX;EACE0E,EAAAA,KAAK,EAAE,uBADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE,eAJV;EAKE2zB,EAAAA,IAAI,EAAE;EALR,CA7GW;EAoHX;EACEjvB,EAAAA,KAAK,EAAE,0BADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,WAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CApHW;EA0HX;EACEjvB,EAAAA,KAAK,EAAE,qBADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA1HW;EA+HX;EACE0E,EAAAA,KAAK,EAAE,2BADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA/HW;EAoIX;EACE0E,EAAAA,KAAK,EAAE,iCADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CApIW;EAyIX;EACE0E,EAAAA,KAAK,EAAE,mCADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAzIW;EA8IX;EACE0E,EAAAA,KAAK,EAAE,oCADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CA9IW;EAmJX;EACE0E,EAAAA,KAAK,EAAE,2BADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAnJW;EAwJX;EACE0E,EAAAA,KAAK,EAAE,qEADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAxJW;EA6JX;EACE0E,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAUoY,KAAV,EAAiB,UAAjB,CADT;EAEE1gB,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,WAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CA7JW;EAmKX;EACEjvB,EAAAA,KAAK,EAAE,GAAGhB,MAAH,CAAUoY,KAAV,EAAiB,wBAAjB,CADT;EAEE1gB,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,aAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CAnKW;EAyKX;EACEjvB,EAAAA,KAAK,EAAE,yDAAyDhB,MAAzD,CAAgE6sC,MAAhE,EAAwE,GAAxE,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzKW;EA+KX;EACE0E,EAAAA,KAAK,EAAE,gBAAgBhB,MAAhB,CAAuB6sC,MAAvB,EAA+B,GAA/B,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA/KW;EAqLX;EACA;EACA;EACA;EACA;EACE0E,EAAAA,KAAK,EAAE,IAAIhB,MAAJ,CAAW6sC,MAAX,EAAmB,UAAnB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzLW;EA+LX;EACE0E,EAAAA,KAAK,EAAE,UADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,MAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA/LW;EAqMX;EACE0E,EAAAA,KAAK,EAAE,WAAWhB,MAAX,CAAkB6sC,MAAlB,EAA0B,GAA1B,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CArMW;EA2MX;EACE0E,EAAAA,KAAK,EAAE,YAAYhB,MAAZ,CAAmB6sC,MAAnB,EAA2B,GAA3B,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3MW;EAiNX;EACE0E,EAAAA,KAAK,EAAE,IAAIhB,MAAJ,CAAW6sC,MAAX,EAAmB,WAAnB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjNW;EAuNX;EACE0E,EAAAA,KAAK,EAAE,SAAShB,MAAT,CAAgB6sC,MAAhB,EAAwB,GAAxB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAvNW;EA6NX;EACE0E,EAAAA,KAAK,EAAE,SAAShB,MAAT,CAAgB6sC,MAAhB,EAAwB,GAAxB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA7NW;EAmOX;EACE0E,EAAAA,KAAK,EAAE,QAAQhB,MAAR,CAAe6sC,MAAf,EAAuB,GAAvB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,QAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAnOW;EAyOX;EACE0E,EAAAA,KAAK,EAAE,SAAShB,MAAT,CAAgB6sC,MAAhB,EAAwB,GAAxB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAzOW;EA+OX;EACA;EACE0E,EAAAA,KAAK,EAAE,SAAShB,MAAT,CAAgB6sC,MAAhB,EAAwB,GAAxB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAhPW;EAsPX;EACE0E,EAAAA,KAAK,EAAE,SAAShB,MAAT,CAAgB6sC,MAAhB,EAAwB,GAAxB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAtPW;EA4PX;EACE0E,EAAAA,KAAK,EAAE,UAAUhB,MAAV,CAAiB6sC,MAAjB,EAAyB,GAAzB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA5PW;EAkQX;EACE0E,EAAAA,KAAK,EAAE,IAAIhB,MAAJ,CAAW6sC,MAAX,EAAmB,eAAnB,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAlQW;EAwQX;EACE0E,EAAAA,KAAK,EAAE,cAAchB,MAAd,CAAqB6sC,MAArB,EAA6B,GAA7B,CADT;EAEEjmC,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,OAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAxQW;EA8QX;EACE0E,EAAAA,KAAK,EAAE,sCADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,iBAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CA9QW;EAoRX;EACEjvB,EAAAA,KAAK,EAAE,qCADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,gBAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CApRW;EA0RX;EACEjvB,EAAAA,KAAK,EAAE,8BADT;EAEEtJ,EAAAA,GAAG,EAAE,SAFP;EAGE4E,EAAAA,MAAM,EAAE,iBAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CA1RW;EAgSX;EACEjvB,EAAAA,KAAK,EAAE,gDADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE;EAHV,CAhSW;EAqSX;EACE0E,EAAAA,KAAK,EAAE,2BADT;EAEEtJ,EAAAA,GAAG,EAAE,QAFP;EAGE4E,EAAAA,MAAM,EAAE,aAHV;EAIE2zB,EAAAA,IAAI,EAAE;EAJR,CArSW;EA2SX;EACEjvB,EAAAA,KAAK,EAAE,yCADT;EAEE4F,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,UAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CA3SW;EAiTX;EACE0E,EAAAA,KAAK,EAAE,IAAIhB,MAAJ,CAAWm5B,MAAX,EAAmB,4BAAnB,CADT;EAEEvyB,EAAAA,KAAK,EAAE,CAFT;EAGElP,EAAAA,GAAG,EAAE,WAHP;EAIE4E,EAAAA,MAAM,EAAE;EAJV,CAjTW,CAAX;EAuTA,IAAIwwC,SAAS,GAAGhrC,IAAhB;EAEA,IAAIkG,OAAO,GAAG,EAAd;EACAA,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAesrC,OAAf,CAAV;EACAtjC,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAeisC,QAAf,CAAV;EACAjkC,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAeosC,YAAf,CAAV;EACApkC,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAeqsC,OAAf,CAAV;EACArkC,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAessC,SAAf,CAAV;EACAtkC,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAeusC,QAAf,CAAV;EACAvkC,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAeysC,QAAf,CAAV;EACAzkC,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAe2sC,QAAf,CAAV;EACA3kC,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAe4sC,MAAf,CAAV;EACA5kC,OAAO,GAAGA,OAAO,CAAChI,MAAR,CAAe8sC,SAAf,CAAV;;EAEA,IAAI3d,aAAa,GAAG,SAASA,aAAT,CAAuBp4B,GAAvB,EAA4B;EAC9C,MAAIq4B,QAAQ,GAAG,EAAf;EACA,MAAIC,SAAS,GAAG,EAAhB;EACAt4B,EAAAA,GAAG,CAAC9F,OAAJ,CAAY,UAAU7F,GAAV,EAAe;EACzB,QAAIA,GAAG,CAACsZ,QAAJ,KAAiB,IAAjB,IAAyBtZ,GAAG,CAAC+M,QAAJ,KAAiB,IAA9C,EAAoD;EAClD;EACD;;EAED,QAAI/M,GAAG,CAACsM,GAAJ,KAAYnB,SAAhB,EAA2B;EACzB64B,MAAAA,QAAQ,CAAChwB,IAAT,CAAchU,GAAG,CAACsM,GAAlB;EACD;;EAED,QAAItM,GAAG,CAAC+H,IAAJ,KAAaoD,SAAjB,EAA4B;EAC1B84B,MAAAA,SAAS,CAACjwB,IAAV,CAAehU,GAAG,CAAC+H,IAAnB;EACD;EACF,GAZD;EAaA,SAAO;EACLwE,IAAAA,IAAI,EAAEyzC,OAAO,CAAChc,QAAD,CADR;EAEL1iB,IAAAA,KAAK,EAAE0+B,OAAO,CAAC/b,SAAD;EAFT,GAAP;EAID,CApBD;;;EAuBA,IAAI0d,QAAQ,GAAG,SAASA,QAAT,CAAkB58C,CAAlB,EAAqB;EAClC,MAAI2gC,IAAI,GAAG,EAAX;EACA,MAAIkc,KAAK,GAAG78C,CAAC,CAAC4G,GAAF,CAAMmJ,MAAN,CAAa,UAAU5P,CAAV,EAAa;EACpC,WAAOA,CAAC,CAACwH,MAAF,KAAavB,SAApB;EACD,GAFW,CAAZ;;EAIA,MAAIy2C,KAAK,CAAC/gD,MAAN,KAAiB,CAArB,EAAwB;EACtB,QAAID,CAAC,GAAGmE,CAAC,CAAC4G,GAAF,CAAM4M,SAAN,CAAgB,UAAUrT,CAAV,EAAa;EACnC,aAAOA,CAAC,CAACwH,MAAF,KAAavB,SAApB;EACD,KAFO,CAAR;EAGAjK,IAAAA,MAAM,CAAC0E,IAAP,CAAYb,CAAC,CAAC4G,GAAF,CAAM/K,CAAN,EAAS8L,MAArB,EAA6B7G,OAA7B,CAAqC,UAAUN,CAAV,EAAa;EAChD,UAAIs8C,IAAI,GAAG3gD,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBzL,CAAlB,CAAX;EACA88C,MAAAA,IAAI,CAACl2C,GAAL,GAAWk2C,IAAI,CAACl2C,GAAL,CAAS6M,KAAT,CAAe,CAAf,CAAX;EACAqpC,MAAAA,IAAI,CAACl2C,GAAL,CAAS/K,CAAT,IAAcM,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBqxC,IAAI,CAACl2C,GAAL,CAAS/K,CAAT,CAAlB,CAAd;EACAihD,MAAAA,IAAI,CAACl2C,GAAL,CAAS/K,CAAT,EAAYmH,IAAZ,GAAmBxC,CAAnB;EACA,aAAOs8C,IAAI,CAACl2C,GAAL,CAAS/K,CAAT,EAAYgM,QAAnB;EACA,aAAOi1C,IAAI,CAACl2C,GAAL,CAAS/K,CAAT,EAAY8L,MAAnB,CANgD;;EAQhDg5B,MAAAA,IAAI,CAAC1xB,IAAL,CAAU6tC,IAAV;EACD,KATD;EAUD;;EAED,SAAOnc,IAAP;EACD,CAvBD;;;EA0BA,IAAI3sB,GAAG,GAAG,EAAV;EACA6D,OAAO,CAAC/W,OAAR,CAAgB,UAAUd,CAAV,EAAa;EAC3BA,EAAAA,CAAC,CAAC4G,GAAF,GAAQ8T,WAAW,CAAC1a,CAAC,CAAC6Q,KAAH,CAAnB;EACA,MAAIksC,UAAU,GAAGH,QAAQ,CAAC58C,CAAD,CAAzB;;EAEA,MAAI+8C,UAAU,CAACjhD,MAAX,GAAoB,CAAxB,EAA2B;EACzBkY,IAAAA,GAAG,GAAGA,GAAG,CAACnE,MAAJ,CAAWktC,UAAX,CAAN;EACD,GAFD,MAEO;EACL/oC,IAAAA,GAAG,CAAC/E,IAAJ,CAASjP,CAAT,EADK;EAEN;EACF,CATD;EAUAgU,GAAG,CAAClT,OAAJ,CAAY,UAAUd,CAAV,EAAa;EACvBA,EAAAA,CAAC,CAACg9C,QAAF,GAAahe,aAAa,CAACh/B,CAAC,CAAC4G,GAAH,CAA1B;EACA,SAAO5G,CAAP;EACD,CAHD;EAIA;;EAEA,IAAIi9C,SAAS,GAAGjpC,GAAhB;;EAEA,IAAIkpC,QAAQ,GAAG,SAASA,QAAT,CAAkBC,OAAlB,EAA2B;EACxC,MAAIA,OAAO,CAACrhD,MAAR,KAAmB,CAAvB,EAA0B;EACxB,WAAO,EAAP;EACD;;EAED,MAAIb,GAAG,GAAG,EAAV;EACAkiD,EAAAA,OAAO,CAACr8C,OAAR,CAAgB,UAAU2L,GAAV,EAAe;EAC7BA,IAAAA,GAAG,GAAGwuC,OAAO,CAACxuC,GAAD,CAAb;;EAEA,SAAK,IAAI5Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Q,GAAG,CAAC3Q,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;EACnCZ,MAAAA,GAAG,CAACwR,GAAG,CAAC5Q,CAAD,CAAJ,CAAH,GAAcZ,GAAG,CAACwR,GAAG,CAAC5Q,CAAD,CAAJ,CAAH,IAAe,CAA7B;EACAZ,MAAAA,GAAG,CAACwR,GAAG,CAAC5Q,CAAD,CAAJ,CAAH,IAAe,CAAf;EACD;EACF,GAPD;EAQA,MAAI8X,GAAG,GAAGxX,MAAM,CAAC0E,IAAP,CAAY5F,GAAZ,CAAV;EACA0Y,EAAAA,GAAG,GAAGA,GAAG,CAAC5D,MAAJ,CAAW,UAAUjQ,CAAV,EAAa;EAC5B,WAAO7E,GAAG,CAAC6E,CAAD,CAAH,KAAWq9C,OAAO,CAACrhD,MAA1B;EACD,GAFK,CAAN;EAGA6X,EAAAA,GAAG,GAAGA,GAAG,CAACpE,GAAJ,CAAQ,UAAUivB,GAAV,EAAe;EAC3B,WAAOnlB,MAAM,CAACmlB,GAAD,CAAb;EACD,GAFK,CAAN;EAGA,SAAO7qB,GAAP;EACD,CAtBD;;EAwBA,IAAIypC,MAAM,GAAG,SAASA,MAAT,CAAgBtrC,GAAhB,EAAqB;EAChC;EACAmrC,EAAAA,SAAS,CAACn8C,OAAV,CAAkB,UAAUd,CAAV,EAAa;EAC7B,QAAIq9C,UAAU,GAAG,EAAjB;EACAr9C,IAAAA,CAAC,CAACg9C,QAAF,CAAWzgC,KAAX,CAAiBzb,OAAjB,CAAyB,UAAUN,CAAV,EAAa;EACpC68C,MAAAA,UAAU,CAACpuC,IAAX,CAAgB6C,GAAG,CAACqtB,MAAJ,CAAW5iB,KAAX,CAAiB/b,CAAjB,KAAuB,EAAvC;EACD,KAFD;EAGAR,IAAAA,CAAC,CAACg9C,QAAF,CAAWx1C,IAAX,CAAgB1G,OAAhB,CAAwB,UAAUyG,GAAV,EAAe;EACrC81C,MAAAA,UAAU,CAACpuC,IAAX,CAAgB6C,GAAG,CAACqtB,MAAJ,CAAW33B,IAAX,CAAgBD,GAAhB,KAAwB,EAAxC;EACD,KAFD;EAGA,QAAI+1C,OAAO,GAAGJ,QAAQ,CAACG,UAAD,CAAtB;;EAEA,QAAIC,OAAO,CAACxhD,MAAR,KAAmB,CAAvB,EAA0B;EACxB;EACD;;EAED,QAAIijB,OAAO,GAAGu+B,OAAO,CAAC/tC,GAAR,CAAY,UAAU1I,KAAV,EAAiB;EACzC,aAAOiL,GAAG,CAACH,IAAJ,CAAS9K,KAAT,CAAP;EACD,KAFa,CAAd;EAGA,QAAI02C,MAAM,GAAGzrC,GAAG,CAACzC,SAAJ,CAAc0P,OAAd,CAAb,CAjB6B;;EAmB7B,QAAIlO,KAAK,GAAG0sC,MAAM,CAAC1sC,KAAP,CAAa7Q,CAAC,CAAC4G,GAAf,EAAoB5G,CAAC,CAACyW,KAAtB,CAAZ;;EAEA,QAAI5F,KAAK,CAAChO,KAAV,EAAiB;EACf,UAAI7C,CAAC,CAAC8/B,IAAF,KAAW,IAAf,EAAqB;EACnBjvB,QAAAA,KAAK,CAAC5C,OAAN,CAAcjO,CAAC,CAACuH,GAAhB,EAAqBvH,CAAC,CAACmM,MAAvB;EACD,OAFD,MAEO;EACL0E,QAAAA,KAAK,CAACtJ,GAAN,CAAUvH,CAAC,CAACuH,GAAZ,EAAiBvH,CAAC,CAACmM,MAAnB;EACD;EACF;EACF,GA5BD;EA6BD,CA/BD;;EAiCA,IAAIqxC,QAAQ,GAAGJ,MAAf;EAEA;EACA;;EAEA,IAAIK,WAAW,GAAG,SAASA,WAAT,CAAqB3rC,GAArB,EAA0B;EAC1C0rC,EAAAA,QAAQ,CAAC1rC,GAAD,CAAR;EACAkpC,EAAAA,OAAO,CAAClpC,GAAD,CAAP;EACA,SAAOA,GAAP;EACD,CAJD;;EAMA,IAAI4rC,aAAa,GAAGD,WAApB;EAEA;;EAEA,IAAI3b,MAAM,GAAG,SAASA,MAAT,CAAgBhwB,GAAhB,EAAqB;EAChC,MAAIlD,KAAK,GAAGkD,GAAG,CAACysB,QAAJ,EAAZ,CADgC;;EAGhCzsB,EAAAA,GAAG,GAAGmgC,OAAO,CAACngC,GAAD,EAAMlD,KAAN,CAAb,CAHgC;;EAKhCkD,EAAAA,GAAG,GAAGukC,YAAY,CAACvkC,GAAD,EAAMlD,KAAN,CAAlB,CALgC;;EAOhCkD,EAAAA,GAAG,GAAG6oC,eAAe,CAAC7oC,GAAD,CAArB,CAPgC;;EAShCA,EAAAA,GAAG,CAACjD,KAAJ,GATgC;;EAWhCiD,EAAAA,GAAG,GAAG4rC,aAAa,CAAC5rC,GAAD,CAAnB,CAXgC;;EAahCA,EAAAA,GAAG,CAACwvB,OAAJ,GAbgC;;EAehCxvB,EAAAA,GAAG,CAACtJ,KAAJ,CAAU20B,OAAV,CAAkBr8B,OAAlB,CAA0B,UAAUsC,EAAV,EAAc;EACtCA,IAAAA,EAAE,CAAC0O,GAAD,CAAF;EACD,GAFD;EAGA,SAAOA,GAAP;EACD,CAnBD;;EAqBA,IAAI6rC,SAAS,GAAG7b,MAAhB;;EAEA,IAAI8b,WAAW,GAAG,SAASC,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACA,MAAIC,aAAa,gBAAgB,UAAUC,IAAV,EAAgB;EAC/CvhD,IAAAA,SAAS,CAACshD,aAAD,EAAgBC,IAAhB,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAAC6/C,aAAD,CAAzB;;EAEA,aAASA,aAAT,GAAyB;EACvBziD,MAAAA,eAAe,CAAC,IAAD,EAAOyiD,aAAP,CAAf;;EAEA,aAAOE,MAAM,CAACv/C,KAAP,CAAa,IAAb,EAAmBD,SAAnB,CAAP;EACD;;EAEDnC,IAAAA,YAAY,CAACyhD,aAAD,EAAgB,CAAC;EAC3B1hD,MAAAA,GAAG,EAAE,cADsB;EAE3BQ,MAAAA,KAAK,EAAE,SAASqhD,YAAT,GAAwB;EAC7B,aAAK3f,QAAL,GAAgBz9B,OAAhB,CAAwB,UAAUT,CAAV,EAAa;EACnC,cAAIA,CAAC,CAACmH,IAAF,CAAOgD,YAAP,KAAwB,IAAxB,IAAgCnK,CAAC,CAACmO,IAAtC,EAA4C;EAC1CnO,YAAAA,CAAC,CAACuC,IAAF,GAASvC,CAAC,CAACuC,IAAF,CAAOb,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;EACD;;EAED,cAAIjD,GAAG,GAAGuB,CAAC,CAACtB,IAAF,CAAOgD,OAAP,CAAe,IAAf,EAAqB,EAArB,CAAV;EACA1B,UAAAA,CAAC,CAACoO,GAAF,CAAM3P,GAAN;EACD,SAPD;EAQA,eAAO,IAAP;EACD;EAZ0B,KAAD,EAazB;EACDzC,MAAAA,GAAG,EAAE,YADJ;EAEDQ,MAAAA,KAAK,EAAE,SAASshD,UAAT,GAAsB;EAC3B,aAAK5f,QAAL,GAAgBz9B,OAAhB,CAAwB,UAAUT,CAAV,EAAa;EACnCA,UAAAA,CAAC,CAACuC,IAAF,GAASvC,CAAC,CAACuC,IAAF,CAAOb,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;EACA1B,UAAAA,CAAC,CAACuC,IAAF,GAAS,MAAMvC,CAAC,CAACuC,IAAjB;EACD,SAHD;EAIA,eAAO,IAAP;EACD;EARA,KAbyB,CAAhB,CAAZ;;EAwBA,WAAOm7C,aAAP;EACD,GApCgC,CAoC/BD,GApC+B,CAAjC;;EAsCAC,EAAAA,aAAa,CAAC1iD,SAAd,CAAwByrC,MAAxB,GAAiCiX,aAAa,CAAC1iD,SAAd,CAAwB6iD,YAAzD;;EAEAJ,EAAAA,GAAG,CAACziD,SAAJ,CAAckP,aAAd,GAA8B,UAAUtK,CAAV,EAAa;EACzC,QAAI4Q,KAAK,GAAG,KAAKA,KAAL,CAAW,eAAX,CAAZ;;EAEA,QAAI,OAAO5Q,CAAP,KAAa,QAAjB,EAA2B;EACzB4Q,MAAAA,KAAK,GAAGA,KAAK,CAAC9B,GAAN,CAAU9O,CAAV,CAAR;EACD;;EAED,WAAO,IAAI89C,aAAJ,CAAkBltC,KAAK,CAACc,IAAxB,EAA8B,IAA9B,EAAoC,KAAKnJ,KAAzC,CAAP;EACD,GARD;;EAUA,SAAOs1C,GAAP;EACD,CArDD;;EAuDA,IAAIC,aAAa,GAAGH,WAApB;EAEA,IAAIp5C,SAAS,GAAG,IAAhB;;EAEA,IAAI45C,WAAW,GAAG,SAASP,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACA,MAAIO,QAAQ,gBAAgB,UAAUL,IAAV,EAAgB;EAC1CvhD,IAAAA,SAAS,CAAC4hD,QAAD,EAAWL,IAAX,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAACmgD,QAAD,CAAzB;;EAEA,aAASA,QAAT,GAAoB;EAClB/iD,MAAAA,eAAe,CAAC,IAAD,EAAO+iD,QAAP,CAAf;;EAEA,aAAOJ,MAAM,CAACv/C,KAAP,CAAa,IAAb,EAAmBD,SAAnB,CAAP;EACD;;EAEDnC,IAAAA,YAAY,CAAC+hD,QAAD,EAAW,CAAC;EACtBhiD,MAAAA,GAAG,EAAE,cADiB;EAEtBQ,MAAAA,KAAK,EAAE,SAASqhD,YAAT,GAAwB;EAC7B,aAAK3f,QAAL,GAAgBz9B,OAAhB,CAAwB,UAAUT,CAAV,EAAa;EACnC,cAAIvB,GAAG,GAAGuB,CAAC,CAACtB,IAAF,CAAOgD,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAV;EACA1B,UAAAA,CAAC,CAACoO,GAAF,CAAM3P,GAAN;EACD,SAHD;EAIA,eAAO,IAAP;EACD;EARqB,KAAD,EASpB;EACDzC,MAAAA,GAAG,EAAE,YADJ;EAEDQ,MAAAA,KAAK,EAAE,SAASshD,UAAT,GAAsB;EAC3B,aAAK5f,QAAL,GAAgBz9B,OAAhB,CAAwB,UAAUT,CAAV,EAAa;EACnC,cAAIvB,GAAG,GAAGuB,CAAC,CAACtB,IAAF,CAAOgD,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAV;EACAjD,UAAAA,GAAG,GAAGA,GAAG,CAACF,KAAJ,CAAU,EAAV,EAAcoC,IAAd,CAAmB,GAAnB,CAAN,CAFmC;;EAInC,cAAIwD,SAAS,CAAChD,IAAV,CAAenB,CAAC,CAACuC,IAAjB,MAA2B,KAA/B,EAAsC;EACpC9D,YAAAA,GAAG,IAAI,GAAP;EACD;;EAEDuB,UAAAA,CAAC,CAACoO,GAAF,CAAM3P,GAAN;EACD,SATD;EAUA,eAAO,IAAP;EACD;EAdA,KAToB,CAAX,CAAZ;;EA0BA,WAAOu/C,QAAP;EACD,GAtC2B,CAsC1BP,GAtC0B,CAA5B;;EAwCAO,EAAAA,QAAQ,CAAChjD,SAAT,CAAmByrC,MAAnB,GAA4BuX,QAAQ,CAAChjD,SAAT,CAAmB6iD,YAA/C;EACAG,EAAAA,QAAQ,CAAChjD,SAAT,CAAmBsrC,KAAnB,GAA2B0X,QAAQ,CAAChjD,SAAT,CAAmB6iD,YAA9C;;EAEAJ,EAAAA,GAAG,CAACziD,SAAJ,CAAc8O,QAAd,GAAyB,UAAUlK,CAAV,EAAa;EACpC,QAAI4Q,KAAK,GAAG,KAAKA,KAAL,CAAW,UAAX,CAAZ;;EAEA,QAAI,OAAO5Q,CAAP,KAAa,QAAjB,EAA2B;EACzB4Q,MAAAA,KAAK,GAAGA,KAAK,CAAC9B,GAAN,CAAU9O,CAAV,CAAR;EACD;;EAED,WAAO,IAAIo+C,QAAJ,CAAaxtC,KAAK,CAACc,IAAnB,EAAyB,IAAzB,EAA+B,KAAKnJ,KAApC,CAAP;EACD,GARD;;EAUA,SAAOs1C,GAAP;EACD,CAxDD;;EA0DA,IAAIO,QAAQ,GAAGD,WAAf;;EAEA,IAAIE,WAAW,GAAG,SAAST,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACAA,EAAAA,GAAG,CAACziD,SAAJ,CAAc6tC,OAAd,GAAwB,UAAUjpC,CAAV,EAAa;EACnC;EACA,QAAIs+C,MAAM,GAAG,KAAK,IAAL,EAAW,WAAX,EAAwBxD,KAAxB,CAA8B,qBAA9B;EAAA,KACZA,KADY,CACN,2BADM;EAAA,KAEZA,KAFY,CAEN,+BAFM;EAAA,KAGZA,KAHY,CAGN,+BAHM;EAAA,KAIZA,KAJY,CAIN,4BAJM;EAAA,KAKZA,KALY,CAKN,uBALM;EAAA,KAMZlqC,KANY,CAMN,WANM,CAAb;EAOA,QAAIhO,KAAK,GAAG,KAAKukC,UAAL,CAAgBmX,MAAhB,CAAZ;EACA,QAAI5Y,MAAM,GAAG9iC,KAAK,CAACijC,UAAN,EAAb;EACAjjC,IAAAA,KAAK,GAAGA,KAAK,CAAC0Q,OAAN,CAAcoyB,MAAd,CAAR;EACA,QAAIS,WAAW,GAAGvjC,KAAK,CAACujC,WAAN,EAAlB;EACAvjC,IAAAA,KAAK,GAAGA,KAAK,CAAC0Q,OAAN,CAAc6yB,WAAd,CAAR,CAbmC;;EAenC,QAAIoY,YAAY,GAAG37C,KAAK,CAAC,IAAD,CAAL,CAAY,8DAAZ,EAA4EgO,KAA5E,CAAkF,cAAlF,CAAnB;EACAhO,IAAAA,KAAK,GAAGA,KAAK,CAACwkC,WAAN,CAAkBmX,YAAlB,CAAR,CAhBmC;;EAkBnC,QAAIC,SAAS,GAAG57C,KAAK,CAAC,IAAD,CAAL,CAAY,kBAAZ,EAAgCgO,KAAhC,CAAsC,MAAtC,CAAhB;EACAhO,IAAAA,KAAK,GAAGA,KAAK,CAACwkC,WAAN,CAAkBoX,SAAlB,CAAR,CAnBmC;;EAqBnC57C,IAAAA,KAAK,GAAGA,KAAK,CAACwkC,WAAN,CAAkB,cAAlB,CAAR;EACAxkC,IAAAA,KAAK,GAAGA,KAAK,CAACwkC,WAAN,CAAkB,WAAlB,CAAR;EACAxkC,IAAAA,KAAK,GAAGA,KAAK,CAACwkC,WAAN,CAAkB,kBAAlB,CAAR,CAvBmC;;EAyBnCxkC,IAAAA,KAAK,GAAGA,KAAK,CAACukC,UAAN,CAAiB,eAAjB,CAAR;EACAvkC,IAAAA,KAAK,GAAGA,KAAK,CAACukC,UAAN,CAAiB,UAAjB,CAAR,CA1BmC;EA2BnC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,QAAIsX,OAAO,GAAG77C,KAAK,CAACkN,MAAN,CAAa,UAAUvQ,CAAV,EAAa;EACtC,aAAOA,CAAC,CAACsQ,SAAF,KAAgB,CAAhB,IAAqBtQ,CAAC,CAACqR,KAAF,CAAQ,QAAR,EAAkB/U,MAAlB,IAA4B,CAAxD;EACD,KAFa,CAAd;;EAIA,QAAI4iD,OAAO,CAAC77C,KAAZ,EAAmB;EACjB,UAAI7C,CAAC,GAAG0+C,OAAO,CAACtX,UAAR,CAAmB,0BAAnB,CAAR;EACAvkC,MAAAA,KAAK,GAAGA,KAAK,CAAC0Q,OAAN,CAAcvT,CAAC,CAACm+B,EAAF,CAAK,CAAL,CAAd,CAAR;EACD;;EAED,QAAI,OAAOl+B,CAAP,KAAa,QAAjB,EAA2B;EACzB4C,MAAAA,KAAK,GAAGA,KAAK,CAACkM,GAAN,CAAU9O,CAAV,CAAR;EACD;;EAED,WAAO,IAAI69C,GAAJ,CAAQj7C,KAAK,CAAC8O,IAAd,EAAoB,IAApB,EAA0B,KAAKnJ,KAA/B,CAAP;EACD,GApDD;;EAsDA,SAAOs1C,GAAP;EACD,CAzDD;;EA2DA,IAAIa,OAAO,GAAGL,WAAd;;EAEA,IAAIM,WAAW,GAAG,SAASf,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACA,MAAIe,YAAY,gBAAgB,UAAUb,IAAV,EAAgB;EAC9CvhD,IAAAA,SAAS,CAACoiD,YAAD,EAAeb,IAAf,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAAC2gD,YAAD,CAAzB;;EAEA,aAASA,YAAT,CAAsBltC,IAAtB,EAA4BisB,IAA5B,EAAkCp1B,KAAlC,EAAyC;EACvC,UAAI4G,KAAJ;;EAEA9T,MAAAA,eAAe,CAAC,IAAD,EAAOujD,YAAP,CAAf;;EAEAzvC,MAAAA,KAAK,GAAG6uC,MAAM,CAACrgD,IAAP,CAAY,IAAZ,EAAkB+T,IAAlB,EAAwBisB,IAAxB,EAA8Bp1B,KAA9B,CAAR;EACA4G,MAAAA,KAAK,CAAC0vC,UAAN,GAAmB,IAAnB;EACA,aAAO1vC,KAAP;EACD;EACD;;;EAGA9S,IAAAA,YAAY,CAACuiD,YAAD,EAAe,CAAC;EAC1BxiD,MAAAA,GAAG,EAAE,QADqB;EAE1BQ,MAAAA,KAAK,EAAE,SAASgqC,MAAT,GAAkB;EACvB,aAAKl1B,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,cAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ,CAD6B;;EAG7B,cAAImwC,WAAW,GAAGnwC,KAAK,CAAC,CAAD,CAAL,CAAS/K,WAAT,EAAlB;EACA+K,UAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAaxE,CAAb,EAAgB;EAC5B;EACAwE,YAAAA,CAAC,CAACoO,GAAF,CAAMpO,CAAC,CAAC4E,QAAF,IAAc5E,CAAC,CAACtB,IAAtB;EACAsB,YAAAA,CAAC,CAAC4E,QAAF,GAAamB,SAAb,CAH4B;;EAK5B,gBAAIvK,CAAC,GAAG+S,KAAK,CAAC9S,MAAN,GAAe,CAAnB,IAAwBuE,CAAC,CAACuC,IAAF,KAAW,EAAvC,EAA2C;EACzCvC,cAAAA,CAAC,CAACuC,IAAF,IAAU,GAAV;EACD;EACF,WARD,EAJ6B;;EAc7B,cAAIm8C,WAAJ,EAAiB;EACfnwC,YAAAA,KAAK,CAAC,CAAD,CAAL,CAASjL,WAAT;EACD;EACF,SAjBD;EAkBA,eAAO,IAAP;EACD;EAtByB,KAAD,CAAf,CAAZ;;EAyBA,WAAOk7C,YAAP;EACD,GA3C+B,CA2C9Bf,GA3C8B,CAAhC,CAFwC;EA8CxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAGAA,EAAAA,GAAG,CAACziD,SAAJ,CAAc8qC,YAAd,GAA6B,UAAUlmC,CAAV,EAAa;EACxC;EACA,QAAI4C,KAAK,GAAG,KAAKgO,KAAL,CAAW,kBAAX,CAAZ,CAFwC;EAGxC;;EAEA,QAAI,OAAO5Q,CAAP,KAAa,QAAjB,EAA2B;EACzB4C,MAAAA,KAAK,GAAGA,KAAK,CAACkM,GAAN,CAAU9O,CAAV,CAAR;EACD;;EAED,WAAO,IAAI4+C,YAAJ,CAAiBh8C,KAAK,CAAC8O,IAAvB,EAA6B,IAA7B,EAAmC,KAAKnJ,KAAxC,CAAP;EACD,GAVD,CAxDwC;;;EAqExCs1C,EAAAA,GAAG,CAACziD,SAAJ,CAAc2jD,QAAd,GAAyBlB,GAAG,CAACziD,SAAJ,CAAc4jD,UAAvC;EACAnB,EAAAA,GAAG,CAACziD,SAAJ,CAAcyjD,UAAd,GAA2BhB,GAAG,CAACziD,SAAJ,CAAc6jD,YAAzC;EACA,SAAOpB,GAAP;EACD,CAxED;;EA0EA,IAAIe,YAAY,GAAGD,WAAnB;;EAEA,IAAIO,WAAW,GAAG,SAAStB,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACA,MAAIvgB,KAAK,GAAG,SAASA,KAAT,CAAezrB,GAAf,EAAoB;EAC9B,QAAIy3B,MAAM,GAAGz3B,GAAG,CAACs1B,UAAJ,CAAe,WAAf,EAA4B7zB,OAA5B,CAAoC,eAApC,EAAqDqI,GAArD,CAAyD,eAAzD,CAAb;EACA,QAAIwjC,UAAU,GAAGttC,GAAG,CAACjB,KAAJ,CAAU,cAAV,EAA0B,CAA1B,CAAjB;EACA,WAAO;EACL04B,MAAAA,MAAM,EAAEA,MADH;EAEL8V,MAAAA,WAAW,EAAEvtC,GAAG,CAACjB,KAAJ,CAAU,eAAV,CAFR;EAGLuuC,MAAAA,UAAU,EAAEA,UAHP;EAILE,MAAAA,SAAS,EAAEF,UAAU,CAACzjC,GAAX,CAAe,WAAf;EAJN,KAAP;EAMD,GATD;EAUA;;;EAGA,MAAI4jC,KAAK,gBAAgB,UAAUvB,IAAV,EAAgB;EACvCvhD,IAAAA,SAAS,CAAC8iD,KAAD,EAAQvB,IAAR,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAACqhD,KAAD,CAAzB;;EAEA,aAASA,KAAT,GAAiB;EACfjkD,MAAAA,eAAe,CAAC,IAAD,EAAOikD,KAAP,CAAf;;EAEA,aAAOtB,MAAM,CAACv/C,KAAP,CAAa,IAAb,EAAmBD,SAAnB,CAAP;EACD;;EAEDnC,IAAAA,YAAY,CAACijD,KAAD,EAAQ,CAAC;EACnBljD,MAAAA,GAAG,EAAE,cADc;EAEnBQ,MAAAA,KAAK;EACL;EACA,eAAS2hD,YAAT,GAAwB;EACtB,eAAO,KAAK3tC,KAAL,CAAW,UAAX,CAAP;EACD;EACD;;EAPmB,KAAD,EASjB;EACDxU,MAAAA,GAAG,EAAE,OADJ;EAEDQ,MAAAA,KAAK,EAAE,SAASsqC,KAAT,GAAiB;EACtB,eAAO,KAAKC,UAAL,CAAgB,WAAhB,EAA6B7zB,OAA7B,CAAqC,eAArC,CAAP;EACD;EACD;;EALC,KATiB,EAgBjB;EACDlX,MAAAA,GAAG,EAAE,OADJ;EAEDQ,MAAAA,KAAK,EAAE,SAAS2iD,KAAT,GAAiB;EACtB,eAAOjiB,KAAK,CAAC,IAAD,CAAL,CAAYgM,MAAnB;EACD;EACD;;EALC,KAhBiB,EAuBjB;EACDltC,MAAAA,GAAG,EAAE,KADJ;EAEDQ,MAAAA,KAAK,EAAE,SAASwQ,GAAT,CAAavO,GAAb,EAAkB;EACvB,aAAKgC,OAAL,CAAa,UAAU1D,CAAV,EAAa;EACxB,cAAIgiD,UAAU,GAAG7hB,KAAK,CAACngC,CAAD,CAAL,CAASgiD,UAA1B;EACAA,UAAAA,UAAU,CAAChtC,MAAX,CAAkBtT,GAAlB,EAFwB;;EAIxBsgD,UAAAA,UAAU,CAAC7gB,QAAX,CAAoB,CAApB,EAAuBr5B,cAAvB,CAAsC,GAAtC;EACD,SALD;EAMA,eAAO,IAAP;EACD;EACD;;EAXC,KAvBiB,EAoCjB;EACD7I,MAAAA,GAAG,EAAE,QADJ;EAEDQ,MAAAA,KAAK,EAAE,SAAS2f,MAAT,CAAgB3L,KAAhB,EAAuB;EAC5B,eAAO,KAAK2uC,KAAL,GAAa,IAAb,EAAmB3uC,KAAnB,EAA0B2L,MAA1B,EAAP;EACD;EACD;;EALC,KApCiB,EA2CjB;EACDngB,MAAAA,GAAG,EAAE,gBADJ;EAEDQ,MAAAA,KAAK,EAAE,SAAS4iD,cAAT,GAA0B;EAC/B,eAAO,KAAK1vC,MAAL,CAAY,UAAU+B,GAAV,EAAe;EAChC,iBAAOyrB,KAAK,CAACzrB,GAAD,CAAL,CAAWwtC,SAAlB;EACD,SAFM,CAAP;EAGD;EANA,KA3CiB,EAkDjB;EACDjjD,MAAAA,GAAG,EAAE,gBADJ;EAEDQ,MAAAA,KAAK,EAAE,SAAS6iD,cAAT,GAA0B;EAC/B,YAAIF,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,YAAIG,UAAU,GAAGH,KAAK,CAACrhB,EAAN,CAASqhB,KAAK,CAAC1jD,MAAN,GAAe,CAAxB,CAAjB;;EAEA,YAAI6jD,UAAU,CAAC98C,KAAX,IAAoB88C,UAAU,CAAChkC,GAAX,CAAe,WAAf,MAAgC,KAAxD,EAA+D;EAC7DgkC,UAAAA,UAAU,CAAC/8C,IAAX,CAAgB,IAAhB;EACD;;EAED,eAAO,IAAP;EACD;EAXA,KAlDiB,EA8DjB;EACDvG,MAAAA,GAAG,EAAE,mBADJ;EAEDQ,MAAAA,KAAK,EAAE,SAAS+iD,iBAAT,GAA6B;EAClC,YAAIJ,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,YAAIG,UAAU,GAAGH,KAAK,CAACrhB,EAAN,CAASqhB,KAAK,CAAC1jD,MAAN,GAAe,CAAxB,CAAjB;;EAEA,YAAI6jD,UAAU,CAAC98C,KAAX,IAAoB88C,UAAU,CAAChkC,GAAX,CAAe,WAAf,MAAgC,IAAxD,EAA8D;EAC5DgkC,UAAAA,UAAU,CAAC/8C,IAAX,CAAgB,GAAhB;EACD;;EAED,eAAO,IAAP;EACD;EAXA,KA9DiB,CAAR,CAAZ;;EA4EA,WAAO28C,KAAP;EACD,GAxFwB,CAwFvBzB,GAxFuB,CAAzB,CAfwC;;;EA0GxCyB,EAAAA,KAAK,CAAClkD,SAAN,CAAgBkuC,MAAhB,GAAyBgW,KAAK,CAAClkD,SAAN,CAAgBmkD,KAAzC;;EAEA1B,EAAAA,GAAG,CAACziD,SAAJ,CAAcwhD,KAAd,GAAsB,UAAU58C,CAAV,EAAa;EACjC,QAAID,CAAC,GAAG,KAAK,IAAL,EAAW,+BAAX,CAAR,CADiC;;EAGjC,QAAI6/C,QAAQ,GAAG7/C,CAAC,CAAC6Q,KAAF,CAAQ,uGAAR,EAAiH,IAAjH,EAAuH,OAAvH,CAAf;EACA,QAAIivC,OAAO,GAAG9/C,CAAC,CAAC6Q,KAAF,CAAQ,8DAAR,CAAd;EACA,QAAIkvC,QAAQ,GAAG//C,CAAC,CAAC6Q,KAAF,CAAQ,oDAAR,CAAf;EACA,QAAItS,MAAM,GAAGshD,QAAQ,CAAChwC,MAAT,CAAgBiwC,OAAhB,CAAb;EACAvhD,IAAAA,MAAM,GAAGA,MAAM,CAACsR,MAAP,CAAckwC,QAAd,CAAT;EACAxhD,IAAAA,MAAM,GAAGA,MAAM,CAAC,IAAD,CAAN,CAAa,WAAb,CAAT;;EAEA,QAAI,OAAO0B,CAAP,KAAa,QAAjB,EAA2B;EACzB1B,MAAAA,MAAM,GAAGyB,CAAC,CAAC+O,GAAF,CAAM9O,CAAN,CAAT;EACD;;EAED,WAAO,IAAIs/C,KAAJ,CAAUhhD,MAAM,CAACoT,IAAjB,EAAuB,IAAvB,EAA6B,KAAKnJ,KAAlC,CAAP;EACD,GAfD;;EAiBA,SAAOs1C,GAAP;EACD,CA9HD;;EAgIA,IAAIyB,KAAK,GAAGJ,WAAZ;EAEA,IAAIa,QAAQ,GAAG,oFAAf;;EAEA,IAAIC,SAAS,GAAG,SAASA,SAAT,CAAmBnuC,GAAnB,EAAwB;EACtC,MAAIA,GAAG,CAAC6J,GAAJ,CAAQ,SAAR,MAAuB,IAA3B,EAAiC;EAC/B,WAAO,IAAP;EACD,GAHqC;;;EAMtC,MAAI7J,GAAG,CAAC6J,GAAJ,CAAQqkC,QAAR,MAAsB,IAA1B,EAAgC;EAC9B,WAAO,KAAP;EACD;;EAED,SAAO,IAAP;EACD,CAXD;;EAaA,IAAIE,WAAW,GAAGD,SAAlB;EAEA,IAAI/3B,UAAU,GAAG;EACfi4B,EAAAA,IAAI,EAAE,IADS;EAEfC,EAAAA,IAAI,EAAE,IAFS;EAGfC,EAAAA,QAAQ,EAAE,IAHK;EAIfC,EAAAA,MAAM,EAAE,IAJO;EAKfC,EAAAA,MAAM,EAAE,IALO;EAMfC,EAAAA,KAAK,EAAE,IANQ;EAOfC,EAAAA,IAAI,EAAE,IAPS;;EAAA,CAAjB;;EAWA,IAAIC,WAAW,GAAG;EAChBrhD,EAAAA,CAAC,EAAE,IADa;EAEhBxB,EAAAA,CAAC,EAAE,IAFa;EAGhB4B,EAAAA,CAAC,EAAE,IAHa;EAIhBE,EAAAA,CAAC,EAAE,IAJa;EAKhB9D,EAAAA,CAAC,EAAE,IALa;EAMhBkE,EAAAA,CAAC,EAAE,IANa;EAOhBC,EAAAA,CAAC,EAAE,IAPa;EAQhBC,EAAAA,CAAC,EAAE,IARa;EAShBjD,EAAAA,CAAC,EAAE,IATa;EAUhBmD,EAAAA,CAAC,EAAE,IAVa;EAWhBC,EAAAA,CAAC,EAAE,IAXa;EAYhBK,EAAAA,CAAC,EAAE;EAZa,CAAlB;;EAeA,IAAIkgD,QAAQ,GAAG,CAAC,SAAD;EACf,yBADe;EAEf,OAFe,CAAf;;EAIA,IAAIC,WAAW,GAAG,SAASA,WAAT,CAAqB9uC,GAArB,EAA0B;EAC1C;EACA,MAAIA,GAAG,CAAC6J,GAAJ,CAAQ,SAAR,KAAsB7J,GAAG,CAAC6J,GAAJ,CAAQ,QAAR,CAA1B,EAA6C;EAC3C,WAAO,EAAP;EACD,GAJyC;;;EAO1C,MAAI7J,GAAG,CAAC6J,GAAJ,CAAQ,SAAR,CAAJ,EAAwB;EACtB,WAAO,KAAP;EACD;;EAED,MAAI7c,GAAG,GAAGgT,GAAG,CAAC/S,IAAJ,CAAS,QAAT,EAAmB8C,IAAnB,EAAV,CAX0C;;EAa1C,MAAIqmB,UAAU,CAAChhB,cAAX,CAA0BpI,GAA1B,CAAJ,EAAoC;EAClC,WAAOopB,UAAU,CAACppB,GAAD,CAAjB;EACD,GAfyC;;;EAkB1C,MAAI+hD,WAAW,GAAG/hD,GAAG,CAAC8N,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAlB;;EAEA,MAAIkF,GAAG,CAAC6J,GAAJ,CAAQ,aAAR,KAA0B+kC,WAAW,CAACx5C,cAAZ,CAA2B25C,WAA3B,CAA9B,EAAuE;EACrE,WAAO,IAAP;EACD,GAtByC;;;EAyB1C,OAAK,IAAIhlD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8kD,QAAQ,CAAC7kD,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;EACxC,QAAI8kD,QAAQ,CAAC9kD,CAAD,CAAR,CAAY2F,IAAZ,CAAiB1C,GAAjB,CAAJ,EAA2B;EACzB,aAAO,GAAP;EACD;EACF,GA7ByC;;;EAgC1C,MAAI,YAAY0C,IAAZ,CAAiB1C,GAAjB,CAAJ,EAA2B;EACzB,WAAO,IAAP;EACD;;EAED,SAAO,GAAP;EACD,CArCD;;EAuCA,IAAIgiD,UAAU,GAAGF,WAAjB;;EAGA,IAAIG,UAAU,GAAG,CAAC,uCAAD,EAA0C,4CAA1C,EAAwF,OAAxF,EAAiG,QAAjG,EAA2G,YAA3G,CAAjB;;EAEA,IAAI/L,UAAU,GAAG,CAAC,eAAD,EAAkB,6CAAlB,EAAiE,gBAAjE,EAAmF,SAAnF,EAA8F,kBAA9F,EAAkH,SAAlH,EAA6H,2BAA7H,EAA0J,UAA1J,EAAsK,SAAtK,EAAiL,OAAjL,EAA0L,oBAA1L,EAAgN,QAAhN,EAA0N,iBAA1N,EAA6O,kBAA7O,EAAiQ,+BAAjQ,EAAkS,aAAlS,EAAiT,YAAjT,EAA+T,sCAA/T,EAAuW,QAAvW,EAAiX,0BAAjX,CAAjB;EACA,IAAIgM,MAAM,GAAG;EACXhM,EAAAA,UAAU,EAAEA,UADD;EAEXC,EAAAA,QAAQ,EAAE8L;EAFC,CAAb;EAKA,IAAIE,IAAI,GAAG,IAAX;EACA;EACA;;EAEA,IAAIC,UAAU,GAAG,SAASjM,QAAT,CAAkBn2C,GAAlB,EAAuB;EACtC;EACA,MAAIkiD,MAAM,CAAChM,UAAP,CAAkBliC,IAAlB,CAAuB,UAAUlM,GAAV,EAAe;EACxC,WAAOA,GAAG,CAACpF,IAAJ,CAAS1C,GAAT,CAAP;EACD,GAFG,CAAJ,EAEI;EACF,WAAO,KAAP;EACD,GANqC;;;EAStC,MAAImiD,IAAI,CAACz/C,IAAL,CAAU1C,GAAV,MAAmB,IAAvB,EAA6B;EAC3B,WAAO,IAAP;EACD,GAXqC;;;EActC,MAAIkiD,MAAM,CAAC/L,QAAP,CAAgBniC,IAAhB,CAAqB,UAAUlM,GAAV,EAAe;EACtC,WAAOA,GAAG,CAACpF,IAAJ,CAAS1C,GAAT,CAAP;EACD,GAFG,CAAJ,EAEI;EACF,WAAO,IAAP;EACD;;EAED,SAAO,IAAP;EACD,CArBD;;EAuBA,IAAIqiD,YAAY,GAAGD,UAAnB;EAEA,IAAIE,UAAU,GAAG;EACfC,EAAAA,EAAE,EAAE,KADW;EAEfC,EAAAA,GAAG,EAAE,MAFU;EAGfC,EAAAA,IAAI,EAAE,QAHS;EAIfC,EAAAA,EAAE,EAAE,MAJW;EAKf3lD,EAAAA,CAAC,EAAE,MALY;EAMf42C,EAAAA,GAAG,EAAE,OANU;EAOfhsB,EAAAA,GAAG,EAAE,MAPU;EAQfE,EAAAA,KAAK,EAAE,QARQ;EASfG,EAAAA,GAAG,EAAE,MATU;EAUfC,EAAAA,EAAE,EAAE,MAVW;EAWfF,EAAAA,IAAI,EAAE;EAXS,CAAjB;;EAcA,IAAI46B,YAAY,GAAG,SAASA,YAAT,CAAsB3vC,GAAtB,EAA2B;EAC5C,MAAIhT,GAAG,GAAGgT,GAAG,CAAC/S,IAAJ,CAAS,MAAT,EAAiB8C,IAAjB,EAAV,CAD4C;;EAG5C,MAAIu/C,UAAU,CAACl6C,cAAX,CAA0BpI,GAA1B,CAAJ,EAAoC;EAClCgT,IAAAA,GAAG,CAAC2vB,WAAJ,CAAgB2f,UAAU,CAACtiD,GAAD,CAA1B,EAAiC,IAAjC;EACAgT,IAAAA,GAAG,CAACvK,GAAJ,CAAQ,YAAR,EAAsB,cAAtB;EACA;EACD,GAP2C;;;EAU5C,MAAI,KAAK/F,IAAL,CAAU1C,GAAV,CAAJ,EAAoB;EAClBA,IAAAA,GAAG,IAAI,GAAP;EACAgT,IAAAA,GAAG,CAAC2vB,WAAJ,CAAgB3iC,GAAhB,EAAqB,IAArB;EACAgT,IAAAA,GAAG,CAACvK,GAAJ,CAAQ,YAAR,EAAsB,cAAtB;EACA;EACD,GAf2C;;;EAkB5CzI,EAAAA,GAAG,IAAI,IAAP;EACAgT,EAAAA,GAAG,CAAC2vB,WAAJ,CAAgB3iC,GAAhB,EAAqB,IAArB;EACAgT,EAAAA,GAAG,CAACvK,GAAJ,CAAQ,YAAR,EAAsB,cAAtB;EACA;EACD,CAtBD;;EAwBA,IAAIm6C,cAAc,GAAGD,YAArB;EAGA;;EACA,IAAIE,OAAO,GAAG,SAASpkB,KAAT,CAAezrB,GAAf,EAAoB;EAChC,MAAI6B,GAAG,GAAG;EACRrB,IAAAA,IAAI,EAAER;EADE,GAAV,CADgC;;EAKhC,MAAIA,GAAG,CAAC6J,GAAJ,CAAQ,qBAAR,CAAJ,EAAoC;EAClC,QAAI3b,CAAC,GAAG8R,GAAG,CAACs1B,UAAJ,CAAe,UAAf,EAA2B,CAA3B,CAAR;EACAzzB,IAAAA,GAAG,CAACrB,IAAJ,GAAWtS,CAAC,CAACm+B,EAAF,CAAK,CAAL,CAAX;EACAxqB,IAAAA,GAAG,CAAC/Q,IAAJ,GAAW5C,CAAC,CAACm+B,EAAF,CAAK,CAAL,CAAX;EACD;;EAED,SAAOxqB,GAAP;EACD,CAZD;;EAcA,IAAIiuC,OAAO,GAAGD,OAAd;EAEA,IAAIE,SAAS,GAAG;EACd;EACAr2C,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc9B,OAAd,EAAuB;EAC3B,QAAIzJ,CAAC,GAAG,IAAR;;EAEA,QAAI,OAAOyJ,OAAP,KAAmB,QAAvB,EAAiC;EAC/BzJ,MAAAA,CAAC,GAAGyJ,OAAJ;EACAA,MAAAA,OAAO,GAAG,IAAV;EACD;;EAEDA,IAAAA,OAAO,GAAGA,OAAO,IAAI;EACnB3K,MAAAA,IAAI,EAAE,IADa;EAEnB+K,MAAAA,MAAM,EAAE,IAFW;EAGnBjI,MAAAA,IAAI,EAAE,IAHa;EAInB+M,MAAAA,KAAK,EAAE;EAJY,KAArB;EAMA,QAAI+E,GAAG,GAAG,EAAV;EACA,SAAK7S,OAAL,CAAa,UAAUgR,GAAV,EAAe;EAC1B,UAAItG,IAAI,GAAGsG,GAAG,CAACtG,IAAJ,CAAS9B,OAAT,EAAkB,CAAlB,CAAX;EACA8B,MAAAA,IAAI,CAACs2C,OAAL,GAAehB,UAAU,CAAChvC,GAAD,CAAzB;EACA6B,MAAAA,GAAG,CAAC1E,IAAJ,CAASzD,IAAT;EACD,KAJD;;EAMA,QAAIvL,CAAC,KAAK,IAAV,EAAgB;EACd,aAAO0T,GAAG,CAAC1T,CAAD,CAAV;EACD;;EAED,WAAO0T,GAAP;EACD,GA5Ba;;EA8Bd;EACA6T,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;EAChC,QAAI7V,IAAI,GAAG,KAAKkC,SAAL,CAAe,4DAAf,CAAX;EACAlC,IAAAA,IAAI,GAAGA,IAAI,CAAC9B,MAAL,CAAY,KAAKoE,UAAL,CAAgB,uBAAhB,CAAZ,CAAP;EACAtC,IAAAA,IAAI,GAAGA,IAAI,CAACd,KAAL,CAAW,YAAX,CAAP;EACA,WAAOc,IAAI,CAAC3G,IAAL,CAAU,OAAV,CAAP;EACD,GApCa;EAqCdiqC,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,WAAO,KAAK,IAAL,EAAW,SAAX,CAAP,CAD4B;EAE7B,GAvCa;EAwCdgL,EAAAA,SAAS,EAAE,SAASA,SAAT,GAAqB;EAC9B,WAAO,KAAKlwC,MAAL,CAAY,UAAUvQ,CAAV,EAAa;EAC9B,aAAO0gD,WAAW,CAAC1gD,CAAD,CAAlB;EACD,KAFM,CAAP;EAGD,GA5Ca;EA6Cd6nB,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkB06B,KAAlB,EAAyB;EACjC,QAAI3yC,KAAK,GAAG,IAAZ;;EAEA,QAAIiY,QAAQ,GAAG,KAAK7e,KAAL,CAAWE,UAAX,CAAsB2e,QAArC;EACA,SAAKvmB,OAAL,CAAa,UAAUgR,GAAV,EAAe;EAC1B,UAAIA,GAAG,CAAC6J,GAAJ,CAAQ,SAAR,KAAsBukC,WAAW,CAACpuC,GAAD,CAAX,KAAqB,KAA/C,EAAsD;EACpD;EACD,OAHyB;;;EAM1B,UAAIQ,IAAI,GAAGsvC,OAAO,CAAC9vC,GAAD,CAAP,CAAaQ,IAAxB;EACA,UAAIxT,GAAG,GAAGwT,IAAI,CAACvT,IAAL,CAAU,SAAV,CAAV;;EAEA,UAAI,CAACuT,IAAI,CAACqJ,GAAL,CAAS,WAAT,CAAD,IAA0BwlC,YAAY,CAACriD,GAAD,CAAZ,KAAsB,IAApD,EAA0D;EACxD;EACD;;EAEDA,MAAAA,GAAG,GAAGuoB,QAAQ,CAACvoB,GAAD,EAAMsQ,KAAK,CAAC5G,KAAZ,CAAd;EACA8J,MAAAA,IAAI,CAACvQ,OAAL,CAAajD,GAAb,EAAkByI,GAAlB,CAAsB,SAAtB,EAd0B;;EAgB1B,UAAIw6C,KAAJ,EAAW;EACT,YAAIC,EAAE,GAAG1vC,IAAI,CAACmtB,UAAL,CAAgB,qBAAhB,EAAuC7jB,GAAvC,CAA2C,YAA3C,CAAT;;EAEA,YAAIomC,EAAE,CAACn/C,KAAH,KAAa,IAAjB,EAAuB;EACrBm/C,UAAAA,EAAE,CAACxlC,MAAH;EACD;EACF;EACF,KAvBD;EAwBA,WAAO,IAAP;EACD,GA1Ea;EA2Ed5T,EAAAA,UAAU,EAAE,SAASA,UAAT,CAAoBm5C,KAApB,EAA2B;EACrC,QAAIlmC,MAAM,GAAG,IAAb;;EAEA,QAAIjT,UAAU,GAAG,KAAKJ,KAAL,CAAWE,UAAX,CAAsBE,UAAvC;EACA,SAAK9H,OAAL,CAAa,UAAUgR,GAAV,EAAe;EAC1B,UAAIA,GAAG,CAAC6J,GAAJ,CAAQ,cAAR,KAA2BukC,WAAW,CAACpuC,GAAD,CAAX,KAAqB,KAApD,EAA2D;EACzD;EACD,OAHyB;;;EAM1B,UAAIQ,IAAI,GAAGsvC,OAAO,CAAC9vC,GAAD,CAAP,CAAaQ,IAAxB;EACA,UAAIxT,GAAG,GAAGwT,IAAI,CAACvT,IAAL,CAAU,SAAV,CAAV;;EAEA,UAAI,CAACuT,IAAI,CAACqJ,GAAL,CAAS,SAAT,CAAD,IAAwBwlC,YAAY,CAACriD,GAAD,CAAZ,KAAsB,IAAlD,EAAwD;EACtD;EACD;;EAEDA,MAAAA,GAAG,GAAG8J,UAAU,CAAC9J,GAAD,EAAM+c,MAAM,CAACrT,KAAb,CAAhB;EACA8J,MAAAA,IAAI,CAACvQ,OAAL,CAAajD,GAAb,EAAkByI,GAAlB,CAAsB,WAAtB,EAd0B;;EAgB1B,UAAIw6C,KAAJ,EAAW;EACT;EACA,YAAI/6C,KAAK,GAAG8K,GAAZ;EACA,YAAImwC,GAAG,GAAGnwC,GAAG,CAAC2tB,UAAJ,CAAe,YAAf,CAAV;;EAEA,YAAIwiB,GAAG,CAACp/C,KAAR,EAAe;EACbmE,UAAAA,KAAK,GAAGi7C,GAAR;EACD;;EAED,YAAIH,OAAO,GAAGhB,UAAU,CAAC95C,KAAD,CAAxB;EACAA,QAAAA,KAAK,CAACs7B,YAAN,CAAmBwf,OAAnB;EACD;EACF,KA5BD;EA6BA,WAAO,IAAP;EACD,GA7Ga;EA8GdL,EAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;EACpC,SAAK3gD,OAAL,CAAa,UAAUtB,CAAV,EAAa;EACxBkiD,MAAAA,cAAc,CAACliD,CAAD,CAAd;EACD,KAFD;EAGA,WAAO,IAAP;EACD;EAnHa,CAAhB;EAqHA,IAAI0iD,SAAS,GAAGL,SAAhB;;EAEA,IAAIM,WAAW,GAAG,SAAStE,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACA,MAAIsE,KAAK,gBAAgB,UAAUpE,IAAV,EAAgB;EACvCvhD,IAAAA,SAAS,CAAC2lD,KAAD,EAAQpE,IAAR,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAACkkD,KAAD,CAAzB;;EAEA,aAASA,KAAT,GAAiB;EACf9mD,MAAAA,eAAe,CAAC,IAAD,EAAO8mD,KAAP,CAAf;;EAEA,aAAOnE,MAAM,CAACv/C,KAAP,CAAa,IAAb,EAAmBD,SAAnB,CAAP;EACD;;EAED,WAAO2jD,KAAP;EACD,GAZwB,CAYvBtE,GAZuB,CAAzB,CAFwC;;;EAiBxC3hD,EAAAA,MAAM,CAACsP,MAAP,CAAc22C,KAAK,CAAC/mD,SAApB,EAA+B6mD,SAA/B;;EAEApE,EAAAA,GAAG,CAACziD,SAAJ,CAAc4sB,KAAd,GAAsB,UAAUhoB,CAAV,EAAa;EACjC,QAAI8Z,IAAI,GAAGtb,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E,CADiC;;EAGjC,QAAIszB,IAAI,GAAG,KAAKlhB,KAAL,CAAW,yCAAX,CAAX,CAHiC;;EAKjC,QAAI7Q,CAAC,GAAG,KAAK4b,GAAL,CAASmW,IAAT,EAAeqV,UAAf,CAA0B,WAA1B,CAAR,CALiC;;EAOjCpnC,IAAAA,CAAC,GAAGA,CAAC,CAAC6P,MAAF,CAASkiB,IAAT,CAAJ,CAPiC;;EASjC,QAAI4T,MAAM,GAAG3lC,CAAC,CAAC8lC,UAAF,EAAb;;EAEA,QAAIH,MAAM,CAAC9iC,KAAX,EAAkB;EAChB7C,MAAAA,CAAC,GAAGA,CAAC,CAACuT,OAAF,CAAUoyB,MAAM,CAACxH,EAAP,CAAU,CAAV,CAAV,CAAJ;EACD;;EAEDn+B,IAAAA,CAAC,GAAGA,CAAC,CAAC6Q,KAAF,CAAQ,8BAAR,CAAJ,CAfiC;;EAiBjC,QAAIkJ,IAAI,CAACsoC,aAAL,KAAuB,IAA3B,EAAiC;EAC/BriD,MAAAA,CAAC,GAAGA,CAAC,CAAC4b,GAAF,CAAM,UAAN,CAAJ;EACA5b,MAAAA,CAAC,GAAGA,CAAC,CAAC4b,GAAF,CAAM,eAAN,CAAJ;EACA5b,MAAAA,CAAC,GAAGA,CAAC,CAAC4b,GAAF,CAAM,mBAAN,CAAJ,CAH+B;EAI/B;;EAEA5b,MAAAA,CAAC,GAAGA,CAAC,CAAC4b,GAAF,CAAM,6BAAN,CAAJ;EACD;;EAED5b,IAAAA,CAAC,GAAGA,CAAC,CAAC4b,GAAF,CAAM,kBAAN,CAAJ;;EAEA,QAAI,OAAO3b,CAAP,KAAa,QAAjB,EAA2B;EACzBD,MAAAA,CAAC,GAAGA,CAAC,CAAC+O,GAAF,CAAM9O,CAAN,CAAJ;EACD;;EAED,WAAO,IAAImiD,KAAJ,CAAUpiD,CAAC,CAAC2R,IAAZ,EAAkB,IAAlB,EAAwB,KAAKnJ,KAA7B,CAAP;EACD,GAjCD;;EAmCA,SAAOs1C,GAAP;EACD,CAvDD;;EAyDA,IAAIsE,KAAK,GAAGD,WAAZ;EAEA,IAAIG,IAAI,GAAG,IAAX;EACA,IAAIC,KAAK,GAAG,IAAZ;;EAEA,IAAIC,WAAW,GAAG,SAAS3E,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACA,MAAI2E,WAAW,gBAAgB,UAAUzE,IAAV,EAAgB;EAC7CvhD,IAAAA,SAAS,CAACgmD,WAAD,EAAczE,IAAd,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAACukD,WAAD,CAAzB;;EAEA,aAASA,WAAT,GAAuB;EACrBnnD,MAAAA,eAAe,CAAC,IAAD,EAAOmnD,WAAP,CAAf;;EAEA,aAAOxE,MAAM,CAACv/C,KAAP,CAAa,IAAb,EAAmBD,SAAnB,CAAP;EACD;;EAEDnC,IAAAA,YAAY,CAACmmD,WAAD,EAAc,CAAC;EACzBpmD,MAAAA,GAAG,EAAE,QADoB;EAEzBQ,MAAAA,KAAK;EACL;EACA,eAASiqC,MAAT,GAAkB;EAChB,aAAKn1B,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,cAAI8gC,KAAK,GAAG9gC,CAAC,CAACwR,KAAF,CAAQ,CAAR,CAAZ;EACAsvB,UAAAA,KAAK,CAACv7B,GAAN,GAAYu7B,KAAK,CAACv7B,GAAN,CAAUZ,OAAV,CAAkBugD,IAAlB,EAAwB,EAAxB,CAAZ;EACA,cAAIj4C,IAAI,GAAGjN,CAAC,CAACoS,QAAF,EAAX;EACAnF,UAAAA,IAAI,CAACzH,IAAL,GAAYyH,IAAI,CAACzH,IAAL,CAAUb,OAAV,CAAkBwgD,KAAlB,EAAyB,EAAzB,CAAZ;EACD,SALD;EAMA,eAAO,IAAP;EACD;EAZwB,KAAD,CAAd,CAAZ;;EAeA,WAAOE,WAAP;EACD,GA3B8B,CA2B7B3E,GA3B6B,CAA/B;;EA6BAA,EAAAA,GAAG,CAACziD,SAAJ,CAAc+qC,WAAd,GAA4B,UAAUnmC,CAAV,EAAa;EACvC,QAAI0R,IAAI,GAAG,EAAX;EACA,SAAKA,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ,CAD6B;;EAG7B,WAAK,IAAI/S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;EACxC,YAAIwE,CAAC,GAAGuO,KAAK,CAAC/S,CAAD,CAAb;;EAEA,YAAIymD,IAAI,CAAC9gD,IAAL,CAAUnB,CAAC,CAACsC,GAAZ,CAAJ,EAAsB;EACpB;EACA,eAAK,IAAI3F,CAAC,GAAGnB,CAAb,EAAgBmB,CAAC,GAAG4R,KAAK,CAAC9S,MAA1B,EAAkCkB,CAAC,IAAI,CAAvC,EAA0C;EACxC,gBAAIulD,KAAK,CAAC/gD,IAAN,CAAWoN,KAAK,CAAC5R,CAAD,CAAL,CAAS4F,IAApB,CAAJ,EAA+B;EAC7B,kBAAIqN,GAAG,GAAGjT,CAAC,GAAGnB,CAAJ,GAAQ,CAAlB;EACA8V,cAAAA,IAAI,CAAC1C,IAAL,CAAU7R,CAAC,CAACiS,SAAF,CAAYhP,CAAC,CAACyG,EAAd,EAAkBmJ,GAAlB,CAAV;EACApU,cAAAA,CAAC,GAAGmB,CAAJ;EACA;EACD;EACF;EACF;EACF;EACF,KAlBD,EAFuC;;EAsBvC,QAAI,OAAOiD,CAAP,KAAa,QAAjB,EAA2B;EACzB,UAAI0R,IAAI,CAAC1R,CAAD,CAAR,EAAa;EACX0R,QAAAA,IAAI,GAAG,CAACA,IAAI,CAAC1R,CAAD,CAAL,CAAP;EACD,OAFD,MAEO;EACL0R,QAAAA,IAAI,GAAG,EAAP;EACD;;EAED,aAAO,IAAI8wC,WAAJ,CAAgB9wC,IAAhB,EAAsB,IAAtB,EAA4B,KAAKnJ,KAAjC,CAAP;EACD;;EAED,WAAO,IAAIi6C,WAAJ,CAAgB9wC,IAAhB,EAAsB,IAAtB,EAA4B,KAAKnJ,KAAjC,CAAP;EACD,GAjCD;;EAmCA,SAAOs1C,GAAP;EACD,CAnED;;EAqEA,IAAI2E,WAAW,GAAGD,WAAlB;;EAEA,IAAIE,WAAW,GAAG,SAAS7E,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACA,MAAI6E,WAAW,gBAAgB,UAAU3E,IAAV,EAAgB;EAC7CvhD,IAAAA,SAAS,CAACkmD,WAAD,EAAc3E,IAAd,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAACykD,WAAD,CAAzB;;EAEA,aAASA,WAAT,CAAqBhxC,IAArB,EAA2BisB,IAA3B,EAAiCp1B,KAAjC,EAAwC;EACtC,UAAI4G,KAAJ;;EAEA9T,MAAAA,eAAe,CAAC,IAAD,EAAOqnD,WAAP,CAAf;;EAEAvzC,MAAAA,KAAK,GAAG6uC,MAAM,CAACrgD,IAAP,CAAY,IAAZ,EAAkB+T,IAAlB,EAAwBisB,IAAxB,EAA8Bp1B,KAA9B,CAAR;EACA4G,MAAAA,KAAK,CAAC0vC,UAAN,GAAmB,IAAnB;EACA,aAAO1vC,KAAP;EACD;EACD;;;EAGA9S,IAAAA,YAAY,CAACqmD,WAAD,EAAc,CAAC;EACzBtmD,MAAAA,GAAG,EAAE,OADoB;EAEzBQ,MAAAA,KAAK,EAAE,SAAS8pC,KAAT,GAAiB;EACtB,aAAKh1B,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,cAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ;EACAA,UAAAA,KAAK,CAAC9N,OAAN,CAAc,UAAUT,CAAV,EAAa;EACzB,gBAAIvB,GAAG,GAAGuB,CAAC,CAACtB,IAAF,CAAOgD,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAV;EACA1B,YAAAA,CAAC,CAACoO,GAAF,CAAM3P,GAAG,IAAIuB,CAAC,CAACtB,IAAf;EACD,WAHD;EAID,SAND;EAOA,eAAO,IAAP;EACD;EAXwB,KAAD,CAAd,CAAZ;;EAcA,WAAO4jD,WAAP;EACD,GAhC8B,CAgC7B7E,GAhC6B,CAA/B,CAFwC;EAmCxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAGAA,EAAAA,GAAG,CAACziD,SAAJ,CAAcgrC,WAAd,GAA4B,UAAUpmC,CAAV,EAAa;EACvC;EACA,QAAI4C,KAAK,GAAG,KAAKgO,KAAL,CAAW,qBAAX,CAAZ,CAFuC;;EAIvC,QAAI,OAAO5Q,CAAP,KAAa,QAAjB,EAA2B;EACzB4C,MAAAA,KAAK,GAAGA,KAAK,CAACkM,GAAN,CAAU9O,CAAV,CAAR;EACD;;EAED,WAAO,IAAI0iD,WAAJ,CAAgB9/C,KAAK,CAAC8O,IAAtB,EAA4B,IAA5B,EAAkC,KAAKnJ,KAAvC,CAAP;EACD,GATD;;EAWA,SAAOs1C,GAAP;EACD,CAzDD;;EA2DA,IAAI6E,WAAW,GAAGD,WAAlB;EAEA,IAAIE,KAAK,GAAG;EACV,QAAM,IADI;EAEV;EACA,YAAU,QAHA;EAIV;EACA,OAAK,GALK;EAMV;EACA,YAAU,QAPA;EAQV;EACA,YAAU,QATA;EAUV;EACA,YAAU,QAXA;EAYV;EACA,YAAU,QAbA;EAcV;EACA,YAAU,QAfA;EAgBV;EACA,YAAU,QAjBA;EAkBV;EACA,YAAU,QAnBA;EAoBV;EACA,UAAQ,MArBE;EAsBV;EACA,YAAU,QAvBA;EAwBV;EACA;EACA,YAAU,QA1BA;EA2BV;EACA,YAAU,QA5BA;EA6BV;EACA,YAAU,QA9BA;EA+BV;EACA;EACA,YAAU,QAjCA;EAkCV;EACA,OAAK,MAnCK;EAoCV;EACA,YAAU,QArCA;;EAAA,CAAZ;EAwCA,IAAIC,OAAO,GAAGhqC,MAAM,CAAC,MAAM1c,MAAM,CAAC0E,IAAP,CAAY+hD,KAAZ,EAAmB5hD,IAAnB,CAAwB,GAAxB,CAAN,GAAqC,GAAtC,CAApB;;EAEA,IAAI8hD,WAAW,GAAG,SAASjF,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACA,MAAIiF,UAAU,gBAAgB,UAAU/E,IAAV,EAAgB;EAC5CvhD,IAAAA,SAAS,CAACsmD,UAAD,EAAa/E,IAAb,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAAC6kD,UAAD,CAAzB;;EAEA,aAASA,UAAT,GAAsB;EACpBznD,MAAAA,eAAe,CAAC,IAAD,EAAOynD,UAAP,CAAf;;EAEA,aAAO9E,MAAM,CAACv/C,KAAP,CAAa,IAAb,EAAmBD,SAAnB,CAAP;EACD;;EAEDnC,IAAAA,YAAY,CAACymD,UAAD,EAAa,CAAC;EACxB1mD,MAAAA,GAAG,EAAE,QADmB;EAExBQ,MAAAA,KAAK;EACL;EACA,eAASiqC,MAAT,GAAkB;EAChB,eAAO,IAAP;EACD;EANuB,KAAD,CAAb,CAAZ;;EASA,WAAOic,UAAP;EACD,GArB6B,CAqB5BjF,GArB4B,CAA9B;;EAuBAA,EAAAA,GAAG,CAACziD,SAAJ,CAAcyqC,UAAd,GAA2B,UAAU7lC,CAAV,EAAa;EACtC,QAAI0R,IAAI,GAAG,EAAX;EACA,SAAKA,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAIwR,KAAK,GAAGxR,CAAC,CAACwR,KAAF,EAAZ,CAD6B;;EAG7B,WAAK,IAAI/S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+S,KAAK,CAAC9S,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;EACxC,YAAIwE,CAAC,GAAGuO,KAAK,CAAC/S,CAAD,CAAb;;EAEA,YAAIgnD,OAAO,CAACrhD,IAAR,CAAanB,CAAC,CAACsC,GAAf,CAAJ,EAAyB;EACvB,cAAI2uC,KAAK,GAAG,CAACjxC,CAAC,CAACsC,GAAF,CAAMkO,KAAN,CAAYgyC,OAAZ,KAAwB,EAAzB,EAA6B,CAA7B,CAAZ;EACA,cAAIG,IAAI,GAAGJ,KAAK,CAACtR,KAAD,CAAhB,CAFuB;EAGvB;EACA;EACA;;EAEA,eAAK,IAAIt0C,CAAC,GAAGnB,CAAb,EAAgBmB,CAAC,GAAG4R,KAAK,CAAC9S,MAA1B,EAAkCkB,CAAC,IAAI,CAAvC,EAA0C;EACxC,gBAAI4R,KAAK,CAAC5R,CAAD,CAAL,CAAS4F,IAAT,CAAcuB,OAAd,CAAsB6+C,IAAtB,MAAgC,CAAC,CAArC,EAAwC;EACtC,kBAAI/yC,GAAG,GAAGjT,CAAC,GAAGnB,CAAJ,GAAQ,CAAlB;EACA8V,cAAAA,IAAI,CAAC1C,IAAL,CAAU7R,CAAC,CAACiS,SAAF,CAAYhP,CAAC,CAACyG,EAAd,EAAkBmJ,GAAlB,CAAV;EACApU,cAAAA,CAAC,GAAGmB,CAAJ;EACA;EACD;EACF;EACF;EACF;EACF,KAvBD,EAFsC;;EA2BtC,QAAI,OAAOiD,CAAP,KAAa,QAAjB,EAA2B;EACzB,UAAI0R,IAAI,CAAC1R,CAAD,CAAR,EAAa;EACX0R,QAAAA,IAAI,GAAG,CAACA,IAAI,CAAC1R,CAAD,CAAL,CAAP;EACD,OAFD,MAEO;EACL0R,QAAAA,IAAI,GAAG,EAAP;EACD;;EAED,aAAO,IAAIoxC,UAAJ,CAAepxC,IAAf,EAAqB,IAArB,EAA2B,KAAKnJ,KAAhC,CAAP;EACD;;EAED,WAAO,IAAIu6C,UAAJ,CAAepxC,IAAf,EAAqB,IAArB,EAA2B,KAAKnJ,KAAhC,CAAP;EACD,GAtCD,CAzBwC;;;EAkExCs1C,EAAAA,GAAG,CAACziD,SAAJ,CAAcsqC,MAAd,GAAuBmY,GAAG,CAACziD,SAAJ,CAAcyqC,UAArC;EACA,SAAOgY,GAAP;EACD,CApED;;EAsEA,IAAIiF,UAAU,GAAGD,WAAjB;;EAGA,IAAIx5C,YAAY,GAAG,SAASA,YAAT,CAAsBvG,MAAtB,EAA8ByF,KAA9B,EAAqC;EACtD,MAAIy6C,IAAI,GAAGlgD,MAAM,CAACkgD,IAAlB,CADsD;EAEtD;EACA;;EAEA,MAAInkD,GAAG,GAAGmkD,IAAI,CAAClkD,IAAL,CAAU,SAAV,CAAV;;EAEA,MAAIkkD,IAAI,CAACtnC,GAAL,CAAS,aAAT,CAAJ,EAA6B;EAC3B,WAAO7c,GAAP;EACD,GATqD;;;EAYtD,MAAIkK,KAAK,GAAG,IAAZ;;EAEA,MAAIi6C,IAAI,CAACtnC,GAAL,CAAS,YAAT,CAAJ,EAA4B;EAC1B3S,IAAAA,KAAK,GAAG,WAAR;EACD,GAFD,MAEO,IAAIi6C,IAAI,CAACtnC,GAAL,CAAS,SAAT,CAAJ,EAAyB;EAC9B3S,IAAAA,KAAK,GAAG,QAAR;EACD,GAFM,MAEA,IAAIi6C,IAAI,CAACtnC,GAAL,CAAS,eAAT,CAAJ,EAA+B;EACpC3S,IAAAA,KAAK,GAAG,cAAR;EACD,GAFM,MAEA,IAAIi6C,IAAI,CAACtnC,GAAL,CAAS,aAAT,CAAJ,EAA6B;EAClC3S,IAAAA,KAAK,GAAG,YAAR;EACD,GAFM,MAEA,IAAIi6C,IAAI,CAACtnC,GAAL,CAAS,QAAT,CAAJ,EAAwB;EAC7B3S,IAAAA,KAAK,GAAG,OAAR;EACD;;EAED,SAAOR,KAAK,CAACE,UAAN,CAAiBY,YAAjB,CAA8BxK,GAA9B,EAAmC0J,KAAnC,EAA0CQ,KAA1C,CAAP;EACD,CA3BD;;EA6BA,IAAIk6C,cAAc,GAAG55C,YAArB;EAGA;EACA;;EACA,IAAI65C,QAAQ,GAAG,SAASA,QAAT,CAAkBC,EAAlB,EAAsB;EACnC,MAAItM,IAAI,GAAGsM,EAAE,CAACnvC,UAAH,CAAc,QAAd,EAAwB5J,IAAxB,EAAX;EACA,SAAOysC,IAAP;EACD,CAHD;EAIA;EACA;;;EAGA,IAAI7B,UAAQ,GAAG,SAASA,QAAT,CAAkBlyC,MAAlB,EAA0B;EACvC,MAAIqgD,EAAE,GAAGrgD,MAAM,CAACkgD,IAAhB;;EAEA,MAAIG,EAAE,CAACznC,GAAH,CAAO,iBAAP,KAA6B5Y,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,iBAArB,CAAjC,EAA0E;EACxE,WAAO,IAAP;EACD;;EAED,MAAIynC,EAAE,CAACznC,GAAH,CAAO,gBAAP,KAA4B5Y,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,gBAArB,CAAhC,EAAwE;EACtE,WAAO,KAAP;EACD,GATsC;;;EAYvC,MAAIm7B,IAAI,GAAGqM,QAAQ,CAACC,EAAD,CAAnB;;EAEA,MAAItM,IAAI,CAACn7B,GAAL,CAAS,eAAT,CAAJ,EAA+B;EAC7B,WAAO,IAAP;EACD;;EAED,MAAIm7B,IAAI,CAACn7B,GAAL,CAAS,SAAT,CAAJ,EAAyB;EACvB,WAAO,IAAP;EACD;;EAED,MAAIm7B,IAAI,CAACn7B,GAAL,CAAS,WAAT,CAAJ,EAA2B;EACzB,WAAO,KAAP;EACD;;EAED,SAAO,IAAP;EACD,CA3BD;;EA6BA,IAAI2nC,UAAU,GAAGrO,UAAjB;EAGA;EACA;EACA;EACA;;EAEA,IAAIsO,UAAU,GAAG,SAASA,UAAT,CAAoBxgD,MAApB,EAA4ByF,KAA5B,EAAmC;EAClD,MAAI46C,EAAE,GAAGrgD,MAAM,CAACkgD,IAAhB,CADkD;;EAGlD,MAAIlgD,MAAM,CAACiF,QAAP,CAAgBnF,KAApB,EAA2B;EACzB;EACD,GALiD;;;EAQlD,MAAIE,MAAM,CAACsgD,SAAP,CAAiBxgD,KAArB,EAA4B;EAC1BE,IAAAA,MAAM,CAACsgD,SAAP,CAAiBllB,EAAjB,CAAoB,CAApB,EAAuB/rB,MAAvB,CAA8B,KAA9B,EAD0B;;EAG1B,QAAIrP,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,iBAArB,CAAJ,EAA6C;EAC3C5Y,MAAAA,MAAM,CAACsgD,SAAP,CAAiBthD,OAAjB,CAAyB,UAAzB,EAAqC,UAArC;EACD;;EAED;EACD,GAhBiD;;;EAmBlD,MAAIqhD,EAAE,CAACznC,GAAH,CAAO,2BAAP,CAAJ,EAAyC;EACvCynC,IAAAA,EAAE,CAAChxC,MAAH,CAAU,KAAV;EACA;EACD,GAtBiD;;;EAyBlD,MAAIgxC,EAAE,CAACznC,GAAH,CAAO,YAAP,CAAJ,EAA0B;EACxB,QAAIyM,GAAG,GAAG86B,cAAc,CAACngD,MAAD,EAASyF,KAAT,CAAxB;EACA46C,IAAAA,EAAE,CAAC3hB,WAAH,CAAerZ,GAAf,EAAoB,IAApB;EACAg7B,IAAAA,EAAE,CAAC1wC,OAAH,CAAW,SAAX;EACA;EACD,GA9BiD;;;EAiClD,MAAI0wC,EAAE,CAACznC,GAAH,CAAO,eAAP,CAAJ,EAA6B;EAC3B,QAAI6nC,IAAI,GAAGN,cAAc,CAACngD,MAAD,EAASyF,KAAT,CAAzB;;EAEA46C,IAAAA,EAAE,CAAC3hB,WAAH,CAAe+hB,IAAf,EAAqB,IAArB;;EAEA,QAAIF,UAAU,CAACvgD,MAAD,CAAd,EAAwB;EACtBqgD,MAAAA,EAAE,CAAC1wC,OAAH,CAAW,QAAX;EACD,KAFD,MAEO;EACL0wC,MAAAA,EAAE,CAAC1wC,OAAH,CAAW,UAAX;EACD;;EAED;EACD,GA7CiD;;;EAgDlD,MAAI0wC,EAAE,CAACznC,GAAH,CAAO,SAAP,CAAJ,EAAuB;EACrB,QAAI8nC,KAAK,GAAGP,cAAc,CAACngD,MAAD,EAASyF,KAAT,CAA1B;;EAEA46C,IAAAA,EAAE,CAAC3hB,WAAH,CAAegiB,KAAf,EAAsB,IAAtB;EACAL,IAAAA,EAAE,CAAC1wC,OAAH,CAAW,KAAX;EACA;EACD,GAtDiD;;;EAyDlD,MAAI4wC,UAAU,CAACvgD,MAAD,CAAd,EAAwB;EACtBqgD,IAAAA,EAAE,CAAC1wC,OAAH,CAAW,UAAX;EACA;EACD,GA5DiD;;;EA+DlD0wC,EAAAA,EAAE,CAAC1wC,OAAH,CAAW,QAAX;EACA;EACD,CAjED;;EAmEA,IAAIgxC,YAAY,GAAGH,UAAnB;EAGA;EACA;;EACA,IAAII,UAAU,GAAG,SAASA,UAAT,CAAoBP,EAApB,EAAwB;EACvC,MAAIQ,MAAM,GAAGR,EAAE,CAACnvC,UAAH,EAAb;EACA,MAAI4vC,QAAQ,GAAGD,MAAM,CAAC37B,KAAP,CAAa,IAAb,EAAmB;EAChCo6B,IAAAA,aAAa,EAAE;EADiB,GAAnB,EAEZh4C,IAFY,EAAf,CAFuC;;EAMvC,MAAI,CAACw5C,QAAQ,CAAChhD,KAAd,EAAqB;EACnBghD,IAAAA,QAAQ,GAAGD,MAAM,CAAC/yC,KAAP,CAAa,kBAAb,EAAiCxG,IAAjC,EAAX;EACAw5C,IAAAA,QAAQ,GAAGA,QAAQ,CAACt8C,GAAT,CAAa,OAAb,EAAsB0gB,KAAtB,EAAX;EACD;;EAED,SAAO47B,QAAP;EACD,CAZD;;EAcA,IAAIC,YAAY,GAAGH,UAAnB;;EAEA,IAAII,SAAS,GAAG,SAASA,SAAT,CAAmBX,EAAnB,EAAuB;EACrC,MAAIrgD,MAAM,GAAG;EACXihD,IAAAA,MAAM,EAAEZ,EAAE,CAACvyC,KAAH,CAAS,UAAT,CADG;EAEX;EACA7I,IAAAA,QAAQ,EAAEo7C,EAAE,CAACvyC,KAAH,CAAS,WAAT,CAHC;EAIX;EACAwyC,IAAAA,SAAS,EAAED,EAAE,CAACvyC,KAAH,CAAS,aAAT,EAAwB+K,GAAxB,CAA4B,qBAA5B,CALA;EAMX;EACAqoC,IAAAA,QAAQ,EAAEb,EAAE,CAACvyC,KAAH,CAAS,WAAT,CAPC;EAQX;EACAoyC,IAAAA,IAAI,EAAEG,EAAE,CAACvyC,KAAH,CAAS,QAAT,EAAmB+K,GAAnB,CAAuB,0CAAvB,CATK;EAUX9Z,IAAAA,QAAQ,EAAEshD,EAVC;EAWXc,IAAAA,OAAO,EAAEJ,YAAY,CAACV,EAAD;EAXV,GAAb,CADqC;;EAerC,MAAI,CAACrgD,MAAM,CAACkgD,IAAP,CAAYpgD,KAAjB,EAAwB;EACtB;EACA1G,IAAAA,MAAM,CAAC0E,IAAP,CAAYkC,MAAZ,EAAoBjC,OAApB,CAA4B,UAAUhB,CAAV,EAAa;EACvCiD,MAAAA,MAAM,CAACjD,CAAD,CAAN,GAAYiD,MAAM,CAACjD,CAAD,CAAN,CAAU8b,GAAV,CAAc,GAAd,CAAZ;EACD,KAFD,EAFsB;;EAMtB7Y,IAAAA,MAAM,CAACkgD,IAAP,GAAcG,EAAd;EACA,WAAOrgD,MAAP;EACD,GAvBoC;;;EA0BrC,MAAIA,MAAM,CAACihD,MAAP,IAAiBjhD,MAAM,CAACihD,MAAP,CAAcnhD,KAAnC,EAA0C;EACxC,QAAIgO,KAAK,GAAG9N,MAAM,CAACihD,MAAP,CAAcjlD,IAAd,CAAmB,SAAnB,IAAgC,GAA5C;;EAEA,QAAIqkD,EAAE,CAACznC,GAAH,CAAO9K,KAAP,CAAJ,EAAmB;EACjB9N,MAAAA,MAAM,CAACohD,WAAP,GAAqB,IAArB;EACD;EACF;;EAED,SAAOphD,MAAP;EACD,CAnCD;;EAqCA,IAAIw6B,KAAK,GAAGwmB,SAAZ;EAEA;;EAEA,IAAIK,IAAI,GAAG,SAASA,IAAT,CAAcrhD,MAAd,EAAsB;EAC/B,MAAIshD,GAAG,GAAG,KAAV;EACA,MAAIj9B,MAAM,GAAGk8B,UAAU,CAACvgD,MAAD,CAAvB;EACA,MAAIuhD,UAAU,GAAGvhD,MAAM,CAACiF,QAAP,CAAgBnF,KAAjC,CAH+B;EAI/B;EACA;EACA;EACA;;EAEA,MAAIE,MAAM,CAACkgD,IAAP,CAAYhvC,UAAZ,CAAuB,0BAAvB,EAAmDpR,KAAvD,EAA8D;EAC5DwhD,IAAAA,GAAG,GAAG,IAAN;EACD;;EAED,MAAIppD,GAAG,GAAG;EACRgO,IAAAA,SAAS,EAAE,KADH;EAERE,IAAAA,YAAY,EAAE,IAFN;EAGR4X,IAAAA,WAAW,EAAE,SAHL;EAIRhY,IAAAA,UAAU,EAAE,IAJJ;EAKRG,IAAAA,MAAM,EAAE,OALA;EAMRG,IAAAA,KAAK,EAAE,EANC;EAOR6X,IAAAA,YAAY,EAAE,MAPN;EAQRC,IAAAA,UAAU,EAAE;EARJ,GAAV,CAb+B;;EAwB/B,MAAIkjC,GAAG,KAAK,IAAZ,EAAkB;EAChBppD,IAAAA,GAAG,CAACkO,YAAJ,GAAmB,IAAnB;EACAlO,IAAAA,GAAG,CAAC8N,UAAJ,GAAiB,IAAjB;EACD;;EAED,MAAIqe,MAAJ,EAAY;EACVnsB,IAAAA,GAAG,CAACgO,SAAJ,GAAgB,MAAhB;EACAhO,IAAAA,GAAG,CAACkO,YAAJ,GAAmB,KAAnB;EACAlO,IAAAA,GAAG,CAAC8N,UAAJ,GAAiB,KAAjB;EACD;;EAED,MAAIu7C,UAAJ,EAAgB;EACdrpD,IAAAA,GAAG,CAACgO,SAAJ,IAAiB,MAAjB;EACAhO,IAAAA,GAAG,CAACkO,YAAJ,IAAoB,MAApB;EACAlO,IAAAA,GAAG,CAAC8lB,WAAJ,GAAkB,aAAlB;EACA9lB,IAAAA,GAAG,CAAC8N,UAAJ,IAAkB,MAAlB;EACA9N,IAAAA,GAAG,CAACimB,YAAJ,GAAmB,SAASjmB,GAAG,CAACimB,YAAhC;EACAjmB,IAAAA,GAAG,CAACkmB,UAAJ,GAAiB,SAASlmB,GAAG,CAACkmB,UAA9B;EACAlmB,IAAAA,GAAG,CAACiO,MAAJ,GAAa,SAASjO,GAAG,CAACiO,MAA1B;EACD;;EAED,SAAOjO,GAAP;EACD,CA9CD;;EAgDA,IAAIspD,MAAM,GAAGH,IAAb;;EAGA,IAAII,OAAO,GAAG,SAASA,OAAT,CAAiBzhD,MAAjB,EAAyB;EACrC,MAAIjE,GAAG,GAAGiE,MAAM,CAACkgD,IAAP,CAAYlkD,IAAZ,EAAV;EACA,MAAI4U,GAAG,GAAG;EACR1K,IAAAA,SAAS,EAAEnK,GAAG,GAAG,OADT;EAERqK,IAAAA,YAAY,EAAErK,GAFN;EAGRiiB,IAAAA,WAAW,EAAEjiB,GAHL;EAIRiK,IAAAA,UAAU,EAAEjK,GAJJ;EAKR;EACA;EACA;;EAPQ,GAAV;EAUA,SAAO6U,GAAP;EACD,CAbD;;EAeA,IAAI8wC,SAAS,GAAGD,OAAhB;;EAEA,IAAIj9B,SAAS,GAAG,SAASA,SAAT,CAAmBxkB,MAAnB,EAA2ByF,KAA3B,EAAkC;EAChD,MAAIy6C,IAAI,GAAGlgD,MAAM,CAACkgD,IAAlB,CADgD;;EAGhD,MAAIA,IAAI,CAACtnC,GAAL,CAAS,SAAT,KAAuBsnC,IAAI,CAACze,GAAL,CAAS,QAAT,MAAuB,IAAvB,IAA+BzhC,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,MAArB,CAA1D,EAAwF;EACtF,WAAO4oC,MAAM,CAACxhD,MAAD,CAAb;EACD,GAL+C;;;EAQhD,MAAIA,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,KAArB,KAA+BsnC,IAAI,CAACtnC,GAAL,CAAS,SAAT,CAAnC,EAAwD;EACtD,QAAI+oC,EAAE,GAAG3hD,MAAM,CAACjB,QAAP,CAAgB4M,KAAhB,EAAT;EACA,QAAIi2C,IAAI,GAAGD,EAAE,CAACh2C,KAAH,GAAW3M,OAAX,CAAmB,KAAnB,EAA0B,MAA1B,CAAX;EACA,QAAIorB,GAAG,GAAGu3B,EAAE,CAACh2C,KAAH,GAAW3M,OAAX,CAAmB,KAAnB,EAA0B,SAA1B,CAAV;;EAEA,QAAI6iD,WAAW,GAAG1B,cAAc,CAACngD,MAAD,EAASyF,KAAT,CAAhC;;EAEA,QAAImL,GAAG,GAAG;EACR1K,MAAAA,SAAS,EAAE07C,IAAI,CAAC5lD,IAAL,EADH;EAERoK,MAAAA,YAAY,EAAEu7C,EAAE,CAAC3lD,IAAH,EAFN;EAGRgiB,MAAAA,WAAW,EAAEoM,GAAG,CAACpuB,IAAJ,EAHL;EAIRgK,MAAAA,UAAU,EAAE67C;EAJJ,KAAV;EAMA,WAAOjxC,GAAP;EACD,GAtB+C;;;EAyBhD,MAAIsvC,IAAI,CAACtnC,GAAL,CAAS,QAAT,CAAJ,EAAwB;EACtB,WAAO8oC,SAAS,CAAC1hD,MAAD,CAAhB;EACD,GA3B+C;EA4BhD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAGA,MAAI8B,SAAS,GAAG9B,MAAM,CAACkgD,IAAP,CAAY1kB,QAAZ,CAAqB,CAArB,EAAwB15B,SAAxB,EAAhB;EACA,MAAIggD,UAAU,GAAG3B,cAAc,CAACngD,MAAD,EAASyF,KAAT,CAA/B;;EAEA,MAAI,CAACq8C,UAAL,EAAiB;EACf,WAAO,EAAP;EACD;;EAED,MAAIx8B,KAAK,GAAG7f,KAAK,CAACE,UAAN,CAAiB6e,SAAjB,CAA2Bs9B,UAA3B,EAAuCr8C,KAAvC,CAAZ;EACA6f,EAAAA,KAAK,CAACtf,UAAN,GAAmB87C,UAAnB,CAhDgD;;EAkDhD,MAAI9hD,MAAM,CAACkhD,QAAP,CAAgBphD,KAApB,EAA2B;EACzB,QAAIohD,QAAQ,GAAGlhD,MAAM,CAACkhD,QAAP,CAAgBllD,IAAhB,EAAf;EACA,QAAI+lD,KAAK,GAAGjgD,SAAS,KAAK,IAAd,GAAqB,GAArB,GAA2B,GAAvC;EACA1I,IAAAA,MAAM,CAAC0E,IAAP,CAAYwnB,KAAZ,EAAmBvnB,OAAnB,CAA2B,UAAUhB,CAAV,EAAa;EACtC,aAAOuoB,KAAK,CAACvoB,CAAD,CAAL,IAAYglD,KAAK,GAAGb,QAA3B;EACD,KAFD;EAGD,GAxD+C;EAyDhD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAGA,MAAIK,UAAU,GAAGvhD,MAAM,CAACiF,QAAP,CAAgBnF,KAAjC;;EAEA,MAAIyhD,UAAJ,EAAgB;EACdj8B,IAAAA,KAAK,CAACpf,SAAN,GAAkB,aAAaof,KAAK,CAACtf,UAArC;EACAsf,IAAAA,KAAK,CAAClf,YAAN,GAAqB,cAAckf,KAAK,CAACtf,UAAzC;EACAsf,IAAAA,KAAK,CAACnf,MAAN,GAAe,SAASmf,KAAK,CAACnf,MAA9B;EACD,GA3E+C;;;EA8EhD,MAAI,CAACmf,KAAK,CAACtH,WAAX,EAAwB;EACtB,QAAIujC,UAAJ,EAAgB;EACdj8B,MAAAA,KAAK,CAACtH,WAAN,GAAoB,cAAcsH,KAAK,CAACtf,UAAxC;EACD,KAFD,MAEO;EACLsf,MAAAA,KAAK,CAACtH,WAAN,GAAoB,UAAUsH,KAAK,CAACtf,UAApC;EACD;EACF;;EAED,MAAIu7C,UAAJ,EAAgB;EACdj8B,IAAAA,KAAK,CAACtf,UAAN,GAAmB,SAASsf,KAAK,CAACtf,UAAlC;EACD;;EAED,SAAOsf,KAAP;EACD,CA3FD;;EA6FA,IAAI08B,WAAW,GAAGx9B,SAAlB;EAGA;;EAEA,IAAIy9B,eAAe,GAAG,SAASC,aAAT,CAAuBliD,MAAvB,EAA+B;EACnD,MAAIA,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,mCAArB,CAAJ,EAA+D;EAC7D,WAAO,IAAP;EACD;;EAED,MAAI5Y,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,cAArB,CAAJ,EAA0C;EACxC,WAAO,IAAP;EACD;;EAED,MAAI5Y,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,cAArB,CAAJ,EAA0C;EACxC,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CAdD;;;EAiBA,IAAIupC,YAAY,GAAG,SAASA,YAAT,CAAsBniD,MAAtB,EAA8ByF,KAA9B,EAAqC;EACtD;EACA,MAAIzF,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,YAArB,KAAsC5Y,MAAM,CAACkgD,IAAP,CAAYtnC,GAAZ,CAAgB,aAAhB,CAA1C,EAA0E;EACxE;EACD,GAJqD;;;EAOtD,MAAI1gB,GAAG,GAAG8pD,WAAW,CAAChiD,MAAD,EAASyF,KAAT,CAArB;EACA,MAAI1J,GAAG,GAAG7D,GAAG,CAACmO,UAAJ,IAAkBnO,GAAG,CAACgO,SAAhC;;EAEA,MAAInK,GAAJ,EAAS;EACPiE,IAAAA,MAAM,CAACkgD,IAAP,CAAYxhB,WAAZ,CAAwB3iC,GAAxB,EAA6B,KAA7B;EACD,GAZqD;;;EAetD,MAAIiE,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,cAArB,CAAJ,EAA0C;EACxC5Y,IAAAA,MAAM,CAACsgD,SAAP,CAAiB7mC,MAAjB,CAAwB,IAAxB;EACAzZ,IAAAA,MAAM,CAACsgD,SAAP,CAAiBthD,OAAjB,CAAyB,OAAzB,EAAkC,WAAlC;EACD,GAlBqD;;;EAqBtD,MAAI,CAACgB,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,MAArB,CAAL,EAAmC;EACjC5Y,IAAAA,MAAM,CAACsgD,SAAP,CAAiBjxC,MAAjB,CAAwB,MAAxB;EACD,GAvBqD;;;EA0BtDrP,EAAAA,MAAM,CAACkgD,IAAP,CAAY17C,GAAZ,CAAgB,YAAhB,EAA8B,cAA9B,EA1BsD;;EA4BtDxE,EAAAA,MAAM,CAACsgD,SAAP,CAAiBthD,OAAjB,CAAyB,KAAzB,EAAgC,OAAhC,EA5BsD;;EA8BtDgB,EAAAA,MAAM,CAACsgD,SAAP,CAAiBthD,OAAjB,CAAyB,SAAzB,EAAoC,WAApC,EA9BsD;;EAgCtDgB,EAAAA,MAAM,CAACsgD,SAAP,CAAiBthD,OAAjB,CAAyB,UAAzB,EAAqC,UAArC,EAhCsD;;EAkCtDgB,EAAAA,MAAM,CAACsgD,SAAP,CAAiB97C,GAAjB,CAAqB,WAArB;EACD,CAnCD;;EAqCA,IAAI49C,UAAU,GAAG;EACfF,EAAAA,aAAa,EAAED,eADA;EAEfE,EAAAA,YAAY,EAAEA;EAFC,CAAjB;EAKA,IAAIE,aAAa,GAAGD,UAAU,CAACD,YAA/B;EAAA,IACID,aAAa,GAAGE,UAAU,CAACF,aAD/B;;EAGA,IAAII,WAAW,GAAG,SAASA,WAAT,CAAqBtiD,MAArB,EAA6B;EAC7C;EACAA,EAAAA,MAAM,CAACsgD,SAAP,CAAiB7mC,MAAjB,CAAwB,qBAAxB;EACAzZ,EAAAA,MAAM,CAACsgD,SAAP,CAAiB7mC,MAAjB,CAAwB,YAAxB;EACAzZ,EAAAA,MAAM,CAACsgD,SAAP,CAAiB7mC,MAAjB,CAAwB,gBAAxB,EAJ6C;;EAM7CzZ,EAAAA,MAAM,CAACkhD,QAAP,CAAgBznC,MAAhB;EACAzZ,EAAAA,MAAM,CAACiF,QAAP,CAAgBwU,MAAhB;EACA,SAAOzZ,MAAP;EACD,CATD;;EAWA,IAAIuiD,SAAS,GAAG;EACd;EACA95C,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc9B,OAAd,EAAuB;EAC3B,QAAI0F,KAAK,GAAG,IAAZ;;EAEA,QAAInP,CAAC,GAAG,IAAR;;EAEA,QAAI,OAAOyJ,OAAP,KAAmB,QAAvB,EAAiC;EAC/BzJ,MAAAA,CAAC,GAAGyJ,OAAJ;EACAA,MAAAA,OAAO,GAAG,IAAV;EACD;;EAEDA,IAAAA,OAAO,GAAGA,OAAO,IAAI;EACnB3K,MAAAA,IAAI,EAAE,IADa;EAEnB+K,MAAAA,MAAM,EAAE,IAFW;EAGnBjI,MAAAA,IAAI,EAAE,IAHa;EAInB+M,MAAAA,KAAK,EAAE;EAJY,KAArB;EAMA,QAAI+E,GAAG,GAAG,EAAV;EACA,SAAK7S,OAAL,CAAa,UAAU1D,CAAV,EAAa;EACxB,UAAIoO,IAAI,GAAGpO,CAAC,CAACoO,IAAF,CAAO9B,OAAP,EAAgB,CAAhB,CAAX;EACA,UAAI3G,MAAM,GAAGw6B,KAAK,CAACngC,CAAD,CAAlB;EACAoO,MAAAA,IAAI,CAAC27B,KAAL,GAAa,EAAb;EACAhrC,MAAAA,MAAM,CAAC0E,IAAP,CAAYkC,MAAZ,EAAoBjC,OAApB,CAA4B,UAAUhB,CAAV,EAAa;EACvC,YAAIiD,MAAM,CAACjD,CAAD,CAAN,IAAaiD,MAAM,CAACjD,CAAD,CAAN,CAAUoL,GAAV,KAAkB,KAAnC,EAA0C;EACxCM,UAAAA,IAAI,CAAC27B,KAAL,CAAWrnC,CAAX,IAAgBiD,MAAM,CAACjD,CAAD,CAAN,CAAUf,IAAV,CAAe,QAAf,CAAhB;EACD,SAFD,MAEO;EACLyM,UAAAA,IAAI,CAAC27B,KAAL,CAAWrnC,CAAX,IAAgBiD,MAAM,CAACjD,CAAD,CAAtB;EACD;EACF,OAND;EAOA0L,MAAAA,IAAI,CAAC84C,UAAL,GAAkBlnD,CAAC,CAACue,GAAF,CAAM,WAAN,CAAlB;EACAnQ,MAAAA,IAAI,CAAC8hB,YAAL,GAAoBy3B,WAAW,CAAChiD,MAAD,EAASqM,KAAK,CAAC5G,KAAf,CAA/B;EACAmL,MAAAA,GAAG,CAAC1E,IAAJ,CAASzD,IAAT;EACD,KAdD;;EAgBA,QAAIvL,CAAC,KAAK,IAAV,EAAgB;EACd,aAAO0T,GAAG,CAAC1T,CAAD,CAAV;EACD;;EAED,WAAO0T,GAAP;EACD,GAxCa;;EA0Cd;EACAoyB,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,QAAIp0B,IAAI,GAAG,EAAX,CAD0B;;EAG1B,SAAK7Q,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAImC,IAAI,GAAGhoB,KAAK,CAAC6lB,EAAD,CAAL,CAAUY,MAArB;;EAEA,UAAIuB,IAAI,CAAC1iD,KAAT,EAAgB;EACd8O,QAAAA,IAAI,GAAGA,IAAI,CAAC9B,MAAL,CAAY01C,IAAI,CAAC5zC,IAAjB,CAAP;EACD;EACF,KAND,EAH0B;;EAW1B,QAAI3R,CAAC,GAAG,KAAKiU,UAAL,CAAgB,WAAhB,CAAR;;EAEA,QAAIjU,CAAC,CAAC6C,KAAN,EAAa;EACX8O,MAAAA,IAAI,GAAG3R,CAAC,CAAC2R,IAAF,CAAO9B,MAAP,CAAc8B,IAAd,CAAP;EACD,KAfyB;;;EAkB1B3R,IAAAA,CAAC,GAAG,KAAK6T,SAAL,CAAe,WAAf,CAAJ;;EAEA,QAAI7T,CAAC,CAAC6C,KAAN,EAAa;EACX8O,MAAAA,IAAI,GAAGA,IAAI,CAAC9B,MAAL,CAAY7P,CAAC,CAAC2R,IAAd,CAAP;EACD;;EAED,WAAO,KAAKtC,SAAL,CAAesC,IAAf,CAAP;EACD,GApEa;EAqEd;;EAEA;EACAsjC,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,QAAIp5B,MAAM,GAAG,IAAb;;EAEA,QAAIlK,IAAI,GAAG,EAAX;EACA,SAAK7Q,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAIrgD,MAAM,GAAGw6B,KAAK,CAAC6lB,EAAD,CAAlB;;EAEA,UAAIE,UAAU,CAACvgD,MAAD,EAAS8Y,MAAM,CAACrT,KAAhB,CAAV,KAAqC,IAAzC,EAA+C;EAC7CmJ,QAAAA,IAAI,CAAC1C,IAAL,CAAUm0C,EAAE,CAACzxC,IAAH,CAAQ,CAAR,CAAV;EACD;EACF,KAND;EAOA,WAAO,KAAKtC,SAAL,CAAesC,IAAf,CAAP;EACD,GApFa;;EAsFd;EACAqjC,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;EAChC,QAAIj5B,MAAM,GAAG,IAAb;;EAEA,QAAIpK,IAAI,GAAG,EAAX;EACA,SAAK7Q,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAIrgD,MAAM,GAAGw6B,KAAK,CAAC6lB,EAAD,CAAlB;;EAEA,UAAIE,UAAU,CAACvgD,MAAD,EAASgZ,MAAM,CAACvT,KAAhB,CAAV,KAAqC,KAAzC,EAAgD;EAC9CmJ,QAAAA,IAAI,CAAC1C,IAAL,CAAUm0C,EAAE,CAACzxC,IAAH,CAAQ,CAAR,CAAV;EACD;EACF,KAND;EAOA,WAAO,KAAKtC,SAAL,CAAesC,IAAf,CAAP;EACD,GAnGa;EAoGd;;EAEA;EACA4V,EAAAA,SAAS,EAAE,SAASA,SAAT,GAAqB;EAC9B,QAAI8Y,MAAM,GAAG,IAAb;;EAEA,QAAI9hC,MAAM,GAAG,EAAb;EACA,SAAKuC,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAIrgD,MAAM,GAAGw6B,KAAK,CAAC6lB,EAAD,CAAlB;EAEA,UAAI/6B,KAAK,GAAG08B,WAAW,CAAChiD,MAAD,EAASs9B,MAAM,CAAC73B,KAAhB,CAAvB;EAEAjK,MAAAA,MAAM,CAAC0Q,IAAP,CAAYoZ,KAAZ;EACD,KAND;EAOA,WAAO9pB,MAAP;EACD,GAnHa;;EAqHd;EACAinD,EAAAA,WAAW,EAAE,SAASA,WAAT,GAAuB;EAClC,QAAIllB,MAAM,GAAG,IAAb;;EAEA,SAAKx/B,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAIrgD,MAAM,GAAGw6B,KAAK,CAAC6lB,EAAD,CAAlB,CADyB;;EAGzB,UAAI6B,aAAa,CAACliD,MAAD,CAAjB,EAA2B;EACzBqiD,QAAAA,aAAa,CAACriD,MAAD,EAASu9B,MAAM,CAAC93B,KAAhB,CAAb;;EAEA;EACD;;EAED,UAAI46C,EAAE,CAACznC,GAAH,CAAO,aAAP,CAAJ,EAA2B;EACzB;EACD,OAXwB;;;EAczB,UAAIynC,EAAE,CAACznC,GAAH,CAAO,IAAP,KAAgBynC,EAAE,CAACnvC,UAAH,CAAc,KAAd,EAAqBpR,KAAzC,EAAgD;EAC9C;EACD,OAhBwB;;;EAmBzB,UAAIE,MAAM,CAACkgD,IAAP,CAAYtnC,GAAZ,CAAgB,SAAhB,KAA8B5Y,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,eAArB,CAAlC,EAAyE;EACvEynC,QAAAA,EAAE,CAACrhD,OAAH,CAAW,IAAX,EAAiB,KAAjB;EACA;EACD;;EAED,UAAIjD,GAAG,GAAGimD,WAAW,CAAChiD,MAAD,EAASu9B,MAAM,CAAC93B,KAAhB,CAAX,CAAkCS,SAA5C;;EAEA,UAAInK,GAAJ,EAAS;EACPiE,QAAAA,MAAM,GAAGsiD,WAAW,CAACtiD,MAAD,CAApB;EACAA,QAAAA,MAAM,CAACkgD,IAAP,CAAYxhB,WAAZ,CAAwB3iC,GAAxB,EAA6B,KAA7B,EAFO;EAGR;EACF,KA9BD;EA+BA,WAAO,IAAP;EACD,GAzJa;;EA2Jd;EACA2mD,EAAAA,cAAc,EAAE,SAASA,cAAT,GAA0B;EACxC,QAAIC,MAAM,GAAG,IAAb;;EAEA,SAAK5kD,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAIrgD,MAAM,GAAGw6B,KAAK,CAAC6lB,EAAD,CAAlB;EAEA,UAAInoD,GAAG,GAAG8pD,WAAW,CAAChiD,MAAD,EAAS2iD,MAAM,CAACl9C,KAAhB,CAArB;EAEA,UAAI1J,GAAG,GAAG7D,GAAG,CAACkO,YAAd,CALyB;;EAOzB,UAAIi6C,EAAE,CAACnvC,UAAH,CAAc,0BAAd,EAA0CpR,KAA9C,EAAqD;EACnD/D,QAAAA,GAAG,GAAG7D,GAAG,CAAC8N,UAAV;EACD;;EAED,UAAIjK,GAAJ,EAAS;EACP;EACA;EACA,YAAIiE,MAAM,CAACsgD,SAAP,CAAiB1nC,GAAjB,CAAqB,iBAArB,CAAJ,EAA6C;EAC3C5Y,UAAAA,MAAM,CAACsgD,SAAP,CAAiBthD,OAAjB,CAAyB,iBAAzB,EAA4C,UAA5C;;EAEA,cAAI9G,GAAG,CAAComB,QAAR,EAAkB;EAChBviB,YAAAA,GAAG,GAAG7D,GAAG,CAAComB,QAAJ,IAAgBpmB,GAAG,CAACgO,SAA1B;EACD;;EAED;EACD;;EAEDlG,QAAAA,MAAM,CAACkgD,IAAP,CAAYxhB,WAAZ,CAAwB3iC,GAAxB,EAA6B,KAA7B;EACAiE,QAAAA,MAAM,CAACkgD,IAAP,CAAY17C,GAAZ,CAAgB,cAAhB;EACAxE,QAAAA,MAAM,GAAGsiD,WAAW,CAACtiD,MAAD,CAApB,CAfO;;EAiBPA,QAAAA,MAAM,CAACsgD,SAAP,CAAiB7mC,MAAjB,CAAwB,QAAxB;EACD;EACF,KA9BD;EA+BA,WAAO,IAAP;EACD,GA/La;;EAiMd;EACAmpC,EAAAA,aAAa,EAAE,SAASA,aAAT,GAAyB;EACtC,QAAIC,MAAM,GAAG,IAAb;;EAEA,SAAK9kD,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAIrgD,MAAM,GAAGw6B,KAAK,CAAC6lB,EAAD,CAAlB,CADyB;;EAGzB,UAAI6B,aAAa,CAACliD,MAAD,CAAjB,EAA2B;EACzB;EACD;;EAED,UAAIjE,GAAG,GAAGimD,WAAW,CAAChiD,MAAD,EAAS6iD,MAAM,CAACp9C,KAAhB,CAAX,CAAkCuY,WAA5C;;EAEA,UAAIjiB,GAAJ,EAAS;EACPiE,QAAAA,MAAM,GAAGsiD,WAAW,CAACtiD,MAAD,CAApB,CADO;;EAGPA,QAAAA,MAAM,CAACsgD,SAAP,CAAiB7mC,MAAjB,CAAwB,QAAxB;EACAzZ,QAAAA,MAAM,CAACkgD,IAAP,CAAYxhB,WAAZ,CAAwB3iC,GAAxB,EAA6B,KAA7B;EACAiE,QAAAA,MAAM,CAACkgD,IAAP,CAAY17C,GAAZ,CAAgB,aAAhB;EACD;EACF,KAhBD;EAiBA,WAAO,IAAP;EACD,GAvNa;;EAyNd;EACA+B,EAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;EACpC,QAAIu8C,MAAM,GAAG,IAAb;;EAEA,SAAK/kD,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAIrgD,MAAM,GAAGw6B,KAAK,CAAC6lB,EAAD,CAAlB;EAEA,UAAItkD,GAAG,GAAGimD,WAAW,CAAChiD,MAAD,EAAS8iD,MAAM,CAACr9C,KAAhB,CAAX,CAAkCO,UAA5C;;EAEA,UAAIjK,GAAJ,EAAS;EACPskD,QAAAA,EAAE,CAAC3hB,WAAH,CAAe3iC,GAAf,EAAoB,KAApB;EACAskD,QAAAA,EAAE,CAAC77C,GAAH,CAAO,YAAP;EACD;EACF,KATD;EAUA,WAAO,IAAP;EACD,GAxOa;;EA0Od;EACAu+C,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,QAAIC,MAAM,GAAG,IAAb;;EAEA,SAAKjlD,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAIrgD,MAAM,GAAGw6B,KAAK,CAAC6lB,EAAD,CAAlB;EAEA,UAAItkD,GAAG,GAAGimD,WAAW,CAAChiD,MAAD,EAASgjD,MAAM,CAACv9C,KAAhB,CAAX,CAAkCU,MAA5C;;EAEA,UAAIpK,GAAJ,EAAS;EACPskD,QAAAA,EAAE,CAAC3hB,WAAH,CAAe3iC,GAAf,EAAoB,KAApB;EACAskD,QAAAA,EAAE,CAAC77C,GAAH,CAAO,QAAP;EACD;EACF,KATD;EAUA,WAAO,IAAP;EACD,GAzPa;;EA2Pd;EACA29C,EAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;EACpC,QAAIc,OAAO,GAAG,IAAd;;EAEA,SAAKllD,OAAL,CAAa,UAAUsiD,EAAV,EAAc;EACzB,UAAIrgD,MAAM,GAAGw6B,KAAK,CAAC6lB,EAAD,CAAlB;EACA,UAAI6C,KAAK,GAAG,CAACljD,MAAM,CAACsgD,SAAP,CAAiBxgD,KAA9B;;EAEAuiD,MAAAA,aAAa,CAACriD,MAAD,EAASijD,OAAO,CAACx9C,KAAjB,CAAb,CAJyB;;;EAOzB,UAAIy9C,KAAJ,EAAW;EACTljD,QAAAA,MAAM,CAACkgD,IAAP,CAAYvwC,OAAZ,CAAoB3P,MAAM,CAACsgD,SAAP,CAAiBtkD,IAAjB,EAApB;EACAgE,QAAAA,MAAM,CAACsgD,SAAP,CAAiB7mC,MAAjB;EACD;EACF,KAXD;EAYA,WAAO,IAAP;EACD,GA5Qa;EA6Qd;;EAEA;EACA8nC,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;EAChC,WAAO,KAAK,IAAL,EAAW,WAAX,CAAP;EACD,GAlRa;;EAoRd;EACA4B,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;EAChC,WAAO,KAAK3mB,IAAL,CAAU,WAAV,CAAP;EACD,GAvRa;;EAyRd;EACA4mB,EAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;EACpC,WAAO,KAAK,IAAL,EAAW,aAAX,CAAP;EACD,GA5Ra;;EA8Rd;EACA5C,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;EAChC,QAAI6C,OAAO,GAAG,IAAd;;EAEA,SAAKz0C,IAAL,CAAU7Q,OAAV,CAAkB,UAAU1D,CAAV,EAAa;EAC7B,UAAI0U,GAAG,GAAGs0C,OAAO,CAAC/2C,SAAR,CAAkB,CAACjS,CAAD,CAAlB,CAAV;;EAEA,UAAI2F,MAAM,GAAGw6B,KAAK,CAACzrB,GAAD,CAAlB;EAEA4xC,MAAAA,YAAY,CAAC3gD,MAAD,EAAS+O,GAAG,CAACtJ,KAAb,CAAZ;EACD,KAND;EAOA,WAAO,IAAP;EACD,GA1Sa;;EA4Sd;EACA69C,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;EAChC,QAAIrmD,CAAC,GAAG,KAAK6Q,KAAL,CAAW,cAAX,CAAR;;EAEA,QAAI7Q,CAAC,CAAC6C,KAAN,EAAa;EACX7C,MAAAA,CAAC,CAACwc,MAAF,CAAS,QAAT;EACD;;EAED,WAAO,KAAKA,MAAL,CAAY,WAAZ,CAAP;EACD,GArTa;;EAuTd;EACA0nC,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,QAAIvyC,IAAI,GAAG,EAAX;EACA,SAAK7Q,OAAL,CAAa,UAAU1D,CAAV,EAAa;EACxB,UAAIyF,KAAK,GAAGihD,YAAY,CAAC1mD,CAAD,CAAxB;;EAEA,UAAIyF,KAAK,CAAC8O,IAAN,CAAW,CAAX,CAAJ,EAAmB;EACjBA,QAAAA,IAAI,CAAC1C,IAAL,CAAUpM,KAAK,CAAC8O,IAAN,CAAW,CAAX,CAAV;EACD;EACF,KAND;EAOA,WAAO,KAAKtC,SAAL,CAAesC,IAAf,CAAP;EACD;EAlUa,CAAhB;;EAqUA,IAAI20C,WAAW,GAAG,SAASzI,SAAT,CAAmBC,GAAnB,EAAwB;EACxC;EACA,MAAIyI,KAAK,gBAAgB,UAAUvI,IAAV,EAAgB;EACvCvhD,IAAAA,SAAS,CAAC8pD,KAAD,EAAQvI,IAAR,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAACqoD,KAAD,CAAzB;;EAEA,aAASA,KAAT,GAAiB;EACfjrD,MAAAA,eAAe,CAAC,IAAD,EAAOirD,KAAP,CAAf;;EAEA,aAAOtI,MAAM,CAACv/C,KAAP,CAAa,IAAb,EAAmBD,SAAnB,CAAP;EACD;;EAED,WAAO8nD,KAAP;EACD,GAZwB,CAYvBzI,GAZuB,CAAzB,CAFwC;;;EAiBxC3hD,EAAAA,MAAM,CAACsP,MAAP,CAAc86C,KAAK,CAAClrD,SAApB,EAA+BiqD,SAA/B,EAjBwC;;EAmBxCiB,EAAAA,KAAK,CAAClrD,SAAN,CAAgBmrD,MAAhB,GAAyBD,KAAK,CAAClrD,SAAN,CAAgBkoD,UAAzC;;EAEAzF,EAAAA,GAAG,CAACziD,SAAJ,CAAc8sB,KAAd,GAAsB,UAAUloB,CAAV,EAAa;EACjC,QAAI4Q,KAAK,GAAG,KAAKA,KAAL,CAAW,iDAAX,CAAZ,CADiC;;EAGjCA,IAAAA,KAAK,GAAGA,KAAK,CAAC+K,GAAN,CAAU,WAAV,CAAR;EACA/K,IAAAA,KAAK,GAAGA,KAAK,CAAC+K,GAAN,CAAU,WAAV,CAAR,CAJiC;EAKjC;;EAEA,QAAImW,IAAI,GAAGlhB,KAAK,CAACA,KAAN,CAAY,gCAAZ,CAAX,CAPiC;;EASjC,QAAI7Q,CAAC,GAAG6Q,KAAK,CAAC+K,GAAN,CAAUmW,IAAV,EAAgBqV,UAAhB,CAA2B,WAA3B,CAAR,CATiC;;EAWjC,QAAIqf,MAAM,GAAGzmD,CAAC,CAAC6Q,KAAF,CAAQ,oBAAR,CAAb;;EAEA,QAAI,CAAC41C,MAAM,CAAC9qC,GAAP,CAAW,8BAAX,CAAL,EAAiD;EAC/C3b,MAAAA,CAAC,GAAGA,CAAC,CAACqnC,WAAF,CAAcof,MAAM,CAAC51C,KAAP,CAAa,SAAb,CAAd,CAAJ;EACD,KAfgC;;;EAkBjC7Q,IAAAA,CAAC,GAAGA,CAAC,CAAC6P,MAAF,CAASkiB,IAAT,CAAJ;EACA/xB,IAAAA,CAAC,CAACgL,IAAF,CAAO,OAAP,EAnBiC;EAoBjC;;EAEAhL,IAAAA,CAAC,GAAGA,CAAC,CAAC,IAAD,CAAD,CAAQ,OAAR,CAAJ,CAtBiC;;EAwBjC,QAAIA,CAAC,CAAC2b,GAAF,CAAM,WAAN,CAAJ,EAAwB;EACtB3b,MAAAA,CAAC,GAAGA,CAAC,CAACqnC,WAAF,CAAc,WAAd,CAAJ;EACD,KA1BgC;;;EA6BjC,QAAIrnC,CAAC,CAAC2b,GAAF,CAAM,qCAAN,CAAJ,EAAkD;EAChD3b,MAAAA,CAAC,GAAGA,CAAC,CAACqnC,WAAF,CAAc,uBAAd,CAAJ;EACD,KA/BgC;;;EAkCjC,QAAI,OAAOpnC,CAAP,KAAa,QAAjB,EAA2B;EACzBD,MAAAA,CAAC,GAAGA,CAAC,CAAC+O,GAAF,CAAM9O,CAAN,CAAJ;EACD;;EAED,QAAImjD,EAAE,GAAG,IAAImD,KAAJ,CAAUvmD,CAAC,CAAC2R,IAAZ,EAAkB,IAAlB,EAAwB,KAAKnJ,KAA7B,CAAT;EACA,WAAO46C,EAAP;EACD,GAxCD;;EA0CA,SAAOtF,GAAP;EACD,CAhED;;EAkEA,IAAIyI,KAAK,GAAGD,WAAZ;;EAEA,IAAIzI,SAAS,GAAG,SAASA,SAAT,CAAmBC,GAAnB,EAAwB;EACtC;EACA,MAAI4I,MAAM,gBAAgB,UAAU1I,IAAV,EAAgB;EACxCvhD,IAAAA,SAAS,CAACiqD,MAAD,EAAS1I,IAAT,CAAT;;EAEA,QAAIC,MAAM,GAAG//C,YAAY,CAACwoD,MAAD,CAAzB;;EAEA,aAASA,MAAT,GAAkB;EAChBprD,MAAAA,eAAe,CAAC,IAAD,EAAOorD,MAAP,CAAf;;EAEA,aAAOzI,MAAM,CAACv/C,KAAP,CAAa,IAAb,EAAmBD,SAAnB,CAAP;EACD;;EAED,WAAOioD,MAAP;EACD,GAZyB,CAYxB5I,GAZwB,CAA1B;;EAcAA,EAAAA,GAAG,CAACziD,SAAJ,CAAcguC,MAAd,GAAuB,UAAUppC,CAAV,EAAa;EAClC,QAAI4Q,KAAK,GAAG,KAAKu2B,UAAL,CAAgB,WAAhB,CAAZ;EACAv2B,IAAAA,KAAK,GAAGA,KAAK,CAACA,KAAN,CAAY,UAAZ,CAAR,CAFkC;;EAIlC,QAAI,OAAO5Q,CAAP,KAAa,QAAjB,EAA2B;EACzB4Q,MAAAA,KAAK,GAAGA,KAAK,CAAC9B,GAAN,CAAU9O,CAAV,CAAR;EACD;;EAED,WAAO,IAAIymD,MAAJ,CAAW71C,KAAK,CAACc,IAAjB,EAAuB,IAAvB,EAA6B,KAAKnJ,KAAlC,CAAP;EACD,GATD;;EAWA,SAAOs1C,GAAP;EACD,CA5BD;;EA8BA,IAAI4I,MAAM,GAAG7I,SAAb;EAEA,IAAI8I,QAAQ,GAAG,CAAC5I,aAAD,EAAgBM,QAAhB,EAA0BM,OAA1B,EAAmCE,YAAnC,EAAiDU,KAAjD,EAAwD6C,KAAxD,EAA+DK,WAA/D,EAA4EE,WAA5E,EAAyFI,UAAzF,EAAqGwD,KAArG,EAA4GG,MAA5G,CAAf;;EAEA,IAAIE,MAAM,GAAG,SAASA,MAAT,CAAgB9I,GAAhB,EAAqB;EAChC;EACA3hD,EAAAA,MAAM,CAAC0E,IAAP,CAAY4oC,OAAZ,EAAqB3oC,OAArB,CAA6B,UAAUhB,CAAV,EAAa;EACxC,WAAOg+C,GAAG,CAACziD,SAAJ,CAAcyE,CAAd,IAAmB2pC,OAAO,CAAC3pC,CAAD,CAAjC;EACD,GAFD,EAFgC;;EAMhC6mD,EAAAA,QAAQ,CAAC7lD,OAAT,CAAiB,UAAU+lD,KAAV,EAAiB;EAChC,WAAOA,KAAK,CAAC/I,GAAD,CAAZ;EACD,GAFD;EAGA,SAAOA,GAAP;EACD,CAVD;;EAYA,IAAIgJ,MAAM,GAAGF,MAAb;EAEA,IAAIG,OAAO,GAAG;EACZ7gC,EAAAA,IAAI,EAAEuiB,SADM;EAEZue,EAAAA,UAAU,EAAEvd;EAFA,CAAd;EAIA;;EAEA,IAAIqU,GAAG,gBAAgB,YAAY;EACjC,WAASA,GAAT,CAAansC,IAAb,EAAmBisB,IAAnB,EAAyBp1B,KAAzB,EAAgC;EAC9B,QAAI4G,KAAK,GAAG,IAAZ;;EAEA9T,IAAAA,eAAe,CAAC,IAAD,EAAOwiD,GAAP,CAAf;;EAEA,SAAKnsC,IAAL,GAAYA,IAAZ,CAL8B;EAM9B;;EAEAxV,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;EAClCJ,MAAAA,UAAU,EAAE,KADsB;EAElCa,MAAAA,KAAK,EAAE+gC,IAF2B;EAGlC1hC,MAAAA,QAAQ,EAAE;EAHwB,KAApC,EAR8B;;EAc9B,QAAIsM,KAAK,KAAKpC,SAAV,IAAuBw3B,IAAI,KAAKx3B,SAApC,EAA+C;EAC7CoC,MAAAA,KAAK,GAAGo1B,IAAI,CAACp1B,KAAb;EACD,KAhB6B;;;EAmB9BrM,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCJ,MAAAA,UAAU,EAAE,KADuB;EAEnCa,MAAAA,KAAK,EAAE2L,KAF4B;EAGnCtM,MAAAA,QAAQ,EAAE;EAHyB,KAArC,EAnB8B;;EAyB9BC,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC;EACpCJ,MAAAA,UAAU,EAAE,KADwB;EAEpCE,MAAAA,QAAQ,EAAE,IAF0B;EAGpCW,MAAAA,KAAK,EAAE;EAH6B,KAAtC,EAzB8B;;EA+B9BV,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnC2S,MAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClB,eAAOK,KAAK,CAACuC,IAAN,CAAW7V,MAAX,GAAoB,CAA3B;EACD;EAHkC,KAArC,EA/B8B;;EAqC9BK,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC;EACpC2S,MAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClB,eAAOK,KAAK,CAACuC,IAAN,CAAW7V,MAAlB;EACD;EAHmC,KAAtC,EArC8B;;EA2C9BK,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,KAA5B,EAAmC;EACjC2S,MAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClB,eAAO,KAAP;EACD;EAHgC,KAAnC;EAKD;EACD;;;EAGAzS,EAAAA,YAAY,CAACwhD,GAAD,EAAM,CAAC;EACjBzhD,IAAAA,GAAG,EAAE,QADY;EAEjBQ,IAAAA,KAAK,EAAE,SAASilC,MAAT,GAAkB;EACvB,aAAO6b,SAAS,CAAC,IAAD,CAAhB;EACD;EACD;;EALiB,GAAD,EAOf;EACDthD,IAAAA,GAAG,EAAE,MADJ;EAEDQ,IAAAA,KAAK,EAAE,SAASiS,IAAT,GAAgB;EACrB,UAAI,KAAK6C,IAAL,CAAU7V,MAAV,GAAmB,CAAvB,EAA0B;EACxB,eAAO,KAAK6V,IAAL,CAAU,CAAV,EAAa7C,IAApB;EACD;;EAED,aAAO,KAAKkF,GAAL,GAAWrC,IAAX,CAAgB,CAAhB,EAAmB7C,IAA1B;EACD;EARA,GAPe,CAAN,CAAZ;;EAkBA,SAAOgvC,GAAP;EACD,CAxEsB,EAAvB;EAyEA;;;EAGAA,GAAG,CAACziD,SAAJ,CAAcgU,SAAd,GAA0B,UAAUsC,IAAV,EAAgB;EACxCA,EAAAA,IAAI,GAAGA,IAAI,CAACpC,GAAL,CAAS,UAAUnS,CAAV,EAAa;EAC3B,WAAOA,CAAC,CAACsR,KAAF,CAAQ,IAAR,CAAP;EACD,GAFM,CAAP,CADwC;;EAKxC,MAAIoD,GAAG,GAAG,IAAIgsC,GAAJ,CAAQnsC,IAAR,EAAc,IAAd,EAAoB,KAAKnJ,KAAzB,CAAV;EACA,SAAOsJ,GAAP;EACD,CAPD;EAQA;;;EAGAgsC,GAAG,CAACziD,SAAJ,CAAcyjB,QAAd,GAAyB,UAAUhgB,GAAV,EAAe;EACtC,MAAI6S,IAAI,GAAGqN,YAAY,CAAClgB,GAAD,EAAM,KAAK0J,KAAX,EAAkB,KAAKsG,IAAL,EAAlB,CAAvB;;EACA,SAAO,KAAKO,SAAL,CAAesC,IAAf,CAAP;EACD,CAHD;;EAKAxV,MAAM,CAACsP,MAAP,CAAcqyC,GAAG,CAACziD,SAAlB,EAA6B0rD,OAAO,CAAC7gC,IAArC;EACA/pB,MAAM,CAACsP,MAAP,CAAcqyC,GAAG,CAACziD,SAAlB,EAA6B0rD,OAAO,CAACC,UAArC;;EAEAF,MAAM,CAAChJ,GAAD,CAAN;;EAEA,IAAImJ,OAAO,GAAG;EACZC,EAAAA,KAAK,EAAE,OADK;EAEZC,EAAAA,GAAG,EAAE,OAFO;EAGZpM,EAAAA,KAAK,EAAE,MAHK;EAIZhI,EAAAA,IAAI,EAAE,IAJM;EAKZqU,EAAAA,MAAM,EAAE;EALI,CAAd;EAOAjrD,MAAM,CAAC0E,IAAP,CAAYomD,OAAZ,EAAqBnmD,OAArB,CAA6B,UAAUhB,CAAV,EAAa;EACxC,SAAOg+C,GAAG,CAACziD,SAAJ,CAAcyE,CAAd,IAAmBg+C,GAAG,CAACziD,SAAJ,CAAc4rD,OAAO,CAACnnD,CAAD,CAArB,CAA1B;EACD,CAFD;EAGA,IAAIunD,KAAK,GAAGvJ,GAAZ;;EAEA,IAAIwJ,WAAW,GAAG,SAASA,WAAT,CAAqBx1C,GAArB,EAA0B;EAC1C,MAAIlD,KAAK,GAAGkD,GAAG,CAACysB,QAAJ,EAAZ;;EACAwL,EAAAA,UAAU,CAACn7B,KAAD,EAAQkD,GAAG,CAACtJ,KAAZ,CAAV,CAF0C;;;EAI1CsJ,EAAAA,GAAG,CAACtJ,KAAJ,CAAU20B,OAAV,CAAkBr8B,OAAlB,CAA0B,UAAUsC,EAAV,EAAc;EACtCA,IAAAA,EAAE,CAAC0O,GAAD,CAAF;EACD,GAFD;EAGA,SAAOA,GAAP;EACD,CARD;;EAUA,IAAIy1C,IAAI,GAAGD,WAAX;;EAEA,SAAS/rD,QAAT,CAAkBisD,aAAlB,EAAiC;EAC/B;EACA,MAAIh/C,KAAK,GAAGg/C,aAAZ;EACA;;EAEA,MAAIC,GAAG,GAAG,SAASA,GAAT,GAAe;EACvB,QAAI1oD,IAAI,GAAGN,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,QAAIqpB,OAAO,GAAGrpB,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,GAAuB2C,SAAS,CAAC,CAAD,CAAhC,GAAsC2H,SAApD;;EAEA,QAAI0hB,OAAJ,EAAa;EACXtf,MAAAA,KAAK,CAACkf,QAAN,CAAeI,OAAf;EACD;;EAED,QAAInW,IAAI,GAAGqN,YAAY,CAACjgB,IAAD,EAAOyJ,KAAP,CAAvB;;EACA,QAAIsJ,GAAG,GAAG,IAAIu1C,KAAJ,CAAU11C,IAAV,EAAgB,IAAhB,EAAsBnJ,KAAtB,CAAV;EACAsJ,IAAAA,GAAG,CAACgwB,MAAJ;EACA,WAAOhwB,GAAP;EACD,GAZD;EAaA;;;EAGA21C,EAAAA,GAAG,CAACjnB,QAAJ,GAAe,YAAY;EACzB,QAAIzhC,IAAI,GAAGN,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,QAAIqpB,OAAO,GAAGrpB,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,GAAuB2C,SAAS,CAAC,CAAD,CAAhC,GAAsC2H,SAApD;EACA,QAAI5F,CAAC,GAAGgI,KAAR;;EAEA,QAAIsf,OAAJ,EAAa;EACXtnB,MAAAA,CAAC,GAAGA,CAAC,CAACkO,KAAF,EAAJ;EACAlO,MAAAA,CAAC,CAAC+b,KAAF,GAAU,EAAV;EACA/b,MAAAA,CAAC,CAACknB,QAAF,CAAWI,OAAX;EACD;;EAED,QAAInW,IAAI,GAAGqN,YAAY,CAACjgB,IAAD,EAAOyB,CAAP,CAAvB;;EACA,QAAIsR,GAAG,GAAG,IAAIu1C,KAAJ,CAAU11C,IAAV,EAAgB,IAAhB,EAAsBnR,CAAtB,CAAV;;EAEA,QAAIsnB,OAAO,IAAIhW,GAAG,CAACtJ,KAAJ,CAAU20B,OAAV,CAAkBrhC,MAAlB,GAA2B,CAA1C,EAA6C;EAC3CyrD,MAAAA,IAAI,CAACz1C,GAAD,CAAJ;EACD;;EAED,WAAOA,GAAP;EACD,GAnBD;EAoBA;;;EAGA21C,EAAAA,GAAG,CAACb,MAAJ,GAAa,UAAUxjD,EAAV,EAAc;EACzBA,IAAAA,EAAE,CAACikD,KAAD,EAAQ7+C,KAAR,EAAe,IAAf,EAAqB6T,QAArB,EAA+B1N,MAA/B,EAAuCgO,MAAvC,CAAF;EACA,WAAO,IAAP;EACD,GAHD;EAIA;;;EAGA8qC,EAAAA,GAAG,CAACxoC,QAAJ,GAAe,UAAUzT,IAAV,EAAgB;EAC7B,QAAImG,IAAI,GAAGuN,UAAU,CAAC1T,IAAD,EAAOhD,KAAP,CAArB;EACA,WAAO,IAAI6+C,KAAJ,CAAU11C,IAAV,EAAgB,IAAhB,EAAsBnJ,KAAtB,CAAP;EACD,GAHD;EAIA;;;EAGAi/C,EAAAA,GAAG,CAAC/4C,KAAJ,GAAY,YAAY;EACtB,WAAOnT,QAAQ,CAACiN,KAAK,CAACkG,KAAN,EAAD,CAAf;EACD,GAFD;EAGA;;;EAGA+4C,EAAAA,GAAG,CAAC5qB,OAAJ,GAAc,YAAY;EACxB,QAAIC,IAAI,GAAGr+B,SAAS,CAAC3C,MAAV,GAAmB,CAAnB,IAAwB2C,SAAS,CAAC,CAAD,CAAT,KAAiB2H,SAAzC,GAAqD3H,SAAS,CAAC,CAAD,CAA9D,GAAoE,IAA/E;EACA+J,IAAAA,KAAK,CAACq0B,OAAN,CAAcC,IAAd;EACA,WAAO,IAAP;EACD,GAJD;EAKA;;;EAGA2qB,EAAAA,GAAG,CAACj/C,KAAJ,GAAY,YAAY;EACtB,WAAOA,KAAP;EACD,GAFD;EAGA;;;EAGAi/C,EAAAA,GAAG,CAACC,UAAJ,GAAiB,UAAU5oD,GAAV,EAAeib,IAAf,EAAqB;EACpC,WAAOW,WAAW,CAAC5b,GAAD,EAAMib,IAAN,CAAlB;EACD,GAFD;EAGA;;;EAGA0tC,EAAAA,GAAG,CAACE,OAAJ,GAAcxoC,QAAd,CApF+B;;EAsF/BsoC,EAAAA,GAAG,CAAC,QAAD,CAAH,GAAgBA,GAAG,CAACG,IAApB;EACAH,EAAAA,GAAG,CAACI,MAAJ,GAAaJ,GAAG,CAACb,MAAjB;EACA,SAAOa,GAAP;EACD;;EAED,IAAIK,KAAG,GAAGvsD,QAAQ,CAAC,IAAImiC,OAAJ,EAAD,CAAlB;;;;;;;ECrndA,MAAMqqB,YAAY,GAAG,UAAUj2C,GAAV,EAAe;EAClC,MAAIk2C,IAAI,GAAGl2C,GAAG,CAACm2C,QAAJ,CAAa,mBAAb,CAAX;;EACA,MAAID,IAAJ,EAAU;EACR,QAAIx8C,IAAI,GAAGw8C,IAAI,CAACx8C,IAAL,MAAe,EAA1B;EACA,WAAOA,IAAI,CAAC08C,WAAL,IAAoB,EAA3B;EACD;;EACD,SAAO,IAAP;EACD,CAPD;;EAQA,YAAc,GAAGH,YAAjB;;ECRA,MAAMI,UAAU,GAAG,UAAUr2C,GAAV,EAAe;EAChCA,EAAAA,GAAG,CAACs0B,WAAJ,GAAkB5pB,MAAlB;EACA,SAAO1K,GAAP;EACD,CAHD;;EAIA,iBAAc,GAAGq2C,UAAjB;;ECJA,MAAM7vC,OAAO,GAAG,UAAUlY,CAAV,EAAa;;EAE3BA,EAAAA,CAAC,CAACoc,MAAF,CAAS,gBAAT;EACA,SAAOpc,CAAP;EACD,CAJD;;;EAOA,MAAMgoD,SAAS,GAAG,UAAUhoD,CAAV,EAAa;EAC7B,MAAIJ,CAAC,GAAGI,CAAC,CAAC8a,QAAF,CAAW,iCAAX,CAAR;;EACA,MAAI,CAAClb,CAAC,CAAC6C,KAAP,EAAc;EACZ7C,IAAAA,CAAC,GAAGI,CAAC,CAAC8a,QAAF,CAAW,UAAX,CAAJ;EACD;;EACD,MAAI,CAAClb,CAAC,CAAC6C,KAAP,EAAc;EACZ7C,IAAAA,CAAC,GAAGI,CAAC,CAAC8a,QAAF,CAAW,+BAAX,CAAJ;EACD;;EACD,MAAI,CAAClb,CAAC,CAAC6C,KAAP,EAAc;EACZ7C,IAAAA,CAAC,GAAGI,CAAC,CAAC8a,QAAF,CAAW,6CAAX,CAAJ;EACD;;EACD,MAAI,CAAClb,CAAC,CAAC6C,KAAP,EAAc;EACZ,WAAO,IAAP;EACD;;EACD,MAAIpD,CAAC,GAAGW,CAAC,CAACmT,OAAF,CAAUvT,CAAV,CAAR;EACA,MAAIijD,IAAI,GAAGxjD,CAAC,CAAC0+B,EAAF,CAAK,CAAL,CAAX;EACA,MAAI2jB,OAAO,GAAGmB,IAAI,CAACpyC,KAAL,CAAY,qBAAZ,CAAd;EACAoyC,EAAAA,IAAI,CAACzmC,MAAL,CAAa,qBAAb;EACA,SAAO;EACL3S,IAAAA,MAAM,EAAEpK,CAAC,CAAC0+B,EAAF,CAAK,CAAL,CADH;EAEL8kB,IAAAA,IAAI,EAAExjD,CAAC,CAAC0+B,EAAF,CAAK,CAAL,CAFD;EAGL2jB,IAAAA,OAAO,EAAEA,OAHJ;EAILh/C,IAAAA,KAAK,EAAEwV,OAAO,CAAC7Y,CAAC,CAAC0+B,EAAF,CAAK,CAAL,CAAD;EAJT,GAAP;EAMD,CAxBD;;EAyBA,YAAc,GAAGiqB,SAAjB;;EChCA,MAAMC,QAAQ,GAAG,UAAUjoD,CAAV,EAAa;;EAE5BA,EAAAA,CAAC,CAACoc,MAAF,CAAS,iDAAT,EAF4B;;EAI5Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,0EAAT,EAJ4B;;EAM5Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,qEAAT,EAN4B;;EAQ5Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,qEAAT;EAEA,SAAOpc,CAAP;EACD,CAXD;;EAYA,eAAc,GAAGioD,QAAjB;;ECZA,MAAMC,QAAQ,GAAG,UAAUloD,CAAV,EAAa;;EAE5B,MAAIA,CAAC,CAACub,GAAF,CAAM,kCAAN,CAAJ,EAA+C;EAC7Cvb,IAAAA,CAAC,CAACoc,MAAF,CAAS,YAAT;EACD,GAJ2B;;;EAM5B,MAAIpc,CAAC,CAACub,GAAF,CAAM,6CAAN,CAAJ,EAA0D;EACxDvb,IAAAA,CAAC,CAACoc,MAAF,CAAS,4BAAT;EACD,GAR2B;;;EAU5B,MAAIpc,CAAC,CAACub,GAAF,CAAM,4BAAN,CAAJ,EAAyC;EACvCvb,IAAAA,CAAC,CAACoc,MAAF,CAAS,sBAAT;EACD,GAZ2B;;;EAc5Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,UAAT,EAd4B;;EAgB5Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,uBAAT,EAhB4B;;EAmB5Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,uBAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,sBAAT,EApB4B;;EAuB5Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,oCAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,qCAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,wCAAT,EAzB4B;;EA4B5Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,YAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,0BAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,4EAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,8BAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,cAAT;EAEA,SAAOpc,CAAP;EACD,CAnCD;;EAoCA,eAAc,GAAGkoD,QAAjB;;ECpCA,MAAMC,aAAa,GAAG,UAAUhpD,CAAV,EAAa;EACjC,MAAIA,CAAC,CAACoc,GAAF,CAAM,yCAAN,CAAJ,EAAsD;EACpD,WAAO,IAAP;EACD,GAHgC;;;EAKjC,MAAIpc,CAAC,CAACoc,GAAF,CAAM,kCAAN,CAAJ,EAA+C;EAC7C,WAAO,IAAP;EACD,GAPgC;;;EASjC,MAAIpc,CAAC,CAACoc,GAAF,CAAM,kBAAN,CAAJ,EAA+B;EAC7B,WAAO,IAAP;EACD,GAXgC;;;EAajC,MAAIpc,CAAC,CAACoc,GAAF,CAAM,sCAAN,CAAJ,EAAmD;EACjD,WAAO,IAAP;EACD,GAfgC;;;EAiBjC,MAAIpc,CAAC,CAACoc,GAAF,CAAM,UAAN,CAAJ,EAAuB;EACrB,WAAO,IAAP;EACD,GAnBgC;;;EAqBjC,MAAIpc,CAAC,CAACoc,GAAF,CAAM,kCAAN,CAAJ,EAA+C;EAC7C,WAAO,IAAP;EACD;;EACD,SAAO,KAAP;EACD,CAzBD;;EA2BA,MAAM6sC,QAAQ,GAAG,UAAUpoD,CAAV,EAAa;;EAE5B,MAAIA,CAAC,CAACub,GAAF,CAAM,wEAAN,CAAJ,EAAqF;EACnFvb,IAAAA,CAAC,CAACoc,MAAF,CAAS,6BAAT;EACD,GAFD,MAEO,IACLpc,CAAC,CAACub,GAAF,CACE,0FADF,CADK,EAIL;EACAvb,IAAAA,CAAC,CAACoc,MAAF,CAAS,2EAAT;EACD,GANM,MAMA,IAAIpc,CAAC,CAACub,GAAF,CAAM,4BAAN,CAAJ,EAAyC;EAC9Cvb,IAAAA,CAAC,CAACoc,MAAF,CAAS,aAAT;EACD,GAFM,MAEA;EACLpc,IAAAA,CAAC,CAACoc,MAAF,CAAS,uBAAT;EACApc,IAAAA,CAAC,CAACoc,MAAF,CAAS,oBAAT;EACD,GAf2B;;;EAkB5B,MAAI0sB,OAAO,GAAG9oC,CAAC,CAAC8oC,OAAF,EAAd;;EACA,MAAIA,OAAO,CAACptC,MAAR,GAAiB,CAArB,EAAwB;EACtB,QAAIoiC,KAAK,GAAGgL,OAAO,CAAC/K,EAAR,CAAW,CAAX,CAAZ;EACA,QAAIsqB,MAAM,GAAGvf,OAAO,CAAC/K,EAAR,CAAW,CAAX,CAAb,CAFsB;;EAItB,QAAIoqB,aAAa,CAACE,MAAD,CAAjB,EAA2B;EACzBroD,MAAAA,CAAC,GAAG8oC,OAAO,CAAC/K,EAAR,CAAW,CAAX,CAAJ;EACD,KAFD,MAEO,IAAIsqB,MAAM,CAAC9sC,GAAP,CAAW,eAAX,KAA+BuiB,KAAK,CAACviB,GAAN,CAAU,iBAAV,CAAnC,EAAiE;;EAEtEvb,MAAAA,CAAC,GAAG8oC,OAAO,CAAC/K,EAAR,CAAW,CAAX,CAAJ;EACD,KAHM,MAGA,IAAIsqB,MAAM,CAAC9sC,GAAP,CAAW,YAAX,KAA4BuiB,KAAK,CAACviB,GAAN,CAAU,QAAV,CAAhC,EAAqD;;EAE1Dvb,MAAAA,CAAC,GAAG8oC,OAAO,CAAC/K,EAAR,CAAW,CAAX,CAAJ;EACD,KAHM,MAGA;;EAEL,UAAI9zB,IAAI,GAAG6+B,OAAO,CAAC7+B,IAAR,EAAX;;EACA,UAAIk+C,aAAa,CAACl+C,IAAD,CAAjB,EAAyB;EACvB6+B,QAAAA,OAAO,CAACv3B,IAAR,CAAa+2C,GAAb;EACAtoD,QAAAA,CAAC,GAAG8oC,OAAO,CAACloC,IAAR,EAAJ;EACD;EACF;EACF,GAvC2B;;;EA0C5B,MAAIZ,CAAC,CAACub,GAAF,CAAM,2BAAN,CAAJ,EAAwC;EACtCvb,IAAAA,CAAC,CAACoc,MAAF,CAAS,kBAAT;EACD,GA5C2B;;;EA8C5Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,qBAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,kBAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,uBAAT,EAhD4B;;EAkD5B,MAAIpc,CAAC,CAACub,GAAF,CAAM,6BAAN,CAAJ,EAA0C;EACxCvb,IAAAA,CAAC,CAACoc,MAAF,CAAS,gBAAT;EACD,GApD2B;;;;;;EAyD5B,SAAOpc,CAAP;EACD,CA1DD;;EA2DA,eAAc,GAAGooD,QAAjB;;ECtFA,MAAMG,OAAO,GAAG,UAAUvoD,CAAV,EAAa;EAC3BA,EAAAA,CAAC,CAACoc,MAAF,CAAS,2BAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,iDAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,eAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,sDAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,+DAAT,EAL2B;;EAQ3Bpc,EAAAA,CAAC,CAACoc,MAAF,CAAS,wCAAT;EACA,SAAOpc,CAAP;EACD,CAVD;;EAWA,cAAc,GAAGuoD,OAAjB;;ECXA;EACA,MAAMC,MAAM,GAAG,UAAU92C,GAAV,EAAepI,OAAf,EAAwB;EACrC,MAAIoI,GAAG,IAAI,OAAOA,GAAG,CAAC/S,IAAX,KAAoB,UAA/B,EAA2C;EACzC,QAAIA,IAAI,GAAG+S,GAAG,CAAC/S,IAAJ,EAAX;;EACA,QAAIA,IAAI,IAAIA,IAAI,CAACjD,MAAL,GAAc4N,OAAO,CAAC3D,GAA9B,IAAqChH,IAAI,CAACjD,MAAL,GAAc4N,OAAO,CAACpD,GAA/D,EAAoE;EAClE,aAAO,IAAP;EACD;EACF;;EACD,SAAO,KAAP;EACD,CARD;;EASA,WAAc,GAAGsiD,MAAjB;;;;;;;;ECDA,MAAMhmD,IAAI,GAAG,UAAUxC,CAAV,EAAa;EACxBA,EAAAA,CAAC,CAACoc,MAAF,CAAS,eAAT;EACApc,EAAAA,CAAC,CAACoc,MAAF,CAAS,eAAT;EACApc,EAAAA,CAAC,CAACwC,IAAF,CAAO,EAAP,EAHwB;;EAIxB,SAAOxC,CAAC,CAACrB,IAAF,EAAP;EACD,CALD;;;EAQA,MAAM8pD,UAAU,GAAG,UAAU/2C,GAAV,EAAepI,OAAf,EAAwB;EACzC,MAAIo1B,QAAQ,GAAGhtB,GAAG,CAACgtB,QAAJ,CAAa,CAAb,CAAf;;EACA,MAAI,CAACA,QAAL,EAAe;EACb,WAAO,EAAP;EACD;;EACD,MAAItuB,GAAG,GAAGsuB,QAAQ,CAAC//B,IAAT,EAAV;EACA,MAAIqB,CAAC,GAAGqnD,GAAG,CAACj3C,GAAD,CAAX;EACA23C,EAAAA,aAAU,CAAC/nD,CAAD,CAAV;EAEA,MAAI0oD,KAAK,GAAGV,QAAS,CAAChoD,CAAD,CAArB,CATyC;;EAWzC,MAAI,CAAC0oD,KAAD,IAAU,CAACA,KAAK,CAAC7F,IAAjB,IAAyB,CAAC6F,KAAK,CAAC7F,IAAN,CAAWpgD,KAAzC,EAAgD;EAC9C,WAAO,EAAP;EACD;;EACD,MAAIC,KAAK,GAAGgmD,KAAK,CAAChmD,KAAlB;;EACA,MAAI4G,OAAO,CAACo4C,OAAR,IAAmBgH,KAAK,CAAChH,OAAzB,IAAoCgH,KAAK,CAAChH,OAAN,CAAcj/C,KAAtD,EAA6D;EAC3DC,IAAAA,KAAK,CAAC4P,OAAN,CAAco2C,KAAK,CAAChH,OAAN,CAAc/iD,IAAd,EAAd;EACD,GAjBwC;;;EAmBzC,MAAI6pD,OAAM,CAAC9lD,KAAD,EAAQ4G,OAAR,CAAV,EAA4B;EAC1B,WAAO9G,IAAI,CAACE,KAAD,CAAX;EACD,GArBwC;;;EAuBzCA,EAAAA,KAAK,GAAGulD,WAAQ,CAACvlD,KAAD,CAAhB;;EACA,MAAI8lD,OAAM,CAAC9lD,KAAD,EAAQ4G,OAAR,CAAV,EAA4B;EAC1B,WAAO9G,IAAI,CAACE,KAAD,CAAX;EACD,GA1BwC;;;EA4BzCA,EAAAA,KAAK,GAAGimD,WAAO,CAACjmD,KAAD,CAAf;;EACA,MAAI8lD,OAAM,CAAC9lD,KAAD,EAAQ4G,OAAR,CAAV,EAA4B;EAC1B,WAAO9G,IAAI,CAACE,KAAD,CAAX;EACD,GA/BwC;;;EAiCzCA,EAAAA,KAAK,GAAGkmD,WAAO,CAAClmD,KAAD,CAAf;;EACA,MAAI8lD,OAAM,CAAC9lD,KAAD,EAAQ4G,OAAR,CAAV,EAA4B;EAC1B,WAAO9G,IAAI,CAACE,KAAD,CAAX;EACD,GApCwC;;;EAsCzCA,EAAAA,KAAK,GAAG6lD,UAAO,CAAC7lD,KAAD,CAAf;;EACA,MAAI8lD,OAAM,CAAC9lD,KAAD,EAAQ4G,OAAR,CAAV,EAA4B;EAC1B,WAAO9G,IAAI,CAACE,KAAD,CAAX;EACD,GAzCwC;;;;;;;;EAgDzC,SAAO,EAAP;EACD,CAjDD;;EAkDA,YAAc,GAAG+lD,UAAjB;;ECnEA,MAAMlvB,KAAG,GAAG,CACV,QADU,EAEV,QAFU,EAGV,QAHU,EAIV,UAJU,EAKV,SALU,EAMV,MANU,EAOV,SAPU,EAQV,OARU,EASV,SATU,EAUV,UAVU,EAWV,QAXU,EAYV,OAZU,EAaVpqB,GAbU,CAaLzQ,GAAD,IAAS,IAAI+Z,MAAJ,CAAY,MAAK/Z,GAAI,KAArB,EAA2B,GAA3B,CAbH,CAAZ;EAeA,MAAM86B,MAAI,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmBrqB,GAAnB,CAAwBzQ,GAAD,IAAS,IAAI+Z,MAAJ,CAAY,MAAK/Z,GAAI,KAArB,EAA2B,GAA3B,CAAhC,CAAb;EAEA,MAAMmqD,MAAI,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,SAAnB,EAA8B15C,GAA9B,CAAmCzQ,GAAD,IAAS,IAAI+Z,MAAJ,CAAY,MAAK/Z,GAAI,KAArB,EAA2B,GAA3B,CAA3C,CAAb;EAEA,MAAMoqD,SAAO,GAAG,CAAC,QAAD,EAAW,OAAX,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,aAAlC,EAAiD35C,GAAjD,CACbzQ,GAAD,IAAS,IAAI+Z,MAAJ,CAAY,MAAK/Z,GAAI,KAArB,CADK,EAEd,GAFc,CAAhB;EAKA,QAAc,GAAG;EACf86B,EAAAA,IAAI,EAAEA,MADS;EAEfD,EAAAA,GAAG,EAAEA,KAFU;EAGfsvB,EAAAA,IAAI,EAAEA,MAHS;EAIfC,EAAAA,OAAO,EAAEA;EAJM,CAAjB;;ECxBA,MAAM;EAAED,EAAAA,IAAF;EAAQC,EAAAA,OAAR;EAAiBtvB,EAAAA,IAAjB;EAAuBD,EAAAA;EAAvB,IAA+BwvB,IAArC;EACA,MAAMC,OAAO,GAAG,UAAhB;EACA,MAAMnU,QAAQ,GAAG,IAAjB;;EAEA,MAAMoU,YAAY,GAAG,UAAUv3C,GAAV,EAAe;EAClC,MAAIw3C,IAAI,GAAGx3C,GAAG,CAACy3C,UAAJ,EAAX,CADkC;;EAIlC,MAAIj2C,GAAG,GAAGg2C,IAAI,CAACv5C,MAAL,CAAay5C,GAAD,IAAS;EAC7B,WAAO5vB,IAAI,CAAC9mB,IAAL,CAAWlM,GAAD,IAASA,GAAG,CAACpF,IAAJ,CAASgoD,GAAT,CAAnB,CAAP;EACD,GAFS,CAAV;;EAGA,MAAIl2C,GAAG,CAACxX,MAAJ,GAAa,CAAjB,EAAoB;EAClBwtD,IAAAA,IAAI,GAAGh2C,GAAP;EACD,GATiC;;;EAYlCg2C,EAAAA,IAAI,GAAGA,IAAI,CAACv5C,MAAL,CAAay5C,GAAD,IAAS;EAC1B,QAAI7vB,GAAG,CAAC7mB,IAAJ,CAAUlM,GAAD,IAASA,GAAG,CAACpF,IAAJ,CAASgoD,GAAT,CAAlB,CAAJ,EAAsC;EACpC,aAAO,KAAP;EACD;;EACD,QAAIJ,OAAO,CAAC5nD,IAAR,CAAagoD,GAAb,CAAJ,EAAuB;EACrB,aAAO,KAAP;EACD;;EACD,WAAO,IAAP;EACD,GARM,CAAP;;EAUA,MAAIF,IAAI,CAACxtD,MAAL,KAAgB,CAApB,EAAuB;EACrB,WAAO,EAAP;EACD,GAxBiC;;;EA0BlCwX,EAAAA,GAAG,GAAGg2C,IAAI,CAACv5C,MAAL,CAAay5C,GAAD,IAAS;EACzB,WAAOP,IAAI,CAACn2C,IAAL,CAAWlM,GAAD,IAASA,GAAG,CAACpF,IAAJ,CAASgoD,GAAT,CAAnB,CAAP;EACD,GAFK,CAAN;;EAGA,MAAIl2C,GAAG,CAACxX,MAAJ,GAAa,CAAjB,EAAoB;EAClBwtD,IAAAA,IAAI,GAAGh2C,GAAP;EACD,GA/BiC;;;EAiClCA,EAAAA,GAAG,GAAGg2C,IAAI,CAACv5C,MAAL,CAAay5C,GAAD,IAAS;;EAEzB,QAAIvU,QAAQ,CAACzzC,IAAT,CAAcgoD,GAAd,MAAuB,KAA3B,EAAkC;EAChC,aAAO,KAAP;EACD,KAJwB;;;EAMzB,QAAIA,GAAG,CAAC/1C,KAAJ,CAAU,GAAV,EAAe3X,MAAf,KAA0B,CAA9B,EAAiC;EAC/B,aAAO,KAAP;EACD;;EACD,WAAOotD,OAAO,CAACp2C,IAAR,CAAclM,GAAD,IAASA,GAAG,CAACpF,IAAJ,CAASgoD,GAAT,CAAtB,MAAyCpjD,SAAhD;EACD,GAVK,CAAN;;EAWA,MAAIkN,GAAG,CAACxX,MAAJ,GAAa,CAAjB,EAAoB;EAClBwtD,IAAAA,IAAI,GAAGh2C,GAAP;EACD,GA9CiC;;;EAiDlCg2C,EAAAA,IAAI,GAAGA,IAAI,CAACt+C,IAAL,CAAU,CAAC3L,CAAD,EAAIC,CAAJ,KAAU;EACzB,QAAImqD,MAAM,GAAGpqD,CAAC,CAACT,KAAF,CAAQ,GAAR,EAAa9C,MAA1B;EACA,QAAI4tD,MAAM,GAAGpqD,CAAC,CAACV,KAAF,CAAQ,GAAR,EAAa9C,MAA1B;;EACA,QAAI2tD,MAAM,GAAGC,MAAb,EAAqB;EACnB,aAAO,CAAC,CAAR;EACD,KAFD,MAEO,IAAID,MAAM,GAAGC,MAAb,EAAqB;EAC1B,aAAO,CAAP;EACD;;EACD,WAAO,CAAP;EACD,GATM,CAAP,CAjDkC;;EA6DlC,SAAOJ,IAAI,CAAC,CAAD,CAAX;EACD,CA9DD;;EA+DA,aAAc,GAAGD,YAAjB;;EC9DA,MAAMM,KAAK,GAAG,UAAU7qD,GAAV,EAAe;EAC3B,QAAM6hD,QAAQ,GAAG,CACf,SADe;EAEf,2BAFe;EAGf,SAHe,CAAjB;;EAKA,OAAK,IAAI9kD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8kD,QAAQ,CAAC7kD,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;EACxC,QAAI8kD,QAAQ,CAAC9kD,CAAD,CAAR,CAAY2F,IAAZ,CAAiB1C,GAAjB,CAAJ,EAA2B;EACzB,aAAO,KAAP;EACD;EACF,GAV0B;;;EAY3B,MAAI,YAAY0C,IAAZ,CAAiB1C,GAAjB,CAAJ,EAA2B;EACzB,WAAO,IAAP;EACD;;EACD,SAAO,KAAP;EACD,CAhBD;;;EAmBA,MAAM8qD,SAAS,GAAG,UAAUJ,GAAV,EAAe9/C,OAAf,EAAwB;EACxC,MAAInK,CAAC,GAAGkoD,GAAG,CAAC+B,GAAD,CAAX;EACAjqD,EAAAA,CAAC,CAAC0oB,KAAF,GAAUrf,UAAV,GAFwC;;EAIxC,MAAIc,OAAO,CAACo4C,OAAZ,EAAqB;EACnB,QAAIA,OAAO,GAAG,GAAd,CADmB;;EAGnB,QAAI6H,KAAK,CAACH,GAAD,CAAL,KAAe,IAAnB,EAAyB;;;EAGvB1H,MAAAA,OAAO,GAAG,IAAV;EACD;;EACD,QAAI5jB,KAAK,GAAG3+B,CAAC,CAACqP,KAAF,CAAQ,CAAR,CAAZ;;EACA,QAAIsvB,KAAK,CAACviB,GAAN,CAAU,aAAV,MAA6B,KAAjC,EAAwC;EACtCuiB,MAAAA,KAAK,CAACt8B,WAAN;EACD;;EACDrC,IAAAA,CAAC,CAACmT,OAAF,CAAUovC,OAAV;EACD,GAjBuC;;;EAmBxCviD,EAAAA,CAAC,CAAC6mC,WAAF,GAAgB5pB,MAAhB;EACA,SAAOjd,CAAC,CAACR,IAAF,EAAP;EACD,CArBD;;EAsBA,aAAc,GAAG6qD,SAAjB;;EC3CA,MAAMC,UAAU,GAAG,UAAU/3C,GAAV,EAAepI,OAAf,EAAwB;EACzC,MAAI8/C,GAAG,GAAGM,SAAS,CAACh4C,GAAD,CAAnB;;EACA,MAAI,CAAC03C,GAAL,EAAU;EACR,WAAO,EAAP;EACD;;EACD,SAAOO,SAAM,CAACP,GAAD,EAAM9/C,OAAN,CAAb;EACD,CAND;;EAOA,YAAc,GAAGmgD,UAAjB;;ECLA,MAAM5jB,QAAQ,GAAG;EACf6b,EAAAA,OAAO,EAAE,IADM;EAEfmG,EAAAA,QAAQ,EAAE,IAFK;EAGfnpB,EAAAA,QAAQ,EAAE,IAHK;EAIfkrB,EAAAA,QAAQ,EAAE,IAJK;EAKf1jD,EAAAA,GAAG,EAAE,EALU;EAMfP,EAAAA,GAAG,EAAE;EANU,CAAjB;;EASA,MAAMkkD,SAAS,GAAG,UAAUz5C,GAAV,EAAe9G,OAAf,EAAwB;EACxC,SAAO8G,GAAG,IAAIA,GAAG,CAAC1U,MAAJ,GAAa,CAApB,IAAyB0U,GAAG,CAAC1U,MAAJ,GAAa4N,OAAO,CAACpD,GAArD;EACD,CAFD;;EAIA,MAAMuhD,MAAM,GAAG,UAAUqC,MAAV,EAAkB;;EAE/BA,EAAAA,MAAM,CAACpM,GAAP,CAAWziD,SAAX,CAAqB8uD,OAArB,GAA+B,UAAUzgD,OAAV,EAAmB;EAChD,QAAIoI,GAAG,GAAG,IAAV;EACApI,IAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACAA,IAAAA,OAAO,GAAGvN,MAAM,CAACsP,MAAP,CAAc,EAAd,EAAkBw6B,QAAlB,EAA4Bv8B,OAA5B,CAAV,CAHgD;;EAMhD,QAAI8G,GAAG,GAAG,EAAV;;EACA,QAAI9G,OAAO,CAACu+C,QAAZ,EAAsB;EACpBz3C,MAAAA,GAAG,GAAGu3C,QAAY,CAACj2C,GAAD,CAAlB;;EACA,UAAIm4C,SAAS,CAACz5C,GAAD,EAAM9G,OAAN,CAAb,EAA6B;EAC3B,eAAO8G,GAAG,CAAC3O,IAAJ,EAAP;EACD;EACF,KAZ+C;;;EAchD,QAAI6H,OAAO,CAACo1B,QAAZ,EAAsB;EACpBtuB,MAAAA,GAAG,GAAG45C,QAAY,CAACt4C,GAAD,EAAMpI,OAAN,CAAlB;;EACA,UAAIugD,SAAS,CAACz5C,GAAD,EAAM9G,OAAN,CAAb,EAA6B;EAC3B,eAAO8G,GAAG,CAAC3O,IAAJ,EAAP;EACD;EACF;;EACD,QAAI6H,OAAO,CAACsgD,QAAZ,EAAsB;EACpB,aAAOX,QAAY,CAACv3C,GAAD,EAAMpI,OAAN,CAAnB;EACD;;EACD,WAAO,EAAP;EACD,GAxBD,CAF+B;;;EA6B/BwgD,EAAAA,MAAM,CAACpM,GAAP,CAAWziD,SAAX,CAAqBymD,OAArB,GAA+B,YAAY;EACzC,QAAItxC,GAAG,GAAG,EAAV,CADyC;;EAGzC,QAAI,KAAKsuB,QAAL,CAAc,CAAd,CAAJ,EAAsB;EACpBtuB,MAAAA,GAAG,GAAG,KAAKsuB,QAAL,CAAc,CAAd,EAAiB//B,IAAjB,EAAN;EACD,KAFD,MAEO;EACLyR,MAAAA,GAAG,GAAG,KAAKsuB,QAAL,CAAc,CAAd,EAAiB//B,IAAjB,EAAN;EACD;;EACD,QAAI+S,GAAG,GAAG21C,GAAG,CAACj3C,GAAD,CAAb;EACA,QAAI3N,KAAK,GAAGiP,GAAG,CAACjB,KAAJ,CAAU,qBAAV,EAAiCstB,EAAjC,CAAoC,CAApC,EAAuCp/B,IAAvC,GAA8C6C,WAA9C,EAAZ;EACA,WAAOiB,KAAK,IAAI,IAAhB;EACD,GAXD,CA7B+B;;;EA2C/BqnD,EAAAA,MAAM,CAACpM,GAAP,CAAWziD,SAAX,CAAqB2N,KAArB,GAA6B,YAAY;EACvC,QAAIwH,GAAG,GAAG,KAAKsuB,QAAL,GAAgB//B,IAAhB,EAAV;EACA,QAAI+S,GAAG,GAAG21C,GAAG,CAACj3C,GAAD,CAAb;EACA,QAAI65C,MAAM,GAAGv4C,GAAG,CAACjB,KAAJ,CAAU,UAAV,EAAsBqtB,KAAtB,EAAb;;EACA,QAAImsB,MAAM,CAAC1uC,GAAP,CAAW,KAAX,CAAJ,EAAuB;EACrB,aAAO,MAAP;EACD;;EACD,QAAIynC,EAAE,GAAGtxC,GAAG,CAACqW,KAAJ,CAAU,CAAV,CAAT;;EACA,QAAIi7B,EAAE,CAACznC,GAAH,CAAO,YAAP,CAAJ,EAA0B;EACxB,aAAO,MAAP;EACD;;EACD,QAAI7J,GAAG,CAAC6J,GAAJ,CAAQ,kBAAR,KAA+B7J,GAAG,CAAC6J,GAAJ,CAAQ,2BAAR,CAAnC,EAAyE;EACvE,aAAO,QAAP;EACD;;EACD,WAAO,SAAP;EACD,GAfD;EAgBD,CA3DD;;SA4Dc,GAAGksC;;;;;;;;"} \ 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 1fae24a4..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=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){return(t="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})(e)}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var r=0;rn[t].lineage.length?1:n[e].isA.length>n[t].isA.length?-1:0:0:1}))},_={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({},_,e)).text&&(r.text=this.text),e.normal&&(r.normal=this.normal),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=L(this,t)[0]),r}},J=Object.assign({},D,E,z,M,q);function W(){return"undefined"!=typeof window&&window.document}var K=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";r(this,e),t=String(t);var n=j(t);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=h(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return a(e,[{key:"set",value:function(e){var t=j(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();ne.prototype.clone=function(){var e=new ne(this.text);return e.pre=this.pre,e.post=this.post,e.tags=Object.assign({},this.tags),e},Object.assign(ne.prototype,J),Object.assign(ne.prototype,re);var ae=ne,ie={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}:"reduced"===e?{titlecase:!1,lowercase:!0,punctuation:!1,whitespace:!0,unicode:!0,implicit:!0,reduced:!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){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=oe(i)),!0===e.trim&&(i=i.trim()),i}},ue={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}},le=/[.?!]\s*$/,ce=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,le.test(n)?n+r.match(/\s*$/):r),a.post="",""===a.post&&(a.post+=" ")},he=function(e,t,r){var n=e.terms(),a=t.terms();ce(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},de=/ /,pe=function(e,t,r){var n=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===de.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},fe=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)},ge={append:function(e,t){return he(this,e,t),this},prepend:function(e,t){return pe(this,e,t),this},delete:function(e){return fe(this,e),this},replace:function(e,t){var r=this.length;he(this,e,t);var n=this.buildFrom(this.start,this.length);n.length=r,fe(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}},me={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.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}},ve={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)}},be=Object.assign({},ie,se,ue,ge,me,ve),ye=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},we=function(e,t,r,n,a,i){for(var o=t;t1&&u.greedy?f.length+=o-p:f.length++}}else if(!0!==u.optional){if(!(e[o].isImplicit()&&t[s-1]&&e[o+1]&&e[o+1].doesMatch(u,r+o,n)))return[!1,null];o+=2}}else{var g=ke(e,o,t[s+1],u,r);if(void 0!==u.min&&g-ou.max){o+=u.max;continue}if(null===g)return[!1,null];l&&(Ae(a,c,e,o,u.named).length=g-o),o=g}}return[e.slice(0,o),a]},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},Ge=/\{([0-9]+,?[0-9]*)\}/,Fe=/&&/,Be=new RegExp(/^<(\S+)>/),xe=function(e){return e[e.length-1]},je=function(e){return e[0]},Ce=function(e){return e.substr(1)},De=function(e){return e.substr(0,e.length-1)},Ee=function(e){return e=Ce(e),e=De(e)},Ne=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===xe(t)&&(n.end=!0,t=De(t)),"^"===je(t)&&(n.start=!0,t=Ce(t)),("["===je(t)||"]"===xe(t))&&(n.named=!0,"["===je(t)?n.groupType="]"===xe(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===je(t))){var i=Be.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===xe(t)&&(n.greedy=!0,t=De(t)),"*"!==t&&"*"===xe(t)&&"\\*"!==t&&(n.greedy=!0,t=De(t)),"?"===xe(t)&&(n.optional=!0,t=De(t)),"!"===je(t)&&(n.negative=!0,t=Ce(t)),"("===je(t)&&")"===xe(t)){Fe.test(t)?(n.choices=t.split(Fe),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=Ce(n.choices[0]);var o=n.choices.length-1;n.choices[o]=De(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(e),t=""}if("/"===je(t)&&"/"===xe(t))return t=Ee(t),n.regex=new RegExp(t),n;if("~"===je(t)&&"~"===xe(t))return t=Ee(t),n.soft=!0,n.word=t,n}return!0===Ge.test(t)&&(t=t.replace(Ge,(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,""}))),"#"===je(t)?(n.tag=Ce(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===je(t)?(n.method=Ce(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)},Oe=function(e){return e.filter((function(e){return e.groupType})).length>0&&(e=function(e){for(var t,r,n=!1,a=-1,i=0;i)?\(.*?\)[?+*]*\]?\$?)/);return t=t.map((function(e){return e.trim()}))}(e);return r=(r=function(e){var t=[];return e.forEach((function(e){if(/^[[^_/]?\(/.test(e[0]))t.push(e);else{var r=e.split(" ");r=r.filter((function(e){return e})),t=t.concat(r)}})),t}(r)).map(Ne),r=Oe(r)},Ve=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=Te(t)),!0===ye(e,t))return[];var n=t.filter((function(e){return!0!==e.optional})).length,a=e.terms(),i=[];if(!0===t[0].start){var o=$e(a,t,0,a.length),s=l(o,2),u=s[0],c=s[1];return!1!==u&&u.length>0&&(u=u.filter((function(e){return e})),i.push({match:u,groups:c})),Pe(a,t,i)}for(var h=0;ha.length);h+=1){var d=$e(a.slice(h),t,h,a.length),p=l(d,2),f=p[0],g=p[1];if(!1!==f&&f.length>0&&(h+=f.length-1,f=f.filter((function(e){return e})),i.push({match:f,groups:g}),!0===r))return Pe(a,t,i)}return Pe(a,t,i)},ze=function(e,t){var r={};Ve(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},He={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Ve(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 Ve(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)}))}},Ie=function e(t,n,a){r(this,e),this.start=t,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:{}})};Ie.prototype.buildFrom=function(e,t,r){var n=new Ie(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Ie.prototype,He),Object.assign(Ie.prototype,be);var Me={term:"terms"};Object.keys(Me).forEach((function(e){return Ie.prototype[e]=Ie.prototype[Me[e]]}));var Se=Ie,Le=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:t})}return a(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}();Le.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 Le(t)};for(var _e=Le,qe=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},Je=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,We=/\S/,Ke=/[ .][A-Z]\.? *$/i,Re=/(?:\u2026|\.{2,}) *$/,Qe=/((?:\r?\n|\r)+)/,Ue=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,Ze=/^\s+/,Xe=function(e,t){if(!0===Ke.test(e))return!1;if(!0===Re.test(e))return!1;if(!1===Ue.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},Ye=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===We.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(Qe),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;"string"!=typeof e&&"number"==typeof e&&(e=String(e));var n=Ye(e,t);n=n.map((function(e){return st(e)})),r=r||new _e;var a=n.map((function(e){e=e.map((function(e){var t=new ae(e);return r.add(t),t})),qe(e);var t=new Se(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},lt=function(e,t){var r=new _e;return e.map((function(e,n){var a=e.terms.map((function(a,i){var o=new ae(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 qe(a),new Se(a[0].id,a.length,r)}))},ct={Comparative:"true¦better",Superlative:"true¦earlier",PresentTense:"true¦is,sounds",Value:"true¦a few",Noun:"true¦a8b7c5e3f2here,ie,lit,m1no doubt,p0tce,vs;d,l;a,d;t,y;g,sp,tc,x0;!p;a,ca,o0;l,rp;a,c,l;d,l,rc",Copula:"true¦a1is,w0;as,ere;m,re",PastTense:"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan",Condition:"true¦if,unless",Gerund:"true¦accord0be0develop0go0result0stain0;ing",Negative:"true¦n0;ever,o0;!n,t",QuestionWord:"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s",Plural:"true¦records",Conjunction:"true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh",Pronoun:"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s",Singular:"true¦0:0X;1:10;a0Wb0Kc0Bd04e02fXgShOici1jel0kitty,lNmJnIoHpDquestion mark,rBs7t4u2womW;nc0Rs 2;doll0Dst0F; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;ist0Pky,omeone,t2uper bowl,yst0W;ep3ri1u2;de0Pff;faMmoM;al0i1o2;om,se;a4i0Jl05r3u2;dLrpoD;erogaVobl0O;rt,te0I;bjSceGthers;othi1umb0E;a4ee04o2;del,m2nopo0th0C;!my;n,yf0;i0unch;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em",Actor:"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;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",Honorific:"true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;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",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",Uncountable:"true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics",Infinitive:"true¦0:6K;1:6Y;2:57;3:6V;4:6W;5:5Z;6:67;7:6Q;8:6I;9:6U;A:6P;B:6S;C:6D;D:6Z;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tCve;n,raD;d0t;aIiGo9;eGsA;!w;l6Cry;nHpGr3se;gra4Mli3Z;dGi9lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi7;ne,rn;aGe0Mi5Nu7y;de,in,nsf0p,v5F;r2XuC;ank,reat2N;nd,st;lk,rg1Ps9;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitC;bmAck,ff0gge7ppHrGspe5;ge,pri1rou4Vvi4;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi4;ngth2Dss,tC;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arCem,le5n1r4tt6;aHo2rG;atCew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi7oItG;!o2rG;i5uc1Y;l4rt;mb6nt,r4;e7i2;air,eHlGo3ZreseD;a8y;at;aEemb0i3Vo4;aHeGi4y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei4k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiDoG;cGdu8greBhibAmi1te7vi2T;eBlaim;di5pa2ss,veD;iDp,rtr3ZsGur;e,t;aHuG;g,n3;n,y;ck,le;fo30mAsi7;ck,iDrt4Fss,u1;bJccur,ff0pera9utweIverGwe;co40lap,ta20u1wG;helm;igh;ser4taE;eHotG;e,i8;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr3;intaEna3rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mAnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nC;iGno2Z;ck,ll,ss;am,oEuG;d3mp;gno2mQnGss3C;cOdica9flu0MhNsKtIvG;eGol4;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abAibA;lu1Er1C;agi22pG;lemeDo20ro4;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloBove1MrIuG;arGeBi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca7m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte17;a16eHi2laEoGreB;rt,se;ct,riG;en8;ci1t;el,han3;abGima9;liF;ab6couXdHfor8ga3han8j03riCsu2t0vG;isi2Qy;!u2;body,er3pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeBiG;ft;g,in;d3ubt;ff0p,re5sHvG;iYor8;aKcHliGmiBpl16tinguiF;ke;oGuB;uGv0;ra3;gr1TppG;ear,ro4;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er4iHtrG;oy;gn,re;a09e08i5osA;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma3n8re,te;a0Ae09h06i9l04oJrG;aHeGoBuFy;a9dA;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aEin0SrG;a7ibu9ol;iGtitu9;d0st;iHoGroD;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen3n3r3se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a7mb,o7rrGth0un8;ow;ck;ar,lHnefAtrG;ay;ie4ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waA;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri4;ue;!i4;eaJlIroG;aCve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e3ow;ee;rd;aRdIju7mAoR;it;st;!reB;ss;cJhie4knowled3tiva9;te;ge;ve;eIouDu1;se;nt;pt;on",Unit:"true¦0:16;a11b0Zc0Ld0Ke0If0Dg09h06in0Ejoule0k00lYmNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Kb,d0Qears old,o1;tt0E;att0b;able4b3e2on1sp;!ne0;a2r0A;!l,sp;spo01; ft,uare 1;c0Fd0Ef3i0Ckilo0Gm1ya0B;e0Jil1;e0li0E;eet0o0A;t,uart0;ascals,e2i1ou0Mt;c0Jnt0;rcent,tZ;hms,uVz;an0GewtQ;/s,b,e7g,i3l,m2p1²,³;h,s;!²;!/h,cro3l1;e1li05;! DsC²;g05s0A;gPter1;! 2s1;! 1;per second;b,iZm,u1x;men0x0;b,elvin0g,ilo2m1nQ;!/h,ph,²;byYgWmeter1;! 2s1;! 1;per hour;e1g,z;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",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",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",Possessive:"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne",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",City:"true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg",Abbreviation:"true¦a08b05cZdXeUfSgRhQiPjNkanMlKmGnEoDpCque,rAs6t4u3v2w0;is0y00;!c;a,s,t;niv,safa,t;ce,e0;nn,x;ask,e1fc,gt,ir,r,t,u0;pt,rg;nDp0;!t;d,e0;pAs,v;a,d,ennGhd,l,rof,vt;ct,kla,nt,p,rd;eb0ov;!r;a2d,essrs,i1lle,me,r5s0t;!tr;nn,ster;!j,r;it,lb,t0;!d;!s;an,r,u0;l,n;a,da,e,nc;on,wy;a,en,ov;eb,l0t,y;!a;g,s1tc,x0;!p;p,q;ak,e0ist,r;c,pt,t;a3ca,l,m2o0pl,res,t;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d3l2pr,r1ss0tty,ug,ve;n,t;c,iz;!ta;!j,m,v",Place:"true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s",Country:"true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;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",Region:"true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma",FemaleName:"true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:EP;6:ER;7:FS;8:GF;9:EZ;A:GB;B:E5;C:FO;D:FL;E:G8;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et5onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s7;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs7tGwa0;ia0um;a,yn;iGya;a,ka,s7;a4e4iGmCAra;!ka;a,t7;at7it7;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet5ie,y;anGi8;!a,e,nG;aDe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs7vannaD;aDi0;ra,y;aGi4;nt7ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lE;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaD;chGe,i0mo0n5EquCDvCy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et5in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t5;aQePiJoGy6;eHrG;aDeCma;ll1mi;aKcIkGla,na,s7ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s7;cy,et5;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eC;h75il9t2;a,cSgOiJjor2l6In2s7tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lEna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri5;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alEd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket5z2;a,et5;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes7na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as7is7oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stC;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s7;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlEri0y;ar5Cer5Cie,leCr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelEd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lEph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et5iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lEquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aDnaD;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolE;acHetGisel9;a,chC;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et5i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileCkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eCis,la,othGthy;ea,y;an09naDonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraDra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et5iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleC;en,t5;aIeoHotG;il4B;!pat4;ir8rIudG;et5iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot5;n1t5;!sa;d4el1PtG;al,el1O;cHlG;es5i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleCrEy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwEok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaDvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt7yl;adHiG;ce;et5iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes7;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t5;an19elG;le;aYdWeUgQiOja,nHtoGya;inet5n3;!aJeHiGmI;e,ka;!mGt5;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t5;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is7jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naD;c7da,leCmLnslKsG;haDlG;inGyW;g,n;!h;ey;ee;en;at7g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lEsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah",WeekDay:"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s",Month:"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il",Date:"true¦t0weekend,yesterd2;mr2o0;d0morrow;ay;!w",FirstName:"true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is",LastName:"true¦0:34;1:39;2:3B;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs1;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu2;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps1;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar2lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch2dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins1;c6ve0F;ci,hards1;ir2os;aEeAh8ic6ow20;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils1guy5ix1owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin2;!o;aCe8i6op2uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen2o6u3;h6nYu3;an6ns1;ss1;ki0Es5;cks1nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs1;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr2;ayli3ub0;m2nzal2;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand2;d7insteHsposi6vaL;to;is1wards;aCeBi9omin8u6;bo6rand;is;gu2;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s1;on;eks7iy8var2;ez;ej6;ev;ams",MaleName:"true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:9V;6:BZ;7:AT;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde5sB;!l7t1;de,lCrr6yB;l1ne;lBt3;a93y;aEern1iB;cCha0nceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l7;lom1nA3uB;leyma8ta;dBl7Jm1;!n7;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n7olfo,ri68;co,ky;bAe9U;cBl7;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub6x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw6;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e5;a78ik;house,o03t1;e,olB;aj;ah,hBk7;a4eB;al,l;hClv2rB;le,ri5v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe5;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha5tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe5;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a5ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd6kGmFrDsCvi3yB;!d6s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d6;an,s0;lEo4FrDuBv7;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr7rge;bri4l6rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym6zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl7nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e5ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne5rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro5y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl7y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n7rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid6ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd6eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on",Person:"true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;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;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er",Verb:"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en",PhrasalVerb:"true¦0:72;1:6Q;2:7E;3:74;4:6J;5:7H;6:76;7:6P;8:6C;9:6D;A:5I;B:71;C:70;a7Hb63c5Dd5Ae58f46g3Oh38iron0j34k2Zl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit53;d 1k2R;mp0n4Ape0r8s8;eel Bip 7L;aEiD;gh 06rd0;n Br 3D;it 5Kk8lk6rm 0Qsh 74t67v4P;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Gup;ade YiDot0y 28;ckle68p 7A;ne67p Ds4D;d2o6Lup;ck FdEe Dgh5Tme0p o0Dre0;aw3ba4d2in,up;e5Ky 1;by,o6V;ink Drow 5V;ba4ov7up;aDe 4Ill4O;m 1r W;ckCke Elk D;ov7u4O;aDba4d2in,o31up;ba4ft7p4Tw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6P; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1MiD;ke 5Yn2Y;p Drm1P;by,in,o6B;n2Zr 1tc3I;c2Ymp0nd Dr6Hve6y 1;ba4d2up;d2o67up;ar2Vell0ill4UlErDurC;ingCuc8;a33it 3U;be4Crt0;ap 4Eow B;ash 4Zoke0;eep EiDow 9;c3Np 1;in,oD;ff,v7;gn Eng2Zt Dz8;d2o5up;in,o5up;aFoDu4F;ot Dut0w 5X;aw3ba4f37o5R;c2FdeAk4Sve6;e Hll0nd GtD; Dtl43;d2in,o5upD;!on;aw3ba4d2in,o1Yup;o5to;al4Lout0rap4L;il6v8;at0eKiJoGuD;b 4Ele0n Dstl8;aDba4d2in53o3Gt30u3E;c1Xw3;ot EuD;g2Knd6;a1Xf2Ro5;ng 4Op6;aDel6inAnt0;c4Yd D;o2Tu0C;aQePiOlMoKrHsyc2AuD;ll Ft D;aDba4d2in,o1Ht34up;p39w3;ap38d2in,o5t32up;attleCess EiGoD;p 1;ah1Hon;iDp 53re3Mur45wer 53;nt0;ay3ZuD;gAmp 9;ck 53g0leCn 9p3W;el 47ncilA;c3Pir 2In0ss FtEy D;ba4o4R; d2c1Y;aw3ba4o12;pDw3K;e3Jt B;arrow3Terd0oD;d6te3S;aJeHiGoEuD;ddl8ll37;c17p 1uth6ve D;al3Bd2in,o5up;ss0x 1;asur8lt 9ss D;a1Aup;ke Dn 9r30s1Lx0;do,o3Yup;aPeNiIoDuck0;a17c37g GoDse0;k Dse35;aft7ba4d2forw2Bin3Wov7uD;nd7p;in,o0J;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fl22r Dt 1;fDof;rom;in,oRu1A;cZm 1nDve it,ze1Y;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut",Modal:"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld",Adjective:"true¦0:74;1:7J;2:7P;3:7I;4:7B;5:5B;6:48;7:49;8:4R;9:60;A:7G;B:6Z;C:6Y;D:72;E:5W;a6Ib64c5Qd56e4Tf49g41h3Qi35j33k32l2Rm2Gn27o1Rp1Aquack,r10s0Gt09uQvNwFyear5;arp0eJholeIiHoF;man5oFu6B;d6Dzy;despr74s5F;!sa7;eGlFste26;co1Il o4L;!k5;aGiFola4B;b7Sce versa,ol54;ca2gabo62nilla;ltWnJpGrb59su4tterF;!moC; f34b1OpGsFti1H;ca7et,ide dMtairs;er,i3N;aPbeco6Qconvin27deMeLfair,ivers4knKprecedYrIsGwF;iel20ritt5Y;i1VuF;pervis0specti3;eFu5;cognLgul6Gl6G;own;ndi3v5Sxpect0;cid0rF;!grou5NsF;iz0tood;b7ppeaLssu6FuthorF;iz0;i24ra;aJeHhough4OoGrF;i1oubl0;geth8p,rpB;en5PlFm4Zrr2U;li3;boo,lFn;ent0;aXcWeUhTiRmug,nobbi3EoPpOqueami3EtJuFymb63;bHi gener54pFrprisi3;erFre0L;! dup8b,i29;du0seq4T;anda6TeIi0PrFy38;aightFip0; fFfF;or5A;adfaCreotyp0;aEec2Gir1JlendBot on; call0le,mb8phist1XrFu0Xvi41;dBry;gnifica2nF;ceEg7;am2Pe8ocki3ut;cFda1em5lfi2Yni1Wpa68re6;o1Gr3V;at57ient28reec57;cr0me,ns serif;aMeIiGoF;buCtt4TuSy4;ghtFv4;!-29f9;ar,bel,condi1du62fres51lHpublic3VsFtard0;is47oF;lu1na2;e1Euc45;bBciF;al,st;aQeOicayu6lacBopuliCrGuF;bl59mp0;eJiGoF;!b0AfuDmi31p8;mGor,sFva1;ti6;a4Ve;ciDmF;a0IiF;er,um;ac20rFti1;feAma2Tplexi3v33;rFst;allelHtF;-tiFi4;me;!ed;bQffOkNld fashion0nMpLrg1Hth8utKvF;al,erF;!aHniGt,wF;eiFrouF;ght;ll;do0Ver,g2Lsi45;en,posi1; boa5Fg2Jli6;!ay; gua5DbFli6;eat;eHsF;cFer0Hole1;e6uE;d2Sse;ak0eMiLoFua4O;nJrGtF;ab7;thF;!eF;rn;chala2descri4Zstop;ght5;arby,cessa3Wighbor5xt;aNeLiIoFultip7;bi7derGlFnth5ot,st;dy;a1n;nFx0;iaFor;tuE;di4EnaFre;ci3;cFgenta,in,j03keshift,le,mmoth,ny,sculi6;abEho;aOeJiGoFu13;uti12vi3;mGteraF;l,te;it0;ftIgFth4;al,eGitiF;ma1;nda3C;!-0C;nguBst,tt8;ap1Sind5no0A;agg0uF;niOstifi0veni7;de4gno4Blleg4mSnHpso 1VrF;a1releF;va2; NaMbr0corLdJfluenTiTnIsHtF;aAenDoxF;ic36;a6i2R;a1er,oce2;iGoF;or;reA;deq3Jppr2Y;fFsitu,vitro;ro2;mJpF;arHerfeAoFrop8;li1rtF;a2ed;ti4;eFi0Q;d2QnD;aKelJiHoFumdr3B;neCok0rrFs07ur5;if2S;ghfalut1OspF;an2Q;liZpf9;lInHrF;d05roF;wi3;dy,gi3;f,low0;ainf9ener2Jiga22lLoKraHuF;ilFng ho;ty;cGtF;ef9is;ef9;ne,od;ea2Dob4;aUeOinNlMoHrF;a1TeFoz1K;e2Dq12tf9;oHrF; keeps,eFm8tuna1;g04ign;liF;sh;ag2Zue2;al,i1;dJmGrF;ti7;a7ini6;ne;le; up;bl0i2lDr Gux,voF;ri1uri1;oFreac1E;ff;aNfficie2lMmiLnJreAthere4veIxF;aAcess,pe1OtraGuF;be2Ll0H;!va1D;n,ryday; Fcouragi3tiE;rou1sui1;ne2;abo23dQe18i1;g8sF;t,ygF;oi3;er;aVeNiHoFrea15ue;mina2ne,ubF;le,tf9;dact1Bfficu1OsGvF;erD;creHeas0gruntl0honeCordGtF;a2ress0;er5;et; LadpKfJgene1PliHrang0spe1PtGvoF;ut;ail0ermin0;be1Mca1ghF;tf9;ia2;an;facto;i5magFngeroZs0I;ed,i3;ly;ertaRhief,ivil,oHrF;aFowd0u0H;mp0v02z0;loNmLnGoi3rrFve0P;eAu1I;cre1grIsHtF;emFra0F;po0D;ta2;ue2;mer08pleF;te,x;ni4ss4;in;aPeLizarElJoGrF;and new,isk,okP;gGna fiWttom,urgeoF;is;us;ank,iI;re;autif9hiGlov0nFst,yoG;eVt;nd;ul;ckGnkru0XrrF;en;!wards; priori,b0Nc0Kd0AfraBg05h04lZma06ntiquYpUrOsMttracti07utheLvIwF;aGkF;wa0U;ke,re;ant garGerF;age;de;ntV;leep,tonisF;hi3;ab,bitIroHtiF;fiF;ci4;ga2;raF;ry;pFt;are2etiPrF;oprF;ia1;at0;arIcohGeFiMl,oof;rt;olF;ic;mi3;ead;ainCgressiGoniF;zi3;ve;st;id; MeKuJvF;aGerD;se;nc0;ed;lt;pt,qF;ua1;hoc,infinitF;um;cuGtu4u1;al;ra1;erPlOoMruLsGuF;nda2;e2oGtraA;ct;lu1rbi3;ng;te;pt;aFve;rd;aze,e;ra2;nt",Comparable:"true¦0:3Z;1:4G;2:43;3:2W;4:49;5:3V;a4Mb42c3Md3Be33f2Pg2Dh22i1Tj1Sk1Pl1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell25ou4;aBe9hi1Wi7r6;o4y;ck0Mde,l6n1ry,se;d,y;a6i4Kt;k,ry;n1Rr6sI;m,y;a7e6ulgar;nge5rda2xi4;gue,in,st;g0n6pco3Kse5;like0ti1;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,t;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",TextValue:"true¦bMeIfChundredNmMnin9one,qu8s6t0zeroN;enMh3rLw0;e0o;l0ntC;fGve;ir0ousandIree;d,t5;e0ix7;cond,ptEven6xtE;adrDintD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en1;illion0;!th",Ordinal:"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th",Cardinal:"true¦bGeDf7hundred,mGnine9one,qu6s4t0zero;en,h2rFw0;e0o;lve,n7;irt8ousand,ree;e0ix4;ptAven3xtA;adr9int9;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion",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",Adverb:"true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori",Preposition:"true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut",Determiner:"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er"},ht=["Person","Place","Organization"],dt={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:ht},Actor:{isA:"Noun",notA:ht},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:ht},Demonym:{isA:["Noun","ProperNoun"],notA:ht},Possessive:{isA:"Noun"}},pt={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","Copula","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},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:"Verb"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"}},ft={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},gt=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],mt={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","Conjunction","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Time:{isA:["Date"],notA:["Value"]},Determiner:{notA:gt},Conjunction:{notA:gt},Preposition:{notA:gt},QuestionWord:{notA:["Determiner"]},Currency:{},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"]},Auxiliary:{notA:["Noun","Adjective","Value"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},vt={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},bt=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:vt[t]?e[t].color=vt[t]:e[t].isA.some((function(r){return!!vt[r]&&(e[t].color=vt[r],!0)}))})),e},yt=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},xt=function(e,t,r){var n=Bt(t);return n1&&(r.hasCompound[i[0]]=!0),"Singular"===t){var o=a.toPlural(e,r);n[o]=n[o]||"Plural"}if("Infinitive"===t)for(var s=a.conjugate(e,r),u=Object.keys(s),l=0;l0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===Lt.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({},Jt(e),r)).Gerund&&(r.Gerund=Kt.Gerund(e)),void 0===r.PastTense&&(r.PastTense=Kt.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=Kt.PresentTense(e)),r},Qt=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],Ut=[/ary$/],Zt={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},Xt=[{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"}],Yt=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],er=[/ary$/,/ous$/],tr={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},rr=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],nr={toSuperlative:function(e){if(Zt.hasOwnProperty(e))return Zt[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=sr(e);return null!==n?n:or.test(e)?e+"es":e+"s"},lr=[[/([^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"],[/(..[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,""]],cr=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?a[i]&&"."!==a[i]&&r.tag(a[i],n,t.world):r.tag(e,n,t.world)}))}))}),Gr={tag:function(e,t){return e?(Pr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(Pr(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)}},Fr={map:function(e){var r=this;if(!e)return this;var n=this.list.map((function(t,n){var a=r.buildFrom([t]);a.from=null;var i=e(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"!==t(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)}},Br=function(e){return e.split(/[ -]/g)},xr=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=Br(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 e?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(a){var i,o=e;if("function"==typeof e&&(o=e(a)),o&&"object"===t(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=Dr(o)),i=ut(o,r.world,r.pool()),r.buildFrom(i).tagger()}if(!0===n.keepTags){var s=a.json({terms:{tags:!0}}).terms;i[0].terms().forEach((function(e,t){s[t]&&e.tagSafe(s[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)}},Nr=C((function(e,t){t.append=function(e){var t=this;return e?(this.uncache(),this.list.forEach((function(r){var n=ut(e,t.world,t.pool())[0];t.buildFrom([n]).tagger(),r.append(n,t)})),this):this},t.insertAfter=t.append,t.insertAt=t.append,t.prepend=function(e){var t=this;return e?(this.uncache(),this.list.forEach((function(r){var n=ut(e,t.world,t.pool())[0];t.buildFrom([n]).tagger(),r.prepend(n,t)})),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)&&Vr(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})),Hr=(zr.json,zr.data,C((function(e){var t=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}};Sr.alphabetical=Sr.alpha,Sr.wordcount=Sr.wordCount;var Lr={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},_r={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):Lr.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===un.test(i)){var s=i.replace(un,"");!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=/[\'‘’‛‵′`´]$/,dn=[[/^\w+@\w+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@\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"],[/^[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)$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[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"],[/^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]{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|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}$/,"Fraction"],[/^[0-9.]{1,2}[-–][0-9]{1,2}$/,["Value","NumberRange"]],[/^[0-9.]{1,4}(st|nd|rd|th)?[-–][0-9\.]{1,4}(st|nd|rd|th)?$/,"NumberRange"],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],pn=/^[IVXLCDM]{2,}$/,fn=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,gn="Adjective",mn="Infinitive",vn="PresentTense",bn="Singular",yn="PastTense",wn="Expression",kn="LastName",An={a:[[/.[aeiou]na$/,"Noun"],[/.[oau][wvl]ska$/,kn],[/.[^aeiou]ica$/,bn],[/^([hyj]a)+$/,wn]],c:[[/.[^aeiou]ic$/,gn]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,yn],[/.[aeo]{2}[bdgmnprvz]ed$/,yn],[/.[aeiou][sg]hed$/,yn],[/.[aeiou]red$/,yn],[/.[aeiou]r?ried$/,yn],[/.[bcdgtr]led$/,yn],[/.[aoui]f?led$/,yn],[/.[iao]sed$/,yn],[/[aeiou]n?[cs]ed$/,yn],[/[aeiou][rl]?[mnf]ed$/,yn],[/[aeiou][ns]?c?ked$/,yn],[/[aeiou][nl]?ged$/,yn],[/.[tdbwxz]ed$/,yn],[/[^aeiou][aeiou][tvx]ed$/,yn],[/.[cdlmnprstv]ied$/,yn],[/[^aeiou]ard$/,bn],[/[aeiou][^aeiou]id$/,gn],[/.[vrl]id$/,gn]],e:[[/.[lnr]ize$/,mn],[/.[^aeiou]ise$/,mn],[/.[aeiou]te$/,mn],[/.[^aeiou][ai]ble$/,gn],[/.[^aeiou]eable$/,gn],[/.[ts]ive$/,gn]],h:[[/.[^aeiouf]ish$/,gn],[/.v[iy]ch$/,kn],[/^ug?h+$/,wn],[/^uh[ -]?oh$/,wn]],i:[[/.[oau][wvl]ski$/,kn]],k:[[/^(k)+$/,wn]],l:[[/.[gl]ial$/,gn],[/.[^aeiou]ful$/,gn],[/.[nrtumcd]al$/,gn],[/.[^aeiou][ei]al$/,gn]],m:[[/.[^aeiou]ium$/,bn],[/[^aeiou]ism$/,bn],[/^h*u*m+$/,wn],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,gn],[/[^aeiou]ician$/,"Actor"],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,wn],[/^(yo)+$/,wn],[/^woo+[pt]?$/,wn]],r:[[/.[bdfklmst]ler$/,"Noun"],[/.[ilk]er$/,"Comparative"],[/[aeiou][pns]er$/,bn],[/[^i]fer$/,mn],[/.[^aeiou][ao]pher$/,"Actor"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,gn],[/[aeiou].*ist$/,gn],[/^[a-z]et$/,"Verb"]],s:[[/.[rln]ates$/,vn],[/.[^z]ens$/,"Verb"],[/.[lstrn]us$/,bn],[/.[aeiou]sks$/,vn],[/.[aeiou]kes$/,vn],[/[aeiou][^aeiou]is$/,bn],[/[a-z]\'s$/,"Noun"],[/^yes+$/,wn]],v:[[/.[^aeiou][ai][kln]ov$/,kn]],y:[[/.[cts]hy$/,gn],[/.[st]ty$/,gn],[/.[gk]y$/,gn],[/.[tnl]ary$/,gn],[/.[oe]ry$/,bn],[/[rdntkbhs]ly$/,"Adverb"],[/...lly$/,"Adverb"],[/[bszmp]{2}y$/,gn],[/.(gg|bb|zz)ly$/,gn],[/.[aeiou]my$/,gn],[/[ea]{2}zy$/,gn],[/.[^aeiou]ity$/,bn]]},$n="Adjective",Pn="Infinitive",Gn="PresentTense",Fn="Singular",Bn="PastTense",xn="Adverb",jn="Plural",Cn="Verb",Dn="LastName",En=[null,null,{ea:Fn,ia:"Noun",ic:$n,ly:xn,"'n":Cn,"'t":Cn},{oed:Bn,ued:Bn,xed:Bn," so":xn,"'ll":"Modal","'re":"Copula",azy:$n,end:Cn,ped:Bn,ffy:$n,ify:Pn,ing:"Gerund",ize:Pn,lar:$n,mum:$n,nes:Gn,nny:$n,oid:$n,ous:$n,que:$n,rmy:$n,rol:Fn,sis:Fn,zes:Gn},{amed:Bn,aped:Bn,ched:Bn,lked:Bn,nded:Bn,cted:Bn,dged:Bn,akis:Dn,cede:Pn,chuk:Dn,czyk:Dn,ects:Gn,ends:Cn,enko:Dn,ette:Fn,fies:Gn,fore:xn,gate:Pn,gone:$n,ices:jn,ints:jn,ions:jn,less:xn,llen:$n,made:$n,nsen:Dn,oses:Gn,ould:"Modal",some:$n,sson:Dn,tage:Pn,teen:"Value",tion:Fn,tive:$n,tors:"Noun",vice:Fn},{tized:Bn,urned:Bn,eased:Bn,ances:jn,bound:$n,ettes:jn,fully:xn,ishes:Gn,ities:jn,marek:Dn,nssen:Dn,ology:"Noun",ports:jn,rough:$n,tches:Gn,tieth:"Ordinal",tures:jn,wards:xn,where:xn},{auskas:Dn,keeper:"Actor",logist:"Actor",teenth:"Value"},{opoulos:Dn,sdottir:Dn}],Nn={":(":!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)}},regex:function(e,t){for(var r=e.text,n=0;n=2&&pn.test(r)&&fn.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===En[i.length].hasOwnProperty(i)){var o=En[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===An.hasOwnProperty(n))for(var a=An[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(On)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),Nn.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},Vn=function(e,t){var r=e.world;Tn.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},Kn={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]},Rn=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],Qn=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],Un=[/i$/,/ae$/],Zn=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(Rn.find((function(t){return e.tags[t]})))return;if(Kn.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(Kn.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(Qn.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(Un.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},Xn=["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}),{}),Yn=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()))},ea=/^[A-Z]('s|,)?$/,ta=/([A-Z]\.){2}[A-Z]?/i,ra={I:!0,A:!0},na={neighbours:Mn,case:_n,stem:Wn,plural:Zn,organizations:function(e,t){for(var r=0;r0?_a=_a.concat(t):_a.push(e)})),_a.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:ja(r),words:ja(n)}),e}));var qa=_a,Ja=function(e){qa.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=ja(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},Xa=function(e){var t=function(e){function t(e,n,a){var i;return r(this,t),(i=u(this,o(t).call(this,e,n,a))).contracted=null,i}return i(t,e),a(t,[{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,r0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return a(e,[{key:"tagger",value:function(){return Ka(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();ji.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new ji(e,this,this.world)},ji.prototype.fromText=function(e){var t=ut(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(ji.prototype,xi.misc),Object.assign(ji.prototype,xi.selections),Bi(ji);var Ci={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(Ci).forEach((function(e){return ji.prototype[e]=ji.prototype[Ci[e]]}));var Di=ji,Ei=function(e){var t=e.termList();return cn(t,e.world),e};var Ni=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=ut(e,r),a=new Di(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=ut(e,n),i=new Di(a,null,n);return t&&Ei(i),i},n.extend=function(e){return e(Di,r,this,Se,ae,_e),this},n.fromJSON=function(e){var t=lt(e,r);return new Di(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.version="13.1.1",n.import=n.load,n}(new yr),Oi=function(e){var t,r=e.template("short description");return r&&((t=r)&&"[object Object]"===Object.prototype.toString.call(t))&&r.description?r.description:null},Ti=function(e){return e.parentheses().remove(),e},Vi=function(e){return e.remove("and #Copula .*"),e},zi=function(e){var 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;var 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:Vi(r.eq(2))}},Hi=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},Ii=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},Mi=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)")))))},Si=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+$"));var t=e.clauses();if(t.length>1){var r=t.eq(0),n=t.eq(1);if(Mi(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{var a=t.last();Mi(a)&&(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},Li=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},_i=function(e,t){if(e&&"function"==typeof e.text){var r=e.text();if(r&&r.length>t.min&&r.length0&&(t=r),0===(t=t.filter((function(e){return!Yi.find((function(t){return t.test(e)}))&&!eo.test(e)}))).length?"":((r=t.filter((function(e){return Ui.find((function(t){return t.test(e)}))}))).length>0&&(t=r),(r=t.filter((function(e){return!1!==to.test(e)&&(1!==e.slice(" ").length&&void 0===Zi.find((function(t){return t.test(e)})))}))).length>0&&(t=r),(t=t.sort((function(e,t){var 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 aLength ? bLength : aLength) + 1; + + if (Math.abs(aLength - bLength) > (limit || 100)) { + return limit || 100; + } // init the array + + + var matrix = []; + + for (var i = 0; i < limit; i++) { + matrix[i] = [i]; + matrix[i].length = limit; + } + + for (var _i = 0; _i < limit; _i++) { + matrix[0][_i] = _i; + } // Calculate matrix. + + + var j, a_index, b_index, cost, min, t; + + for (var _i2 = 1; _i2 <= aLength; ++_i2) { + a_index = strA[_i2 - 1]; -var _02Punctuation_1 = _02Punctuation.hasPost; -var _02Punctuation_2 = _02Punctuation.hasPre; -var _02Punctuation_3 = _02Punctuation.hasQuote; -var _02Punctuation_4 = _02Punctuation.hasQuotation; -var _02Punctuation_5 = _02Punctuation.hasComma; -var _02Punctuation_6 = _02Punctuation.hasPeriod; -var _02Punctuation_7 = _02Punctuation.hasExclamation; -var _02Punctuation_8 = _02Punctuation.hasQuestionMark; -var _02Punctuation_9 = _02Punctuation.hasEllipses; -var _02Punctuation_10 = _02Punctuation.hasSemicolon; -var _02Punctuation_11 = _02Punctuation.hasSlash; -var _02Punctuation_12 = _02Punctuation.hasHyphen; -var _02Punctuation_13 = _02Punctuation.hasDash; -var _02Punctuation_14 = _02Punctuation.hasContraction; -var _02Punctuation_15 = _02Punctuation.addPunctuation; //declare it up here + for (j = 1; j <= bLength; ++j) { + // Check the jagged distance total so far + if (_i2 === j && matrix[_i2][j] > 4) { + return aLength; + } + + b_index = strB[j - 1]; + cost = a_index === b_index ? 0 : 1; // Step 5 + // Calculate the minimum (much faster than Math.min(...)). + + min = matrix[_i2 - 1][j] + 1; // Deletion. + + if ((t = matrix[_i2][j - 1] + 1) < min) min = t; // Insertion. + + if ((t = matrix[_i2 - 1][j - 1] + cost) < min) min = t; // Substitution. + // Update matrix. + + var shouldUpdate = _i2 > 1 && j > 1 && a_index === strB[j - 2] && strA[_i2 - 2] === b_index && (t = matrix[_i2 - 2][j - 2] + cost) < min; + + if (shouldUpdate) { + matrix[_i2][j] = t; + } else { + matrix[_i2][j] = min; + } + } + } // return number of steps + + + return matrix[aLength][bLength]; +}; // score similarity by from 0-1 (steps/length) + + +var fuzzyMatch = function fuzzyMatch(strA, strB) { + var minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; + + if (strA === strB) { + return 1; + } //don't even bother on tiny strings + + + if (strA.length < minLength || strB.length < minLength) { + return 0; + } + + var steps = editDistance(strA, strB); + var length = Math.max(strA.length, strB.length); + var relative = length === 0 ? 0 : steps / length; + var similarity = 1 - relative; + return similarity; +}; + +var _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match var wrapMatch = function wrapMatch() {}; /** ignore optional/greedy logic, straight-up term match*/ @@ -605,6 +660,24 @@ var doesMatch = function doesMatch(t, reg, index, length) { if (reg.soft === true && reg.word === t.root) { return true; + } // support fuzzy match param + + + if (reg.fuzzy !== undefined) { + var score = _fuzzy(reg.word, t.reduced); + + if (score > reg.fuzzy) { + return true; + } // support fuzzy + soft match + + + if (reg.soft === true) { + score = _fuzzy(reg.word, t.root); + + if (score > reg.fuzzy) { + return true; + } + } } //match either .clean or .text @@ -631,9 +704,13 @@ var doesMatch = function doesMatch(t, reg, index, length) { } // support optimized (one|two) - if (reg.oneOf !== undefined) { - return reg.oneOf.hasOwnProperty(t.reduced) || reg.oneOf.hasOwnProperty(t.text); - } //support (one|two) + if (reg.fastOr !== undefined) { + if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) { + return true; + } + + return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text); + } //support slower (one|two) if (reg.choices !== undefined) { @@ -675,8 +752,8 @@ var doesMatch_1 = function doesMatch_1(reg, index, length) { /** does this term look like an acronym? */ -var isAcronym_1$1 = function isAcronym_1$1() { - return isAcronym_1(this.text); +var isAcronym_1 = function isAcronym_1() { + return isAcronym_1$1(this.text); }; /** is this term implied by a contraction? */ @@ -726,12 +803,12 @@ var setRoot = function setRoot(world) { var _03Misc = { doesMatch: doesMatch_1, - isAcronym: isAcronym_1$1, + isAcronym: isAcronym_1, isImplicit: isImplicit, isKnown: isKnown, setRoot: setRoot }; -var hasSpace = /[\s-]/; +var hasSpace$1 = /[\s-]/; var isUpperCase = /^[A-Z-]+$/; // const titleCase = str => { // return str.charAt(0).toUpperCase() + str.substr(1) // } @@ -792,7 +869,7 @@ var textOut = function textOut(options, showPre, showPost) { before = ''; after = ' '; - if ((hasSpace.test(this.post) === false || options.last) && !this.implicit) { + if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) { after = ''; } } @@ -884,7 +961,7 @@ var jsonDefault = { }; /** return various metadata for this term */ -var json = function json(options, world) { +var json$1 = function json(options, world) { options = options || {}; options = Object.assign({}, jsonDefault, options); var result = {}; // default on @@ -894,7 +971,7 @@ var json = function json(options, world) { } if (options.normal) { - result.normal = this.normal; + result.normal = this.clean; } if (options.tags) { @@ -926,10 +1003,10 @@ var json = function json(options, world) { return result; }; -var _05Json = { - json: json +var _05Json$1 = { + json: json$1 }; -var methods = Object.assign({}, _01Case, _02Punctuation, _03Misc, _04Text, _05Json); +var methods$8 = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1); function isClientSide() { return typeof window !== 'undefined' && window.document; @@ -983,19 +1060,19 @@ var logUntag = function logUntag(t, tag, reason) { console.log(log); }; -var isArray = function isArray(arr) { +var isArray$3 = function isArray(arr) { return Object.prototype.toString.call(arr) === '[object Array]'; }; -var titleCase = function titleCase(str) { +var titleCase$4 = function titleCase(str) { return str.charAt(0).toUpperCase() + str.substr(1); }; -var fns = { +var fns$1 = { logTag: logTag, logUntag: logUntag, - isArray: isArray, - titleCase: titleCase + isArray: isArray$3, + titleCase: titleCase$4 }; /** add a tag, and its descendents, to a term */ @@ -1010,7 +1087,7 @@ var addTag = function addTag(t, tag, reason, world) { tag = tag.replace(/^#/, ''); } - tag = fns.titleCase(tag); //if we already got this one + tag = fns$1.titleCase(tag); //if we already got this one if (t.tags[tag] === true) { return; @@ -1020,7 +1097,7 @@ var addTag = function addTag(t, tag, reason, world) { var isVerbose = world.isVerbose(); if (isVerbose === true) { - fns.logTag(t, tag, reason); + fns$1.logTag(t, tag, reason); } //add tag @@ -1033,7 +1110,7 @@ var addTag = function addTag(t, tag, reason, world) { t.tags[down] = true; if (isVerbose === true) { - fns.logTag(t, '→ ' + down); + fns$1.logTag(t, '→ ' + down); } }); //remove any contrary tags @@ -1055,14 +1132,26 @@ var addTags = function addTags(term, tags, reason, world) { }; var add = addTags; +var lowerCase = /^[a-z]/; + +var titleCase$3 = function titleCase(str) { + return str.charAt(0).toUpperCase() + str.substr(1); +}; /** remove this tag, and its descentents from the term */ -var unTag = function unTag(t, tag, reason, world) { + +var unTag$1 = function unTag(t, tag, reason, world) { var isVerbose = world.isVerbose(); //support '*' for removing all tags if (tag === '*') { t.tags = {}; return t; + } + + tag = tag.replace(/^#/, ''); + + if (lowerCase.test(tag) === true) { + tag = titleCase$3(tag); } // remove the tag @@ -1070,7 +1159,7 @@ var unTag = function unTag(t, tag, reason, world) { delete t.tags[tag]; //log in verbose-mode if (isVerbose === true) { - fns.logUntag(t, tag, reason); + fns$1.logUntag(t, tag, reason); } } //delete downstream tags too @@ -1085,7 +1174,7 @@ var unTag = function unTag(t, tag, reason, world) { delete t.tags[lineage[i]]; if (isVerbose === true) { - fns.logUntag(t, ' - ' + lineage[i]); + fns$1.logUntag(t, ' - ' + lineage[i]); } } } @@ -1098,18 +1187,18 @@ var unTag = function unTag(t, tag, reason, world) { var untagAll = function untagAll(term, tags, reason, world) { if (typeof tags !== 'string' && tags) { for (var i = 0; i < tags.length; i++) { - unTag(term, tags[i], reason, world); + unTag$1(term, tags[i], reason, world); } return; } - unTag(term, tags, reason, world); + unTag$1(term, tags, reason, world); }; -var unTag_1 = untagAll; +var unTag_1$1 = untagAll; -var canBe = function canBe(term, tag, world) { +var canBe$2 = function canBe(term, tag, world) { var tagset = world.tags; // cleanup tag if (tag[0] === '#') { @@ -1137,7 +1226,7 @@ var canBe = function canBe(term, tag, world) { return true; }; -var canBe_1 = canBe; +var canBe_1$1 = canBe$2; /** add a tag or tags, and their descendents to this term * @param {string | string[]} tags - a tag or tags * @param {string?} [reason] a clue for debugging @@ -1150,8 +1239,8 @@ var tag_1 = function tag_1(tags, reason, world) { /** only tag this term if it's consistent with it's current tags */ -var tagSafe = function tagSafe(tags, reason, world) { - if (canBe_1(this, tags, world)) { +var tagSafe$1 = function tagSafe(tags, reason, world) { + if (canBe_1$1(this, tags, world)) { add(this, tags, reason, world); } @@ -1163,8 +1252,8 @@ var tagSafe = function tagSafe(tags, reason, world) { */ -var unTag_1$1 = function unTag_1$1(tags, reason, world) { - unTag_1(this, tags, reason, world); +var unTag_1 = function unTag_1(tags, reason, world) { + unTag_1$1(this, tags, reason, world); return this; }; /** is this tag consistent with the word's current tags? @@ -1173,15 +1262,15 @@ var unTag_1$1 = function unTag_1$1(tags, reason, world) { */ -var canBe_1$1 = function canBe_1$1(tags, world) { - return canBe_1(this, tags, world); +var canBe_1 = function canBe_1(tags, world) { + return canBe_1$1(this, tags, world); }; -var tag = { +var tag$1 = { tag: tag_1, - tagSafe: tagSafe, - unTag: unTag_1$1, - canBe: canBe_1$1 + tagSafe: tagSafe$1, + unTag: unTag_1, + canBe: canBe_1 }; var Term = /*#__PURE__*/function () { @@ -1191,7 +1280,7 @@ var Term = /*#__PURE__*/function () { _classCallCheck(this, Term); text = String(text); - var obj = parse(text); // the various forms of our text + var obj = parse$2(text); // the various forms of our text this.text = obj.text || ''; this.clean = obj.clean; @@ -1217,7 +1306,7 @@ var Term = /*#__PURE__*/function () { _createClass(Term, [{ key: "set", value: function set(str) { - var obj = parse(str); + var obj = parse$2(str); this.text = obj.text; this.clean = obj.clean; return this; @@ -1233,14 +1322,18 @@ Term.prototype.clone = function () { var term = new Term(this.text); term.pre = this.pre; term.post = this.post; + term.clean = this.clean; + term.reduced = this.reduced; + term.root = this.root; + term.implicit = this.implicit; term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc) // term.id = this.id return term; }; -Object.assign(Term.prototype, methods); -Object.assign(Term.prototype, tag); +Object.assign(Term.prototype, methods$8); +Object.assign(Term.prototype, tag$1); var Term_1 = Term; /** return a flat array of Term objects */ @@ -1290,7 +1383,7 @@ var terms = function terms(n) { /** return a shallow or deep copy of this phrase */ -var clone = function clone(isShallow) { +var clone$1 = function clone(isShallow) { var _this = this; if (isShallow) { @@ -1303,7 +1396,8 @@ var clone = function clone(isShallow) { var terms = this.terms(); var newTerms = terms.map(function (t) { return t.clone(); - }); //connect these new ids up + }); // console.log(newTerms) + //connect these new ids up newTerms.forEach(function (t, i) { //add it to the pool.. @@ -1401,9 +1495,9 @@ var fullSentence = function fullSentence() { return this.buildFrom(start, len); }; -var _01Utils = { +var _01Utils$1 = { terms: terms, - clone: clone, + clone: clone$1, lastTerm: lastTerm, hasId: hasId, wordCount: wordCount, @@ -1416,7 +1510,7 @@ var trimEnd = function trimEnd(str) { /** produce output in the given format */ -var text = function text() { +var text$1 = function text() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var isFirst = arguments.length > 1 ? arguments[1] : undefined; var isLast = arguments.length > 2 ? arguments[2] : undefined; @@ -1440,19 +1534,27 @@ var text = function text() { punctuation: true, whitespace: true, unicode: true, - implicit: true + implicit: true, + normal: true }; } else if (options === 'reduced') { options = { + punctuation: false, + //Hmm: is this reversed? titlecase: false, lowercase: true, - punctuation: false, - //FIXME: reversed? whitespace: true, unicode: true, implicit: true, reduced: true }; + } else if (options === 'implicit') { + options = { + punctuation: true, + implicit: true, + whitespace: true, + trim: true + }; } else if (options === 'root') { options = { titlecase: false, @@ -1477,6 +1579,11 @@ var text = function text() { } var text = terms.reduce(function (str, t, i) { + // don't output intro space for a contraction-match i'm good => "[am] good" + if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) { + return str; + } + options.last = isLast && i === terms.length - 1; var showPre = true; var showPost = true; @@ -1493,7 +1600,8 @@ var text = function text() { } } - var txt = t.textOut(options, showPre, showPost); // if (options.titlecase && i === 0) { + var txt = t.textOut(options, showPre, showPost); // console.log(terms) + // if (options.titlecase && i === 0) { // txt = titleCase(txt) // } @@ -1512,7 +1620,7 @@ var text = function text() { }; var _02Text = { - text: text + text: text$1 }; /** remove start and end whitespace */ @@ -1546,7 +1654,7 @@ var combinePost = function combinePost(before, after) { }; //add whitespace to the start of the second bit -var addWhitespace = function addWhitespace(beforeTerms, newTerms) { +var addWhitespace$1 = function addWhitespace(beforeTerms, newTerms) { // add any existing pre-whitespace to beginning newTerms[0].pre = beforeTerms[0].pre; var lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms @@ -1562,7 +1670,7 @@ var addWhitespace = function addWhitespace(beforeTerms, newTerms) { }; //insert this segment into the linked-list -var stitchIn = function stitchIn(beforeTerms, newTerms, pool) { +var stitchIn$1 = function stitchIn(beforeTerms, newTerms, pool) { var lastBefore = beforeTerms[beforeTerms.length - 1]; var lastNew = newTerms[newTerms.length - 1]; var afterId = lastBefore.next; //connect ours in (main → newPhrase) @@ -1587,7 +1695,7 @@ var stitchIn = function stitchIn(beforeTerms, newTerms, pool) { }; // avoid stretching a phrase twice. -var unique = function unique(list) { +var unique$5 = function unique(list) { return list.filter(function (o, i) { return list.indexOf(o) === i; }); @@ -1598,9 +1706,9 @@ var appendPhrase = function appendPhrase(before, newPhrase, doc) { var beforeTerms = before.terms(); var newTerms = newPhrase.terms(); //spruce-up the whitespace issues - addWhitespace(beforeTerms, newTerms); //insert this segment into the linked-list + addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list - stitchIn(beforeTerms, newTerms, before.pool); // stretch! + stitchIn$1(beforeTerms, newTerms, before.pool); // stretch! // make each effected phrase longer var toStretch = [before]; @@ -1616,7 +1724,7 @@ var appendPhrase = function appendPhrase(before, newPhrase, doc) { toStretch = toStretch.concat(shouldChange); }); // don't double-count a phrase - toStretch = unique(toStretch); + toStretch = unique$5(toStretch); toStretch.forEach(function (p) { p.length += newPhrase.length; }); @@ -1625,15 +1733,15 @@ var appendPhrase = function appendPhrase(before, newPhrase, doc) { }; var append = appendPhrase; -var hasSpace$1 = / /; //a new space needs to be added, either on the new phrase, or the old one +var hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one // '[new] [◻old]' -or- '[old] [◻new] [old]' -var addWhitespace$1 = function addWhitespace(newTerms) { +var addWhitespace = function addWhitespace(newTerms) { //add a space before our new text? // add a space after our text var lastTerm = newTerms[newTerms.length - 1]; - if (hasSpace$1.test(lastTerm.post) === false) { + if (hasSpace.test(lastTerm.post) === false) { lastTerm.post += ' '; } @@ -1641,7 +1749,7 @@ var addWhitespace$1 = function addWhitespace(newTerms) { }; //insert this segment into the linked-list -var stitchIn$1 = function stitchIn(main, newPhrase, newTerms) { +var stitchIn = function stitchIn(main, newPhrase, newTerms) { // [newPhrase] → [main] var lastTerm = newTerms[newTerms.length - 1]; lastTerm.next = main.start; // [before] → [main] @@ -1661,7 +1769,7 @@ var stitchIn$1 = function stitchIn(main, newPhrase, newTerms) { main.terms(0).prev = lastTerm.id; }; -var unique$1 = function unique(list) { +var unique$4 = function unique(list) { return list.filter(function (o, i) { return list.indexOf(o) === i; }); @@ -1672,9 +1780,9 @@ var joinPhrase = function joinPhrase(original, newPhrase, doc) { var starterId = original.start; var newTerms = newPhrase.terms(); //spruce-up the whitespace issues - addWhitespace$1(newTerms); //insert this segment into the linked-list + addWhitespace(newTerms); //insert this segment into the linked-list - stitchIn$1(original, newPhrase, newTerms); //increase the length of our phrases + stitchIn(original, newPhrase, newTerms); //increase the length of our phrases var toStretch = [original]; var docs = [doc]; @@ -1687,7 +1795,7 @@ var joinPhrase = function joinPhrase(original, newPhrase, doc) { toStretch = toStretch.concat(shouldChange); }); // don't double-count - toStretch = unique$1(toStretch); // stretch these phrases + toStretch = unique$4(toStretch); // stretch these phrases toStretch.forEach(function (p) { p.length += newPhrase.length; // change the start too, if necessary @@ -1767,7 +1875,7 @@ var deletePhrase = function deletePhrase(phrase, doc) { }; -var _delete = deletePhrase; +var _delete$1 = deletePhrase; /** put this text at the end */ var append_1 = function append_1(newPhrase, doc) { @@ -1782,14 +1890,14 @@ var prepend_1 = function prepend_1(newPhrase, doc) { return this; }; -var delete_1 = function delete_1(doc) { - _delete(this, doc); +var _delete = function _delete(doc) { + _delete$1(this, doc); return this; }; // stich-in newPhrase, stretch 'doc' + parents -var replace = function replace(newPhrase, doc) { +var replace$1 = function replace(newPhrase, doc) { //add it do the end var firstLength = this.length; append(this, newPhrase, doc); //delete original terms @@ -1797,7 +1905,7 @@ var replace = function replace(newPhrase, doc) { var tmp = this.buildFrom(this.start, this.length); tmp.length = firstLength; - _delete(tmp, doc); + _delete$1(tmp, doc); }; /** * Turn this phrase object into 3 phrase objects @@ -1844,13 +1952,13 @@ var splitOn = function splitOn(p) { var _04Insert = { append: append_1, prepend: prepend_1, - "delete": delete_1, - replace: replace, + "delete": _delete, + replace: replace$1, splitOn: splitOn }; /** return json metadata for this phrase */ -var json$1 = function json() { +var json = function json() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var world = arguments.length > 1 ? arguments[1] : undefined; var res = {}; // text data @@ -1871,6 +1979,10 @@ var json$1 = function json() { res.reduced = this.text('reduced'); } + if (options.implicit) { + res.implicit = this.text('implicit'); + } + if (options.root) { res.root = this.text('root'); } @@ -1903,8 +2015,8 @@ var json$1 = function json() { return res; }; -var _05Json$1 = { - json: json$1 +var _05Json = { + json: json }; /** match any terms after this phrase */ @@ -1987,9 +2099,9 @@ var _06Lookahead = { lookAhead: lookAhead, lookBehind: lookBehind }; -var methods$1 = Object.assign({}, _01Utils, _02Text, _03Change, _04Insert, _05Json$1, _06Lookahead); // try to avoid doing the match +var methods$7 = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead); // try to avoid doing the match -var failFast = function failFast(p, regs) { +var failFast$1 = function failFast(p, regs) { if (regs.length === 0) { return true; } @@ -2013,207 +2125,399 @@ var failFast = function failFast(p, regs) { return false; }; -var _02FailFast = failFast; //found a match? it's greedy? keep going! +var _02FailFast = failFast$1; + +var _matchLogic = createCommonjsModule(function (module, exports) { + //found a match? it's greedy? keep going! + exports.getGreedy = function (state, endReg) { + // for greedy checking, we no longer care about the reg.start + // value, and leaving it can cause failures for anchored greedy + // matches. ditto for end-greedy matches: we need an earlier non- + // ending match to succceed until we get to the actual end. + var reg = Object.assign({}, state.regs[state.r], { + start: false, + end: false + }); + var start = state.t; + + for (; state.t < state.terms.length; state.t += 1) { + //stop for next-reg match + if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) { + return state.t; + } + + var count = state.t - start + 1; // is it max-length now? + + if (reg.max !== undefined && count === reg.max) { + return state.t; + } //stop here + -var getGreedy = function getGreedy(terms, t, reg, until, index, length) { - var start = t; + if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) { + // is it too short? + if (reg.min !== undefined && count < reg.min) { + return null; + } - for (; t < terms.length; t += 1) { - //stop for next-reg match - if (until && terms[t].doesMatch(until, index + t, length)) { - return t; + return state.t; + } } - var count = t - start + 1; // is it max-length now? + return state.t; + }; //'unspecific greedy' is a weird situation. - if (reg.max !== undefined && count === reg.max) { - return t; - } //stop here + exports.greedyTo = function (state, nextReg) { + var t = state.t; //if there's no next one, just go off the end! - if (terms[t].doesMatch(reg, index + t, length) === false) { - // is it too short? - if (reg.min !== undefined && count < reg.min) { - return null; + if (!nextReg) { + return state.terms.length; + } //otherwise, we're looking for the next one + + + for (; t < state.terms.length; t += 1) { + if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) { + return t; } + } //guess it doesn't exist, then. + + + return null; + }; //we have a special case where an end-anchored greedy match may need to + //start matching before the actual end; we do this by (temporarily!) + //removing the "end" property from the matching token... since this is + //very situation-specific, we *only* do this when we really need to. + + + exports.isEndGreedy = function (reg, state) { + if (reg.end === true && reg.greedy === true) { + if (state.start_i + state.t < state.phrase_length - 1) { + var tmpReg = Object.assign({}, reg, { + end: false + }); - return t; + if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) { + return true; + } + } } - } - return t; -}; //'unspecific greedy' is a weird situation. + return false; + }; // match complex OR cases like (a|b|foo bar) + + + exports.doOrBlock = function (state) { + var skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var block = state.regs[state.r]; + var wasFound = false; // do each multiword sequence + + for (var c = 0; c < block.choices.length; c += 1) { + // try to match this list of tokens + var regs = block.choices[c]; + wasFound = regs.every(function (cr, w_index) { + var extra = 0; + var t = state.t + w_index + skipN + extra; + + if (state.terms[t] === undefined) { + return false; + } + var foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)' + + if (foundBlock === true && cr.greedy === true) { + for (var i = 1; i < state.terms.length; i += 1) { + var term = state.terms[t + i]; + + if (term) { + var keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length); + + if (keepGoing === true) { + extra += 1; + } else { + break; + } + } + } + } + + skipN += extra; + return foundBlock; + }); -var greedyTo = function greedyTo(terms, t, nextReg, index, length) { - //if there's no next one, just go off the end! - if (!nextReg) { - return terms.length; - } //otherwise, we're looking for the next one + if (wasFound) { + skipN += regs.length; + break; + } + } // we found a match - is it greedy though? - for (; t < terms.length; t += 1) { - if (terms[t].doesMatch(nextReg, index + t, length) === true) { - return t; + if (wasFound && block.greedy === true) { + return exports.doOrBlock(state, skipN); // try it again! } - } //guess it doesn't exist, then. + return skipN; + }; // match AND cases like (#Noun && foo) - return null; -}; // get or create named group + exports.doAndBlock = function (state) { + var longest = 0; // all blocks must match, and we return the greediest match -var getOrCreateGroup = function getOrCreateGroup(namedGroups, namedGroupId, terms, startIndex, group) { - var g = namedGroups[namedGroupId]; + var reg = state.regs[state.r]; + var allDidMatch = reg.choices.every(function (block) { + // for multi-word blocks, all must match + var allWords = block.every(function (cr, w_index) { + var tryTerm = state.t + w_index; - if (g) { - return g; - } + if (state.terms[tryTerm] === undefined) { + return false; + } - var id = terms[startIndex].id; - namedGroups[namedGroupId] = { - group: String(group), - start: id, - length: 0 - }; - return namedGroups[namedGroupId]; -}; -/** tries to match a sequence of terms, starting from here */ + return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length); + }); + + if (allWords === true && block.length > longest) { + longest = block.length; + } + + return allWords; + }); + + if (allDidMatch === true) { + return longest; + } + return false; + }; // get or create named group -var tryHere = function tryHere(terms, regs, index, length) { - var namedGroups = {}; - var previousGroupId = null; - var t = 0; // we must satisfy each rule in 'regs' - for (var r = 0; r < regs.length; r += 1) { - var reg = regs[r]; // Check if this reg has a named capture group + exports.getGroup = function (state, term_index, name) { + if (state.groups[state.groupId]) { + return state.groups[state.groupId]; + } - var isNamedGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; - var namedGroupId = null; // Reuse previous capture group if same + var termId = state.terms[term_index].id; + state.groups[state.groupId] = { + group: String(name), + start: termId, + length: 0 + }; + return state.groups[state.groupId]; + }; +}); +/** tries to match a sequence of terms, starting from here */ - if (isNamedGroup) { - var prev = regs[r - 1]; - if (prev && prev.named === reg.named && previousGroupId) { - namedGroupId = previousGroupId; +var tryHere = function tryHere(terms, regs, start_i, phrase_length) { + // all the variables that matter + var state = { + t: 0, + //the term index we're on + terms: terms, + //the working slice of term objects + r: 0, + // the reg index we're on + regs: regs, + //our match conditions + groups: {}, + //all named-group matches + start_i: start_i, + // term index we're starting from + phrase_length: phrase_length, + // # of terms in the sentence + hasGroup: false, + groupId: null, + previousGroup: null + }; // we must satisfy each rule in 'regs' + + for (; state.r < regs.length; state.r += 1) { + var reg = regs[state.r]; // Check if this reg has a named capture group + + state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same + + if (state.hasGroup === true) { + var prev = regs[state.r - 1]; + + if (prev && prev.named === reg.named && state.previousGroup) { + state.groupId = state.previousGroup; } else { - namedGroupId = _id(reg.named); - previousGroupId = namedGroupId; + state.groupId = _id(reg.named); + state.previousGroup = state.groupId; } - } //should we fail here? + } //have we run-out of terms? - if (!terms[t]) { - //are all remaining regs optional? - var hasNeeds = regs.slice(r).some(function (remain) { + if (!state.terms[state.t]) { + //are all remaining regs optional or negative? + var haveNeeds = regs.slice(state.r).some(function (remain) { return !remain.optional; }); - if (hasNeeds === false) { - break; - } // have unmet needs - + if (haveNeeds === false) { + break; //done! + } - return [false, null]; + return null; // die } //support 'unspecific greedy' .* properly if (reg.anything === true && reg.greedy === true) { - var skipto = greedyTo(terms, t, regs[r + 1], reg, index); // ensure it's long enough + var skipto = _matchLogic.greedyTo(state, regs[state.r + 1]); // ensure it's long enough + - if (reg.min !== undefined && skipto - t < reg.min) { - return [false, null]; + if (reg.min !== undefined && skipto - state.t < reg.min) { + return null; } // reduce it back, if it's too long - if (reg.max !== undefined && skipto - t > reg.max) { - t = t + reg.max; + if (reg.max !== undefined && skipto - state.t > reg.max) { + state.t = state.t + reg.max; continue; } if (skipto === null) { - return [false, null]; //couldn't find it + return null; //couldn't find it } // is it really this easy?.... - if (isNamedGroup) { - var g = getOrCreateGroup(namedGroups, namedGroupId, terms, t, reg.named); // Update group + if (state.hasGroup === true) { + var g = _matchLogic.getGroup(state, state.t, reg.named); - g.length = skipto - t; + g.length = skipto - state.t; } - t = skipto; + state.t = skipto; continue; - } //if it looks like a match, continue - //we have a special case where an end-anchored greedy match may need to - //start matching before the actual end; we do this by (temporarily!) - //removing the "end" property from the matching token... since this is - //very situation-specific, we *only* do this when we really need to. + } // support multi-word OR (a|b|foo bar) - if (reg.anything === true || reg.end === true && reg.greedy === true && index + t < length - 1 && terms[t].doesMatch(Object.assign({}, reg, { - end: false - }), index + t, length) === true || terms[t].doesMatch(reg, index + t, length) === true) { - var startAt = t; // okay, it was a match, but if it optional too, + if (reg.choices !== undefined && reg.operator === 'or') { + var skipNum = _matchLogic.doOrBlock(state); + + if (skipNum) { + // handle 'not' logic + if (reg.negative === true) { + return null; // die + } + + if (state.hasGroup === true) { + var _g = _matchLogic.getGroup(state, state.t, reg.named); + + _g.length += skipNum; + } + + state.t += skipNum; + continue; + } else if (!reg.optional) { + return null; //die + } + } // support AND (#Noun && foo) blocks + + + if (reg.choices !== undefined && reg.operator === 'and') { + var _skipNum = _matchLogic.doAndBlock(state); + + if (_skipNum) { + // handle 'not' logic + if (reg.negative === true) { + return null; // die + } + + if (state.hasGroup === true) { + var _g2 = _matchLogic.getGroup(state, state.t, reg.named); + + _g2.length += _skipNum; + } + + state.t += _skipNum; + continue; + } else if (!reg.optional) { + return null; //die + } + } // ok, finally test the term/reg + + + var term = state.terms[state.t]; + var doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length); + + if (reg.anything === true || doesMatch === true || _matchLogic.isEndGreedy(reg, state)) { + var startAt = state.t; // if it's a negative optional match... :0 + + if (reg.optional && regs[state.r + 1] && reg.negative) { + continue; + } // okay, it was a match, but if it's optional too, // we should check the next reg too, to skip it? - if (reg.optional && regs[r + 1]) { + + if (reg.optional && regs[state.r + 1]) { // does the next reg match it too? - if (terms[t].doesMatch(regs[r + 1], index + t, length) === true) { + var nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length); + + if (reg.negative || nextRegMatched) { // but does the next reg match the next term?? // only skip if it doesn't - if (!terms[t + 1] || terms[t + 1].doesMatch(regs[r + 1], index + t, length) === false) { - r += 1; + var nextTerm = state.terms[state.t + 1]; + + if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) { + state.r += 1; } } } //advance to the next term! - t += 1; //check any ending '$' flags + state.t += 1; //check any ending '$' flags if (reg.end === true) { //if this isn't the last term, refuse the match - if (t !== terms.length && reg.greedy !== true) { - return [false, null]; + if (state.t !== state.terms.length && reg.greedy !== true) { + return null; //die } } //try keep it going! if (reg.greedy === true) { - // for greedy checking, we no longer care about the reg.start - // value, and leaving it can cause failures for anchored greedy - // matches. ditto for end-greedy matches: we need an earlier non- - // ending match to succceed until we get to the actual end. - t = getGreedy(terms, t, Object.assign({}, reg, { - start: false, - end: false - }), regs[r + 1], index, length); + state.t = _matchLogic.getGreedy(state, regs[state.r + 1]); + + if (state.t === null) { + return null; //greedy was too short + } - if (t === null) { - return [false, null]; //greedy was too short + if (reg.min && reg.min > state.t) { + return null; //greedy was too short } // if this was also an end-anchor match, check to see we really // reached the end - if (reg.end === true && index + t !== length) { - return [false, null]; //greedy didn't reach the end + if (reg.end === true && state.start_i + state.t !== phrase_length) { + return null; //greedy didn't reach the end } } - if (isNamedGroup) { + if (state.hasGroup === true) { // Get or create capture group - var _g = getOrCreateGroup(namedGroups, namedGroupId, terms, startAt, reg.named); // Update group - add greedy or increment length + var _g3 = _matchLogic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length - if (t > 1 && reg.greedy) { - _g.length += t - startAt; + if (state.t > 1 && reg.greedy) { + _g3.length += state.t - startAt; } else { - _g.length++; + _g3.length++; } } continue; + } // ok, it doesn't match. + // did it *actually match* a negative? + + + if (reg.negative) { + var tmpReg = Object.assign({}, reg); + tmpReg.negative = false; // try removing it + + var foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length); + + if (foundNeg === true) { + return null; //bye! + } } //bah, who cares, keep going @@ -2222,25 +2526,32 @@ var tryHere = function tryHere(terms, regs, index, length) { } // should we skip-over an implicit word? - if (terms[t].isImplicit() && regs[r - 1] && terms[t + 1]) { - // does the next one match? - if (terms[t + 1].doesMatch(reg, index + t, length)) { - t += 2; + if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) { + // if the last match was implicit too, we're missing a word. + if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) { + return null; + } // does the next one match? + + + if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) { + state.t += 2; continue; } - } // console.log(' ❌\n\n') - + } - return [false, null]; + return null; //die } //return our result - return [terms.slice(0, t), namedGroups]; + return { + match: state.terms.slice(0, state.t), + groups: state.groups + }; }; -var _03TryMatch = tryHere; +var _03TryMatch = tryHere; // final checks on the validity of our results -var postProcess = function postProcess(terms, regs, matches) { +var postProcess$1 = function postProcess(terms, regs, matches) { if (!matches || matches.length === 0) { return matches; } // ensure end reg has the end term @@ -2261,19 +2572,80 @@ var postProcess = function postProcess(terms, regs, matches) { return matches; }; -var _04PostProcess = postProcess; -/* break-down a match expression into this: -{ - word:'', - tag:'', - regex:'', +var _04PostProcess = postProcess$1; // supported suffix-flags: +// suffixes: ? ] + * $ {2,6} ~ +// [\?\]\+\*\$~]* +// prefixes: ! [ ^ +// [\!\[\^]* +// match 'foo /yes/' and not 'foo/no/bar' - start:false, - end:false, - negative:false, - anything:false, - greedy:false, - optional:false, +var bySlashes = /(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/; // match '(yes) but not foo(no)bar' + +var byParentheses = /([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/; // okay + +var byWord = / /g; + +var isBlock = function isBlock(str) { + return /^[\!\[\^]*(<[^<]*>)?\(/.test(str) && /\)[\?\]\+\*\$~]*$/.test(str); +}; + +var isReg = function isReg(str) { + return /^[\!\[\^]*(<[^<]*>)?\//.test(str) && /\/[\?\]\+\*\$~]*$/.test(str); +}; + +var cleanUp$1 = function cleanUp(arr) { + arr = arr.map(function (str) { + return str.trim(); + }); + arr = arr.filter(function (str) { + return str; + }); + return arr; +}; + +var parseBlocks = function parseBlocks(txt) { + // parse by /regex/ first + var arr = txt.split(bySlashes); + var res = []; // parse by (blocks), next + + arr.forEach(function (str) { + if (isReg(str)) { + res.push(str); + return; + } + + res = res.concat(str.split(byParentheses)); + }); + res = cleanUp$1(res); // split by spaces, now + + var _final = []; + res.forEach(function (str) { + if (isBlock(str)) { + _final.push(str); + } else if (isReg(str)) { + _final.push(str); + } else { + _final = _final.concat(str.split(byWord)); + } + }); + _final = cleanUp$1(_final); + return _final; +}; + +var _01ParseBlocks = parseBlocks; // console.log('(one two) (upto) [#Date+]'.split(byParentheses)) + +/* break-down a match expression into this: +{ + word:'', + tag:'', + regex:'', + + start:false, + end:false, + negative:false, + anything:false, + greedy:false, + optional:false, named:'', choices:[], @@ -2282,9 +2654,9 @@ var _04PostProcess = postProcess; var hasMinMax = /\{([0-9]+,?[0-9]*)\}/; var andSign = /&&/; -var captureName = new RegExp(/^<(\S+)>/); +var captureName = new RegExp(/^<\s*?(\S+)\s*?>/); -var titleCase$1 = function titleCase(str) { +var titleCase$2 = function titleCase(str) { return str.charAt(0).toUpperCase() + str.substr(1); }; @@ -2367,7 +2739,8 @@ var parseToken = function parseToken(w) { } if (start(w) === '!') { - obj.negative = true; + obj.negative = true; // obj.optional = true + w = stripStart(w); } //wrapped-flags @@ -2394,7 +2767,9 @@ var parseToken = function parseToken(w) { return s; }); //recursion alert! - obj.choices = obj.choices.map(parseToken); + obj.choices = obj.choices.map(function (str) { + return str.split(/ /g).map(parseToken); + }); w = ''; } //regex @@ -2413,7 +2788,7 @@ var parseToken = function parseToken(w) { obj.word = w; return obj; } - } // support #Tag{0,9} + } // support #Tag{1,9} if (hasMinMax.test(w) === true) { @@ -2429,9 +2804,12 @@ var parseToken = function parseToken(w) { // '{3,}' Three or more times obj.min = Number(arr[0]); obj.max = Number(arr[1] || 999); - } + } // use same method as '+' - obj.greedy = true; + + obj.greedy = true; // 0 as min means the same as '?' + + obj.optional = true; return ''; }); } //do the actual token content @@ -2439,7 +2817,7 @@ var parseToken = function parseToken(w) { if (start(w) === '#') { obj.tag = stripStart(w); - obj.tag = titleCase$1(obj.tag); + obj.tag = titleCase$2(obj.tag); return obj; } //dynamic function on a term object @@ -2472,32 +2850,28 @@ var parseToken = function parseToken(w) { return obj; }; -var parseToken_1 = parseToken; - -var isNamed = function isNamed(capture) { - return typeof capture === 'string' || typeof capture === 'number'; -}; +var _02ParseToken = parseToken; // name any [unnamed] capture-groups with a number -var fillGroups = function fillGroups(tokens) { +var nameGroups = function nameGroups(tokens) { var convert = false; var index = -1; var current; //'fill in' capture groups between start-end for (var i = 0; i < tokens.length; i++) { - var n = tokens[i]; // Give name to un-named single tokens + var token = tokens[i]; // Give name to un-named single tokens - if (n.groupType === 'single' && n.named === true) { + if (token.groupType === 'single' && token.named === true) { index += 1; - n.named = index; + token.named = index; continue; } // Start converting tokens - if (n.groupType === 'start') { + if (token.groupType === 'start') { convert = true; - if (isNamed(n.named)) { - current = n.named; + if (typeof token.named === 'string' || typeof token.named === 'number') { + current = token.named; } else { index += 1; current = index; @@ -2506,137 +2880,190 @@ var fillGroups = function fillGroups(tokens) { if (convert) { - n.named = current; + token.named = current; } // Stop converting tokens - if (n.groupType === 'end') { + if (token.groupType === 'end') { convert = false; } } return tokens; -}; +}; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word -var useOneOf = function useOneOf(tokens) { + +var doFastOrMode = function doFastOrMode(tokens) { return tokens.map(function (token) { if (token.choices !== undefined) { - // are they all straight non-optional words? - var shouldPack = token.choices.every(function (c) { - return c.optional !== true && c.negative !== true && c.word !== undefined; + // are they all straight-up words? then optimize them. + var shouldPack = token.choices.every(function (block) { + if (block.length !== 1) { + return false; + } + + var reg = block[0]; + + if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) { + return true; //reg is simple-enough + } + + return false; }); if (shouldPack === true) { var oneOf = {}; - token.choices.forEach(function (c) { - return oneOf[c.word] = true; + token.choices.forEach(function (block) { + oneOf[block[0].word] = true; }); - token.oneOf = oneOf; + token.fastOr = oneOf; delete token.choices; } } return token; }); -}; +}; // allow multiword OR (foo|one two) +// const doMultiWord = function (tokens) { +// return tokens.map(token => { +// if (token.choices !== undefined) { +// let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false +// if (isMulti !== false) { +// token.multiword = true +// // turn all choices into arrays +// token.choices = token.choices.map(choice => { +// if (choice.word) { +// choice.sequence = choice.word.split(hasASpace) +// delete choice.word +// } +// return choice +// }) +// } +// } +// return token +// }) +// } +// const doBlockMode = function (tokens) { +// return tokens.map(token => { +// // we've already setup fastOr mode +// if (token.choices !== undefined) { +// // console.log(token) +// } +// return token +// }) +// } + -var postProcess$1 = function postProcess(tokens) { - // ensure all capture groups are filled between start and end +var postProcess = function postProcess(tokens) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // ensure all capture groups are filled between start and end // give all capture groups names + var count = tokens.filter(function (t) { return t.groupType; }).length; if (count > 0) { - tokens = fillGroups(tokens); - } // convert 'choices' format to 'oneOf' format + tokens = nameGroups(tokens); + } // convert 'choices' format to 'fastOr' format + + if (!opts.fuzzy) { + tokens = doFastOrMode(tokens); + } // support multiword OR (foo bar|baz) + // tokens = doMultiWord(tokens) + // support (one two three) + // tokens = doBlockMode(tokens) - tokens = useOneOf(tokens); // console.log(tokens) return tokens; }; -var postProcess_1 = postProcess$1; +var _03PostProcess = postProcess; -var isArray$1 = function isArray(arr) { +var isArray$2 = function isArray(arr) { return Object.prototype.toString.call(arr) === '[object Array]'; -}; //split-up by (these things) - - -var byParentheses = function byParentheses(str) { - var arr = str.split(/([\^\[\!]*(?:<\S+>)?\(.*?\)[?+*]*\]?\$?)/); - arr = arr.map(function (s) { - return s.trim(); - }); - return arr; -}; - -var byWords = function byWords(arr) { - var words = []; - arr.forEach(function (a) { - //keep brackets lumped together - if (/^[[^_/]?\(/.test(a[0])) { - words.push(a); - return; - } - - var list = a.split(' '); - list = list.filter(function (w) { - return w; - }); - words = words.concat(list); - }); - return words; }; //turn an array into a 'choices' list var byArray = function byArray(arr) { + var blocks = arr.map(function (s) { + return [{ + word: s + }]; + }); return [{ - choices: arr.map(function (s) { - return { - word: s - }; - }) + choices: blocks, + operator: 'or' }]; -}; +}; // turn a Doc object into a reg of ids to lookup + var fromDoc = function fromDoc(doc) { if (!doc || !doc.list || !doc.list[0]) { return []; } - var ids = []; + var regs = []; doc.list.forEach(function (p) { + var ids = []; p.terms().forEach(function (t) { - ids.push({ - id: t.id - }); + ids.push(t.id); }); + regs.push(ids); }); return [{ - choices: ids, - greedy: true + idBlocks: regs }]; +}; // add fuzziness etc to each reg + + +var addOptions = function addOptions(tokens, opts) { + // add default fuzzy-search limit + if (opts.fuzzy === true) { + opts.fuzzy = 0.85; + } + + if (typeof opts.fuzzy === 'number') { + tokens = tokens.map(function (reg) { + // add a fuzzy-match on 'word' tokens + if (opts.fuzzy > 0 && reg.word) { + reg.fuzzy = opts.fuzzy; + } //add it to or|and choices too + + + if (reg.choices) { + reg.choices.forEach(function (block) { + block.forEach(function (r) { + r.fuzzy = opts.fuzzy; + }); + }); + } + + return reg; + }); + } + + return tokens; }; /** parse a match-syntax string into json */ var syntax = function syntax(input) { - // fail-fast + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // fail-fast + if (input === null || input === undefined || input === '') { return []; } //try to support a ton of different formats: - if (_typeof$1(input) === 'object') { - if (isArray$1(input)) { + if (_typeof(input) === 'object') { + if (isArray$2(input)) { if (input.length === 0 || !input[0]) { return []; } //is it a pre-parsed reg-list? - if (_typeof$1(input[0]) === 'object') { + if (_typeof(input[0]) === 'object') { return input; } //support a flat array of normalized words @@ -2658,23 +3085,66 @@ var syntax = function syntax(input) { input = String(input); //go for it? } - var tokens = byParentheses(input); - tokens = byWords(tokens); - tokens = tokens.map(parseToken_1); //clean up anything weird + var tokens = _01ParseBlocks(input); //turn them into objects + - tokens = postProcess_1(tokens); // console.log(JSON.stringify(tokens, null, 2)) + tokens = tokens.map(function (str) { + return _02ParseToken(str); + }); //clean up anything weird + + tokens = _03PostProcess(tokens, opts); // add fuzzy limits, etc + + tokens = addOptions(tokens, opts); // console.log(tokens) return tokens; }; -var syntax_1 = syntax; +var matchSyntax = syntax; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)')) +// match an explicit sequence of term ids +// take a phrase and find any of the idBlocks in it + +var idLookup = function idLookup(terms, regs) { + var matches = []; + var blocklist = regs[0].idBlocks; + + var _loop = function _loop(_t) { + blocklist.forEach(function (block) { + if (block.length === 0) { + t = _t; + return; + } + + var foundAll = block.every(function (id, i) { + t = _t; + return terms[_t + i].id === id; + }); + + if (foundAll) { + matches.push({ + match: terms.slice(_t, _t + block.length) + }); // skip top-loop forward + + _t += block.length - 1; + } + }); + t = _t; + }; + + for (var t = 0; t < terms.length; t += 1) { + _loop(t); + } + + return matches; +}; + +var idLookup_1 = idLookup; /** returns a simple array of arrays */ var matchAll = function matchAll(p, regs) { var matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; //if we forgot to parse it.. if (typeof regs === 'string') { - regs = syntax_1(regs); + regs = matchSyntax(regs); } //try to dismiss it, at-once @@ -2684,25 +3154,28 @@ var matchAll = function matchAll(p, regs) { var minLength = regs.filter(function (r) { - return r.optional !== true; + return r.optional !== true && r.negative !== true; }).length; var terms = p.terms(); - var matches = []; //optimisation for '^' start logic + var matches = []; // these id-lookups can be super-fast + + if (regs[0].idBlocks) { + var res = idLookup_1(terms, regs); + + if (res && res.length > 0) { + return _04PostProcess(terms, regs, res); + } + } //optimisation for '^' start logic + if (regs[0].start === true) { - var _tryMatch = _03TryMatch(terms, regs, 0, terms.length), - _tryMatch2 = _slicedToArray(_tryMatch, 2), - match = _tryMatch2[0], - groups = _tryMatch2[1]; + var _res = _03TryMatch(terms, regs, 0, terms.length); - if (match !== false && match.length > 0) { - match = match.filter(function (m) { + if (_res && _res.match && _res.match.length > 0) { + _res.match = _res.match.filter(function (m) { return m; }); - matches.push({ - match: match, - groups: groups - }); + matches.push(_res); } return _04PostProcess(terms, regs, matches); @@ -2716,22 +3189,16 @@ var matchAll = function matchAll(p, regs) { } //try it! - var _tryMatch3 = _03TryMatch(terms.slice(i), regs, i, terms.length), - _tryMatch4 = _slicedToArray(_tryMatch3, 2), - _match = _tryMatch4[0], - _groups = _tryMatch4[1]; + var _res2 = _03TryMatch(terms.slice(i), regs, i, terms.length); - if (_match !== false && _match.length > 0) { + if (_res2 && _res2.match && _res2.match.length > 0) { //zoom forward! - i += _match.length - 1; //[capture-groups] return some null responses + i += _res2.match.length - 1; //[capture-groups] return some null responses - _match = _match.filter(function (m) { + _res2.match = _res2.match.filter(function (m) { return m; }); - matches.push({ - match: _match, - groups: _groups - }); //ok, maybe that's enough? + matches.push(_res2); //ok, maybe that's enough? if (matchOne === true) { return _04PostProcess(terms, regs, matches); @@ -2782,7 +3249,7 @@ var notMatch = function notMatch(p, regs) { return result; }; -var not = notMatch; +var not$1 = notMatch; /** return an array of matching phrases */ var match_1 = function match_1(regs) { @@ -2815,10 +3282,10 @@ var has = function has(regs) { /** remove all matches from the result */ -var not$1 = function not$1(regs) { +var not = function not(regs) { var _this2 = this; - var matches = not(this, regs); //make them phrase objects + var matches = not$1(this, regs); //make them phrase objects matches = matches.map(function (list) { return _this2.buildFrom(list[0].id, list.length); @@ -2862,7 +3329,7 @@ var canBe$1 = function canBe(tag, world) { var match = { match: match_1, has: has, - not: not$1, + not: not, canBe: canBe$1 }; @@ -2906,13 +3373,13 @@ Phrase.prototype.buildFrom = function (id, length, groups) { Object.assign(Phrase.prototype, match); -Object.assign(Phrase.prototype, methods$1); //apply aliases +Object.assign(Phrase.prototype, methods$7); //apply aliases -var aliases = { +var aliases$1 = { term: 'terms' }; -Object.keys(aliases).forEach(function (k) { - return Phrase.prototype[k] = Phrase.prototype[aliases[k]]; +Object.keys(aliases$1).forEach(function (k) { + return Phrase.prototype[k] = Phrase.prototype[aliases$1[k]]; }); var Phrase_1 = Phrase; /** a key-value store of all terms in our Document */ @@ -3018,7 +3485,7 @@ var isAcronym$1 = /[ .][A-Z]\.? *$/i; var hasEllipse = /(?:\u2026|\.{2,}) *$/; var newLine = /((?:\r?\n|\r)+)/; // Match different new-line formats -var hasLetter = /[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i; +var hasLetter = /[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i; var startWhitespace = /^\s+/; // Start with a regex: var naiive_split = function naiive_split(text) { @@ -3081,8 +3548,10 @@ var splitSentences = function splitSentences(text, world) { if (!text || typeof text !== 'string' || hasSomething.test(text) === false) { return sentences; - } // Start somewhere: + } // cleanup unicode-spaces + + text = text.replace('\xa0', ' '); // Start somewhere: var splits = naiive_split(text); // Filter-out the crap ones @@ -3149,31 +3618,31 @@ var _01Sentences = splitSentences; // console.log(sentence_parser('john f. kenne var wordlike = /\S/; var isBoundary = /^[!?.]+$/; var naiiveSplit = /(\S+)/; -var isSlash = /\/\W*$/; -var notWord = { - '.': true, - '-': true, - //dash - '–': true, - //en-dash - '—': true, - //em-dash - '--': true, - '...': true // '/': true, // 'one / two' - -}; +var isSlash = /[a-z] ?\/ ?[a-z]*$/; +var notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '"', "'", '`']; +notWord = notWord.reduce(function (h, c) { + h[c] = true; + return h; +}, {}); var hasHyphen = function hasHyphen(str) { //dont split 're-do' if (/^(re|un)-?[^aeiou]./.test(str) === true) { return false; - } //letter-number + } //letter-number 'aug-20' var reg = /^([a-z\u00C0-\u00FF`"'/]+)(-|–|—)([a-z0-9\u00C0-\u00FF].*)/i; if (reg.test(str) === true) { return true; + } //number-letter '20-aug' + + + var reg2 = /^([0-9]{1,4})(-|–|—)([a-z\u00C0-\u00FF`"'/-]+$)/i; + + if (reg2.test(str) === true) { + return true; } //support weird number-emdash combo '2010–2011' // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i // if (reg2.test(str)) { @@ -3217,6 +3686,10 @@ var splitHyphens = function splitHyphens(word) { } return arr; +}; + +var isArray$1 = function isArray(arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; }; //turn a string into an array of strings (naiive for now, lumped later) @@ -3230,6 +3703,10 @@ var splitWords = function splitWords(str) { str = String(str); } + if (isArray$1(str)) { + return str; + } + var words = str.split(naiiveSplit); for (var i = 0; i < words.length; i++) { @@ -3283,22 +3760,29 @@ var splitWords = function splitWords(str) { }; var _02Words = splitWords; + +var isArray = function isArray(arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; +}; /** turn a string into an array of Phrase objects */ + var fromText = function fromText() { var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var world = arguments.length > 1 ? arguments[1] : undefined; - var pool = arguments.length > 2 ? arguments[2] : undefined; //a bit of validation, first + var pool = arguments.length > 2 ? arguments[2] : undefined; + var sentences = null; //a bit of validation, first if (typeof text !== 'string') { if (typeof text === 'number') { text = String(text); + } else if (isArray(text)) { + sentences = text; } } //tokenize into words - var sentences = _01Sentences(text, world); - + sentences = sentences || _01Sentences(text, world); sentences = sentences.map(function (str) { return _02Words(str); }); //turn them into proper objects @@ -3364,61 +3848,9 @@ var fromJSON = function fromJSON(json, world) { }; var fromJSON_1 = fromJSON; -var _version = '13.1.1'; -var _data = { - "Comparative": "true¦better", - "Superlative": "true¦earlier", - "PresentTense": "true¦is,sounds", - "Value": "true¦a few", - "Noun": "true¦a8b7c5e3f2here,ie,lit,m1no doubt,p0tce,vs;d,l;a,d;t,y;g,sp,tc,x0;!p;a,ca,o0;l,rp;a,c,l;d,l,rc", - "Copula": "true¦a1is,w0;as,ere;m,re", - "PastTense": "true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan", - "Condition": "true¦if,unless", - "Gerund": "true¦accord0be0develop0go0result0stain0;ing", - "Negative": "true¦n0;ever,o0;!n,t", - "QuestionWord": "true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s", - "Plural": "true¦records", - "Conjunction": "true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh", - "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", - "Singular": "true¦0:0X;1:10;a0Wb0Kc0Bd04e02fXgShOici1jel0kitty,lNmJnIoHpDquestion mark,rBs7t4u2womW;nc0Rs 2;doll0Dst0F; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;ist0Pky,omeone,t2uper bowl,yst0W;ep3ri1u2;de0Pff;faMmoM;al0i1o2;om,se;a4i0Jl05r3u2;dLrpoD;erogaVobl0O;rt,te0I;bjSceGthers;othi1umb0E;a4ee04o2;del,m2nopo0th0C;!my;n,yf0;i0unch;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em", - "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;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", - "Honorific": "true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;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", - "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", - "Uncountable": "true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics", - "Infinitive": "true¦0:6K;1:6Y;2:57;3:6V;4:6W;5:5Z;6:67;7:6Q;8:6I;9:6U;A:6P;B:6S;C:6D;D:6Z;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tCve;n,raD;d0t;aIiGo9;eGsA;!w;l6Cry;nHpGr3se;gra4Mli3Z;dGi9lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi7;ne,rn;aGe0Mi5Nu7y;de,in,nsf0p,v5F;r2XuC;ank,reat2N;nd,st;lk,rg1Ps9;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitC;bmAck,ff0gge7ppHrGspe5;ge,pri1rou4Vvi4;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi4;ngth2Dss,tC;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arCem,le5n1r4tt6;aHo2rG;atCew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi7oItG;!o2rG;i5uc1Y;l4rt;mb6nt,r4;e7i2;air,eHlGo3ZreseD;a8y;at;aEemb0i3Vo4;aHeGi4y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei4k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiDoG;cGdu8greBhibAmi1te7vi2T;eBlaim;di5pa2ss,veD;iDp,rtr3ZsGur;e,t;aHuG;g,n3;n,y;ck,le;fo30mAsi7;ck,iDrt4Fss,u1;bJccur,ff0pera9utweIverGwe;co40lap,ta20u1wG;helm;igh;ser4taE;eHotG;e,i8;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr3;intaEna3rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mAnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nC;iGno2Z;ck,ll,ss;am,oEuG;d3mp;gno2mQnGss3C;cOdica9flu0MhNsKtIvG;eGol4;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abAibA;lu1Er1C;agi22pG;lemeDo20ro4;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloBove1MrIuG;arGeBi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca7m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte17;a16eHi2laEoGreB;rt,se;ct,riG;en8;ci1t;el,han3;abGima9;liF;ab6couXdHfor8ga3han8j03riCsu2t0vG;isi2Qy;!u2;body,er3pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeBiG;ft;g,in;d3ubt;ff0p,re5sHvG;iYor8;aKcHliGmiBpl16tinguiF;ke;oGuB;uGv0;ra3;gr1TppG;ear,ro4;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er4iHtrG;oy;gn,re;a09e08i5osA;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma3n8re,te;a0Ae09h06i9l04oJrG;aHeGoBuFy;a9dA;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aEin0SrG;a7ibu9ol;iGtitu9;d0st;iHoGroD;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen3n3r3se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a7mb,o7rrGth0un8;ow;ck;ar,lHnefAtrG;ay;ie4ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waA;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri4;ue;!i4;eaJlIroG;aCve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e3ow;ee;rd;aRdIju7mAoR;it;st;!reB;ss;cJhie4knowled3tiva9;te;ge;ve;eIouDu1;se;nt;pt;on", - "Unit": "true¦0:16;a11b0Zc0Ld0Ke0If0Dg09h06in0Ejoule0k00lYmNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Kb,d0Qears old,o1;tt0E;att0b;able4b3e2on1sp;!ne0;a2r0A;!l,sp;spo01; ft,uare 1;c0Fd0Ef3i0Ckilo0Gm1ya0B;e0Jil1;e0li0E;eet0o0A;t,uart0;ascals,e2i1ou0Mt;c0Jnt0;rcent,tZ;hms,uVz;an0GewtQ;/s,b,e7g,i3l,m2p1²,³;h,s;!²;!/h,cro3l1;e1li05;! DsC²;g05s0A;gPter1;! 2s1;! 1;per second;b,iZm,u1x;men0x0;b,elvin0g,ilo2m1nQ;!/h,ph,²;byYgWmeter1;! 2s1;! 1;per hour;e1g,z;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", - "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", - "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", - "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", - "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", - "City": "true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", - "Abbreviation": "true¦a08b05cZdXeUfSgRhQiPjNkanMlKmGnEoDpCque,rAs6t4u3v2w0;is0y00;!c;a,s,t;niv,safa,t;ce,e0;nn,x;ask,e1fc,gt,ir,r,t,u0;pt,rg;nDp0;!t;d,e0;pAs,v;a,d,ennGhd,l,rof,vt;ct,kla,nt,p,rd;eb0ov;!r;a2d,essrs,i1lle,me,r5s0t;!tr;nn,ster;!j,r;it,lb,t0;!d;!s;an,r,u0;l,n;a,da,e,nc;on,wy;a,en,ov;eb,l0t,y;!a;g,s1tc,x0;!p;p,q;ak,e0ist,r;c,pt,t;a3ca,l,m2o0pl,res,t;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d3l2pr,r1ss0tty,ug,ve;n,t;c,iz;!ta;!j,m,v", - "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s", - "Country": "true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;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", - "Region": "true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma", - "FemaleName": "true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:EP;6:ER;7:FS;8:GF;9:EZ;A:GB;B:E5;C:FO;D:FL;E:G8;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et5onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s7;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs7tGwa0;ia0um;a,yn;iGya;a,ka,s7;a4e4iGmCAra;!ka;a,t7;at7it7;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet5ie,y;anGi8;!a,e,nG;aDe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs7vannaD;aDi0;ra,y;aGi4;nt7ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lE;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaD;chGe,i0mo0n5EquCDvCy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et5in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t5;aQePiJoGy6;eHrG;aDeCma;ll1mi;aKcIkGla,na,s7ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s7;cy,et5;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eC;h75il9t2;a,cSgOiJjor2l6In2s7tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lEna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri5;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alEd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket5z2;a,et5;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes7na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as7is7oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stC;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s7;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlEri0y;ar5Cer5Cie,leCr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelEd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lEph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et5iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lEquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aDnaD;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolE;acHetGisel9;a,chC;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et5i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileCkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eCis,la,othGthy;ea,y;an09naDonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraDra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et5iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleC;en,t5;aIeoHotG;il4B;!pat4;ir8rIudG;et5iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot5;n1t5;!sa;d4el1PtG;al,el1O;cHlG;es5i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleCrEy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwEok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaDvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt7yl;adHiG;ce;et5iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes7;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t5;an19elG;le;aYdWeUgQiOja,nHtoGya;inet5n3;!aJeHiGmI;e,ka;!mGt5;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t5;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is7jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naD;c7da,leCmLnslKsG;haDlG;inGyW;g,n;!h;ey;ee;en;at7g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lEsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah", - "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", - "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", - "Date": "true¦t0weekend,yesterd2;mr2o0;d0morrow;ay;!w", - "FirstName": "true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is", - "LastName": "true¦0:34;1:39;2:3B;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs1;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu2;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps1;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar2lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch2dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins1;c6ve0F;ci,hards1;ir2os;aEeAh8ic6ow20;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils1guy5ix1owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin2;!o;aCe8i6op2uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen2o6u3;h6nYu3;an6ns1;ss1;ki0Es5;cks1nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs1;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr2;ayli3ub0;m2nzal2;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand2;d7insteHsposi6vaL;to;is1wards;aCeBi9omin8u6;bo6rand;is;gu2;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s1;on;eks7iy8var2;ez;ej6;ev;ams", - "MaleName": "true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:9V;6:BZ;7:AT;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde5sB;!l7t1;de,lCrr6yB;l1ne;lBt3;a93y;aEern1iB;cCha0nceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l7;lom1nA3uB;leyma8ta;dBl7Jm1;!n7;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n7olfo,ri68;co,ky;bAe9U;cBl7;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub6x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw6;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e5;a78ik;house,o03t1;e,olB;aj;ah,hBk7;a4eB;al,l;hClv2rB;le,ri5v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe5;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha5tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe5;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a5ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd6kGmFrDsCvi3yB;!d6s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d6;an,s0;lEo4FrDuBv7;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr7rge;bri4l6rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym6zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl7nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e5ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne5rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro5y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl7y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n7rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid6ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd6eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on", - "Person": "true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;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;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er", - "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", - "PhrasalVerb": "true¦0:72;1:6Q;2:7E;3:74;4:6J;5:7H;6:76;7:6P;8:6C;9:6D;A:5I;B:71;C:70;a7Hb63c5Dd5Ae58f46g3Oh38iron0j34k2Zl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit53;d 1k2R;mp0n4Ape0r8s8;eel Bip 7L;aEiD;gh 06rd0;n Br 3D;it 5Kk8lk6rm 0Qsh 74t67v4P;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Gup;ade YiDot0y 28;ckle68p 7A;ne67p Ds4D;d2o6Lup;ck FdEe Dgh5Tme0p o0Dre0;aw3ba4d2in,up;e5Ky 1;by,o6V;ink Drow 5V;ba4ov7up;aDe 4Ill4O;m 1r W;ckCke Elk D;ov7u4O;aDba4d2in,o31up;ba4ft7p4Tw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6P; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1MiD;ke 5Yn2Y;p Drm1P;by,in,o6B;n2Zr 1tc3I;c2Ymp0nd Dr6Hve6y 1;ba4d2up;d2o67up;ar2Vell0ill4UlErDurC;ingCuc8;a33it 3U;be4Crt0;ap 4Eow B;ash 4Zoke0;eep EiDow 9;c3Np 1;in,oD;ff,v7;gn Eng2Zt Dz8;d2o5up;in,o5up;aFoDu4F;ot Dut0w 5X;aw3ba4f37o5R;c2FdeAk4Sve6;e Hll0nd GtD; Dtl43;d2in,o5upD;!on;aw3ba4d2in,o1Yup;o5to;al4Lout0rap4L;il6v8;at0eKiJoGuD;b 4Ele0n Dstl8;aDba4d2in53o3Gt30u3E;c1Xw3;ot EuD;g2Knd6;a1Xf2Ro5;ng 4Op6;aDel6inAnt0;c4Yd D;o2Tu0C;aQePiOlMoKrHsyc2AuD;ll Ft D;aDba4d2in,o1Ht34up;p39w3;ap38d2in,o5t32up;attleCess EiGoD;p 1;ah1Hon;iDp 53re3Mur45wer 53;nt0;ay3ZuD;gAmp 9;ck 53g0leCn 9p3W;el 47ncilA;c3Pir 2In0ss FtEy D;ba4o4R; d2c1Y;aw3ba4o12;pDw3K;e3Jt B;arrow3Terd0oD;d6te3S;aJeHiGoEuD;ddl8ll37;c17p 1uth6ve D;al3Bd2in,o5up;ss0x 1;asur8lt 9ss D;a1Aup;ke Dn 9r30s1Lx0;do,o3Yup;aPeNiIoDuck0;a17c37g GoDse0;k Dse35;aft7ba4d2forw2Bin3Wov7uD;nd7p;in,o0J;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fl22r Dt 1;fDof;rom;in,oRu1A;cZm 1nDve it,ze1Y;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut", - "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld", - "Adjective": "true¦0:74;1:7J;2:7P;3:7I;4:7B;5:5B;6:48;7:49;8:4R;9:60;A:7G;B:6Z;C:6Y;D:72;E:5W;a6Ib64c5Qd56e4Tf49g41h3Qi35j33k32l2Rm2Gn27o1Rp1Aquack,r10s0Gt09uQvNwFyear5;arp0eJholeIiHoF;man5oFu6B;d6Dzy;despr74s5F;!sa7;eGlFste26;co1Il o4L;!k5;aGiFola4B;b7Sce versa,ol54;ca2gabo62nilla;ltWnJpGrb59su4tterF;!moC; f34b1OpGsFti1H;ca7et,ide dMtairs;er,i3N;aPbeco6Qconvin27deMeLfair,ivers4knKprecedYrIsGwF;iel20ritt5Y;i1VuF;pervis0specti3;eFu5;cognLgul6Gl6G;own;ndi3v5Sxpect0;cid0rF;!grou5NsF;iz0tood;b7ppeaLssu6FuthorF;iz0;i24ra;aJeHhough4OoGrF;i1oubl0;geth8p,rpB;en5PlFm4Zrr2U;li3;boo,lFn;ent0;aXcWeUhTiRmug,nobbi3EoPpOqueami3EtJuFymb63;bHi gener54pFrprisi3;erFre0L;! dup8b,i29;du0seq4T;anda6TeIi0PrFy38;aightFip0; fFfF;or5A;adfaCreotyp0;aEec2Gir1JlendBot on; call0le,mb8phist1XrFu0Xvi41;dBry;gnifica2nF;ceEg7;am2Pe8ocki3ut;cFda1em5lfi2Yni1Wpa68re6;o1Gr3V;at57ient28reec57;cr0me,ns serif;aMeIiGoF;buCtt4TuSy4;ghtFv4;!-29f9;ar,bel,condi1du62fres51lHpublic3VsFtard0;is47oF;lu1na2;e1Euc45;bBciF;al,st;aQeOicayu6lacBopuliCrGuF;bl59mp0;eJiGoF;!b0AfuDmi31p8;mGor,sFva1;ti6;a4Ve;ciDmF;a0IiF;er,um;ac20rFti1;feAma2Tplexi3v33;rFst;allelHtF;-tiFi4;me;!ed;bQffOkNld fashion0nMpLrg1Hth8utKvF;al,erF;!aHniGt,wF;eiFrouF;ght;ll;do0Ver,g2Lsi45;en,posi1; boa5Fg2Jli6;!ay; gua5DbFli6;eat;eHsF;cFer0Hole1;e6uE;d2Sse;ak0eMiLoFua4O;nJrGtF;ab7;thF;!eF;rn;chala2descri4Zstop;ght5;arby,cessa3Wighbor5xt;aNeLiIoFultip7;bi7derGlFnth5ot,st;dy;a1n;nFx0;iaFor;tuE;di4EnaFre;ci3;cFgenta,in,j03keshift,le,mmoth,ny,sculi6;abEho;aOeJiGoFu13;uti12vi3;mGteraF;l,te;it0;ftIgFth4;al,eGitiF;ma1;nda3C;!-0C;nguBst,tt8;ap1Sind5no0A;agg0uF;niOstifi0veni7;de4gno4Blleg4mSnHpso 1VrF;a1releF;va2; NaMbr0corLdJfluenTiTnIsHtF;aAenDoxF;ic36;a6i2R;a1er,oce2;iGoF;or;reA;deq3Jppr2Y;fFsitu,vitro;ro2;mJpF;arHerfeAoFrop8;li1rtF;a2ed;ti4;eFi0Q;d2QnD;aKelJiHoFumdr3B;neCok0rrFs07ur5;if2S;ghfalut1OspF;an2Q;liZpf9;lInHrF;d05roF;wi3;dy,gi3;f,low0;ainf9ener2Jiga22lLoKraHuF;ilFng ho;ty;cGtF;ef9is;ef9;ne,od;ea2Dob4;aUeOinNlMoHrF;a1TeFoz1K;e2Dq12tf9;oHrF; keeps,eFm8tuna1;g04ign;liF;sh;ag2Zue2;al,i1;dJmGrF;ti7;a7ini6;ne;le; up;bl0i2lDr Gux,voF;ri1uri1;oFreac1E;ff;aNfficie2lMmiLnJreAthere4veIxF;aAcess,pe1OtraGuF;be2Ll0H;!va1D;n,ryday; Fcouragi3tiE;rou1sui1;ne2;abo23dQe18i1;g8sF;t,ygF;oi3;er;aVeNiHoFrea15ue;mina2ne,ubF;le,tf9;dact1Bfficu1OsGvF;erD;creHeas0gruntl0honeCordGtF;a2ress0;er5;et; LadpKfJgene1PliHrang0spe1PtGvoF;ut;ail0ermin0;be1Mca1ghF;tf9;ia2;an;facto;i5magFngeroZs0I;ed,i3;ly;ertaRhief,ivil,oHrF;aFowd0u0H;mp0v02z0;loNmLnGoi3rrFve0P;eAu1I;cre1grIsHtF;emFra0F;po0D;ta2;ue2;mer08pleF;te,x;ni4ss4;in;aPeLizarElJoGrF;and new,isk,okP;gGna fiWttom,urgeoF;is;us;ank,iI;re;autif9hiGlov0nFst,yoG;eVt;nd;ul;ckGnkru0XrrF;en;!wards; priori,b0Nc0Kd0AfraBg05h04lZma06ntiquYpUrOsMttracti07utheLvIwF;aGkF;wa0U;ke,re;ant garGerF;age;de;ntV;leep,tonisF;hi3;ab,bitIroHtiF;fiF;ci4;ga2;raF;ry;pFt;are2etiPrF;oprF;ia1;at0;arIcohGeFiMl,oof;rt;olF;ic;mi3;ead;ainCgressiGoniF;zi3;ve;st;id; MeKuJvF;aGerD;se;nc0;ed;lt;pt,qF;ua1;hoc,infinitF;um;cuGtu4u1;al;ra1;erPlOoMruLsGuF;nda2;e2oGtraA;ct;lu1rbi3;ng;te;pt;aFve;rd;aze,e;ra2;nt", - "Comparable": "true¦0:3Z;1:4G;2:43;3:2W;4:49;5:3V;a4Mb42c3Md3Be33f2Pg2Dh22i1Tj1Sk1Pl1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell25ou4;aBe9hi1Wi7r6;o4y;ck0Mde,l6n1ry,se;d,y;a6i4Kt;k,ry;n1Rr6sI;m,y;a7e6ulgar;nge5rda2xi4;gue,in,st;g0n6pco3Kse5;like0ti1;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,t;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", - "TextValue": "true¦bMeIfChundredNmMnin9one,qu8s6t0zeroN;enMh3rLw0;e0o;l0ntC;fGve;ir0ousandIree;d,t5;e0ix7;cond,ptEven6xtE;adrDintD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en1;illion0;!th", - "Ordinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", - "Cardinal": "true¦bGeDf7hundred,mGnine9one,qu6s4t0zero;en,h2rFw0;e0o;lve,n7;irt8ousand,ree;e0ix4;ptAven3xtA;adr9int9;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion", - "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", - "Adverb": "true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", - "Preposition": "true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut", - "Determiner": "true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er" -}; +var _version = '13.10.5'; var entity = ['Person', 'Place', 'Organization']; -var nouns = { +var nouns$1 = { Noun: { notA: ['Verb', 'Adjective', 'Adverb'] }, @@ -3531,20 +3963,25 @@ var nouns = { } }; -var verbs = { +var verbs$1 = { Verb: { notA: ['Noun', 'Adjective', 'Adverb', 'Value'] }, // walks PresentTense: { isA: 'Verb', - notA: ['PastTense', 'Copula', 'FutureTense'] + notA: ['PastTense', 'FutureTense'] }, // neutral form - 'walk' Infinitive: { isA: 'PresentTense', notA: ['PastTense', 'Gerund'] }, + //close the door! + Imperative: { + isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'], + + }, // walking Gerund: { isA: 'PresentTense', @@ -3578,7 +4015,7 @@ var verbs = { }, // shown Participle: { - isA: 'Verb' + isA: 'PastTense' }, // show up PhrasalVerb: { @@ -3587,6 +4024,10 @@ var verbs = { //'up' part Particle: { isA: 'PhrasalVerb' + }, + //this can be an adverb + Auxiliary: { + notA: ['Noun', 'Adjective', 'Value'] } }; var values = { @@ -3601,6 +4042,10 @@ var values = { isA: 'Value', notA: ['Ordinal'] }, + Fraction: { + isA: 'Value', + notA: ['Noun'] + }, RomanNumeral: { isA: 'Cardinal', //can be a person, too @@ -3622,7 +4067,7 @@ var values = { } }; var anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord']; -var misc = { +var misc$1 = { //--Adjectives-- Adjective: { notA: ['Noun', 'Verb', 'Adverb', 'Value'] @@ -3649,7 +4094,7 @@ var misc = { // Dates: //not a noun, but usually is Date: { - notA: ['Verb', 'Conjunction', 'Adverb', 'Preposition', 'Adjective'] + notA: ['Verb', 'Adverb', 'Preposition', 'Adjective'] }, Month: { isA: ['Date', 'Singular'], @@ -3658,10 +4103,15 @@ var misc = { WeekDay: { isA: ['Date', 'Noun'] }, + // 'PST' + Timezone: { + isA: ['Date', 'Noun'], + notA: ['Adjective', 'ProperNoun'] + }, // '9:20pm' Time: { isA: ['Date'], - notA: ['Value'] + notA: ['AtMention'] }, //glue Determiner: { @@ -3678,7 +4128,9 @@ var misc = { notA: ['Determiner'] }, // peso, euro - Currency: {}, + Currency: { + isA: ['Noun'] + }, // ughh Expression: { notA: ['Noun', 'Adjective', 'Verb', 'Adverb'] @@ -3707,9 +4159,6 @@ var misc = { notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] }, //non-exclusive - Auxiliary: { - notA: ['Noun', 'Adjective', 'Value'] - }, Acronym: { notA: ['Plural', 'RomanNumeral'] }, @@ -3764,7 +4213,7 @@ var addColors = function addColors(tags) { var _color = addColors; -var unique$2 = function unique(arr) { +var unique$3 = function unique(arr) { return arr.filter(function (v, i, a) { return a.indexOf(v) === i; }); @@ -3785,14 +4234,14 @@ var inferIsA = function inferIsA(tags) { } // clean it up - tag.isA = unique$2(tag.isA); + tag.isA = unique$3(tag.isA); }); return tags; }; var _isA = inferIsA; -var unique$3 = function unique(arr) { +var unique$2 = function unique(arr) { return arr.filter(function (v, i, a) { return a.indexOf(v) === i; }); @@ -3822,7 +4271,7 @@ var inferNotA = function inferNotA(tags) { } // clean it up - tag.notA = unique$3(tag.notA); + tag.notA = unique$2(tag.notA); }); return tags; }; @@ -3892,19 +4341,70 @@ var addIn = function addIn(obj, tags) { var build = function build() { var tags = {}; - addIn(nouns, tags); - addIn(verbs, tags); + addIn(nouns$1, tags); + addIn(verbs$1, tags); addIn(values, tags); - addIn(misc, tags); // do the graph-stuff + addIn(misc$1, tags); // do the graph-stuff tags = inference(tags); return tags; }; var tags = build(); +var _data = { + "Comparative": "true¦better", + "Superlative": "true¦earlier", + "PresentTense": "true¦is,sounds", + "Value": "true¦a few", + "Noun": "true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc", + "Copula": "true¦a1is,w0;as,ere;m,re", + "PastTense": "true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan", + "Condition": "true¦if,lest,unless", + "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", + "Gerund": "true¦accord0be0develop0go0result0stain0;ing", + "Negative": "true¦n0;ever,o0;!n,t", + "QuestionWord": "true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s", + "Plural": "true¦records", + "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", + "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", + "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", + "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", + "Date": "true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w", + "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", + "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", + "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", + "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", + "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld", + "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", + "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", + "TextOrdinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", + "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", + "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", + "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", + "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" +}; var seq = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", - cache = seq.split("").reduce(function (n, o, e) { + cache$1 = seq.split("").reduce(function (n, o, e) { return n[o] = e, n; }, {}), toAlphaCode = function toAlphaCode(n) { @@ -3924,7 +4424,7 @@ var seq = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", return t; }, fromAlphaCode = function fromAlphaCode(n) { - if (void 0 !== cache[n]) return cache[n]; + if (void 0 !== cache$1[n]) return cache$1[n]; var o = 0, e = 1, t = 36, @@ -4000,15 +4500,15 @@ var indexFromRef = function indexFromRef(n, o, e) { return n.match(":") && symbols(o), toArray(o); }; -var unpack_1 = unpack, - unpack_1$1 = function unpack_1$1(n) { +var unpack_1$1 = unpack, + unpack_1$1$1 = function unpack_1$1$1(n) { var o = n.split("|").reduce(function (n, o) { var e = o.split("¦"); return n[e[0]] = e[1], n; }, {}), e = {}; return Object.keys(o).forEach(function (n) { - var t = unpack_1(o[n]); + var t = unpack_1$1(o[n]); "true" === n && (n = !0); for (var _o2 = 0; _o2 < t.length; _o2++) { @@ -4018,105 +4518,153 @@ var unpack_1 = unpack, }), e; }; -var efrtUnpack_min = unpack_1$1; //safely add it to the lexicon +var efrtUnpack_min = unpack_1$1$1; //words that can't be compressed, for whatever reason -var addWord = function addWord(word, tag, lex) { - if (lex[word] !== undefined) { - if (typeof lex[word] === 'string') { - lex[word] = [lex[word]]; - } +var misc = { + // numbers + '20th century fox': 'Organization', + // '3m': 'Organization', + '7 eleven': 'Organization', + 'motel 6': 'Organization', + g8: 'Organization', + vh1: 'Organization', + q1: 'Date', + q2: 'Date', + q3: 'Date', + q4: 'Date', + her: ['Possessive', 'Pronoun'], + his: ['Possessive', 'Pronoun'], + their: ['Possessive', 'Pronoun'], + themselves: ['Possessive', 'Pronoun'], + your: ['Possessive', 'Pronoun'], + our: ['Possessive', 'Pronoun'], + my: ['Possessive', 'Pronoun'], + its: ['Possessive', 'Pronoun'] +}; +var fancy = { + Unit: function Unit(lex, w) { + lex[w] = ['Abbreviation', 'Unit']; + }, + Cardinal: function Cardinal(lex, w) { + lex[w] = ['TextValue', 'Cardinal']; + }, + TextOrdinal: function TextOrdinal(lex, w) { + lex[w] = ['Ordinal', 'TextValue']; + lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths' + }, + // add plural/singular forms + Singular: function Singular(lex, w, world) { + lex[w] = 'Singular'; + var plural = world.transforms.toPlural(w, world); + lex[plural] = lex[plural] || 'Plural'; + }, + // conjugate these verbs + Infinitive: function Infinitive(lex, w, world) { + lex[w] = 'Infinitive'; + var conj = world.transforms.conjugate(w, world); + var tags = Object.keys(conj); - if (typeof tag === 'string') { - lex[word].push(tag); - } else { - lex[word] = lex[word].concat(tag); + for (var i = 0; i < tags.length; i++) { + var str = conj[tags[i]]; + lex[str] = lex[str] || tags[i]; // only if it's safe } - } else { - lex[word] = tag; - } -}; // blast-out more forms for some given words - - -var addMore = function addMore(word, tag, world) { - var lexicon = world.words; - var transform = world.transforms; // cache multi-words - - var words = word.split(' '); - - if (words.length > 1) { - //cache the beginning word - world.hasCompound[words[0]] = true; - } // inflect our nouns - + }, + // conjugate other Adjectival forms + Comparable: function Comparable(lex, w, world) { + lex[w] = 'Comparable'; + var conj = world.transforms.adjectives(w); + var tags = Object.keys(conj); - if (tag === 'Singular') { - var plural = transform.toPlural(word, world); - lexicon[plural] = lexicon[plural] || 'Plural'; // only if it's safe - } //conjugate our verbs + for (var i = 0; i < tags.length; i++) { + var word = conj[tags[i]]; + lex[word] = lex[word] || tags[i]; // only if it's safe + } + }, + //conjugate phrasal-verbs + PhrasalVerb: function PhrasalVerb(lex, w, world) { + // whole thing + lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form + var words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive' + // //conjugate first word - if (tag === 'Infinitive') { - var conj = transform.conjugate(word, world); + var conj = world.transforms.conjugate(words[0], world); var tags = Object.keys(conj); for (var i = 0; i < tags.length; i++) { - var w = conj[tags[i]]; - lexicon[w] = lexicon[w] || tags[i]; // only if it's safe + var str = conj[tags[i]] + ' ' + words[1]; + lex[str] = lex[str] || ['PhrasalVerb', tags[i]]; + world.hasCompound[conj[tags[i]]] = true; } - } //derive more adjective forms + }, + // inflect our demonyms - 'germans' + Demonym: function Demonym(lex, w, world) { + lex[w] = 'Demonym'; + var plural = world.transforms.toPlural(w, world); + lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe + } +}; // let a user explode their lexicon, too +var addWords = function addWords(wordsObj, lex, world) { + Object.keys(wordsObj).forEach(function (word) { + var tag = wordsObj[word]; // abbreviation-words are used in our tokenizer - if (tag === 'Comparable') { - var _conj = transform.adjectives(word); + if (tag === 'Abbreviation' || tag === 'Unit') { + world.cache.abbreviations[word] = true; + } // cache multi-words - var _tags = Object.keys(_conj); - for (var _i = 0; _i < _tags.length; _i++) { - var _w = _conj[_tags[_i]]; - lexicon[_w] = lexicon[_w] || _tags[_i]; // only if it's safe - } - } //conjugate phrasal-verbs + var multi = word.split(' '); + if (multi.length > 1) { + world.hasCompound[multi[0]] = true; + } // do some ad-hoc work before adding it - if (tag === 'PhrasalVerb') { - //add original form - addWord(word, 'Infinitive', lexicon); //conjugate first word - var _conj2 = transform.conjugate(words[0], world); + if (fancy[tag] !== undefined) { + fancy[tag](lex, word, world); + return; + } //set it in our lexicon, basic - var _tags2 = Object.keys(_conj2); - for (var _i2 = 0; _i2 < _tags2.length; _i2++) { - //add it to our cache - world.hasCompound[_conj2[_tags2[_i2]]] = true; //first + last words + if (lex[word] === undefined) { + lex[word] = tag; + return; + } // if we already have that word - var _w2 = _conj2[_tags2[_i2]] + ' ' + words[1]; - addWord(_w2, _tags2[_i2], lexicon); - addWord(_w2, 'PhrasalVerb', lexicon); + if (typeof lex[word] === 'string') { + lex[word] = [lex[word]]; } - } // inflect our demonyms - 'germans' + if (typeof tag === 'string') { + lex[word].push(tag); + } else { + lex[word] = lex[word].concat(tag); + } + }); +}; // we do some ad-hoc stuff here, building-up our word-list - if (tag === 'Demonym') { - var _plural = transform.toPlural(word, world); - lexicon[_plural] = lexicon[_plural] || ['Demonym', 'Plural']; // only if it's safe - } -}; // throw a bunch of words in our lexicon -// const doWord = function(words, tag, world) { -// let lexicon = world.words -// for (let i = 0; i < words.length; i++) { -// addWord(words[i], tag, lexicon) -// // do some fancier stuff -// addMore(words[i], tag, world) -// } -// } +var buildOut = function buildOut(world) { + //our bag of words + var lexicon = Object.assign({}, misc); // start adding words to the lex + + Object.keys(_data).forEach(function (tag) { + var wordsObj = efrtUnpack_min(_data[tag]); // this part sucks + + Object.keys(wordsObj).forEach(function (w) { + wordsObj[w] = tag; + }); + addWords(wordsObj, lexicon, world); + }); // console.log(Object.keys(lexicon).length) + return lexicon; +}; -var addWords = { - addWord: addWord, - addMore: addMore +var unpack_1 = { + buildOut: buildOut, + addWords: addWords }; // add words from plurals and conjugations data var addIrregulars = function addIrregulars(world) { @@ -4142,7 +4690,11 @@ var addIrregulars = function addIrregulars(world) { forms = Object.assign(forms, verbs[inf]); //add the others Object.keys(forms).forEach(function (tag) { - world.words[forms[tag]] = world.words[forms[tag]] || tag; + world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle + + if (world.words[forms[tag]] === 'Participle') { + world.words[forms[tag]] = tag; + } }); }; @@ -4151,22 +4703,7 @@ var addIrregulars = function addIrregulars(world) { } }; -var addIrregulars_1 = addIrregulars; //words that can't be compressed, for whatever reason - -var misc$1 = { - // numbers - '20th century fox': 'Organization', - // '3m': 'Organization', - '7 eleven': 'Organization', - '7-eleven': 'Organization', - g8: 'Organization', - 'motel 6': 'Organization', - vh1: 'Organization', - q1: 'Date', - q2: 'Date', - q3: 'Date', - q4: 'Date' -}; //nouns with irregular plural/singular forms +var addIrregulars_1 = addIrregulars; //nouns with irregular plural/singular forms //used in noun.inflect, and also in the lexicon. var plurals = { @@ -4215,7 +4752,7 @@ var plurals = { modulus: 'moduli', mosquito: 'mosquitoes', mouse: 'mice', - move: 'moves', + // move: 'moves', nebula: 'nebulae', nucleus: 'nuclei', octopus: 'octopi', @@ -4251,7 +4788,7 @@ var plurals = { // but also added to our lexicon //use shorter key-names -var mapping = { +var mapping$1 = { g: 'Gerund', prt: 'Participle', perf: 'PerfectTense', @@ -4261,6 +4798,7 @@ var mapping = { pluperf: 'Pluperfect', a: 'Actor' }; // '_' in conjugations is the infinitive form +// (order matters, to the lexicon) var conjugations = { act: { @@ -4334,8 +4872,8 @@ var conjugations = { pst: 'bit' }, bleed: { - prt: 'bled', - pst: 'bled' + pst: 'bled', + prt: 'bled' }, blow: { prt: '_n', @@ -4354,8 +4892,8 @@ var conjugations = { pst: 'bred' }, bring: { - prt: 'brought', - pst: 'brought' + pst: 'brought', + prt: 'brought' }, broadcast: { pst: '_' @@ -4364,8 +4902,8 @@ var conjugations = { pst: '_ed' }, build: { - prt: 'built', - pst: 'built' + pst: 'built', + prt: 'built' }, burn: { prt: '_ed' @@ -4374,8 +4912,8 @@ var conjugations = { prt: '_' }, buy: { - prt: 'bought', - pst: 'bought' + pst: 'bought', + prt: 'bought' }, can: { a: '', @@ -4417,8 +4955,8 @@ var conjugations = { prt: '_' }, deal: { - prt: '_t', - pst: '_t' + pst: '_t', + prt: '_t' }, develop: { a: '_er', @@ -4431,8 +4969,8 @@ var conjugations = { }, dig: { g: '_ging', - prt: 'dug', - pst: 'dug' + pst: 'dug', + prt: 'dug' }, dive: { prt: '_d' @@ -4468,6 +5006,7 @@ var conjugations = { pst: 'ate' }, edit: { + pst: '_ed', g: '_ing' }, egg: { @@ -4486,8 +5025,8 @@ var conjugations = { pst: 'felt' }, fight: { - prt: 'fought', - pst: 'fought' + pst: 'fought', + prt: 'fought' }, find: { pst: 'found' @@ -4542,19 +5081,22 @@ var conjugations = { grow: { prt: '_n' }, + guide: { + pst: '_d' + }, hang: { - prt: 'hung', - pst: 'hung' + pst: 'hung', + prt: 'hung' }, have: { g: 'having', - prt: 'had', pst: 'had', + prt: 'had', pres: 'has' }, hear: { - prt: '_d', - pst: '_d' + pst: '_d', + prt: '_d' }, hide: { prt: 'hidden', @@ -4564,12 +5106,12 @@ var conjugations = { prt: '_' }, hold: { - prt: 'held', - pst: 'held' + pst: 'held', + prt: 'held' }, hurt: { - prt: '_', - pst: '_' + pst: '_', + prt: '_' }, ice: { g: 'icing', @@ -4595,19 +5137,19 @@ var conjugations = { prt: '_n' }, lay: { - prt: 'laid', - pst: 'laid' + pst: 'laid', + prt: 'laid' }, lead: { - prt: 'led', - pst: 'led' + pst: 'led', + prt: 'led' }, leap: { prt: '_t' }, leave: { - prt: 'left', - pst: 'left' + pst: 'left', + prt: 'left' }, lend: { prt: 'lent' @@ -4617,8 +5159,8 @@ var conjugations = { pst: 'lay' }, light: { - prt: 'lit', - pst: 'lit' + pst: 'lit', + prt: 'lit' }, log: { g: '_ging', @@ -4632,18 +5174,18 @@ var conjugations = { pst: 'lost' }, make: { - prt: 'made', - pst: 'made' + pst: 'made', + prt: 'made' }, mean: { - prt: '_t', - pst: '_t' + pst: '_t', + prt: '_t' }, meet: { a: '_er', g: '_ing', - prt: 'met', - pst: 'met' + pst: 'met', + prt: 'met' }, miss: { pres: '_' @@ -4651,9 +5193,13 @@ var conjugations = { name: { g: 'naming' }, + patrol: { + g: '_ling', + pst: '_led' + }, pay: { - prt: 'paid', - pst: 'paid' + pst: 'paid', + prt: 'paid' }, prove: { prt: '_n' @@ -4668,15 +5214,18 @@ var conjugations = { prt: '_' }, read: { - prt: '_', - pst: '_' + pst: '_', + prt: '_' }, ride: { prt: 'ridden' }, + reside: { + pst: '_d' + }, ring: { - prt: 'rung', - pst: 'rang' + pst: 'rang', + prt: 'rung' }, rise: { fut: 'will have _n', @@ -4695,11 +5244,12 @@ var conjugations = { pst: 'ran' }, say: { - prt: 'said', pst: 'said', + prt: 'said', pres: '_s' }, seat: { + pst: 'sat', prt: 'sat' }, see: { @@ -4711,8 +5261,8 @@ var conjugations = { prt: 'sought' }, sell: { - prt: 'sold', - pst: 'sold' + pst: 'sold', + prt: 'sold' }, send: { prt: 'sent' @@ -4735,12 +5285,12 @@ var conjugations = { pres: '_s' }, shine: { - prt: 'shone', - pst: 'shone' + pst: 'shone', + prt: 'shone' }, shoot: { - prt: 'shot', - pst: 'shot' + pst: 'shot', + prt: 'shot' }, show: { pst: '_ed' @@ -4769,8 +5319,8 @@ var conjugations = { prt: 'slept' }, slide: { - prt: 'slid', - pst: 'slid' + pst: 'slid', + prt: 'slid' }, smash: { pres: '_es' @@ -4797,8 +5347,8 @@ var conjugations = { }, spin: { g: '_ning', - prt: 'spun', - pst: 'spun' + pst: 'spun', + prt: 'spun' }, spit: { prt: 'spat' @@ -4826,8 +5376,8 @@ var conjugations = { pst: 'stung' }, stink: { - prt: 'stunk', - pst: 'stunk' + pst: 'stunk', + prt: 'stunk' }, stream: { a: '_er' @@ -4944,7 +5494,7 @@ var _loop = function _loop(i) { var str = conjugations[inf][key]; //swap-in infinitives for '_' str = str.replace('_', inf); - var full = mapping[key]; + var full = mapping$1[key]; _final[full] = str; }); //over-write original @@ -4956,7 +5506,7 @@ for (var i = 0; i < keys.length; i++) { } var conjugations_1 = conjugations; -var endsWith = { +var endsWith$1 = { b: [{ reg: /([^aeiou][aeiou])b$/i, repl: { @@ -5180,7 +5730,15 @@ var endsWith = { } }], w: [{ + reg: /(.llow)$/i, + //follow, allow + repl: { + pr: '$1s', + pa: '$1ed' + } + }, { reg: /(..)(ow)$/i, + //grow repl: { pr: '$1$2s', pa: '$1ew', @@ -5189,7 +5747,7 @@ var endsWith = { } }], y: [{ - reg: /([i|f|rr])y$/i, + reg: /(i|f|rr)y$/i, repl: { pr: '$1ies', pa: '$1ied', @@ -5205,7 +5763,7 @@ var endsWith = { } }] }; -var suffixes = endsWith; +var suffixes$1 = endsWith$1; var posMap = { pr: 'PresentTense', pa: 'PastTense', @@ -5231,12 +5789,12 @@ var checkSuffix = function checkSuffix() { var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var c = str[str.length - 1]; - if (suffixes.hasOwnProperty(c) === true) { - for (var r = 0; r < suffixes[c].length; r += 1) { - var reg = suffixes[c][r].reg; + if (suffixes$1.hasOwnProperty(c) === true) { + for (var r = 0; r < suffixes$1[c].length; r += 1) { + var reg = suffixes$1[c][r].reg; if (reg.test(str) === true) { - return doTransform(str, suffixes[c][r]); + return doTransform(str, suffixes$1[c][r]); } } } @@ -5284,7 +5842,7 @@ var generic = { }; var _02Generic = generic; //we assume the input word is a proper infinitive -var conjugate = function conjugate() { +var conjugate$2 = function conjugate() { var inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var world = arguments.length > 1 ? arguments[1] : undefined; var found = {}; // 1. look at irregulars @@ -5317,12 +5875,12 @@ var conjugate = function conjugate() { return found; }; -var conjugate_1 = conjugate; // console.log(conjugate('bake')) +var conjugate_1$1 = conjugate$2; // console.log(conjugate('bake')) //turn 'quick' into 'quickest' -var do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]; -var dont_rules = [/ary$/]; -var irregulars = { +var do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]; +var dont_rules$1 = [/ary$/]; +var irregulars$5 = { nice: 'nicest', late: 'latest', hard: 'hardest', @@ -5335,7 +5893,7 @@ var irregulars = { big: 'biggest', large: 'largest' }; -var transforms = [{ +var transforms$2 = [{ reg: /y$/i, repl: 'iest' }, { @@ -5354,27 +5912,27 @@ var transforms = [{ var to_superlative = function to_superlative(str) { //irregulars - if (irregulars.hasOwnProperty(str)) { - return irregulars[str]; + if (irregulars$5.hasOwnProperty(str)) { + return irregulars$5[str]; } //known transforms - for (var i = 0; i < transforms.length; i++) { - if (transforms[i].reg.test(str)) { - return str.replace(transforms[i].reg, transforms[i].repl); + for (var i = 0; i < transforms$2.length; i++) { + if (transforms$2[i].reg.test(str)) { + return str.replace(transforms$2[i].reg, transforms$2[i].repl); } } //dont-rules - for (var _i = 0; _i < dont_rules.length; _i++) { - if (dont_rules[_i].test(str) === true) { + for (var _i = 0; _i < dont_rules$1.length; _i++) { + if (dont_rules$1[_i].test(str) === true) { return null; } } //do-rules - for (var _i2 = 0; _i2 < do_rules.length; _i2++) { - if (do_rules[_i2].test(str) === true) { + for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) { + if (do_rules$1[_i2].test(str) === true) { if (str.charAt(str.length - 1) === 'e') { return str + 'st'; } @@ -5388,9 +5946,9 @@ var to_superlative = function to_superlative(str) { var toSuperlative = to_superlative; //turn 'quick' into 'quickly' -var do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]; -var dont_rules$1 = [/ary$/, /ous$/]; -var irregulars$1 = { +var do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]; +var dont_rules = [/ary$/, /ous$/]; +var irregulars$4 = { grey: 'greyer', gray: 'grayer', green: 'greener', @@ -5418,8 +5976,8 @@ var transforms$1 = [{ var to_comparative = function to_comparative(str) { //known-irregulars - if (irregulars$1.hasOwnProperty(str)) { - return irregulars$1[str]; + if (irregulars$4.hasOwnProperty(str)) { + return irregulars$4[str]; } //known-transforms @@ -5430,15 +5988,15 @@ var to_comparative = function to_comparative(str) { } //dont-patterns - for (var _i = 0; _i < dont_rules$1.length; _i++) { - if (dont_rules$1[_i].test(str) === true) { + for (var _i = 0; _i < dont_rules.length; _i++) { + if (dont_rules[_i].test(str) === true) { return null; } } //do-patterns - for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) { - if (do_rules$1[_i2].test(str) === true) { + for (var _i2 = 0; _i2 < do_rules.length; _i2++) { + if (do_rules[_i2].test(str) === true) { return str + 'er'; } } //easy-one @@ -5452,7 +6010,7 @@ var to_comparative = function to_comparative(str) { }; var toComparative = to_comparative; -var fns$1 = { +var fns = { toSuperlative: toSuperlative, toComparative: toComparative }; @@ -5461,14 +6019,14 @@ var fns$1 = { var conjugate$1 = function conjugate(w) { var res = {}; // 'greatest' - var sup = fns$1.toSuperlative(w); + var sup = fns.toSuperlative(w); if (sup) { res.Superlative = sup; } // 'greater' - var comp = fns$1.toComparative(w); + var comp = fns.toComparative(w); if (comp) { res.Comparative = comp; @@ -5477,10 +6035,10 @@ var conjugate$1 = function conjugate(w) { return res; }; -var adjectives = conjugate$1; +var adjectives$2 = conjugate$1; /** patterns for turning 'bus' to 'buses'*/ -var suffixes$1 = { +var suffixes = { a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']], e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']], 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']], @@ -5493,18 +6051,18 @@ var suffixes$1 = { y: [[/([^aeiouy]|qu)y$/i, '$1ies']], z: [[/(quiz)$/i, '$1zes']] }; -var _rules = suffixes$1; +var _rules$2 = suffixes; var addE = /(x|ch|sh|s|z)$/; var trySuffix = function trySuffix(str) { var c = str[str.length - 1]; - if (_rules.hasOwnProperty(c) === true) { - for (var i = 0; i < _rules[c].length; i += 1) { - var reg = _rules[c][i][0]; + if (_rules$2.hasOwnProperty(c) === true) { + for (var i = 0; i < _rules$2[c].length; i += 1) { + var reg = _rules$2[c][i][0]; if (reg.test(str) === true) { - return str.replace(reg, _rules[c][i][1]); + return str.replace(reg, _rules$2[c][i][1]); } } } @@ -5544,7 +6102,9 @@ var pluralize = function pluralize() { var toPlural = pluralize; //patterns for turning 'dwarves' to 'dwarf' var _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'], -[/(..[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, '']]; +[/(eas)es$/i, '$1e'], //diseases +[/(..[aeiou]s)es$/i, '$1'], //geniouses +[/(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, '']]; var invertObj = function invertObj(obj) { return Object.keys(obj).reduce(function (h, k) { @@ -5555,7 +6115,8 @@ var invertObj = function invertObj(obj) { var toSingular = function toSingular(str, world) { var irregulars = world.irregulars.nouns; - var invert = invertObj(irregulars); // check irregulars list + var invert = invertObj(irregulars); //(not very efficient) + // check irregulars list if (invert.hasOwnProperty(str)) { return invert[str]; @@ -5672,7 +6233,7 @@ var rules = { to: '$1e' }, { //cing : bouncing, denouncing - reg: /(c)ing$/i, + reg: /(c|s)ing$/i, //dp to: '$1e' }, // { @@ -5739,6 +6300,9 @@ var rules = { }, { reg: /(us)ed$/i, to: '$1e' + }, { + reg: /(dd)ed$/i, + to: '$1' }, { reg: /(..[^aeiouy])ed$/i, to: '$1e' @@ -5806,7 +6370,7 @@ var guessTense = function guessTense(str) { return null; }; -var toInfinitive = function toInfinitive(str, world, tense) { +var toInfinitive$1 = function toInfinitive(str, world, tense) { if (!str) { return ''; } //1. look at known irregulars @@ -5835,6 +6399,7 @@ var toInfinitive = function toInfinitive(str, world, tense) { var rule = _transform[tense][_i]; if (rule.reg.test(str) === true) { + // console.log(rule.reg) return str.replace(rule.reg, rule.to); } } @@ -5843,18 +6408,18 @@ var toInfinitive = function toInfinitive(str, world, tense) { return str; }; -var toInfinitive_1 = toInfinitive; -var irregulars$2 = { +var toInfinitive_1$1 = toInfinitive$1; +var irregulars$3 = { nouns: plurals, verbs: conjugations_1 }; //these behaviours are configurable & shared across some plugins -var transforms$2 = { - conjugate: conjugate_1, - adjectives: adjectives, +var transforms = { + conjugate: conjugate_1$1, + adjectives: adjectives$2, toPlural: toPlural, toSingular: toSingular_1, - toInfinitive: toInfinitive_1 + toInfinitive: toInfinitive_1$1 }; var _isVerbose = false; /** all configurable linguistic data */ @@ -5866,7 +6431,7 @@ var World = /*#__PURE__*/function () { Object.defineProperty(this, 'words', { enumerable: false, - value: misc$1, + value: {}, writable: true }); Object.defineProperty(this, 'hasCompound', { @@ -5876,7 +6441,7 @@ var World = /*#__PURE__*/function () { }); Object.defineProperty(this, 'irregulars', { enumerable: false, - value: irregulars$2, + value: irregulars$3, writable: true }); Object.defineProperty(this, 'tags', { @@ -5886,25 +6451,25 @@ var World = /*#__PURE__*/function () { }); Object.defineProperty(this, 'transforms', { enumerable: false, - value: transforms$2, + value: transforms, writable: true }); Object.defineProperty(this, 'taggers', { enumerable: false, value: [], writable: true - }); // add our compressed data to lexicon - - this.unpackWords(_data); // add our irregulars to lexicon - - this.addIrregulars(); // cache our abbreviations for our sentence-parser + }); // cache our abbreviations for our sentence-parser Object.defineProperty(this, 'cache', { enumerable: false, value: { - abbreviations: this.getByTag('Abbreviation') + abbreviations: {} } - }); + }); // add our compressed data to lexicon + + this.words = unpack_1.buildOut(this); // add our irregulars to lexicon + + addIrregulars_1(this); } /** more logs for debugging */ @@ -5920,64 +6485,34 @@ var World = /*#__PURE__*/function () { value: function isVerbose() { return _isVerbose; } - /** get all terms in our lexicon with this tag */ + /** put new words into our lexicon, properly */ }, { - key: "getByTag", - value: function getByTag(tag) { - var lex = this.words; - var res = {}; - var words = Object.keys(lex); - - for (var i = 0; i < words.length; i++) { - if (typeof lex[words[i]] === 'string') { - if (lex[words[i]] === tag) { - res[words[i]] = true; - } - } else if (lex[words[i]].some(function (t) { - return t === tag; - })) { - res[words[i]] = true; - } - } - - return res; + key: "addWords", + value: function addWords(wordObj) { + // clean them up a bit + var cleaned = {}; + Object.keys(wordObj).forEach(function (w) { + var tag = wordObj[w]; + w = w.toLowerCase().trim(); + cleaned[w] = tag; + }); + unpack_1.addWords(cleaned, this.words, this); } - /** augment our lingustic data with new data */ + /** add new custom conjugations */ }, { - key: "unpackWords", - value: function unpackWords(lex) { - var tags = Object.keys(lex); - - for (var i = 0; i < tags.length; i++) { - var words = Object.keys(efrtUnpack_min(lex[tags[i]])); - - for (var w = 0; w < words.length; w++) { - addWords.addWord(words[w], tags[i], this.words); // do some fancier stuff - - addWords.addMore(words[w], tags[i], this); - } - } + key: "addConjugations", + value: function addConjugations(obj) { + Object.assign(this.irregulars.verbs, obj); + return this; } - /** put new words into our lexicon, properly */ - - }, { - key: "addWords", - value: function addWords$1(obj) { - var keys = Object.keys(obj); - - for (var i = 0; i < keys.length; i++) { - var word = keys[i].toLowerCase(); - addWords.addWord(word, obj[keys[i]], this.words); // do some fancier stuff + /** add new custom plural/singular pairs */ - addWords.addMore(word, obj[keys[i]], this); - } - } }, { - key: "addIrregulars", - value: function addIrregulars() { - addIrregulars_1(this); + key: "addPlurals", + value: function addPlurals(obj) { + Object.assign(this.irregulars.nouns, obj); return this; } /** extend the compromise tagset */ @@ -6018,7 +6553,7 @@ var World = /*#__PURE__*/function () { }(); // ¯\_(:/)_/¯ -var clone$1 = function clone(obj) { +var clone = function clone(obj) { return JSON.parse(JSON.stringify(obj)); }; /** produce a deep-copy of all lingustic data */ @@ -6030,8 +6565,8 @@ World.prototype.clone = function () { w2.words = Object.assign({}, this.words); w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested: - w2.irregulars = clone$1(this.irregulars); - w2.tags = clone$1(this.tags); // these are functions + w2.irregulars = clone(this.irregulars); + w2.tags = clone(this.tags); // these are functions w2.transforms = this.transforms; w2.taggers = this.taggers; @@ -6039,9 +6574,9 @@ World.prototype.clone = function () { }; var World_1 = World; +/** return the root, first document */ -var _01Utils$1 = createCommonjsModule(function (module, exports) { - /** return the root, first document */ +var _01Utils = createCommonjsModule(function (module, exports) { exports.all = function () { return this.parents()[0] || this; }; @@ -6106,16 +6641,10 @@ var _01Utils$1 = createCommonjsModule(function (module, exports) { // this.world.verbose = bool // } }); +/** use only the first result(s) */ -var _01Utils_1 = _01Utils$1.all; -var _01Utils_2 = _01Utils$1.parent; -var _01Utils_3 = _01Utils$1.parents; -var _01Utils_4 = _01Utils$1.clone; -var _01Utils_5 = _01Utils$1.wordCount; -var _01Utils_6 = _01Utils$1.wordcount; var _02Accessors = createCommonjsModule(function (module, exports) { - /** use only the first result(s) */ exports.first = function (n) { if (n === undefined) { return this.get(0); @@ -6228,6 +6757,8 @@ var _02Accessors = createCommonjsModule(function (module, exports) { return res; }; + /** lookup a named-group, by its name */ + var getOneName = function getOneName(doc, name) { var arr = []; @@ -6281,24 +6812,10 @@ var _02Accessors = createCommonjsModule(function (module, exports) { }; exports.sentence = exports.sentences; -}); +}); // cache the easier conditions up-front -var _02Accessors_1 = _02Accessors.first; -var _02Accessors_2 = _02Accessors.last; -var _02Accessors_3 = _02Accessors.slice; -var _02Accessors_4 = _02Accessors.eq; -var _02Accessors_5 = _02Accessors.get; -var _02Accessors_6 = _02Accessors.firstTerms; -var _02Accessors_7 = _02Accessors.firstTerm; -var _02Accessors_8 = _02Accessors.lastTerms; -var _02Accessors_9 = _02Accessors.lastTerm; -var _02Accessors_10 = _02Accessors.termList; -var _02Accessors_11 = _02Accessors.groups; -var _02Accessors_12 = _02Accessors.group; -var _02Accessors_13 = _02Accessors.sentences; -var _02Accessors_14 = _02Accessors.sentence; // cache the easier conditions up-front -var cacheRequired = function cacheRequired(reg) { +var cacheRequired$1 = function cacheRequired(reg) { var needTags = []; var needWords = []; reg.forEach(function (obj) { @@ -6318,11 +6835,12 @@ var cacheRequired = function cacheRequired(reg) { tags: needTags, words: needWords }; -}; +}; // try to pre-fail as many matches as possible, without doing them + -var failFast$1 = function failFast(doc, regs) { +var failFast = function failFast(doc, regs) { if (doc._cache && doc._cache.set === true) { - var _cacheRequired = cacheRequired(regs), + var _cacheRequired = cacheRequired$1(regs), words = _cacheRequired.words, tags = _cacheRequired.tags; //check required words @@ -6344,30 +6862,38 @@ var failFast$1 = function failFast(doc, regs) { return true; }; -var checkCache = failFast$1; +var _failFast = failFast; var _03Match = createCommonjsModule(function (module, exports) { /** return a new Doc, with this one as a parent */ - exports.match = function (reg, name) { - //parse-up the input expression - var regs = syntax_1(reg); + exports.match = function (reg) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // support '0' shorthand for named-groups + + if (typeof opts === 'string' || typeof opts === 'number' || opts === null) { + opts = { + group: opts + }; + } //parse-up the input expression + + + var regs = matchSyntax(reg, opts); if (regs.length === 0) { return this.buildFrom([]); } //check our cache, if it exists - if (checkCache(this, regs) === false) { + if (_failFast(this, regs) === false) { return this.buildFrom([]); } //try expression on each phrase var matches = this.list.reduce(function (arr, p) { return arr.concat(p.match(regs)); - }, []); + }, []); // support returning named groups - if (name !== undefined && name !== null && name !== '') { - return this.buildFrom(matches).groups(name); + if (opts.group !== undefined && opts.group !== null && opts.group !== '') { + return this.buildFrom(matches).groups(opts.group); } return this.buildFrom(matches); @@ -6376,10 +6902,11 @@ var _03Match = createCommonjsModule(function (module, exports) { exports.not = function (reg) { - //parse-up the input expression - var regs = syntax_1(reg); //if it's empty, return them all! + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; //parse-up the input expression + + var regs = matchSyntax(reg, opts); //if it's empty, return them all! - if (regs.length === 0 || checkCache(this, regs) === false) { + if (regs.length === 0 || _failFast(this, regs) === false) { return this; } //try expression on each phrase @@ -6393,9 +6920,10 @@ var _03Match = createCommonjsModule(function (module, exports) { exports.matchOne = function (reg) { - var regs = syntax_1(reg); //check our cache, if it exists + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //check our cache, if it exists - if (checkCache(this, regs) === false) { + if (_failFast(this, regs) === false) { return this.buildFrom([]); } @@ -6410,9 +6938,10 @@ var _03Match = createCommonjsModule(function (module, exports) { exports["if"] = function (reg) { - var regs = syntax_1(reg); //consult our cache, if it exists + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //consult our cache, if it exists - if (checkCache(this, regs) === false) { + if (_failFast(this, regs) === false) { return this.buildFrom([]); } @@ -6425,7 +6954,8 @@ var _03Match = createCommonjsModule(function (module, exports) { exports.ifNo = function (reg) { - var regs = syntax_1(reg); + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); var found = this.list.filter(function (p) { return p.has(regs) === false; }); @@ -6435,9 +6965,10 @@ var _03Match = createCommonjsModule(function (module, exports) { exports.has = function (reg) { - var regs = syntax_1(reg); //consult our cache, if it exists + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //consult our cache, if it exists - if (checkCache(this, regs) === false) { + if (_failFast(this, regs) === false) { return false; } @@ -6449,12 +6980,13 @@ var _03Match = createCommonjsModule(function (module, exports) { exports.lookAhead = function (reg) { - // find everything afterwards, by default + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // find everything afterwards, by default + if (!reg) { reg = '.*'; } - var regs = syntax_1(reg); + var regs = matchSyntax(reg, opts); var matches = []; this.list.forEach(function (p) { matches = matches.concat(p.lookAhead(regs)); @@ -6469,12 +7001,13 @@ var _03Match = createCommonjsModule(function (module, exports) { /** match any terms before our matches, within the sentence */ exports.lookBehind = function (reg) { - // find everything afterwards, by default + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // find everything afterwards, by default + if (!reg) { reg = '.*'; } - var regs = syntax_1(reg); + var regs = matchSyntax(reg, opts); var matches = []; this.list.forEach(function (p) { matches = matches.concat(p.lookBehind(regs)); @@ -6489,7 +7022,8 @@ var _03Match = createCommonjsModule(function (module, exports) { /** return all terms before a match, in each phrase */ exports.before = function (reg) { - var regs = syntax_1(reg); //only the phrases we care about + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //only the phrases we care about var phrases = this["if"](regs).list; var befores = phrases.map(function (p) { @@ -6515,7 +7049,8 @@ var _03Match = createCommonjsModule(function (module, exports) { exports.after = function (reg) { - var regs = syntax_1(reg); //only the phrases we care about + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var regs = matchSyntax(reg, opts); //only the phrases we care about var phrases = this["if"](regs).list; var befores = phrases.map(function (p) { @@ -6541,27 +7076,35 @@ var _03Match = createCommonjsModule(function (module, exports) { }); return this.buildFrom(befores); }; -}); + /** return only results with this match afterwards */ + + + exports.hasAfter = function (reg) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.filter(function (doc) { + return doc.lookAfter(reg, opts).found; + }); + }; + /** return only results with this match before it */ + -var _03Match_1 = _03Match.match; -var _03Match_2 = _03Match.not; -var _03Match_3 = _03Match.matchOne; -var _03Match_4 = _03Match.ifNo; -var _03Match_5 = _03Match.has; -var _03Match_6 = _03Match.lookAhead; -var _03Match_7 = _03Match.lookAfter; -var _03Match_8 = _03Match.lookBehind; -var _03Match_9 = _03Match.lookBefore; -var _03Match_10 = _03Match.before; -var _03Match_11 = _03Match.after; + exports.hasBefore = function (reg) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.filter(function (doc) { + return doc.lookBefore(reg, opts).found; + }); + }; +}); /** apply a tag, or tags to all terms */ + var tagTerms = function tagTerms(tag, doc, safe, reason) { var tagList = []; if (typeof tag === 'string') { tagList = tag.split(' '); - } //do indepenent tags for each term: + } // doc.parents()[0].reasons.push(reason) + //do indepenent tags for each term: doc.list.forEach(function (p) { @@ -6591,7 +7134,7 @@ var tagTerms = function tagTerms(tag, doc, safe, reason) { var _setTag = tagTerms; /** Give all terms the given tag */ -var tag$1 = function tag(tags, why) { +var tag = function tag(tags, why) { if (!tags) { return this; } @@ -6603,7 +7146,7 @@ var tag$1 = function tag(tags, why) { /** Only apply tag to terms if it is consistent with current tags */ -var tagSafe$1 = function tagSafe(tags, why) { +var tagSafe = function tagSafe(tags, why) { if (!tags) { return this; } @@ -6615,7 +7158,7 @@ var tagSafe$1 = function tagSafe(tags, why) { /** Remove this term from the given terms */ -var unTag$1 = function unTag(tags, why) { +var unTag = function unTag(tags, why) { var _this = this; this.list.forEach(function (p) { @@ -6628,7 +7171,7 @@ var unTag$1 = function unTag(tags, why) { /** return only the terms that can be this tag*/ -var canBe$2 = function canBe(tag) { +var canBe = function canBe(tag) { if (!tag) { return this; } @@ -6641,10 +7184,10 @@ var canBe$2 = function canBe(tag) { }; var _04Tag = { - tag: tag$1, - tagSafe: tagSafe$1, - unTag: unTag$1, - canBe: canBe$2 + tag: tag, + tagSafe: tagSafe, + unTag: unTag, + canBe: canBe }; /* run each phrase through a function, and create a new document */ @@ -6678,7 +7221,7 @@ var map = function map(fn) { } // if it is not a list of Phrase objects, then don't try to make a Doc object - if (_typeof$1(list[0]) !== 'object' || list[0].isA !== 'Phrase') { + if (_typeof(list[0]) !== 'object' || list[0].isA !== 'Phrase') { return list; } @@ -6974,12 +7517,10 @@ var _06Lookup = createCommonjsModule(function (module, exports) { exports.lookUp = exports.lookup; }); - -var _06Lookup_1 = _06Lookup.lookup; -var _06Lookup_2 = _06Lookup.lookUp; /** freeze the current state of the document, for speed-purposes*/ -var cache$1 = function cache(options) { + +var cache = function cache(options) { var _this = this; options = options || {}; @@ -7007,7 +7548,7 @@ var cache$1 = function cache(options) { if (options.root) { t.setRoot(_this.world); - words[t.root] = true; + words[t.root] = [i]; } }); }); @@ -7032,11 +7573,11 @@ var uncache = function uncache() { }; var _07Cache = { - cache: cache$1, + cache: cache, uncache: uncache }; -var titleCase$2 = function titleCase(str) { +var titleCase$1 = function titleCase(str) { return str.charAt(0).toUpperCase() + str.substr(1); }; /** substitute-in new content */ @@ -7077,14 +7618,14 @@ var replaceWith = function replaceWith(replace) { var newPhrases; // accept a Doc object to replace - if (input && _typeof$1(input) === 'object' && input.isA === 'Doc') { + if (input && _typeof(input) === 'object' && input.isA === 'Doc') { newPhrases = input.list; _this.pool().merge(input.pool()); } else if (typeof input === 'string') { //input is a string if (options.keepCase !== false && p.terms(0).isTitleCase()) { - input = titleCase$2(input); + input = titleCase$1(input); } newPhrases = _01Tokenizer(input, _this.world, _this.pool()); //tag the new phrases @@ -7092,6 +7633,7 @@ var replaceWith = function replaceWith(replace) { var tmpDoc = _this.buildFrom(newPhrases); tmpDoc.tagger(); + newPhrases = tmpDoc.list; } else { return; //don't even bother } // try to keep its old tags, if appropriate @@ -7117,7 +7659,7 @@ var replaceWith = function replaceWith(replace) { /** search and replace match with new content */ -var replace$1 = function replace(match, _replace, options) { +var replace = function replace(match, _replace, options) { // if there's no 2nd param, use replaceWith if (_replace === undefined) { return this.replaceWith(match, options); @@ -7129,16 +7671,39 @@ var replace$1 = function replace(match, _replace, options) { var _01Replace = { replaceWith: replaceWith, - replace: replace$1 + replace: replace }; var _02Insert = createCommonjsModule(function (module, exports) { + var isObject = function isObject(obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; + }; // if it's empty, just create the phrase + + + var makeNew = function makeNew(str, doc) { + var phrase = _01Tokenizer(str, doc.world)[0]; //assume it's one sentence, for now + + + var tmpDoc = doc.buildFrom([phrase]); + tmpDoc.tagger(); + doc.list = tmpDoc.list; + return doc; + }; /** add these new terms to the end*/ - exports.append = function (str) { + + + exports.append = function () { var _this = this; + var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + if (!str) { return this; + } // if it's empty, just create the phrase + + + if (!this.found) { + return makeNew(str, this); } // clear the cache @@ -7146,8 +7711,13 @@ var _02Insert = createCommonjsModule(function (module, exports) { this.list.forEach(function (p) { //build it - var phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now - //tag it + var phrase; + + if (isObject(str) && str.isA === 'Doc') { + phrase = str.list[0].clone(); //use the first phrase + } else if (typeof str === 'string') { + phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now + } //tag it var tmpDoc = _this.buildFrom([phrase]); @@ -7168,6 +7738,11 @@ var _02Insert = createCommonjsModule(function (module, exports) { if (!str) { return this; + } // if it's empty, just create the phrase + + + if (!this.found) { + return makeNew(str, this); } // clear the cache @@ -7175,8 +7750,13 @@ var _02Insert = createCommonjsModule(function (module, exports) { this.list.forEach(function (p) { //build it - var phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now - //tag it + var phrase; + + if (isObject(str) && str.isA === 'Doc') { + phrase = str.list[0].clone(); //use the first phrase + } else if (typeof str === 'string') { + phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now + } //tag it var tmpDoc = _this2.buildFrom([phrase]); @@ -7237,13 +7817,6 @@ var _02Insert = createCommonjsModule(function (module, exports) { exports.remove = exports["delete"]; }); -var _02Insert_1 = _02Insert.append; -var _02Insert_2 = _02Insert.insertAfter; -var _02Insert_3 = _02Insert.insertAt; -var _02Insert_4 = _02Insert.prepend; -var _02Insert_5 = _02Insert.insertBefore; -var _02Insert_6 = _02Insert.concat; -var _02Insert_7 = _02Insert.remove; var shouldTrim = { clean: true, reduced: true, @@ -7251,7 +7824,7 @@ var shouldTrim = { }; /** return the document as text */ -var text$1 = function text(options) { +var text = function text(options) { var _this = this; options = options || {}; //are we showing every phrase? @@ -7263,7 +7836,7 @@ var text$1 = function text(options) { } // cache roots, if necessary - if (options === 'root' || _typeof$1(options) === 'object' && options.root) { + if (options === 'root' || _typeof(options) === 'object' && options.root) { this.list.forEach(function (p) { p.terms().forEach(function (t) { if (t.root === null) { @@ -7287,7 +7860,7 @@ var text$1 = function text(options) { }; var _01Text = { - text: text$1 + text: text }; // get all character startings in doc var termOffsets = function termOffsets(doc) { @@ -7330,9 +7903,17 @@ var calcOffset = function calcOffset(doc, result, options) { // console.log(t.post) // return n // }, 0) - - o.offset = o.terms[0].offset; - o.offset.length = o.text.length; + // The offset information for the entire doc starts at (or just before) + // the first term, and is as long as the whole text. The code originally + // copied the entire offset value from terms[0], but since we're now + // overriding 2 of the three fields, it's cleaner to just create an all- + // new object and not pretend it's "just" the same as terms[0]. + + o.offset = { + index: o.terms[0].offset.index, + start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text), + length: o.text.length + }; }); } }; @@ -7436,9 +8017,6 @@ var _02Json = createCommonjsModule(function (module, exports) { exports.data = exports.json; }); -var _02Json_1 = _02Json.json; -var _02Json_2 = _02Json.data; - var _debug = createCommonjsModule(function (module) { // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color var reset = '\x1b[0m'; @@ -7637,6 +8215,8 @@ var out = function out(method) { terms: false }).map(function (obj) { return obj.text; + }).filter(function (str) { + return str; }); } @@ -7685,7 +8265,7 @@ var _03Out = { debug: debug_1, out: out }; -var methods$2 = { +var methods$6 = { /** alphabetical order */ alpha: function alpha(a, b) { var left = a.text('clean'); @@ -7790,8 +8370,8 @@ var sortSequential = function sortSequential(doc) { }; //aliases -methods$2.alphabetical = methods$2.alpha; -methods$2.wordcount = methods$2.wordCount; // aliases for sequential ordering +methods$6.alphabetical = methods$6.alpha; +methods$6.wordcount = methods$6.wordCount; // aliases for sequential ordering var seqNames = { index: true, @@ -7814,7 +8394,7 @@ var sort = function sort(input) { return sortSequential(this); } - input = methods$2[input] || input; // apply sort method on each phrase + input = methods$6[input] || input; // apply sort method on each phrase if (typeof input === 'function') { this.list = this.list.sort(input); @@ -7834,11 +8414,11 @@ var reverse = function reverse() { /** remove any duplicate matches */ -var unique$4 = function unique() { +var unique$1 = function unique() { var list = [].concat(this.list); var obj = {}; list = list.filter(function (p) { - var str = p.text('reduced').trim(); + var str = p.text('reduced').trim() || p.text('implicit').trim(); if (obj.hasOwnProperty(str) === true) { return false; @@ -7853,11 +8433,11 @@ var unique$4 = function unique() { var _01Sort = { sort: sort, reverse: reverse, - unique: unique$4 + unique: unique$1 }; var isPunct = /[\[\]{}⟨⟩:,،、‒–—―…‹›«»‐\-;\/⁄·*\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g; var quotes = /['‘’“”"′″‴]+/g; -var methods$3 = { +var methods$5 = { // cleanup newlines and extra spaces whitespace: function whitespace(doc) { var termArr = doc.list.map(function (ts) { @@ -7947,8 +8527,8 @@ var methods$3 = { }); } }; -var _methods = methods$3; -var defaults = { +var _methods = methods$5; +var defaults$1 = { // light whitespace: true, unicode: true, @@ -7969,7 +8549,7 @@ var defaults = { honorifics: false // pronouns: true, }; -var mapping$1 = { +var mapping = { light: {}, medium: { "case": true, @@ -7979,7 +8559,7 @@ var mapping$1 = { adverbs: true } }; -mapping$1.heavy = Object.assign({}, mapping$1.medium, { +mapping.heavy = Object.assign({}, mapping.medium, { possessives: true, verbs: true, nouns: true, @@ -7991,11 +8571,11 @@ var normalize = function normalize(options) { options = options || {}; // support named forms if (typeof options === 'string') { - options = mapping$1[options] || {}; + options = mapping[options] || {}; } // set defaults - options = Object.assign({}, defaults, options); // clear the cache + options = Object.assign({}, defaults$1, options); // clear the cache this.uncache(); var termList = this.termList(); // lowercase things @@ -8095,7 +8675,7 @@ var _03Split = createCommonjsModule(function (module, exports) { } //start looking for a match.. - var regs = syntax_1(reg); + var regs = matchSyntax(reg); var matches = []; this.list.forEach(function (p) { var foundEm = p.match(regs); //no match here, add full sentence @@ -8141,7 +8721,7 @@ var _03Split = createCommonjsModule(function (module, exports) { } // start looking for our matches - var regs = syntax_1(reg); + var regs = matchSyntax(reg); var matches = []; this.list.forEach(function (p) { var foundEm = p.match(regs); //no match here, add full sentence @@ -8187,7 +8767,7 @@ var _03Split = createCommonjsModule(function (module, exports) { } //start looking for a match.. - var regs = syntax_1(reg); + var regs = matchSyntax(reg); var matches = []; this.list.forEach(function (p) { var foundEm = p.match(regs); //no match here, add full sentence @@ -8252,12 +8832,6 @@ var _03Split = createCommonjsModule(function (module, exports) { }; }); -var _03Split_1 = _03Split.splitOn; -var _03Split_2 = _03Split.splitAfter; -var _03Split_3 = _03Split.split; -var _03Split_4 = _03Split.splitBefore; -var _03Split_5 = _03Split.segment; - var eachTerm = function eachTerm(doc, fn) { var world = doc.world; doc.list.forEach(function (p) { @@ -8312,9 +8886,9 @@ var _04Case = { toTitleCase: toTitleCase, toCamelCase: toCamelCase }; +/** add this punctuation or whitespace before each match: */ var _05Whitespace = createCommonjsModule(function (module, exports) { - /** add this punctuation or whitespace before each match: */ exports.pre = function (str, concat) { if (str === undefined) { return this.list[0].terms(0).pre; @@ -8432,18 +9006,9 @@ var _05Whitespace = createCommonjsModule(function (module, exports) { return this; }; }); - -var _05Whitespace_1 = _05Whitespace.pre; -var _05Whitespace_2 = _05Whitespace.post; -var _05Whitespace_3 = _05Whitespace.trim; -var _05Whitespace_4 = _05Whitespace.hyphenate; -var _05Whitespace_5 = _05Whitespace.dehyphenate; -var _05Whitespace_6 = _05Whitespace.deHyphenate; -var _05Whitespace_7 = _05Whitespace.toQuotations; -var _05Whitespace_8 = _05Whitespace.toQuotation; -var _05Whitespace_9 = _05Whitespace.toParentheses; /** make all phrases into one phrase */ + var join = function join(str) { // clear the cache this.uncache(); // make one large phrase - 'main' @@ -8574,12 +9139,12 @@ var contract = function contract() { var _07Contract = { contract: contract }; -var methods$4 = Object.assign({}, _01Utils$1, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract); -var methods$5 = {}; // allow helper methods like .adjectives() and .adverbs() +var methods$4 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract); +var methods$3 = {}; // allow helper methods like .adjectives() and .adverbs() var 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']]; arr.forEach(function (a) { - methods$5[a[0]] = function (n) { + methods$3[a[0]] = function (n) { var m = this.match(a[1]); if (typeof n === 'number') { @@ -8590,12 +9155,12 @@ arr.forEach(function (a) { }; }); // aliases -methods$5.emojis = methods$5.emoji; -methods$5.atmentions = methods$5.atMentions; -methods$5.words = methods$5.terms; +methods$3.emojis = methods$3.emoji; +methods$3.atmentions = methods$3.atMentions; +methods$3.words = methods$3.terms; /** return anything tagged as a phone number */ -methods$5.phoneNumbers = function (n) { +methods$3.phoneNumbers = function (n) { var m = this.splitAfter('@hasComma'); m = m.match('#PhoneNumber+'); @@ -8605,10 +9170,10 @@ methods$5.phoneNumbers = function (n) { return m; }; -/** money + currency pair */ +/** Deprecated: please use compromise-numbers plugin */ -methods$5.money = function (n) { +methods$3.money = function (n) { var m = this.match('#Money #Currency?'); if (typeof n === 'number') { @@ -8620,7 +9185,7 @@ methods$5.money = function (n) { /** return all cities, countries, addresses, and regions */ -methods$5.places = function (n) { +methods$3.places = function (n) { // don't split 'paris, france' var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas @@ -8639,7 +9204,7 @@ methods$5.places = function (n) { /** return all schools, businesses and institutions */ -methods$5.organizations = function (n) { +methods$3.organizations = function (n) { var m = this.clauses(); m = m.match('#Organization+'); @@ -8651,7 +9216,7 @@ methods$5.organizations = function (n) { }; //combine them with .topics() method -methods$5.entities = function (n) { +methods$3.entities = function (n) { var r = this.clauses(); // Find people, places, and organizations var yup = r.people(); @@ -8670,9 +9235,9 @@ methods$5.entities = function (n) { }; //aliases -methods$5.things = methods$5.entities; -methods$5.topics = methods$5.entities; -var _simple = methods$5; +methods$3.things = methods$3.entities; +methods$3.topics = methods$3.entities; +var _simple = methods$3; var underOver = /^(under|over)-?/; /** match a word-sequence, like 'super bowl' in the lexicon */ @@ -8761,7 +9326,9 @@ var checkLexicon = function checkLexicon(terms, world) { }; var _01Lexicon = checkLexicon; -var apostrophes = /[\'‘’‛‵′`´]$/; // +var apostrophes = /[\'‘’‛‵′`´]$/; +var perSec = /^(m|k|cm|km|m)\/(s|h|hr)$/; // '5 k/m' +// var checkPunctuation = function checkPunctuation(terms, i, world) { var term = terms[i]; //check hyphenation @@ -8789,6 +9356,11 @@ var checkPunctuation = function checkPunctuation(terms, i, world) { term.tag(['Gerund'], 'chillin', world); } } + } // '5 km/s' + + + if (perSec.test(term.text)) { + term.tag('Unit', 'per-sec', world); } // 'NASA' is, but not 'i REALLY love it.' // if (term.tags.Noun === true && isAcronym(term, world)) { // term.tag('Acronym', 'acronym-step', world) @@ -8800,22 +9372,30 @@ var checkPunctuation = function checkPunctuation(terms, i, world) { }; -var _02Punctuation$1 = checkPunctuation; //these are regexes applied to t.text, instead of t.clean +var _02Punctuation = checkPunctuation; //these are regexes applied to t.text, instead of t.clean // order matters. var startsWith = [//web tags -[/^\w+@\w+\.[a-z]{2,3}$/, 'Email'], //not fancy -[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/, 'HashTag'], [/^@\w{2,}$/, 'AtMention'], [/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/, 'Url'], //with http/www +[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/, 'Email'], //not fancy +[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm +[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30 +[/^@\w{2,}$/, 'AtMention'], //@spencermountain +[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/, 'Url'], //with http/www [/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain //dates/times +[/^'[0-9]{2}$/, 'Year'], //like '97 [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32 -[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/, 'Time'], //4pm -[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/, 'Time'], //4:00pm +[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm +[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm [/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs [/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+ [/^[a-z0-9]*? o\'?clock$/, 'Time'], //3 oclock +[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z [/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89 [/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/, 'Date'], // 03/02/89 +[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89 +[/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3 +[/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3 //names [/^ma?c\'.*/, 'LastName'], //mc'adams [/^o\'[drlkn].*/, 'LastName'], //o'douggan @@ -8827,24 +9407,25 @@ var startsWith = [//web tags [/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/, 'Date'], // 03-02-89 //phone numbers [/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809 -[/^[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809 +[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809 //money // currency regex // /[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6] //like $5.30 [/^[-+]?[\$\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$ -[/^[-+]?[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 -[/^[-+]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers +[/^[-+]?[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 +[/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers // 50 | -50 | 3.23 | 5,999.0 | 10+ -[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|th)$/, ['Ordinal', 'NumericValue']], // .73th +[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th [/^\.[0-9]+\+?$/, ['Cardinal', 'NumericValue']], //percent [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% .. [/^\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% .. //fraction -[/^[0-9]{1,4}\/[0-9]{1,4}$/, 'Fraction'], //3/2ths +[/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths //range -[/^[0-9.]{1,2}[-–][0-9]{1,2}$/, ['Value', 'NumberRange']], //7-8 -[/^[0-9.]{1,4}(st|nd|rd|th)?[-–][0-9\.]{1,4}(st|nd|rd|th)?$/, 'NumberRange'], //5-7 +[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th +//time-range +[/^[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 //with unit [/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp //ordinal @@ -8855,7 +9436,7 @@ var romanNumeral = /^[IVXLCDM]{2,}$/; var 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 //try each of the ^regexes in our list -var checkRegex = function checkRegex(term, world) { +var checkRegex$1 = function checkRegex(term, world) { var str = term.text; // do them all! for (var r = 0; r < startsWith.length; r += 1) { @@ -8872,215 +9453,219 @@ var checkRegex = function checkRegex(term, world) { } }; -var _03Prefixes = checkRegex; //regex suffix patterns and their most common parts of speech, +var _03Prefixes = checkRegex$1; //regex suffix patterns and their most common parts of speech, //built using wordnet, by spencer kelly. //this mapping shrinks-down the uglified build -var Adj = 'Adjective'; -var Inf = 'Infinitive'; -var Pres = 'PresentTense'; -var Sing = 'Singular'; -var Past = 'PastTense'; +var Adj$1 = 'Adjective'; +var Inf$1 = 'Infinitive'; +var Pres$1 = 'PresentTense'; +var Sing$1 = 'Singular'; +var Past$1 = 'PastTense'; var Adverb = 'Adverb'; var Exp = 'Expression'; -var Actor = 'Actor'; +var Actor$1 = 'Actor'; var Verb = 'Verb'; -var Noun = 'Noun'; -var Last = 'LastName'; //the order here matters. +var Noun$1 = 'Noun'; +var Last$1 = 'LastName'; //the order here matters. //regexes indexed by mandated last-character -var endsWith$1 = { - a: [[/.[aeiou]na$/, Noun], [/.[oau][wvl]ska$/, Last], //polish (female) - [/.[^aeiou]ica$/, Sing], [/^([hyj]a)+$/, Exp] //hahah +var endsWith = { + a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female) + [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah ], - c: [[/.[^aeiou]ic$/, Adj]], + c: [[/.[^aeiou]ic$/, Adj$1]], d: [//==-ed== //double-consonant - [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past], //popped, planned + [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned //double-vowel - [/.[aeo]{2}[bdgmnprvz]ed$/, Past], //beeped, mooned, veered + [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered //-hed - [/.[aeiou][sg]hed$/, Past], //stashed, sighed + [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed //-rd - [/.[aeiou]red$/, Past], //stored - [/.[aeiou]r?ried$/, Past], //buried + [/.[aeiou]red$/, Past$1], //stored + [/.[aeiou]r?ried$/, Past$1], //buried //-led - [/.[bcdgtr]led$/, Past], //startled, rumbled - [/.[aoui]f?led$/, Past], //impaled, stifled + [/.[bcdgtr]led$/, Past$1], //startled, rumbled + [/.[aoui]f?led$/, Past$1], //impaled, stifled //-sed - [/.[iao]sed$/, Past], //franchised - [/[aeiou]n?[cs]ed$/, Past], //laced, lanced + [/.[iao]sed$/, Past$1], //franchised + [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced //-med - [/[aeiou][rl]?[mnf]ed$/, Past], //warmed, attained, engulfed + [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed //-ked - [/[aeiou][ns]?c?ked$/, Past], //hooked, masked + [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked //-ged - [/[aeiou][nl]?ged$/, Past], //engaged + [/[aeiou][nl]?ged$/, Past$1], //engaged //-ted - [/.[tdbwxz]ed$/, Past], //bribed, boxed - [/[^aeiou][aeiou][tvx]ed$/, Past], //boxed + [/.[tdbwxz]ed$/, Past$1], //bribed, boxed + [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed //-ied - [/.[cdlmnprstv]ied$/, Past], //rallied - [/[^aeiou]ard$/, Sing], //card - [/[aeiou][^aeiou]id$/, Adj], [/.[vrl]id$/, Adj]], - e: [[/.[lnr]ize$/, Inf], [/.[^aeiou]ise$/, Inf], [/.[aeiou]te$/, Inf], [/.[^aeiou][ai]ble$/, Adj], [/.[^aeiou]eable$/, Adj], [/.[ts]ive$/, Adj]], - h: [[/.[^aeiouf]ish$/, Adj], [/.v[iy]ch$/, Last], //east-europe + [/.[cdlmnprstv]ied$/, Past$1], //rallied + [/[^aeiou]ard$/, Sing$1], //card + [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]], + 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]], + h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe [/^ug?h+$/, Exp], //uhh [/^uh[ -]?oh$/, Exp] //uhoh ], - i: [[/.[oau][wvl]ski$/, Last] //polish (male) + i: [[/.[oau][wvl]ski$/, Last$1] //polish (male) ], - k: [[/^(k)+$/, Exp] //kkkk + k: [[/^(k){2}$/, Exp] //kkkk ], - l: [[/.[gl]ial$/, Adj], [/.[^aeiou]ful$/, Adj], [/.[nrtumcd]al$/, Adj], [/.[^aeiou][ei]al$/, Adj]], - m: [[/.[^aeiou]ium$/, Sing], [/[^aeiou]ism$/, Sing], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm + l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]], + m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm [/^\d+ ?[ap]m$/, 'Date']], - n: [[/.[lsrnpb]ian$/, Adj], [/[^aeiou]ician$/, Actor], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin' + n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin' ], o: [[/^no+$/, Exp], //noooo [/^(yo)+$/, Exp], //yoyo [/^woo+[pt]?$/, Exp] //woo ], - r: [[/.[bdfklmst]ler$/, 'Noun'], [/.[ilk]er$/, 'Comparative'], [/[aeiou][pns]er$/, Sing], [/[^i]fer$/, Inf], [/.[^aeiou][ao]pher$/, Actor]], - t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj], [/[aeiou].*ist$/, Adj], [/^[a-z]et$/, Verb]], - s: [[/.[rln]ates$/, Pres], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing], [/.[aeiou]sks$/, Pres], //masks - [/.[aeiou]kes$/, Pres], //bakes - [/[aeiou][^aeiou]is$/, Sing], [/[a-z]\'s$/, Noun], [/^yes+$/, Exp] //yessss + r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']], + t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]], + s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks + [/.[aeiou]kes$/, Pres$1], //bakes + [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\'s$/, Noun$1], [/^yes+$/, Exp] //yessss ], - v: [[/.[^aeiou][ai][kln]ov$/, Last] //east-europe + v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe ], - y: [[/.[cts]hy$/, Adj], [/.[st]ty$/, Adj], [/.[gk]y$/, Adj], [/.[tnl]ary$/, Adj], [/.[oe]ry$/, Sing], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj], [/.(gg|bb|zz)ly$/, Adj], [/.[aeiou]my$/, Adj], [/[ea]{2}zy$/, Adj], [/.[^aeiou]ity$/, Sing]] + 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]] }; //just a foolish lookup of known suffixes -var Adj$1 = 'Adjective'; -var Inf$1 = 'Infinitive'; -var Pres$1 = 'PresentTense'; -var Sing$1 = 'Singular'; -var Past$1 = 'PastTense'; +var Adj = 'Adjective'; +var Inf = 'Infinitive'; +var Pres = 'PresentTense'; +var Sing = 'Singular'; +var Past = 'PastTense'; var Avb = 'Adverb'; var Plrl = 'Plural'; -var Actor$1 = 'Actor'; +var Actor = 'Actor'; var Vb = 'Verb'; -var Noun$1 = 'Noun'; -var Last$1 = 'LastName'; -var Modal = 'Modal'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup +var Noun = 'Noun'; +var Last = 'LastName'; +var Modal = 'Modal'; +var Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup var suffixMap = [null, //0 null, //1 { //2-letter - ea: Sing$1, - ia: Noun$1, - ic: Adj$1, + ea: Sing, + ia: Noun, + ic: Adj, ly: Avb, "'n": Vb, "'t": Vb }, { //3-letter - oed: Past$1, - ued: Past$1, - xed: Past$1, + oed: Past, + ued: Past, + xed: Past, ' so': Avb, "'ll": Modal, "'re": 'Copula', - azy: Adj$1, + azy: Adj, + eer: Noun, end: Vb, - ped: Past$1, - ffy: Adj$1, - ify: Inf$1, + ped: Past, + ffy: Adj, + ify: Inf, ing: 'Gerund', //likely to be converted to Adj after lexicon pass - ize: Inf$1, - lar: Adj$1, - mum: Adj$1, - nes: Pres$1, - nny: Adj$1, - oid: Adj$1, - ous: Adj$1, - que: Adj$1, - rmy: Adj$1, - rol: Sing$1, - sis: Sing$1, - zes: Pres$1 + ize: Inf, + lar: Adj, + mum: Adj, + nes: Pres, + nny: Adj, + oid: Adj, + ous: Adj, + que: Adj, + rol: Sing, + sis: Sing, + zes: Pres }, { //4-letter - amed: Past$1, - aped: Past$1, - ched: Past$1, - lked: Past$1, - nded: Past$1, - cted: Past$1, - dged: Past$1, - akis: Last$1, + amed: Past, + aped: Past, + ched: Past, + lked: Past, + nded: Past, + cted: Past, + dged: Past, + akis: Last, //greek - cede: Inf$1, - chuk: Last$1, + cede: Inf, + chuk: Last, //east-europe - czyk: Last$1, + czyk: Last, //polish (male) - ects: Pres$1, + ects: Pres, ends: Vb, - enko: Last$1, + enko: Last, //east-europe - ette: Sing$1, - fies: Pres$1, + ette: Sing, + fies: Pres, fore: Avb, - gate: Inf$1, - gone: Adj$1, + gate: Inf, + gone: Adj, ices: Plrl, ints: Plrl, + ines: Plrl, ions: Plrl, less: Avb, - llen: Adj$1, - made: Adj$1, - nsen: Last$1, + llen: Adj, + made: Adj, + nsen: Last, //norway - oses: Pres$1, + oses: Pres, ould: Modal, - some: Adj$1, - sson: Last$1, + some: Adj, + sson: Last, //swedish male - tage: Inf$1, + tage: Inf, teen: 'Value', - tion: Sing$1, - tive: Adj$1, - tors: Noun$1, - vice: Sing$1 + tion: Sing, + tive: Adj, + tors: Noun, + vice: Sing }, { //5-letter - tized: Past$1, - urned: Past$1, - eased: Past$1, + tized: Past, + urned: Past, + eased: Past, ances: Plrl, - bound: Adj$1, + bound: Adj, ettes: Plrl, fully: Avb, - ishes: Pres$1, + ishes: Pres, ities: Plrl, - marek: Last$1, + marek: Last, //polish (male) - nssen: Last$1, + nssen: Last, //norway - ology: Noun$1, + ology: Noun, ports: Plrl, - rough: Adj$1, - tches: Pres$1, + rough: Adj, + tches: Pres, tieth: 'Ordinal', tures: Plrl, wards: Avb, where: Avb }, { //6-letter - auskas: Last$1, + auskas: Last, //lithuania - keeper: Actor$1, - logist: Actor$1, + keeper: Actor, + logist: Actor, teenth: 'Value' }, { //7-letter - opoulos: Last$1, + opoulos: Last, //greek - sdottir: Last$1 //swedish female + borough: Place, + //Hillsborough + sdottir: Last //swedish female }]; @@ -9088,8 +9673,8 @@ var endRegexs = function endRegexs(term, world) { var str = term.clean; var _char = str[str.length - 1]; - if (endsWith$1.hasOwnProperty(_char) === true) { - var regs = endsWith$1[_char]; + if (endsWith.hasOwnProperty(_char) === true) { + var regs = endsWith[_char]; for (var r = 0; r < regs.length; r += 1) { if (regs[r][0].test(str) === true) { @@ -9121,12 +9706,12 @@ var knownSuffixes = function knownSuffixes(term, world) { }; //all-the-way-down! -var checkRegex$1 = function checkRegex(term, world) { +var checkRegex = function checkRegex(term, world) { knownSuffixes(term, world); endRegexs(term, world); }; -var _04Suffixes = checkRegex$1; //just some of the most common emoticons +var _04Suffixes = checkRegex; //just some of the most common emoticons //faster than //http://stackoverflow.com/questions/28077049/regex-matching-emoticons @@ -9249,7 +9834,7 @@ var tagEmoji = function tagEmoji(term, world) { var _05Emoji = tagEmoji; var steps = { lexicon: _01Lexicon, - punctuation: _02Punctuation$1, + punctuation: _02Punctuation, regex: _03Prefixes, suffix: _04Suffixes, emoji: _05Emoji @@ -9455,7 +10040,7 @@ var checkNeighbours = function checkNeighbours(terms, world) { }; var _01Neighbours = checkNeighbours; -var titleCase$3 = /^[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 */ @@ -9467,7 +10052,7 @@ var checkCase = function checkCase(doc) { for (var i = 1; i < terms.length; i++) { var term = terms[i]; - if (titleCase$3.test(term.text) === true && hasNumber.test(term.text) === false) { + if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) { term.tag('ProperNoun', 'titlecase-noun', world); } } @@ -9501,13 +10086,13 @@ var checkPrefix = function checkPrefix(terms, world) { var _03Stem = checkPrefix; //similar to plural/singularize rules, but not the same -var 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]; //similar to plural/singularize rules, but not the same +var 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 -var 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, // sans, siens +var 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 /(^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]; -var isPlural_1 = { - isSingular: isSingular, - isPlural: isPlural +var isPlural_1$2 = { + isSingular: isSingular$1, + isPlural: isPlural$3 }; var noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday']; var notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/]; @@ -9536,7 +10121,7 @@ var checkPlural = function checkPlural(t, world) { } // isPlural suffix rules - if (isPlural_1.isPlural.find(function (reg) { + if (isPlural_1$2.isPlural.find(function (reg) { return reg.test(str); })) { t.tag('Plural', 'plural-rules', world); @@ -9544,7 +10129,7 @@ var checkPlural = function checkPlural(t, world) { } // isSingular suffix rules - if (isPlural_1.isSingular.find(function (reg) { + if (isPlural_1$2.isSingular.find(function (reg) { return reg.test(str); })) { t.tag('Singular', 'singular-rules', world); @@ -9636,14 +10221,14 @@ var tagOrgs = function tagOrgs(terms, world) { }; var _05Organizations = tagOrgs; -var oneLetterAcronym$1 = /^[A-Z]('s|,)?$/; +var oneLetterAcronym = /^[A-Z]('s|,)?$/; var periodSeperated = /([A-Z]\.){2}[A-Z]?/i; var oneLetterWord = { I: true, A: true }; -var isAcronym$2 = function isAcronym(term, world) { +var isAcronym = function isAcronym(term, world) { var str = term.reduced; // a known acronym like fbi if (term.tags.Acronym) { @@ -9656,6 +10241,11 @@ var isAcronym$2 = function isAcronym(term, world) { if (world.words[str]) { return false; + } // long capitalized words are not usually either + + + if (str.length > 5) { + return false; } return term.isAcronym(); @@ -9675,10 +10265,10 @@ var checkAcronym = function checkAcronym(terms, world) { } //non-period ones are harder - if (term.isUpperCase() && isAcronym$2(term, world)) { + if (term.isUpperCase() && isAcronym(term, world)) { term.tag('Acronym', 'acronym-step', world); term.tag('Noun', 'acronym-infer', world); - } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym$1.test(term.text)) { + } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { term.tag('Acronym', 'one-letter-acronym', world); term.tag('Noun', 'one-letter-infer', world); } //if it's a organization, @@ -9731,7 +10321,7 @@ var fallbacks = function fallbacks(doc, terms) { var _02Fallbacks = fallbacks; var hasNegative = /n't$/; -var irregulars$3 = { +var irregulars$2 = { "won't": ['will', 'not'], wont: ['will', 'not'], "can't": ['can', 'not'], @@ -9761,8 +10351,8 @@ var doAint = function doAint(term, phrase) { var checkNegative = function checkNegative(term, phrase) { //check named-ones - if (irregulars$3.hasOwnProperty(term.clean) === true) { - return irregulars$3[term.clean]; + if (irregulars$2.hasOwnProperty(term.clean) === true) { + return irregulars$2[term.clean]; } //this word needs it's own logic: @@ -9780,7 +10370,7 @@ var checkNegative = function checkNegative(term, phrase) { }; var _01Negative = checkNegative; -var contraction = /([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 +var 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 var easy = { ll: 'will', @@ -9791,7 +10381,7 @@ var easy = { }; // var checkApostrophe = function checkApostrophe(term) { - var parts = term.text.match(contraction); + var parts = term.text.match(contraction$1); if (parts === null) { return null; @@ -9805,7 +10395,7 @@ var checkApostrophe = function checkApostrophe(term) { }; var _02Simple = checkApostrophe; -var irregulars$4 = { +var irregulars$1 = { wanna: ['want', 'to'], gonna: ['going', 'to'], im: ['i', 'am'], @@ -9836,8 +10426,8 @@ var irregulars$4 = { var checkIrregulars = function checkIrregulars(term) { //check white-list - if (irregulars$4.hasOwnProperty(term.clean)) { - return irregulars$4[term.clean]; + if (irregulars$1.hasOwnProperty(term.clean)) { + return irregulars$1[term.clean]; } return null; @@ -9845,10 +10435,15 @@ var checkIrregulars = function checkIrregulars(term) { var _03Irregulars = checkIrregulars; var hasApostropheS = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i; -var blacklist = { +var banList = { that: true, there: true }; +var hereThere = { + here: true, + there: true, + everywhere: true +}; var isPossessive = function isPossessive(term, pool) { // if we already know it @@ -9861,7 +10456,7 @@ var isPossessive = function isPossessive(term, pool) { return false; } - if (blacklist.hasOwnProperty(term.clean)) { + if (banList.hasOwnProperty(term.reduced)) { return false; } //if end of sentence, it is possessive - "was spencer's" @@ -9889,6 +10484,11 @@ var isPossessive = function isPossessive(term, pool) { if (nextTerm.tags.Noun) { + // 'spencer's here' + if (hereThere.hasOwnProperty(nextTerm.reduced) === true) { + return false; + } + return true; } //rocket's red glare @@ -9982,7 +10582,8 @@ var checkPerfect = function checkPerfect(term, phrase) { }; var _05PerfectTense = checkPerfect; -var isRange = /^([0-9]+)[-–—]([0-9]+)$/i; //split '2-4' into '2 to 4' +var isRange = /^([0-9.]{1,3}[a-z]{0,2})[-–—]([0-9]{1,3}[a-z]{0,2})$/i; +var 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' var checkRange = function checkRange(term) { if (term.tags.PhoneNumber === true) { @@ -9993,13 +10594,19 @@ var checkRange = function checkRange(term) { if (parts !== null) { return [parts[1], 'to', parts[2]]; + } else { + parts = term.text.match(timeRange); + + if (parts !== null) { + return [parts[1], 'to', parts[4]]; + } } return null; }; var _06Ranges = checkRange; -var contraction$1 = /^(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 +var 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 // not perfect, but better than nothing, to support matching on french text. var french = { @@ -10024,7 +10631,7 @@ var french = { }; var checkFrench = function checkFrench(term) { - var parts = term.text.match(contraction$1); + var parts = term.text.match(contraction); if (parts === null || french.hasOwnProperty(parts[1]) === false) { return null; @@ -10041,6 +10648,8 @@ var checkFrench = function checkFrench(term) { var _07French = checkFrench; var isNumber = /^[0-9]+$/; +var isOrdinal = /^[0-9]+(st|nd|rd|th)$/; +var isTime = /^[0-9:]+(am|pm)$/; var createPhrase = function createPhrase(found, doc) { //create phrase from ['would', 'not'] @@ -10061,8 +10670,13 @@ var createPhrase = function createPhrase(found, doc) { t.post = ''; // tag number-ranges if (isNumber.test(t.implicit)) { - t.tags.Number = true; - t.tags.Cardinal = true; + t.tag('Cardinal', 'num-range', doc.world); + } else if (isOrdinal.test(t.implicit)) { + t.tag('Ordinal', 'ord-range', doc.world); + } else if (isTime.test(t.implicit)) { + t.tag('Time', 'time-range', doc.world); + } else if (Object.keys(t.tags).length === 0) { + t.tags.Noun = true; // if no tag, give it a noun } }); return phrase; @@ -10124,18 +10738,36 @@ var hasTag = function hasTag(doc, tag) { var miscCorrection = function miscCorrection(doc) { - //exactly like - var m = hasWord(doc, 'like'); - m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often) [like]').tag('Adverb', 'adverb-like'); //the orange. + // imperative-form + var m = hasTag(doc, 'Infinitive'); + + if (m.found) { + // you eat? + m = m.ifNo('@hasQuestionMark'); // i speak + + m = m.ifNo('(i|we|they)'); // shut the door! + + m.match('[#Infinitive] (#Determiner|#Possessive) #Noun', 0).tag('Imperative', 'shut-the'); // go-fast + + m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go + + m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it + + m.match('[#Infinitive] (it|some)', 0).tag('Imperative', 'do-it'); + } //exactly like + + + m = hasWord(doc, 'like'); + m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange. m = hasTag(doc, 'Adjective'); m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous) m = hasTag(doc, 'FirstName'); - m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('#Pronoun').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train + m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train m = hasTag(doc, 'Value'); - m = m.match('#Value #PresentTense'); + m = m.match('#Value #PresentTense').ifNo('#Copula'); if (m.found) { if (m.has('(one|1)') === true) { @@ -10146,12 +10778,16 @@ var miscCorrection = function miscCorrection(doc) { } // well i've been... - doc.match('^(well|so|okay)').tag('Expression', 'well-'); //been walking + doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second + + doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds + + doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking m = hasTag(doc, 'Gerund'); m.match("(be|been) (#Adverb|not)+? #Gerund").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse' - doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives + doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives //'her match' vs 'let her match' m = hasTag(doc, 'Possessive'); @@ -10166,7 +10802,7 @@ var miscCorrection = function miscCorrection(doc) { var fixMisc = miscCorrection; -var unique$5 = function unique(arr) { +var unique = function unique(arr) { var obj = {}; for (var i = 0; i < arr.length; i++) { @@ -10176,9 +10812,9 @@ var unique$5 = function unique(arr) { return Object.keys(obj); }; -var _unique = unique$5; // order matters +var _unique = unique; // order matters -var list = [// ==== Mutliple tags ==== +var list$5 = [// ==== Mutliple tags ==== { match: 'too much', tag: 'Adverb Adjective', @@ -10190,9 +10826,15 @@ var list = [// ==== Mutliple tags ==== reason: 'u r' }, //sometimes adverbs - 'pretty good','well above' { - match: '#Copula (pretty|dead|full|well) (#Adjective|#Noun)', + match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)', tag: '#Copula #Adverb #Adjective', reason: 'sometimes-adverb' +}, //i better .. +{ + match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', + group: 0, + tag: 'Modal', + reason: 'i-better' }, //walking is cool { match: '[#Gerund] #Adverb? not? #Copula', @@ -10233,12 +10875,8 @@ var list = [// ==== Mutliple tags ==== tag: 'Determiner', reason: 'captain-who' }, //that car goes +// { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' }, { - match: 'that #Noun [#Verb]', - group: 0, - tag: 'Determiner', - reason: 'that-determiner' -}, { match: 'a bit much', tag: 'Determiner Adverb Adjective', reason: 'bit-3' @@ -10256,7 +10894,7 @@ var list = [// ==== Mutliple tags ==== tag: 'Preposition', reason: 'which-copula' }, { - match: 'just [like]', + match: '#Copula just [like]', group: 0, tag: 'Preposition', reason: 'like-preposition' @@ -10267,12 +10905,8 @@ var list = [// ==== Mutliple tags ==== tag: 'Preposition', reason: 'noun-like' }, //fix for busted-up phrasalVerbs -{ - match: '#Noun [#Particle]', - group: 0, - tag: 'Preposition', - reason: 'repair-noPhrasal' -}, // ==== Conditions ==== +// { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' }, +// ==== Conditions ==== // had he survived, { match: '[had] #Noun+ #PastTense', @@ -10301,16 +10935,9 @@ var list = [// ==== Mutliple tags ==== match: '^which', tag: 'QuestionWord', reason: 'which-question' -}, { - match: '[which] . (#Noun)+ #Pronoun', - group: 0, - tag: 'QuestionWord', - reason: 'which-question2' -}, { - match: 'which', - tag: 'QuestionWord', - reason: 'which-question3' -}, // ==== Conjunctions ==== +}, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' }, +// { match: 'which', tag: 'QuestionWord', reason: 'which-question3' }, +// ==== Conjunctions ==== { match: '[so] #Noun', group: 0, @@ -10322,16 +10949,32 @@ var list = [// ==== Mutliple tags ==== group: 0, tag: 'Conjunction', reason: 'how-he-is-x' -}, { - match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund', - group: 0, - tag: 'Conjunction', - reason: 'when i go fishing' -}]; -var _01Misc = list; //Dates: 'june' or 'may' - -var dates = '(april|june|may|jan|august|eve)'; -var list$1 = [// ==== Holiday ==== +} // { +// match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund', +// group: 0, +// tag: 'Conjunction', +// reason: 'when-i-go-fishing', +// }, +]; +var _01Misc = list$5; +var _ambig = { + // adverbs than can be adjectives + adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'], + // names that are dates + personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'], + // names that may be months + personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'], + // names that are adjectives + personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'], + // names that are verbs + personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'], + // names that are verbs + personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'], + // names that are nouns + 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'] +}; +var dates = "(".concat(_ambig.personDate.join('|'), ")"); +var list$4 = [// ==== Holiday ==== { match: '#Holiday (day|eve)', tag: 'Holiday', @@ -10361,7 +11004,17 @@ var list$1 = [// ==== Holiday ==== group: 0, tag: 'WeekDay', reason: 'sat' -}, //sat november +}, { + match: "(in|by|before|during|on|until|after|of|within|all) [wed]", + group: 0, + tag: 'WeekDay', + reason: 'wed' +}, { + match: "(in|by|before|during|on|until|after|of|within|all) [march]", + group: 0, + tag: 'Month', + reason: 'march' +}, //sat november { match: '[sat] #Date', group: 0, @@ -10418,13 +11071,13 @@ var list$1 = [// ==== Holiday ==== { match: "#Adverb [(march|may)]", group: 0, - tag: 'Infinitive', + tag: 'Verb', reason: 'quickly-march' }, //march quickly { - match: "(march|may) [#Adverb]", + match: "[(march|may)] #Adverb", group: 0, - tag: 'Infinitive', + tag: 'Verb', reason: 'march-quickly' }, //5th of March { @@ -10481,12 +11134,12 @@ var list$1 = [// ==== Holiday ==== match: "by [".concat(dates, "]"), group: 0, tag: 'Date', - reason: 'in-june' + reason: 'by-june' }, { - match: "before [".concat(dates, "]"), + match: "after [".concat(dates, "]"), group: 0, tag: 'Date', - reason: 'in-june' + reason: 'after-june' }, { match: "#Date [".concat(dates, "]"), group: 0, @@ -10512,9 +11165,164 @@ var list$1 = [// ==== Holiday ==== match: "".concat(dates, " #Acronym? (#ProperNoun && !#Month)"), tag: 'Person', reason: 'june-smith-jr' +}, // 'second' +{ + match: "#Cardinal [second]", + tag: 'Unit', + reason: 'one-second' +}, // second quarter +// { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' }, +// 'aug 20-21' +{ + match: "#Month #NumberRange", + tag: 'Date', + reason: 'aug 20-21' +}, // timezones +// china standard time +{ + match: "(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time", + tag: 'Timezone', + reason: 'std-time' +}, // eastern time +{ + match: "(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time", + tag: 'Timezone', + reason: 'eastern-time' +}, // 5pm central +{ + match: "#Time [(eastern|mountain|pacific|central|est|pst|gmt)]", + group: 0, + tag: 'Timezone', + reason: '5pm-central' +}, // central european time +{ + match: "(central|western|eastern) european time", + tag: 'Timezone', + reason: 'cet' }]; -var _02Dates = list$1; -var _03Noun = [// ==== Plural ==== +var _02Dates = list$4; +var adjectives$1 = "(".concat(_ambig.personAdjective.join('|'), ")"); +var list$3 = [// all fell apart +{ + match: '[all] #Determiner? #Noun', + group: 0, + tag: 'Adjective', + reason: 'all-noun' +}, // very rusty +{ + match: "#Adverb [".concat(adjectives$1, "]"), + group: 0, + tag: 'Adjective', + reason: 'really-rich' +}, // rusty smith +{ + match: "".concat(adjectives$1, " #Person"), + tag: 'Person', + reason: 'randy-smith' +}, // rusty a. smith +{ + match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), + tag: 'Person', + reason: 'rusty-smith' +}, //sometimes not-adverbs +{ + match: '#Copula [(just|alone)]$', + group: 0, + tag: 'Adjective', + reason: 'not-adverb' +}, //jack is guarded +{ + match: '#Singular is #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'is-filled' +}, // smoked poutine is +{ + match: '[#PastTense] #Singular is', + group: 0, + tag: 'Adjective', + reason: 'smoked-poutine' +}, // baked onions are +{ + match: '[#PastTense] #Plural are', + group: 0, + tag: 'Adjective', + reason: 'baked-onions' +}, // well made +{ + match: 'well [#PastTense]', + group: 0, + tag: 'Adjective', + reason: 'well-made' +}, // is f*ed up +{ + match: '#Copula [fucked up?]', + tag: 'Adjective', + reason: 'swears-adjective' +}, //jack seems guarded +{ + match: '#Singular (seems|appears) #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'seems-filled' +}, // Gerund-Adjectives - 'amusing, annoying' +//a staggering cost +{ + match: '(a|an) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a|an' +}, //as amusing as +{ + match: 'as [#Gerund] as', + group: 0, + tag: 'Adjective', + reason: 'as-gerund-as' +}, // more amusing than +{ + match: 'more [#Gerund] than', + group: 0, + tag: 'Adjective', + reason: 'more-gerund-than' +}, // very amusing +{ + match: '(so|very|extremely) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'so-gerund' +}, // it was amusing +{ + match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'it-was-gerund' +}, // found it amusing +{ + match: '(found|found) it #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'found-it-gerund' +}, // a bit amusing +{ + match: 'a (little|bit|wee) bit? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a-bit-gerund' +}, // jury is out - preposition ➔ adjective +{ + match: '#Copula #Adjective? [(out|in|through)]$', + group: 0, + tag: 'Adjective', + reason: 'still-out' +}, // shut the door +{ + match: '^[#Adjective] (the|your) #Noun', + group: 0, + tag: 'Infinitive', + reason: 'shut-the' +}]; +var _03Adjective = list$3; +var _04Noun = [// ==== Plural ==== //there are reasons { match: 'there (are|were) #Adjective? [#PresentTense]', @@ -10536,7 +11344,7 @@ var _03Noun = [// ==== Plural ==== reason: 'did-a-value' }, //'the can' { - match: '#Determiner [(can|will|may)]', + match: 'the [(can|will|may)]', group: 0, tag: 'Singular', reason: 'the can' @@ -10556,12 +11364,98 @@ var _03Noun = [// ==== Plural ==== match: '#Place+ #Possessive', tag: 'Possessive', reason: 'place-possessive' -}, //big dreams, critical thinking +}, // assign all tasks +{ + match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'all-presentTense' +}, //the above is clear +{ + match: '#Determiner [#Adjective] #Copula', + group: 0, + tag: 'Noun', + reason: 'the-adj-is' +}, //real evil is { - match: '#Adjective [#PresentTense]', + match: '#Adjective [#Adjective] #Copula', + group: 0, + tag: 'Noun', + reason: 'adj-adj-is' +}, // PresentTense/Noun ambiguities +// big dreams, critical thinking +// have big dreams +{ + match: '(had|have|#PastTense) #Adjective [#PresentTense]', group: 0, tag: 'Noun', reason: 'adj-presentTense' +}, // excellent answer spencer +{ + match: '^#Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'start adj-presentTense' +}, // one big reason +{ + match: '#Value #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'one-big-reason' +}, // won widespread support +{ + match: '#PastTense #Adjective+ [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'won-wide-support' +}, // many poses +{ + match: '(many|few|several|couple) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'many-poses' +}, // very big dreams +{ + match: '#Adverb #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'very-big-dream' +}, // good wait staff +{ + match: '#Adjective [#Infinitive] #Noun', + group: 0, + tag: 'Noun', + reason: 'good-wait-staff' +}, // adorable little store +{ + match: '#Adjective #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'adorable-little-store' +}, // of basic training +{ + match: '#Preposition #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'of-basic-training' +}, // early warning +{ + match: '#Adjective [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'early-warning' +}, // justifiying higher costs +{ + match: '#Gerund #Adverb? #Comparative [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'higher-costs' +}, // do the dance +{ + match: '#Infinitive (this|that|the) [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'do-this-dance' }, //his fine { match: '(his|her|its) [#Adjective]', @@ -10595,12 +11489,24 @@ var _03Noun = [// ==== Plural ==== group: 0, tag: 'Noun', reason: 'bit-2' +}, // my first thought +{ + match: '#Possessive #Ordinal [#PastTense]', + group: 0, + tag: 'Noun', + reason: 'first-thought' }, //running-a-show { match: '#Gerund #Determiner [#Infinitive]', group: 0, tag: 'Noun', reason: 'running-a-show' +}, //the-only-reason +{ + match: '#Determiner #Adverb [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'the-reason' }, //the nice swim { match: '(the|this|those|these) #Adjective [#Verb]', @@ -10631,15 +11537,15 @@ var _03Noun = [// ==== Plural ==== group: 0, tag: 'Noun', reason: 'determiner7' -}, //by a bear. +}, //a nice deal { - match: '#Determiner #Adjective [#Infinitive]$', + match: '#Determiner #Adjective #Adjective? [#Infinitive]', group: 0, tag: 'Noun', - reason: 'a-inf' + reason: 'a-nice-inf' }, //the wait to vote { - match: '(the|this) [#Verb] #Preposition .', + match: 'the [#Verb] #Preposition .', group: 0, tag: 'Noun', reason: 'determiner1' @@ -10649,6 +11555,12 @@ var _03Noun = [// ==== Plural ==== group: 0, tag: 'Noun', reason: 'the-verb-of' +}, //next career move +{ + match: '#Adjective #Noun+ [#Infinitive] #Copula', + group: 0, + tag: 'Noun', + reason: 'career-move' }, //the threat of force { match: '#Determiner #Noun of [#Verb]', @@ -10679,22 +11591,40 @@ var _03Noun = [// ==== Plural ==== group: 0, tag: 'Noun', reason: 'technical-noun' +}, // a blown motor +{ + match: '(the|those|these|a|an) [#Participle] #Noun', + group: 0, + tag: 'Adjective', + reason: 'blown-motor' }, // walk the walk { - match: '(the|those|these) #Adjective? [#Infinitive]', + match: '(the|those|these|a|an) #Adjective? [#Infinitive]', group: 0, tag: 'Noun', reason: 'det-inf' }, { - match: '(the|those|these) #Adjective? [#PresentTense]', + match: '(the|those|these|a|an) #Adjective? [#PresentTense]', group: 0, tag: 'Noun', reason: 'det-pres' }, { - match: '(the|those|these) #Adjective? [#PastTense]', + match: '(the|those|these|a|an) #Adjective? [#PastTense]', group: 0, tag: 'Noun', reason: 'det-past' +}, // this swimming +{ + match: '(this|that) [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'this-gerund' +}, // at some point +{ + match: 'at some [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'at-some-inf' }, //air-flow { match: '(#Noun && @hasHyphen) #Verb', @@ -10718,17 +11648,18 @@ var _03Noun = [// ==== Plural ==== group: 0, tag: 'Noun', reason: 'goes-to-verb' -}, //a great run +}, //a close watch on { - match: '(a|an) #Adjective [(#Infinitive|#PresentTense)]', + match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)', + group: 0, tag: 'Noun', - reason: 'a|an2' + reason: 'a-noun-inf' }, //a tv show { - match: '(a|an) #Noun [#Infinitive]', + match: '(a|an) #Noun [#Infinitive]$', group: 0, tag: 'Noun', - reason: 'a-noun-inf' + reason: 'a-noun-inf2' }, //do so { match: 'do [so]', @@ -10741,12 +11672,6 @@ var _03Noun = [// ==== Plural ==== group: 0, tag: 'Noun', reason: 'is-pres-noun' -}, // -{ - match: '[#Infinitive] #Copula', - group: 0, - tag: 'Noun', - reason: 'inf-copula' }, //a close { match: '#Determiner #Adverb? [close]', @@ -10759,73 +11684,43 @@ var _03Noun = [// ==== Plural ==== group: 0, tag: 'Noun', reason: 'swears-noun' -}]; -var adjectives$1 = '(misty|rusty|dusty|rich|randy)'; -var list$2 = [// all fell apart -{ - match: '[all] #Determiner? #Noun', - group: 0, - tag: 'Adjective', - reason: 'all-noun' -}, // very rusty -{ - match: "#Adverb [".concat(adjectives$1, "]"), - group: 0, - tag: 'Adjective', - reason: 'really-rich' -}, // rusty smith -{ - match: "".concat(adjectives$1, " #Person"), - tag: 'Person', - reason: 'randy-smith' -}, // rusty a. smith -{ - match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), - tag: 'Person', - reason: 'rusty-smith' -}, //sometimes not-adverbs +}, // the staff were { - match: '#Copula [(just|alone)]$', + match: '(the|these) [#Singular] (were|are)', group: 0, - tag: 'Adjective', - reason: 'not-adverb' -}, //jack is guarded + tag: 'Plural', + reason: 'singular-were' +}, // running for congress { - match: '#Singular is #Adverb? [#PastTense$]', + match: '#Gerund #Adjective? for [#Infinitive]', group: 0, - tag: 'Adjective', - reason: 'is-filled' -}, // smoked poutine is + tag: 'Noun', + reason: 'running-for' +}, // running to work { - match: '[#PastTense] #Singular is', + match: '#Gerund #Adjective to [#Infinitive]', group: 0, - tag: 'Adjective', - reason: 'smoked-poutine' -}, // baked onions are + tag: 'Noun', + reason: 'running-to' +}, // any questions for { - match: '[#PastTense] #Plural are', + match: '(many|any|some|several) [#PresentTense] for', group: 0, - tag: 'Adjective', - reason: 'baked-onions' -}, //a staggering cost + tag: 'Noun', + reason: 'any-verbs-for' +}, // have fun { - match: '(a|an) [#Gerund]', + match: "(have|had) [#Adjective] #Preposition .", group: 0, - tag: 'Adjective', - reason: 'a|an' -}, // is f*ed up -{ - match: '#Copula [fucked up?]', - tag: 'Adjective', - reason: 'swears-adjective' -}, //jack seems guarded + tag: 'Noun', + reason: 'have-fun' +}, // co-founder { - match: '#Singular (seems|appears) #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'seems-filled' + match: "co #Noun", + tag: 'Actor', + reason: 'co-noun' }]; -var _04Adjective = list$2; +var adjectives = "(".concat(_ambig.adverbAdjective.join('|'), ")"); var _05Adverb = [//still good { match: '[still] #Adjective', @@ -10844,6 +11739,18 @@ var _05Adverb = [//still good group: 0, tag: 'Adverb', reason: 'so-adv' +}, // way hotter +{ + match: '[way] #Comparative', + group: 0, + tag: 'Adverb', + reason: 'way-adj' +}, // way too hot +{ + match: '[way] #Adverb #Adjective', + group: 0, + tag: 'Adverb', + reason: 'way-too-adj' }, // all singing { match: '[all] #Verb', @@ -10852,7 +11759,7 @@ var _05Adverb = [//still good reason: 'all-verb' }, // sing like an angel { - match: '#Verb [like]', + match: '(#Verb && !#Modal) [like]', group: 0, tag: 'Adverb', reason: 'verb-like' @@ -10861,9 +11768,20 @@ var _05Adverb = [//still good match: '(barely|hardly) even', tag: 'Adverb', reason: 'barely-even' +}, //even held +{ + match: '[even] #Verb', + group: 0, + tag: 'Adverb', + reason: 'even-walk' +}, // even left +{ + match: 'even left', + tag: '#Adverb #Verb', + reason: 'even-left' }, //cheering hard - dropped -ly's { - match: '#PresentTense [(hard|quick|long|bright|slow)]', + match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]', group: 0, tag: 'Adverb', reason: 'lazy-ly' @@ -10873,6 +11791,35 @@ var _05Adverb = [//still good group: 0, tag: 'Adverb', reason: 'bit-1' +}, // is well +{ + match: '#Copula [#Adverb]$', + group: 0, + tag: 'Adjective', + reason: 'is-well' +}, // a bit cold +{ + match: 'a [(little|bit|wee) bit?] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'a-bit-cold' +}, // dark green +{ + match: "[".concat(adjectives, "] #Adjective"), + group: 0, + tag: 'Adverb', + reason: 'dark-green' +}, // kinda sparkly +{ + match: "#Adverb [#Adverb]$", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly' +}, { + match: "#Adverb [#Adverb] (and|or|then)", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly-and' }]; var _06Value = [// ==== PhoneNumber ==== //1 800 ... @@ -10886,6 +11833,7 @@ var _06Value = [// ==== PhoneNumber ==== tag: 'PhoneNumber', reason: '(800) PhoneNumber' }, // ==== Currency ==== +// chinese yuan { match: '#Demonym #Currency', tag: 'Currency', @@ -10896,11 +11844,6 @@ var _06Value = [// ==== PhoneNumber ==== group: 0, tag: 'Ordinal', reason: 'second-noun' -}, // ==== Money ==== -{ - match: '#Value+ #Currency', - tag: 'Money', - reason: '15 usd' }, // ==== Unit ==== //5 yan { @@ -10920,19 +11863,30 @@ var _06Value = [// ==== PhoneNumber ==== reason: 'minus-value' }, //5 kg. { - match: '#Value #Abbreviation', - tag: 'Value', + match: '#Value [#Abbreviation]', + group: 0, + tag: 'Unit', reason: 'value-abbr' +}, { + match: '#Value [k]', + group: 0, + tag: 'Unit', + reason: 'value-k' +}, { + match: '#Unit an hour', + tag: 'Unit', + reason: 'unit-an-hour' }, //seven point five { match: '#Value (point|decimal) #Value', tag: 'Value', reason: 'value-point-value' -}, // ten grand +}, // ten bucks { - match: '#Value grand', - tag: 'Value', - reason: 'value-grand' + match: '(#Value|a) [(buck|bucks|grand)]', + group: 0, + tag: 'Currency', + reason: 'value-bucks' }, //quarter million { match: '#Determiner [(half|quarter)] #Ordinal', @@ -10943,6 +11897,12 @@ var _06Value = [// ==== PhoneNumber ==== match: 'a #Value', tag: 'Value', reason: 'a-value' +}, // ==== Money ==== +{ + match: '[#Value+] #Currency', + group: 0, + tag: 'Money', + reason: '15 usd' }, // thousand and two { match: "(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value", @@ -10950,13 +11910,57 @@ var _06Value = [// ==== PhoneNumber ==== reason: 'magnitude-and-value' }, //'a/an' can mean 1 - "a hour" { - match: '[(a|an)] (#Duration|hundred|thousand|million|billion|trillion)', + match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)', group: 0, tag: 'Value', reason: 'a-is-one' }]; -var verbs$1 = '(pat|wade|ollie|will|rob|buck|bob|mark|jack)'; -var list$3 = [// ==== Tense ==== +var verbs = "(".concat(_ambig.personVerb.join('|'), ")"); +var list$2 = [// adj -> gerund +// amusing his aunt +{ + match: '[#Adjective] #Possessive #Noun', + group: 0, + tag: 'Verb', + reason: 'gerund-his-noun' +}, // loving you +{ + match: '[#Adjective] (us|you)', + group: 0, + tag: 'Gerund', + reason: 'loving-you' +}, // slowly stunning +{ + match: '(slowly|quickly) [#Adjective]', + group: 0, + tag: 'Gerund', + reason: 'slowly-adj' +}, // like +{ + match: '(#Modal|i|they|we|do) not? [like]', + group: 0, + tag: 'PresentTense', + reason: 'modal-like' +}, // do not simply like +{ + match: 'do (simply|just|really|not)+ [(#Adjective|like)]', + group: 0, + tag: 'Verb', + reason: 'do-simply-like' +}, // does mean +{ + match: 'does (#Adverb|not)? [#Adjective]', + group: 0, + tag: 'PresentTense', + reason: 'does-mean' +}, // i mean +{ + match: 'i (#Adverb|do)? not? [mean]', + group: 0, + tag: 'PresentTense', + reason: 'i-mean' +}, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' }, +// ==== Tense ==== //he left { match: '#Noun #Adverb? [left]', @@ -10984,7 +11988,7 @@ var list$3 = [// ==== Tense ==== reason: 'had-walked' }, //would walk { - match: "[(#Modal|did) (#Adverb|not)+?] #Verb", + match: "[#Adverb+? (#Modal|did)+ (#Adverb|not)+?] #Verb", group: 0, tag: 'Auxiliary', reason: 'modal-verb' @@ -10995,35 +11999,20 @@ var list$3 = [// ==== Tense ==== tag: 'Auxiliary', reason: 'would-have' }, //would be walking -{ - match: "#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'would-be' -}, //had been walking -{ - match: "(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'had-been' -}, //was walking -{ - match: "[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)", - group: 0, - tag: 'Auxiliary', - reason: 'copula-walking' -}, //support a splattering of auxillaries before a verb +// { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' }, +//had been walking +// { +// match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`, +// group: 0, +// tag: 'Auxiliary', +// reason: 'had-been', +// }, +//support a splattering of auxillaries before a verb { match: "[(has|had) (#Adverb|not)+?] #PastTense", group: 0, tag: 'Auxiliary', reason: 'had-walked' -}, //would walk -{ - match: "[(#Modal|did) (#Adverb|not)+?] #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'modal-verb' }, // will walk { match: '[(do|does|will|have|had)] (not|#Adverb)? #Verb', @@ -11042,7 +12031,15 @@ var list$3 = [// ==== Tense ==== group: 0, tag: 'Auxiliary', reason: 'would-be' -}, //would have had +}, //were being run +{ + match: "(were|was) being [#PresentTense]", + group: 0, + tag: 'PastTense', + reason: 'was-being' +}, //have run +// { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' }, +//would have had { match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", group: 0, @@ -11054,26 +12051,28 @@ var list$3 = [// ==== Tense ==== group: 0, tag: 'Auxiliary', reason: 'had-been' +}, // was being driven +{ + match: '[(be|being|been)] #Participle', + group: 0, + tag: 'Auxiliary', + reason: 'being-foo' }, // ==== Phrasal ==== //'foo-up' { match: '(#Verb && @hasHyphen) up', - group: 0, tag: 'PhrasalVerb', reason: 'foo-up' }, { match: '(#Verb && @hasHyphen) off', - group: 0, tag: 'PhrasalVerb', reason: 'foo-off' }, { match: '(#Verb && @hasHyphen) over', - group: 0, tag: 'PhrasalVerb', reason: 'foo-over' }, { match: '(#Verb && @hasHyphen) out', - group: 0, tag: 'PhrasalVerb', reason: 'foo-out' }, //fall over @@ -11082,6 +12081,12 @@ var list$3 = [// ==== Tense ==== group: 0, tag: 'Particle', reason: 'phrasal-particle' +}, //back it up +{ + match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]', + group: 0, + tag: 'Adverb', + reason: 'phrasal-pronoun-advb' }, // ==== Copula ==== //will be running (not copula) { @@ -11115,12 +12120,8 @@ var list$3 = [// ==== Tense ==== tag: 'Infinitive', reason: 'let-him-glue' }, //he quickly foo -{ - match: '#Noun #Adverb [#Noun]', - group: 0, - tag: 'Verb', - reason: 'quickly-foo' -}, //will secure our +// { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' }, +//will secure our { match: 'will [#Adjective]', group: 0, @@ -11138,25 +12139,43 @@ var list$3 = [// ==== Tense ==== group: 0, tag: 'Verb', reason: 'adj-to' +}, // open the door +{ + match: '[open] #Determiner', + group: 0, + tag: 'Infinitive', + reason: 'open-the' +}, // compromises are possible +{ + match: '[#PresentTense] (are|were|was) #Adjective', + group: 0, + tag: 'Plural', + reason: 'compromises-are-possible' }, // would wade { - match: "#Modal [".concat(verbs$1, "]"), + match: "#Modal [".concat(verbs, "]"), group: 0, tag: 'Verb', reason: 'would-mark' }, { - match: "#Adverb [".concat(verbs$1, "]"), + match: "#Adverb [".concat(verbs, "]"), group: 0, tag: 'Verb', reason: 'really-mark' +}, //to mark +{ + match: '(to|#Modal) [mark]', + group: 0, + tag: 'PresentTense', + reason: 'to-mark' }, // wade smith { - match: "".concat(verbs$1, " #Person"), + match: "".concat(verbs, " #Person"), tag: 'Person', reason: 'rob-smith' }, // wade m. Cooper { - match: "".concat(verbs$1, " #Acronym? #ProperNoun"), + match: "".concat(verbs, " #Acronym #ProperNoun"), tag: 'Person', reason: 'rob-a-smith' }, // damn them @@ -11176,9 +12195,8 @@ var list$3 = [// ==== Tense ==== tag: 'Verb', reason: 'swear3-verb' }]; -var _07Verbs = list$3; -var places = '(paris|alexandria|houston|kobe|salvador|sydney)'; -var list$4 = [// ==== Region ==== +var _07Verbs = list$2; +var list$1 = [// ==== Region ==== //West Norforlk { match: '(west|north|south|east|western|northern|southern|eastern)+ #Place', @@ -11186,10 +12204,16 @@ var list$4 = [// ==== Region ==== reason: 'west-norfolk' }, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..) { - match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|or|pa|sc|tn|tx|ut|vt|pr)]', + 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)]', group: 0, tag: 'Region', reason: 'us-state' +}, // portland oregon +{ + match: 'portland [or]', + group: 0, + tag: 'Region', + reason: 'portland-or' }, //Foo District { match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)', @@ -11200,50 +12224,28 @@ var list$4 = [// ==== Region ==== match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun', tag: 'Region', reason: 'district-of-Foo' -}, // ==== Address ==== -{ - match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)', - tag: 'Address', - reason: 'address-st' -}, // in houston +}, // in Foo California { - match: "in [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'in-paris' -}, { - match: "near [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'near-paris' -}, { - match: "at [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'at-paris' -}, { - match: "from [".concat(places, "]"), + match: 'in [#ProperNoun] #Place', group: 0, tag: 'Place', - reason: 'from-paris' -}, { - match: "to [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'to-paris' -}, { - match: "#Place [".concat(places, "]"), - group: 0, - tag: 'Place', - reason: 'tokyo-paris' -}, // houston texas + reason: 'propernoun-place' +}, // ==== Address ==== { - match: "[".concat(places, "] #Place"), - group: 0, - tag: 'Place', - reason: 'paris-france' -}]; -var _08Place = list$4; + match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)', + tag: 'Address', + reason: 'address-st' +} // in houston +// { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' }, +// { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' }, +// { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' }, +// { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' }, +// { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' }, +// { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' }, +// // houston texas +// { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' }, +]; +var _08Place = list$1; var _09Org = [//John & Joe's { match: '#Noun (&|n) #Noun', @@ -11288,10 +12290,10 @@ var _09Org = [//John & Joe's tag: 'School', reason: 'noun-public-school' }]; -var nouns$1 = '(rose|robin|dawn|ray|holly|bill|joy|viola|penny|sky|violet|daisy|melody|kelvin|hope|mercedes|olive|jewel|faith|van|charity|miles|lily|summer|dolly|rod|dick|cliff|lane|reed|kitty|art|jean|trinity)'; -var months = '(january|april|may|june|jan|sep)'; //summer|autumn - -var list$5 = [// ==== Honorific ==== +var nouns = "(".concat(_ambig.personNoun.join('|'), ")"); +var months = "(".concat(_ambig.personMonth.join('|'), ")"); +var places = "(".concat(_ambig.personPlace.join('|'), ")"); +var list = [// ==== Honorific ==== { match: '[(1st|2nd|first|second)] #Honorific', group: 0, @@ -11340,11 +12342,17 @@ var list$5 = [// ==== Honorific ==== tag: 'Person', reason: 'possessive-name' }, { - match: '#Acronym #ProperNoun', + 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', tag: 'Person', - reason: 'acronym-titlecase', + reason: 'titlecase-acronym-titlecase', safe: true }, //ludwig van beethovan +{ + match: '#Acronym #LastName', + tag: 'Person', + reason: 'acronym-latname', + safe: true +}, //jk rowling { match: '#Person (jr|sr|md)', tag: 'Person', @@ -11375,14 +12383,24 @@ var list$5 = [// ==== Honorific ==== { match: '#Noun van der? #Noun', tag: 'Person', - reason: 'von der noun', + reason: 'van der noun', safe: true }, //king of spain { - match: '(king|queen|prince|saint|lady) of? #Noun', + match: '(king|queen|prince|saint|lady) of #Noun', tag: 'Person', reason: 'king-of-noun', safe: true +}, //lady Florence +{ + match: '(prince|lady) #Place', + tag: 'Person', + reason: 'lady-place' +}, //saint Foo +{ + match: '(king|queen|prince|saint) #ProperNoun', + tag: 'Person', + reason: 'saint-foo' }, //Foo U Ford { match: '[#ProperNoun] #Person', @@ -11433,13 +12451,13 @@ var list$5 = [// ==== Honorific ==== reason: 'bill-green' }, // faith smith { - match: "".concat(nouns$1, " #Person"), + match: "".concat(nouns, " #Person"), tag: 'Person', reason: 'ray-smith', safe: true }, // faith m. Smith { - match: "".concat(nouns$1, " #Acronym? #ProperNoun"), + match: "".concat(nouns, " #Acronym? #ProperNoun"), tag: 'Person', reason: 'ray-a-smith', safe: true @@ -11456,23 +12474,21 @@ var list$5 = [// ==== Honorific ==== tag: 'Person', reason: 'infinitive-person' }, // may waits for -{ - match: "[".concat(months, "] #PresentTense for"), - group: 0, - tag: 'Person', - reason: 'ambig-active-for' -}, // may waits for -{ - match: "[".concat(months, "] #PresentTense to"), - group: 0, - tag: 'Person', - reason: 'ambig-active-to' -}, // april will +// { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, +// may waits to +// { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, +// april will { match: "[".concat(months, "] #Modal"), group: 0, tag: 'Person', reason: 'ambig-modal' +}, // may be +{ + match: "[may] be", + group: 0, + tag: 'Verb', + reason: 'may-be' }, // would april { match: "#Modal [".concat(months, "]"), @@ -11575,13 +12591,25 @@ var list$5 = [// ==== Honorific ==== tag: 'Person', reason: 'n-acro-noun', safe: true +}, //Anthony de Marco +{ + match: '#FirstName [(de|di|du|van|von) #Person]', + group: 0, + tag: 'LastName', + reason: 'de-firstname' +}, // Paris Berelc +{ + match: "[".concat(places, "] (#ProperNoun && !#Place)"), + group: 0, + tag: 'FirstName', + reason: 'place-firstname' }]; -var _10People = list$5; +var _10People = list; var matches = []; matches = matches.concat(_01Misc); matches = matches.concat(_02Dates); -matches = matches.concat(_03Noun); -matches = matches.concat(_04Adjective); +matches = matches.concat(_03Adjective); +matches = matches.concat(_04Noun); matches = matches.concat(_05Adverb); matches = matches.concat(_06Value); matches = matches.concat(_07Verbs); @@ -11589,7 +12617,7 @@ matches = matches.concat(_08Place); matches = matches.concat(_09Org); matches = matches.concat(_10People); // cache the easier conditions up-front -var cacheRequired$1 = function cacheRequired(reg) { +var cacheRequired = function cacheRequired(reg) { var needTags = []; var needWords = []; reg.forEach(function (obj) { @@ -11609,26 +12637,27 @@ var cacheRequired$1 = function cacheRequired(reg) { tags: _unique(needTags), words: _unique(needWords) }; -}; +}; // for speed, enumerate (a|b|c) to three matches + var allLists = function allLists(m) { var more = []; var lists = m.reg.filter(function (r) { - return r.oneOf !== undefined; + return r.fastOr !== undefined; }); if (lists.length === 1) { var i = m.reg.findIndex(function (r) { - return r.oneOf !== undefined; + return r.fastOr !== undefined; }); - Object.keys(m.reg[i].oneOf).forEach(function (w) { + Object.keys(m.reg[i].fastOr).forEach(function (w) { var newM = Object.assign({}, m); newM.reg = newM.reg.slice(0); newM.reg[i] = Object.assign({}, newM.reg[i]); newM.reg[i].word = w; delete newM.reg[i].operator; - delete newM.reg[i].oneOf; - newM.reason += '-' + w; + delete newM.reg[i].fastOr; // newM.reason += '-' + w + more.push(newM); }); } @@ -11639,19 +12668,21 @@ var allLists = function allLists(m) { var all = []; matches.forEach(function (m) { - m.reg = syntax_1(m.match); + m.reg = matchSyntax(m.match); var enumerated = allLists(m); if (enumerated.length > 0) { all = all.concat(enumerated); } else { - all.push(m); + all.push(m); // console.log(m) } }); all.forEach(function (m) { - m.required = cacheRequired$1(m.reg); + m.required = cacheRequired(m.reg); return m; -}); +}); // console.log(all.length) +// console.log(all[all.length - 1]) + var matches_1 = all; var hasEvery = function hasEvery(chances) { @@ -11747,15 +12778,17 @@ var tagger = function tagger(doc) { var _02Tagger = tagger; -var addMethod = function addMethod(Doc) { +var addMethod$a = function addMethod(Doc) { /** */ var Abbreviations = /*#__PURE__*/function (_Doc) { _inherits(Abbreviations, _Doc); + var _super = _createSuper(Abbreviations); + function Abbreviations() { _classCallCheck(this, Abbreviations); - return _possibleConstructorReturn(this, _getPrototypeOf(Abbreviations).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Abbreviations, [{ @@ -11800,18 +12833,20 @@ var addMethod = function addMethod(Doc) { return Doc; }; -var Abbreviations = addMethod; +var Abbreviations = addMethod$a; var hasPeriod = /\./; -var addMethod$1 = function addMethod(Doc) { +var addMethod$9 = function addMethod(Doc) { /** */ var Acronyms = /*#__PURE__*/function (_Doc) { _inherits(Acronyms, _Doc); + var _super = _createSuper(Acronyms); + function Acronyms() { _classCallCheck(this, Acronyms); - return _possibleConstructorReturn(this, _getPrototypeOf(Acronyms).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Acronyms, [{ @@ -11859,15 +12894,16 @@ var addMethod$1 = function addMethod(Doc) { return Doc; }; -var Acronyms = addMethod$1; +var Acronyms = addMethod$9; -var addMethod$2 = function addMethod(Doc) { +var addMethod$8 = function addMethod(Doc) { /** split into approximate sub-sentence phrases */ Doc.prototype.clauses = function (n) { // an awkward way to disambiguate a comma use var commas = this["if"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool... .notIf('@hasComma . .? (and|or) .') //cool, and fun .notIf('(#City && @hasComma) #Country') //'toronto, canada' + .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd' .notIf('(#Date && @hasComma) #Year') //'july 6, 1992' .notIf('@hasComma (too|also)$') //at end of sentence .match('@hasComma'); @@ -11919,19 +12955,21 @@ var addMethod$2 = function addMethod(Doc) { return Doc; }; -var Clauses = addMethod$2; +var Clauses = addMethod$8; -var addMethod$3 = function addMethod(Doc) { +var addMethod$7 = function addMethod(Doc) { /** */ var Contractions = /*#__PURE__*/function (_Doc) { _inherits(Contractions, _Doc); + var _super = _createSuper(Contractions); + function Contractions(list, from, world) { var _this; _classCallCheck(this, Contractions); - _this = _possibleConstructorReturn(this, _getPrototypeOf(Contractions).call(this, list, from, world)); + _this = _super.call(this, list, from, world); _this.contracted = null; return _this; } @@ -11993,9 +13031,9 @@ var addMethod$3 = function addMethod(Doc) { return Doc; }; -var Contractions = addMethod$3; +var Contractions = addMethod$7; -var addMethod$4 = function addMethod(Doc) { +var addMethod$6 = function addMethod(Doc) { //pull it apart.. var parse = function parse(doc) { var things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?'); @@ -12013,17 +13051,19 @@ var addMethod$4 = function addMethod(Doc) { var Lists = /*#__PURE__*/function (_Doc) { _inherits(Lists, _Doc); + var _super = _createSuper(Lists); + function Lists() { _classCallCheck(this, Lists); - return _possibleConstructorReturn(this, _getPrototypeOf(Lists).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Lists, [{ key: "conjunctions", - + value: /** coordinating conjunction */ - value: function conjunctions() { + function conjunctions() { return this.match('(and|or)'); } /** split-up by list object */ @@ -12121,7 +13161,7 @@ var addMethod$4 = function addMethod(Doc) { return Doc; }; -var Lists = addMethod$4; +var Lists = addMethod$6; var noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace' var hasPlural = function hasPlural(doc) { @@ -12138,7 +13178,7 @@ var hasPlural = function hasPlural(doc) { }; var hasPlural_1 = hasPlural; -var irregulars$5 = { +var irregulars = { hour: 'an', heir: 'an', heirloom: 'an', @@ -12181,8 +13221,8 @@ var makeArticle = function makeArticle(doc) { var str = doc.text('normal').trim(); //explicit irregular forms - if (irregulars$5.hasOwnProperty(str)) { - return irregulars$5[str]; + if (irregulars.hasOwnProperty(str)) { + return irregulars[str]; } //spelled-out acronyms @@ -12209,20 +13249,20 @@ var makeArticle = function makeArticle(doc) { var getArticle = makeArticle; //similar to plural/singularize rules, but not the same -var isPlural$1 = [/(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 +var 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 -var 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, /(^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]; -var _rules$2 = { - isSingular: isSingular$1, - isPlural: isPlural$1 +var 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]; +var _rules = { + isSingular: isSingular, + isPlural: isPlural$2 }; var endS = /s$/; // double-check this term, if it is not plural, or singular. // (this is a partial copy of ./tagger/fallbacks/plural) // fallback plural if it ends in an 's'. -var isPlural$2 = function isPlural(str) { +var isPlural$1 = function isPlural(str) { // isSingular suffix rules - if (_rules$2.isSingular.find(function (reg) { + if (_rules.isSingular.find(function (reg) { return reg.test(str); })) { return false; @@ -12234,7 +13274,7 @@ var isPlural$2 = function isPlural(str) { } // is it a plural like 'fungi'? - if (_rules$2.isPlural.find(function (reg) { + if (_rules.isPlural.find(function (reg) { return reg.test(str); })) { return true; @@ -12243,7 +13283,7 @@ var isPlural$2 = function isPlural(str) { return null; }; -var isPlural_1$1 = isPlural$2; +var isPlural_1$1 = isPlural$1; var exceptions = { he: 'his', she: 'hers', @@ -12300,7 +13340,7 @@ var parse$1 = function parse(doc) { }; var parse_1 = parse$1; -var methods$6 = { +var methods$2 = { /** overload the original json with noun information */ json: function json(options) { var n = null; @@ -12380,7 +13420,7 @@ var methods$6 = { var toSingular = this.world.transforms.toSingular; this.forEach(function (doc) { - if (doc.has('#Singular') || hasPlural_1(doc) === false) { + if (doc.has('^#Singular+$') || hasPlural_1(doc) === false) { return; } // double-check it isn't an un-tagged plural @@ -12417,17 +13457,19 @@ var methods$6 = { return this; } }; -var methods_1 = methods$6; +var methods_1 = methods$2; var addMethod$5 = function addMethod(Doc) { /** */ var Nouns = /*#__PURE__*/function (_Doc) { _inherits(Nouns, _Doc); + var _super = _createSuper(Nouns); + function Nouns() { _classCallCheck(this, Nouns); - return _possibleConstructorReturn(this, _getPrototypeOf(Nouns).apply(this, arguments)); + return _super.apply(this, arguments); } return Nouns; @@ -12437,20 +13479,31 @@ var addMethod$5 = function addMethod(Doc) { Object.assign(Nouns.prototype, methods_1); Doc.prototype.nouns = function (n) { - // don't split 'paris, france' + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // don't split 'paris, france' + var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas var m = this.not(keep).splitAfter('@hasComma'); // combine them back together - m = m.concat(keep); + m = m.concat(keep); // don't combine over scare-quotes + + var quotes = m.quotations(); + + if (quotes.found) { + m = m.splitOn(quotes.eq(0)); + } + m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons - m = m.not('#Pronoun'); - m = m.not('(there|these)'); - m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays - // //allow possessives like "spencer's", but not generic ones like, + if (opts.keep_anaphora !== true) { + m = m.not('#Pronoun'); + m = m.not('(there|these)'); + m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays + // //allow possessives like "spencer's", but not generic ones like, + + m = m.not('(my|our|your|their|her|his)'); + } - m = m.not('(my|our|your|their|her|his)'); m = m.not('(of|for|by|the)$'); if (typeof n === 'number') { @@ -12467,22 +13520,24 @@ var Nouns = addMethod$5; var open = /\(/; var close = /\)/; -var addMethod$6 = function addMethod(Doc) { +var addMethod$4 = function addMethod(Doc) { /** anything between (these things) */ var Parentheses = /*#__PURE__*/function (_Doc) { _inherits(Parentheses, _Doc); + var _super = _createSuper(Parentheses); + function Parentheses() { _classCallCheck(this, Parentheses); - return _possibleConstructorReturn(this, _getPrototypeOf(Parentheses).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Parentheses, [{ key: "unwrap", - + value: /** remove the parentheses characters */ - value: function unwrap() { + function unwrap() { this.list.forEach(function (p) { var first = p.terms(0); first.pre = first.pre.replace(open, ''); @@ -12534,19 +13589,21 @@ var addMethod$6 = function addMethod(Doc) { return Doc; }; -var Parentheses = addMethod$6; +var Parentheses = addMethod$4; -var addMethod$7 = function addMethod(Doc) { +var addMethod$3 = function addMethod(Doc) { /** */ var Possessives = /*#__PURE__*/function (_Doc) { _inherits(Possessives, _Doc); + var _super = _createSuper(Possessives); + function Possessives(list, from, world) { var _this; _classCallCheck(this, Possessives); - _this = _possibleConstructorReturn(this, _getPrototypeOf(Possessives).call(this, list, from, world)); + _this = _super.call(this, list, from, world); _this.contracted = null; return _this; } @@ -12593,7 +13650,7 @@ var addMethod$7 = function addMethod(Doc) { return Doc; }; -var Possessives = addMethod$7; +var Possessives = addMethod$3; var pairs = { "\"": "\"", // 'StraightDoubleQuotes' @@ -12636,22 +13693,24 @@ var pairs = { }; var hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')'); -var addMethod$8 = function addMethod(Doc) { +var addMethod$2 = function addMethod(Doc) { /** "these things" */ var Quotations = /*#__PURE__*/function (_Doc) { _inherits(Quotations, _Doc); + var _super = _createSuper(Quotations); + function Quotations() { _classCallCheck(this, Quotations); - return _possibleConstructorReturn(this, _getPrototypeOf(Quotations).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Quotations, [{ key: "unwrap", - + value: /** remove the quote characters */ - value: function unwrap() { + function unwrap() { return this; } }]); @@ -12704,12 +13763,14 @@ var addMethod$8 = function addMethod(Doc) { return Doc; }; -var Quotations = addMethod$8; // walked => walk - turn a verb into it's root form +var Quotations = addMethod$2; // walked => walk - turn a verb into it's root form -var toInfinitive$1 = function toInfinitive(parsed, world) { - var verb = parsed.verb; //1. if it's already infinitive +var toInfinitive = function toInfinitive(parsed, world) { + var verb = parsed.verb; // console.log(parsed) + // verb.debug() + //1. if it's already infinitive - var str = verb.text('normal'); + var str = verb.text('reduced'); if (verb.has('#Infinitive')) { return str; @@ -12733,7 +13794,7 @@ var toInfinitive$1 = function toInfinitive(parsed, world) { return world.transforms.toInfinitive(str, world, tense); }; -var toInfinitive_1$1 = toInfinitive$1; // spencer walks -> singular +var toInfinitive_1 = toInfinitive; // spencer walks -> singular // we walk -> plural // the most-recent noun-phrase, before this verb. @@ -12745,7 +13806,7 @@ var findNoun = function findNoun(vb) { // othertimes you need its subject 'we walk' vs 'i walk' -var isPlural$3 = function isPlural(parsed) { +var isPlural$4 = function isPlural(parsed) { var vb = parsed.verb; if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) { @@ -12774,7 +13835,7 @@ var isPlural$3 = function isPlural(parsed) { return null; }; -var isPlural_1$2 = isPlural$3; // #Copula : is -> 'is not' +var isPlural_1 = isPlural$4; // #Copula : is -> 'is not' // #PastTense : walked -> did not walk // #PresentTense : walks -> does not walk // #Gerund : walking: -> not walking @@ -12789,7 +13850,12 @@ var toNegative = function toNegative(parsed, world) { if (parsed.auxiliary.found) { - parsed.auxiliary.eq(0).append('not'); + parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have' + + if (parsed.auxiliary.has('#Modal have not')) { + parsed.auxiliary.replace('have not', 'not have'); + } + return; } // is walking -> is not walking @@ -12801,7 +13867,7 @@ var toNegative = function toNegative(parsed, world) { if (vb.has('#PastTense')) { - var inf = toInfinitive_1$1(parsed, world); + var inf = toInfinitive_1(parsed, world); vb.replaceWith(inf, true); vb.prepend('did not'); return; @@ -12809,11 +13875,11 @@ var toNegative = function toNegative(parsed, world) { if (vb.has('#PresentTense')) { - var _inf = toInfinitive_1$1(parsed, world); + var _inf = toInfinitive_1(parsed, world); vb.replaceWith(_inf, true); - if (isPlural_1$2(parsed)) { + if (isPlural_1(parsed)) { vb.prepend('do not'); } else { vb.prepend('does not'); @@ -12824,7 +13890,7 @@ var toNegative = function toNegative(parsed, world) { if (vb.has('#Gerund')) { - var _inf2 = toInfinitive_1$1(parsed, world); + var _inf2 = toInfinitive_1(parsed, world); vb.replaceWith(_inf2, true); vb.prepend('not'); @@ -12832,7 +13898,7 @@ var toNegative = function toNegative(parsed, world) { } //fallback 1: walk -> does not walk - if (isPlural_1$2(parsed)) { + if (isPlural_1(parsed)) { vb.prepend('does not'); return; } //fallback 2: walk -> do not walk @@ -12842,7 +13908,25 @@ var toNegative = function toNegative(parsed, world) { return; }; -var toNegative_1 = toNegative; // turn 'would not really walk up' into parts +var toNegative_1 = toNegative; // who/what is doing this verb? +// get the prior verb most-likely doing this action +// (it can not-exist - 'close the door') + +var getSubject = function getSubject(vb) { + var behind = vb.lookBehind(); + var lastNoun = behind.nouns(null, { + keep_anaphora: true + }).last(); // support 'that' and 'this' + + if (!lastNoun.found) { + lastNoun = behind.match('(that|this|each)').last(); + lastNoun = lastNoun.tag('#Noun').nouns(); + } + + return lastNoun; +}; + +var getSubject_1 = getSubject; var parseVerb = function parseVerb(vb) { var parsed = { @@ -12850,11 +13934,13 @@ var parseVerb = function parseVerb(vb) { // 'really' negative: vb.match('#Negative'), // 'not' - auxiliary: vb.match('#Auxiliary').not('(#Negative|#Adverb)'), + auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'), // 'will' of 'will go' particle: vb.match('#Particle'), // 'up' of 'pull up' - verb: vb.match('#Verb').not('(#Adverb|#Negative|#Auxiliary|#Particle)') + verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'), + original: vb, + subject: getSubject_1(vb) }; // fallback, if no verb found if (!parsed.verb.found) { @@ -12879,12 +13965,12 @@ var parseVerb = function parseVerb(vb) { return parsed; }; -var parse$2 = parseVerb; +var parse = parseVerb; /** too many special cases for is/was/will be*/ var toBe = function toBe(parsed) { var isI = false; - var plural = isPlural_1$2(parsed); + var plural = isPlural_1(parsed); var isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) { // isI = true; @@ -12930,17 +14016,67 @@ var toBe = function toBe(parsed) { return obj; }; -var toBe_1 = toBe; +var toBe_1 = toBe; // 'may/could/should' -> 'may/could/should have' + +var doModal = function doModal(parsed) { + var str = parsed.verb.text(); + var res = { + PastTense: str + ' have', + PresentTense: str, + FutureTense: str, + Infinitive: str // Gerund: , + // Actor: '', + // PerfectTense: '', + // Pluperfect: '', + + }; + return res; +}; + +var doModal_1 = doModal; -var conjugate$2 = function conjugate(parsed, world) { +var conjugate = function conjugate(parsed, world) { var verb = parsed.verb; //special handling of 'is', 'will be', etc. if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) { return toBe_1(parsed); - } + } // special handling of 'are walking' + + + if (parsed.auxiliary.has('are') && verb.has('#Gerund')) { + var og = parsed.original.clone(); + var past = og.clone().replace('are', 'were'); + var fut = og.clone().replace('are', 'will be'); + + var _infinitive = toInfinitive_1(parsed, world); + + var res = { + PastTense: past.text(), + PresentTense: og.text(), + FutureTense: fut.text(), + Infinitive: _infinitive + }; + return res; + } // special handling of 'he could.' + + + if (verb.has('#Modal')) { + return doModal_1(parsed); + } // dont conjugate imperative form - 'close the door' + // if (parsed.auxiliary.has('do')) { + // let str = parsed.original.text() + // let res = { + // PastTense: str, + // PresentTense: str, + // FutureTense: str, + // Infinitive: str, + // } + // return res + // } + var hasHyphen = parsed.verb.termList(0).hasHyphen(); - var infinitive = toInfinitive_1$1(parsed, world); + var infinitive = toInfinitive_1(parsed, world); if (!infinitive) { return {}; @@ -12956,23 +14092,16 @@ var conjugate$2 = function conjugate(parsed, world) { return forms[k] += space + particle; }); } //put the adverb at the end? - - - if (parsed.adverb.found) { - var adverb = parsed.adverb.text(); - - var _space = hasHyphen === true ? '-' : ' '; - - if (parsed.adverbAfter === true) { - Object.keys(forms).forEach(function (k) { - return forms[k] += _space + adverb; - }); - } else { - Object.keys(forms).forEach(function (k) { - return forms[k] = adverb + _space + forms[k]; - }); - } - } //apply negative + // if (parsed.adverb.found) { + // let adverb = parsed.adverb.text() + // let space = hasHyphen === true ? '-' : ' ' + // if (parsed.adverbAfter === true) { + // Object.keys(forms).forEach(k => (forms[k] += space + adverb)) + // } else { + // Object.keys(forms).forEach(k => (forms[k] = adverb + space + forms[k])) + // } + // } + //apply negative var isNegative = parsed.negative.found; @@ -12999,8 +14128,82 @@ var conjugate$2 = function conjugate(parsed, world) { return forms; }; -var conjugate_1$1 = conjugate$2; -var methods$7 = { +var conjugate_1 = conjugate; // if something is 'modal-ish' we are forced to use past-participle +// ('i could drove' is wrong) + +var useParticiple$1 = function useParticiple(parsed) { + if (parsed.auxiliary.has('(could|should|would|may|can|must)')) { + return true; + } + + if (parsed.auxiliary.has('am .+? being')) { + return true; + } + + if (parsed.auxiliary.has('had .+? been')) { + return true; + } + + return false; +}; // conjugate 'drive' ➔ 'have driven' + + +var toParticiple = function toParticiple(parsed, world) { + //is it already a participle? + if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) { + return; + } // try to swap the main verb to its participle form + + + var obj = conjugate_1(parsed, world); + var str = obj.Participle || obj.PastTense; + + if (str) { + parsed.verb.replaceWith(str, false); + } // 'am being driven' ➔ 'have been driven' + + + if (parsed.auxiliary.has('am .+? being')) { + parsed.auxiliary.remove('am'); + parsed.auxiliary.replace('being', 'have been'); + } // add a 'have' + + + if (!parsed.auxiliary.has('have')) { + parsed.auxiliary.append('have'); + } // tag it as a participle + + + parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim' + + parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been' + + parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not' + + parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right + + parsed.auxiliary.tag('Auxiliary'); +}; + +var participle = { + useParticiple: useParticiple$1, + toParticiple: toParticiple +}; +var _toParticiple = participle.toParticiple, + useParticiple = participle.useParticiple; // remove any tense-information in auxiliary verbs + +var makeNeutral = function makeNeutral(parsed) { + //remove tense-info from auxiliaries + parsed.auxiliary.remove('(will|are|am|being)'); + parsed.auxiliary.remove('(did|does)'); + parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle + + parsed.particle.remove(); + parsed.negative.remove(); + return parsed; +}; + +var methods$1 = { /** overload the original json with verb information */ json: function json(options) { var _this = this; @@ -13021,7 +14224,7 @@ var methods$7 = { var res = []; this.forEach(function (p) { var json = p.json(options)[0]; - var parsed = parse$2(p); + var parsed = parse(p); json.parts = {}; Object.keys(parsed).forEach(function (k) { if (parsed[k] && parsed[k].isA === 'Doc') { @@ -13031,7 +14234,7 @@ var methods$7 = { } }); json.isNegative = p.has('#Negative'); - json.conjugations = conjugate_1$1(parsed, _this.world); + json.conjugations = conjugate_1(parsed, _this.world); res.push(json); }); @@ -13047,7 +14250,7 @@ var methods$7 = { var list = []; // look at internal adverbs this.forEach(function (vb) { - var advb = parse$2(vb).adverb; + var advb = parse(vb).adverb; if (advb.found) { list = list.concat(advb.list); @@ -13069,6 +14272,7 @@ var methods$7 = { return this.buildFrom(list); }, + /// Verb Inflection /**return verbs like 'we walk' and not 'spencer walks' */ isPlural: function isPlural() { @@ -13076,9 +14280,9 @@ var methods$7 = { var list = []; this.forEach(function (vb) { - var parsed = parse$2(vb); + var parsed = parse(vb); - if (isPlural_1$2(parsed, _this2.world) === true) { + if (isPlural_1(parsed, _this2.world) === true) { list.push(vb.list[0]); } }); @@ -13091,50 +14295,74 @@ var methods$7 = { var list = []; this.forEach(function (vb) { - var parsed = parse$2(vb); + var parsed = parse(vb); - if (isPlural_1$2(parsed, _this3.world) === false) { + if (isPlural_1(parsed, _this3.world) === false) { list.push(vb.list[0]); } }); return this.buildFrom(list); }, + /// Conjugation - /** */ + /** return all forms of this verb */ conjugate: function conjugate() { var _this4 = this; var result = []; this.forEach(function (vb) { - var parsed = parse$2(vb); - var forms = conjugate_1$1(parsed, _this4.world); + var parsed = parse(vb); + var forms = conjugate_1(parsed, _this4.world); result.push(forms); }); return result; }, - /** */ + /** walk ➔ walked*/ toPastTense: function toPastTense() { var _this5 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var str = conjugate_1$1(parsed, _this5.world).PastTense; + var parsed = parse(vb); // should we support 'would swim' ➔ 'would have swam' + + if (useParticiple(parsed)) { + _toParticiple(parsed, _this5.world); + + return; + } + + if (vb.has('#Imperative')) { + return; + } // don't conjugate 'to be' + + + if (vb.has('be') && vb.lookBehind('to$').found) { + return; + } // handle 'is raining' -> 'was raining' + + + if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) { + vb.replace('is', 'was'); + return; + } + + var str = conjugate_1(parsed, _this5.world).PastTense; if (str) { - vb.replaceWith(str, false); // vb.tag('PastTense') + parsed = makeNeutral(parsed); + parsed.verb.replaceWith(str, false); // vb.tag('PastTense') } }); return this; }, - /** */ + /** walk ➔ walks */ toPresentTense: function toPresentTense() { var _this6 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var obj = conjugate_1$1(parsed, _this6.world); + var parsed = parse(vb); + var obj = conjugate_1(parsed, _this6.world); var str = obj.PresentTense; // 'i look', not 'i looks' if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) { @@ -13142,36 +14370,59 @@ var methods$7 = { } if (str) { - vb.replaceWith(str, false); - vb.tag('PresentTense'); + //awkward support for present-participle form + // -- should we support 'have been swimming' ➔ 'am swimming' + if (parsed.auxiliary.has('(have|had) been')) { + parsed.auxiliary.replace('(have|had) been', 'am being'); + + if (obj.Particle) { + str = obj.Particle || obj.PastTense; + } + + return; + } + + parsed.verb.replaceWith(str, false); + parsed.verb.tag('PresentTense'); + parsed = makeNeutral(parsed); // avoid 'he would walks' + + parsed.auxiliary.remove('#Modal'); } }); return this; }, - /** */ + /** walk ➔ will walk*/ toFutureTense: function toFutureTense() { var _this7 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var str = conjugate_1$1(parsed, _this7.world).FutureTense; + var parsed = parse(vb); // 'i should drive' is already future-enough + + if (useParticiple(parsed)) { + return; + } + + var str = conjugate_1(parsed, _this7.world).FutureTense; if (str) { - vb.replaceWith(str, false); - vb.tag('FutureTense'); + parsed = makeNeutral(parsed); // avoid 'he would will go' + + parsed.auxiliary.remove('#Modal'); + parsed.verb.replaceWith(str, false); + parsed.verb.tag('FutureTense'); } }); return this; }, - /** */ + /** walks ➔ walk */ toInfinitive: function toInfinitive() { var _this8 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var str = conjugate_1$1(parsed, _this8.world).Infinitive; + var parsed = parse(vb); + var str = conjugate_1(parsed, _this8.world).Infinitive; if (str) { vb.replaceWith(str, false); @@ -13181,13 +14432,13 @@ var methods$7 = { return this; }, - /** */ + /** walk ➔ walking */ toGerund: function toGerund() { var _this9 = this; this.forEach(function (vb) { - var parsed = parse$2(vb); - var str = conjugate_1$1(parsed, _this9.world).Gerund; + var parsed = parse(vb); + var str = conjugate_1(parsed, _this9.world).Gerund; if (str) { vb.replaceWith(str, false); @@ -13197,6 +14448,26 @@ var methods$7 = { return this; }, + /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */ + toParticiple: function toParticiple() { + var _this10 = this; + + this.forEach(function (vb) { + var parsed = parse(vb); + var noAux = !parsed.auxiliary.found; + + _toParticiple(parsed, _this10.world); // dirty trick to ensure our new auxiliary is found + + + if (noAux) { + parsed.verb.prepend(parsed.auxiliary.text()); + parsed.auxiliary.remove(); + } + }); + return this; + }, + /// Negation + /** return only verbs with 'not'*/ isNegative: function isNegative() { return this["if"]('#Negative'); @@ -13207,14 +14478,19 @@ var methods$7 = { return this.ifNo('#Negative'); }, + /** return only commands - verbs in imperative mood */ + isImperative: function isImperative() { + return this["if"]('#Imperative'); + }, + /** add a 'not' to these verbs */ toNegative: function toNegative() { - var _this10 = this; + var _this11 = this; this.list.forEach(function (p) { - var doc = _this10.buildFrom([p]); + var doc = _this11.buildFrom([p]); - var parsed = parse$2(doc); + var parsed = parse(doc); toNegative_1(parsed, doc.world); }); return this; @@ -13229,25 +14505,40 @@ var methods$7 = { } return this.remove('#Negative'); + }, + + /** who, or what is doing this action? */ + subject: function subject() { + var list = []; + this.forEach(function (p) { + var found = getSubject_1(p); + + if (found.list[0]) { + list.push(found.list[0]); + } + }); + return this.buildFrom(list); } }; -var addMethod$9 = function addMethod(Doc) { +var addMethod$1 = function addMethod(Doc) { /** */ var Verbs = /*#__PURE__*/function (_Doc) { _inherits(Verbs, _Doc); + var _super = _createSuper(Verbs); + function Verbs() { _classCallCheck(this, Verbs); - return _possibleConstructorReturn(this, _getPrototypeOf(Verbs).apply(this, arguments)); + return _super.apply(this, arguments); } return Verbs; }(Doc); // add-in our methods - Object.assign(Verbs.prototype, methods$7); // aliases + Object.assign(Verbs.prototype, methods$1); // aliases Verbs.prototype.negate = Verbs.prototype.toNegative; @@ -13260,13 +14551,30 @@ var addMethod$9 = function addMethod(Doc) { var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas - var m = match.not(keep).splitAfter('@hasComma'); // // combine them back together + var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at... + + var gerund = m.match('#PastTense #Gerund'); + + if (!gerund.has('(been|am|#Auxiliary) #Gerund')) { + m = m.splitBefore(gerund.match('#Gerund')); + } // combine them back together + m = m.concat(keep); m.sort('index'); //handle slashes? //ensure there's actually a verb - m = m["if"]('#Verb'); //grab (n)th result + m = m["if"]('#Verb'); // the reason he will is ... + + if (m.has('(is|was)$')) { + m = m.splitBefore('(is|was)$'); + } //ensure it's not two verbs + + + if (m.has('#PresentTense #Adverb #PresentTense')) { + m = m.splitBefore('#Adverb #PresentTense'); + } //grab (n)th result + if (typeof n === 'number') { m = m.get(n); @@ -13279,17 +14587,19 @@ var addMethod$9 = function addMethod(Doc) { return Doc; }; -var Verbs = addMethod$9; +var Verbs = addMethod$1; -var addMethod$a = function addMethod(Doc) { +var addMethod = function addMethod(Doc) { /** */ var People = /*#__PURE__*/function (_Doc) { _inherits(People, _Doc); + var _super = _createSuper(People); + function People() { _classCallCheck(this, People); - return _possibleConstructorReturn(this, _getPrototypeOf(People).apply(this, arguments)); + return _super.apply(this, arguments); } return People; @@ -13309,7 +14619,7 @@ var addMethod$a = function addMethod(Doc) { return Doc; }; -var People = addMethod$a; +var People = addMethod; var subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People]; var extend = function extend(Doc) { @@ -13325,7 +14635,7 @@ var extend = function extend(Doc) { }; var Subset = extend; -var methods$8 = { +var methods = { misc: methods$4, selections: _simple }; @@ -13337,7 +14647,8 @@ var Doc = /*#__PURE__*/function () { _classCallCheck(this, Doc); - this.list = list; //quiet these properties in console.logs + this.list = list; // this.reasons = [] + //quiet these properties in console.logs Object.defineProperty(this, 'from', { enumerable: false, @@ -13423,28 +14734,32 @@ Doc.prototype.fromText = function (str) { return this.buildFrom(list); }; -Object.assign(Doc.prototype, methods$8.misc); -Object.assign(Doc.prototype, methods$8.selections); //add sub-classes +Object.assign(Doc.prototype, methods.misc); +Object.assign(Doc.prototype, methods.selections); //add sub-classes Subset(Doc); //aliases -var aliases$1 = { +var aliases = { untag: 'unTag', and: 'match', notIf: 'ifNo', only: 'if', onlyIf: 'if' }; -Object.keys(aliases$1).forEach(function (k) { - return Doc.prototype[k] = Doc.prototype[aliases$1[k]]; +Object.keys(aliases).forEach(function (k) { + return Doc.prototype[k] = Doc.prototype[aliases[k]]; }); var Doc_1 = Doc; var smallTagger = function smallTagger(doc) { var terms = doc.termList(); - _01Lexicon(terms, doc.world); + _01Lexicon(terms, doc.world); // run any user-given tagger functions + + doc.world.taggers.forEach(function (fn) { + fn(doc); + }); return doc; }; @@ -13487,7 +14802,7 @@ function instance(worldInstance) { var doc = new Doc_1(list, null, w); - if (lexicon) { + if (lexicon || doc.world.taggers.length > 0) { tiny(doc); } @@ -13521,31 +14836,41 @@ function instance(worldInstance) { world.verbose(bool); return this; }; + /** grab currently-used World object */ + + + nlp.world = function () { + return world; + }; + /** pre-parse any match statements */ + + + nlp.parseMatch = function (str, opts) { + return matchSyntax(str, opts); + }; /** current version of the library */ - nlp.version = _version; // alias + nlp.version = _version; // aliases nlp["import"] = nlp.load; + nlp.plugin = nlp.extend; return nlp; } -var src = instance(new World_1()); +var src$1 = instance(new World_1()); var compromise = /*#__PURE__*/Object.freeze({ __proto__: null, - 'default': src + 'default': src$1 }); -var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; -}; - -var fromTemplate = function fromTemplate(doc) { - var tmpl = doc.template('short description'); +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; @@ -13553,22 +14878,22 @@ var fromTemplate = function fromTemplate(doc) { var template = fromTemplate; -var preProcess = function preProcess(doc) { +const preProcess = function (doc) { doc.parentheses().remove(); return doc; }; var _00PreProcess = preProcess; -var cleanUp = function cleanUp(s) { +const cleanUp = function (s) { // 'an actor and was a politician' s.remove('and #Copula .*'); return s; }; // founded in 1952 as the flagship .. -var findPivot = function findPivot(s) { - var m = s.matchOne('#Copula+ (a|an|the|any|one) of?'); +const findPivot = function (s) { + let m = s.matchOne('#Copula+ (a|an|the|any|one) of?'); if (!m.found) { m = s.matchOne('#Copula+'); @@ -13586,10 +14911,10 @@ var findPivot = function findPivot(s) { return null; } - var f = s.splitOn(m); - var verb = f.eq(1); - var article = verb.match("(a|an|the|any)? of?"); - verb.remove("(a|an|the|any)? of?"); + let f = s.splitOn(m); + let verb = f.eq(1); + let article = verb.match(`(a|an|the|any)? of?`); + verb.remove(`(a|an|the|any)? of?`); return { before: f.eq(0), verb: f.eq(1), @@ -13600,7 +14925,7 @@ var findPivot = function findPivot(s) { var _01Pivot = findPivot; -var byClause = function byClause(s) { +const byClause = function (s) { // 'an actor and also a politician' s.remove('and (also|eventually) (a|an|the|#Possessive) .*'); // 'an actor who was a politician' @@ -13614,7 +14939,7 @@ var byClause = function byClause(s) { var _02ByClause = byClause; -var safeCuts = function safeCuts(s) { +const safeCuts = function (s) { // 'in hamilton, Canada' if (s.has('(#Place && @hasComma) #Country+$')) { s.remove('#Country+$'); @@ -13652,7 +14977,7 @@ var safeCuts = function safeCuts(s) { var _03SafeCuts = safeCuts; -var isIndependent = function isIndependent(c) { +const isIndependent = function (c) { if (c.has('^(and|the|which|who|whom|also|a|an|the)')) { return true; } // 'part of abu dabi' @@ -13685,7 +15010,7 @@ var isIndependent = function isIndependent(c) { return false; }; -var hardCuts = function hardCuts(s) { +const hardCuts = function (s) { // .. in san fransisco if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) { s.remove('(located|based) in #Place+$'); @@ -13699,11 +15024,11 @@ var hardCuts = function hardCuts(s) { } // by clause - var clauses = s.clauses(); + let clauses = s.clauses(); if (clauses.length > 1) { - var first = clauses.eq(0); - var second = clauses.eq(1); //can we just choose the first clause? + let first = clauses.eq(0); + let second = clauses.eq(1); //can we just choose the first clause? if (isIndependent(second)) { s = clauses.eq(0); @@ -13715,7 +15040,7 @@ var hardCuts = function hardCuts(s) { s = clauses.eq(0); } else { // can we remove the last clause, atleast? - var last = clauses.last(); + let last = clauses.last(); if (isIndependent(last)) { clauses.list.pop(); @@ -13747,7 +15072,7 @@ var hardCuts = function hardCuts(s) { var _04HardCuts = hardCuts; -var lastTry = function lastTry(s) { +const lastTry = function (s) { s.remove('(small|large|minor|major)'); s.remove('(extinct|retired|annual|biweekly|monthly|daily)'); s.remove('(female|male)'); @@ -13761,9 +15086,9 @@ var lastTry = function lastTry(s) { var _05LastTry = lastTry; //check text is appropriate length -var isGood = function isGood(doc, options) { +const isGood = function (doc, options) { if (doc && typeof doc.text === 'function') { - var text = doc.text(); + let text = doc.text(); if (text && text.length > options.min && text.length < options.max) { return true; @@ -13781,7 +15106,7 @@ function getCjsExportFromNamespace (n) { var nlp = getCjsExportFromNamespace(compromise); -var post = function post(s) { +const post = function (s) { s.remove('^(and|or|but)'); s.remove('(and|or|but)$'); s.post(''); // remove trailing comma @@ -13790,23 +15115,23 @@ var post = function post(s) { }; // let count = 0 -var doSentence = function doSentence(doc, options) { - var sentence = doc.sentences(0); +const doSentence = function (doc, options) { + let sentence = doc.sentence(0); if (!sentence) { return ''; } - var txt = sentence.text(); - var s = nlp(txt); + let txt = sentence.text(); + let s = nlp(txt); _00PreProcess(s); - var pivot = _01Pivot(s); // if we can't pivot it properly, don't bother + let pivot = _01Pivot(s); // if we can't pivot it properly, don't bother if (!pivot || !pivot.verb || !pivot.verb.found) { return ''; } - var after = pivot.after; + let after = pivot.after; if (options.article && pivot.article && pivot.article.found) { after.prepend(pivot.article.text()); @@ -13856,39 +15181,31 @@ var doSentence = function doSentence(doc, options) { var sentence = doSentence; -var bad = ['living', 'births', 'former', 'deceased', 'missing', 'with', 'descent', 'award', 'winners', 'nominees', 'alumni', 'other'].map(function (str) { - return new RegExp("\\b".concat(str, "\\b"), 'i'); -}); -var good = ['male', 'female'].map(function (str) { - return new RegExp("\\b".concat(str, "\\b"), 'i'); -}); -var like = ['male', 'female', 'century'].map(function (str) { - return new RegExp("\\b".concat(str, "\\b"), 'i'); -}); -var dislike = ['people', 'place', 'from', 'in', 'people from'].map(function (str) { - return new RegExp("\\b".concat(str, "\\b")); -}, 'i'); +const bad$1 = ['living', 'births', 'former', 'deceased', 'missing', 'with', 'descent', 'award', 'winners', 'nominees', 'alumni', 'other'].map(str => new RegExp(`\\b${str}\\b`, 'i')); +const good$1 = ['male', 'female'].map(str => new RegExp(`\\b${str}\\b`, 'i')); +const like$1 = ['male', 'female', 'century'].map(str => new RegExp(`\\b${str}\\b`, 'i')); +const dislike$1 = ['people', 'place', 'from', 'in', 'people from'].map(str => new RegExp(`\\b${str}\\b`), 'i'); var regs = { - good: good, - bad: bad, - like: like, - dislike: dislike -}; - -var like$1 = regs.like, - dislike$1 = regs.dislike, - good$1 = regs.good, - bad$1 = regs.bad; -var hasYear = /[0-9]{4}/; -var isPlural$4 = /s$/; - -var fromCategory = function fromCategory(doc) { - var cats = doc.categories(); // try to focus on the best ones, first - - var tmp = cats.filter(function (cat) { - return good$1.find(function (reg) { - return reg.test(cat); - }); + good: good$1, + bad: bad$1, + like: like$1, + dislike: dislike$1 +}; + +const { + like, + dislike, + good, + bad +} = regs; +const hasYear = /[0-9]{4}/; +const isPlural = /s$/; + +const fromCategory = function (doc) { + let cats = doc.categories(); // try to focus on the best ones, first + + let tmp = cats.filter(cat => { + return good.find(reg => reg.test(cat)); }); if (tmp.length > 0) { @@ -13896,10 +15213,8 @@ var fromCategory = function fromCategory(doc) { } // remove bad ones - cats = cats.filter(function (cat) { - if (bad$1.find(function (reg) { - return reg.test(cat); - })) { + cats = cats.filter(cat => { + if (bad.find(reg => reg.test(cat))) { return false; } @@ -13915,10 +15230,8 @@ var fromCategory = function fromCategory(doc) { } // look at sorting by preferences - tmp = cats.filter(function (cat) { - return like$1.find(function (reg) { - return reg.test(cat); - }); + tmp = cats.filter(cat => { + return like.find(reg => reg.test(cat)); }); if (tmp.length > 0) { @@ -13926,9 +15239,9 @@ var fromCategory = function fromCategory(doc) { } // remove disliked ones - tmp = cats.filter(function (cat) { + tmp = cats.filter(cat => { // not a plural ending - if (isPlural$4.test(cat) === false) { + if (isPlural.test(cat) === false) { return false; } // just one word @@ -13937,9 +15250,7 @@ var fromCategory = function fromCategory(doc) { return false; } - return dislike$1.find(function (reg) { - return reg.test(cat); - }) === undefined; + return dislike.find(reg => reg.test(cat)) === undefined; }); if (tmp.length > 0) { @@ -13947,9 +15258,9 @@ var fromCategory = function fromCategory(doc) { } // sort them by most words - cats = cats.sort(function (a, b) { - var aWords = a.split(' ').length; - var bWords = b.split(' ').length; + cats = cats.sort((a, b) => { + let aWords = a.split(' ').length; + let bWords = b.split(' ').length; if (aWords > bWords) { return -1; @@ -13965,27 +15276,40 @@ var fromCategory = function fromCategory(doc) { var _01Choose = fromCategory; -var titleCase$4 = function 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' -var changeCat = function changeCat(cat, options) { - var c = nlp(cat); +const changeCat = function (cat, options) { + let c = nlp(cat); c.nouns().toSingular(); // add article to the front if (options.article) { - var article = 'A'; - var noun = c.nouns(0); + let article = 'A'; // let noun = c.nouns(0) - if (noun && noun.found) { - article = c.nouns(0).json({ - terms: false - })[0].article || article; - article = titleCase$4(article); + if (useAn(cat) === true) { + // console.log(c.nouns(0)) + // article = c.nouns(0).json({ terms: false })[0].article || article + article = 'An'; } - var first = c.terms(0); + let first = c.terms(0); if (first.has('#ProperNoun') === false) { first.toLowerCase(); @@ -14001,8 +15325,8 @@ var changeCat = function changeCat(cat, options) { var _02Change = changeCat; -var byCategory = function byCategory(doc, options) { - var cat = _01Choose(doc); +const byCategory = function (doc, options) { + let cat = _01Choose(doc); if (!cat) { return ''; @@ -14013,7 +15337,7 @@ var byCategory = function byCategory(doc, options) { var category = byCategory; -var defaults$1 = { +const defaults = { article: true, template: true, sentence: true, @@ -14022,18 +15346,18 @@ var defaults$1 = { min: 3 }; -var seemsGood = function seemsGood(txt, options) { +const seemsGood = function (txt, options) { return txt && txt.length > 5 && txt.length < options.max; }; -var plugin = function plugin(models) { +const plugin = function (models) { // add a new method to main class models.Doc.prototype.summary = function (options) { - var doc = this; + let doc = this; options = options || {}; - options = Object.assign({}, defaults$1, options); // generate from {{short description}} template + options = Object.assign({}, defaults, options); // generate from {{short description}} template - var txt = ''; + let txt = ''; if (options.template) { txt = template(doc); @@ -14061,30 +15385,30 @@ var plugin = function plugin(models) { models.Doc.prototype.article = function () { - var txt = ''; // prefer the 2nd sentence + 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.sentences(0).text(); + txt = this.sentence(0).text(); } - var doc = nlp(txt); - var found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase(); + let doc = nlp(txt); + let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase(); return found || 'it'; }; // was event in past? is person dead? models.Doc.prototype.tense = function () { - var txt = this.sentence().text(); - var doc = nlp(txt); - var copula = doc.match('#Copula+').first(); + let txt = this.sentence().text(); + let doc = nlp(txt); + let copula = doc.match('#Copula+').first(); if (copula.has('was')) { return 'Past'; } - var vb = doc.verbs(0); + let vb = doc.verbs(0); if (vb.has('#PastTense')) { return 'Past'; @@ -14098,6 +15422,6 @@ var plugin = function plugin(models) { }; }; -var src$1 = plugin; +var src = plugin; -export default src$1; +export default src; diff --git a/plugins/summary/package-lock.json b/plugins/summary/package-lock.json index efb465a5..e54e1b60 100644 --- a/plugins/summary/package-lock.json +++ b/plugins/summary/package-lock.json @@ -1,446 +1,3510 @@ { "name": "wtf-plugin-summary", "version": "0.2.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-summary", + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "compromise": "13.10.5" + }, + "devDependencies": { + "@babel/core": "7.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "rollup": "2.44.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.1.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@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.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@rollup/plugin-node-resolve/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==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "13.9.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.2.tgz", + "integrity": "sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/compromise": { + "version": "13.10.5", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", + "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "dependencies": { + "efrt-unpack": "2.2.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/efrt-unpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/efrt-unpack/-/efrt-unpack-2.2.0.tgz", + "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "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": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@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.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.9.0", + "@babel/types": "^7.13.0", "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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.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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "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.12.11", "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.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.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.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.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.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-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@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.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.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.8.3", - "@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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -452,6 +3516,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3534,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 +3552,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 +3571,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 +3607,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,88 +4018,96 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, "@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": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", "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.19.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,15 +4148,60 @@ "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" } }, + "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", @@ -1072,25 +4218,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.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.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1111,10 +4249,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { @@ -1143,6 +4291,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1150,9 +4304,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.10.5", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", + "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", "requires": { "efrt-unpack": "2.2.0" } @@ -1173,12 +4327,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.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.8.3", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1197,28 +4351,51 @@ "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { + "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.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.4", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "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" + }, + "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 +4426,57 @@ "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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 +4490,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 +4514,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 +4523,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 +4536,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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 }, @@ -1349,11 +4549,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.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", + "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", @@ -1383,6 +4594,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", @@ -1390,9 +4607,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": { @@ -1411,43 +4628,73 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "is-bigint": { + "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.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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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 +4707,27 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, + "is-set": { + "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": { + "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 +4737,31 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 +4769,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,53 +4809,25 @@ "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==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "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" - } + "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": { "version": "0.25.7", @@ -1580,16 +4844,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 +4866,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "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.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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } }, "object-keys": { "version": "1.1.1", @@ -1647,15 +4894,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 +4914,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 +4932,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 +4969,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,35 +4984,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +5023,15 @@ } }, "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": { - "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" @@ -1854,12 +5064,12 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "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": { @@ -1914,16 +5124,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": { @@ -1942,16 +5151,30 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { "version": "0.5.7", @@ -1960,9 +5183,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", @@ -1992,44 +5215,44 @@ "through": "2" } }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "safe-buffer": "~5.1.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.trim": { + "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", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.2" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimend": { + "version": "1.0.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", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "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==", + "string.prototype.trimstart": { + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -2042,13 +5265,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 +5338,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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.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,21 +5405,24 @@ "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", "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", @@ -2166,11 +5457,57 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "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.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": { + "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.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", + "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" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/summary/package.json b/plugins/summary/package.json index e34c8e0f..4f3a32a0 100644 --- a/plugins/summary/package.json +++ b/plugins/summary/package.json @@ -1,12 +1,16 @@ { "name": "wtf-plugin-summary", "description": "text-summary plugin for wtf_wikipedia", - "version": "0.2.0", + "version": "0.3.0", "main": "./builds/wtf-plugin-summary.js", "unpkg": "./builds/wtf-plugin-summary.min.js", "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", @@ -24,24 +28,24 @@ "printWidth": 100 }, "dependencies": { - "compromise": "^13.1.1" + "compromise": "13.10.5" }, "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.13.14", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-node-resolve": "11.2.1", + "rollup": "2.44.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.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.2.2" }, - "licence": "MIT" + "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/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/src/index.js b/plugins/summary/src/index.js index c250607c..a793d56a 100644 --- a/plugins/summary/src/index.js +++ b/plugins/summary/src/index.js @@ -48,10 +48,10 @@ 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.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/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/plugins/summary/src/template/index.js b/plugins/summary/src/template/index.js index 32b4c166..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) { +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/tests/stress.test.js b/plugins/summary/tests/stress.test.js index 9eeda3fd..4478079b 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 }) || '-') // }) // }) @@ -24,12 +24,11 @@ test('first-sentence cleanup summary', (t) => { let count = 0 arr.forEach((txt) => { let str = wtf(txt).summary({ article: false }) - // console.log(str) if (str) { count += 1 } }) - let want = parseInt(arr.length * 0.8, 10) + let want = parseInt(arr.length * 0.75, 10) t.ok(count > want, count + ' > ' + want) t.end() }) 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/README.md b/plugins/wikis/openstreetmap/README.md new file mode 100644 index 00000000..00003a55 --- /dev/null +++ b/plugins/wikis/openstreetmap/README.md @@ -0,0 +1,16 @@ +Instructions for parsing OpenStreetMap's wiki at [https://wiki.openstreetmap.org](https://wiki.openstreetmap.org) + + +```js +wtf.extend(require('./plugin.js')) +``` + +The OSM wiki api uses a custom path: +```js +wtf.fetch('https://wiki.openstreetmap.org/wiki/Tag:highway%3Dmotorway', { path: '/w/api.php' }).then((doc) => { + console.log(doc.templates('ValueDescription')) +}) +``` + +Some of the data in the osm wiki, such as [Map_features](https://wiki.openstreetmap.org/wiki/Map_features) is generated dynamically through [{{Taglist}}](https://wiki.openstreetmap.org/wiki/Taginfo/Taglists), which means it cannot be retrieved. + diff --git a/plugins/wikis/openstreetmap/package-lock.json b/plugins/wikis/openstreetmap/package-lock.json new file mode 100644 index 00000000..c0e9d029 --- /dev/null +++ b/plugins/wikis/openstreetmap/package-lock.json @@ -0,0 +1,36 @@ +{ + "name": "wtf-plugin-openstreetmap", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "wtf-plugin-openstreetmap", + "version": "0.0.1", + "license": "MIT", + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, + "dependencies": { + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true + } + } +} diff --git a/plugins/wikis/openstreetmap/package.json b/plugins/wikis/openstreetmap/package.json new file mode 100644 index 00000000..425f4960 --- /dev/null +++ b/plugins/wikis/openstreetmap/package.json @@ -0,0 +1,16 @@ +{ + "name": "wtf-plugin-openstreetmap", + "description": "plugin for wtf_wikipedia", + "version": "0.0.1", + "main": "./plugin.js", + "author": "Spencer Kelly (spencermountain)", + "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/wikis/openstreetmap", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + }, + "license": "MIT" +} diff --git a/plugins/wikis/openstreetmap/plugin.js b/plugins/wikis/openstreetmap/plugin.js new file mode 100644 index 00000000..60d840df --- /dev/null +++ b/plugins/wikis/openstreetmap/plugin.js @@ -0,0 +1,16 @@ +const boxes = { + KeyDescription: true, + ValueDescription: true, + Place: true, +} + +const plugin = (models, templates, infoboxes) => { + // add infoboxes + Object.assign(infoboxes, boxes) + // add templates + // templates.tag = (text, data) => { + // // console.log(data) + // return + // } +} +module.exports = plugin diff --git a/plugins/wikis/wikinews/README.md b/plugins/wikis/wikinews/README.md new file mode 100644 index 00000000..81a19c82 --- /dev/null +++ b/plugins/wikis/wikinews/README.md @@ -0,0 +1,32 @@ +
+ + +
a plugin for wtf_wikipedia
+ + + + + + + + + + +
+
+ +
+ npm install wtf-plugin-wikinews +
+ +A work-in-progress plugin that provides support for infoboxes and templates from the wikinews project. + +```js +const wtf = require('wtf_wikipedia') +wtf.extend(require('wtf-plugin-wikinews')) +;(async () => { + await wtf.fetch('Arnold Schwarzenegger marks three day visit to Canada','wikinews').json() +})() +``` + +MIT \ No newline at end of file diff --git a/plugins/wikis/wikinews/package-lock.json b/plugins/wikis/wikinews/package-lock.json new file mode 100644 index 00000000..44e869a6 --- /dev/null +++ b/plugins/wikis/wikinews/package-lock.json @@ -0,0 +1,36 @@ +{ + "name": "wtf-plugin-wikinews", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "wtf-plugin-wikinews", + "version": "0.0.1", + "license": "MIT", + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, + "dependencies": { + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true + } + } +} diff --git a/plugins/wikis/wikinews/package.json b/plugins/wikis/wikinews/package.json new file mode 100644 index 00000000..56708b0e --- /dev/null +++ b/plugins/wikis/wikinews/package.json @@ -0,0 +1,16 @@ +{ + "name": "wtf-plugin-wikinews", + "description": "plugin for wtf_wikipedia", + "version": "0.0.1", + "main": "./plugin.js", + "author": "Spencer Kelly (spencermountain)", + "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/wikis/wikinews", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + }, + "license": "MIT" +} diff --git a/plugins/wikis/wikinews/plugin.js b/plugins/wikis/wikinews/plugin.js new file mode 100644 index 00000000..acee77d3 --- /dev/null +++ b/plugins/wikis/wikinews/plugin.js @@ -0,0 +1,7 @@ +const templates = require('./templates') + +const plugin = (models, _templates) => { + // add new templates + Object.assign(_templates, templates) +} +module.exports = plugin diff --git a/plugins/wikis/wikinews/templates.js b/plugins/wikis/wikinews/templates.js new file mode 100644 index 00000000..b01533f0 --- /dev/null +++ b/plugins/wikis/wikinews/templates.js @@ -0,0 +1,36 @@ +const templates = { + // https://en.wikinews.org/wiki/Template:W + w: (tmpl, list, parser) => { + let obj = parser(tmpl, ['target', 'label']) + if (obj.label) { + return `[[${obj.target}|${obj.label}]]` + } + return `[[${obj.target}]]` + }, + wikipedia: (tmpl, list, parser) => { + let obj = parser(tmpl, ['target', 'label']) + if (obj.label) { + return `[[${obj.target}|${obj.label}]]` + } + return `[[${obj.target}]]` + }, + 'km to mi': (tmpl, list, parser) => { + let obj = parser(tmpl, ['km']) + let num = Number(obj.km) || 0 + let m = num * 0.62137 + m = Math.round(m * 10) / 10 + if (!m) { + return `${obj.km} km` + } + return `${obj.km} km (${m} mi)` + }, + 'mi to km': (tmpl, list, parser) => { + let obj = parser(tmpl, ['mi']) + let num = Number(obj.mi) || 0 + let m = num * 1.609344 + m = Math.round(m * 10) / 10 + return `${obj.mi} mi (${m} km)` + }, +} +templates.wikipediapar = templates.wikipedia +module.exports = templates diff --git a/plugins/wikis/wikinews/wikinews-templates.json b/plugins/wikis/wikinews/wikinews-templates.json new file mode 100644 index 00000000..899abee5 --- /dev/null +++ b/plugins/wikis/wikinews/wikinews-templates.json @@ -0,0 +1,842 @@ +[ + // ["source", 71181], + // ["w", 64382], + ["publish", 20198], + ["archive", 13303], + ["haveyoursay", 11703], + ["wikinews", 8357], + ["archived", 5731], + ["image source", 3880], + ["image credit", 3030], + ["image", 2170], + ["archive-unreviewed", 2144], + ["cricket match batsman status", 2143], + ["wniq", 2000], + ["original", 1824], + ["cricket match bowler status", 1211], + ["pd-article", 1202], + ["wni response", 1181], + ["wikipediapar", 947], + ["source-pr", 940], + ["quoteleft", 863], + ["quoteright", 770], + ["wikipedia", 736], + ["sisters", 553], + ["missing image", 532], + ["wikt", 482], + ["interview", 470], + ["united kingdom", 406], + ["cricket match box end", 402], + ["-", 380], + ["new zealand", 375], + ["crime and law", 366], + ["wnir", 334], + ["published", 328], + ["footballbox", 313], + ["voa", 305], + ["wikipediapars", 302], + ["byline", 299], + ["es", 299], + ["ice hockey box score", 297], + ["australian news", 257], + ["translated quote", 251], + ["canadian news", 248], + ["returnto", 244], + ["translated wikinews", 235], + ["obituaries", 232], + ["booked", 231], + ["original reporting", 227], + ["hys question left", 217], + ["india", 215], + ["australia", 206], + ["wikinews shorts header", 202], + ["translation note", 202], + ["cricket match batting box begin", 201], + ["cricket match bowling box begin", 201], + ["archive-sighted", 200], + ["dateline", 199], + ["user", 197], + ["wikimediamention", 195], + ["audio box 2", 182], + ["pakistan", 180], + ["canada", 171], + ["picture select", 171], + ["legend", 168], + ["aviation", 168], + ["disasters and accidents", 163], + ["loss", 155], + ["fa", 150], + ["economy and business", 147], + ["football", 145], + ["afghanistan", 141], + ["update", 137], + ["politics and conflicts", 137], + ["2008 beijing olympic medal count/sub", 136], + ["space", 128], + ["2008 us presidential election", 123], + ["correction", 120], + ["iraq", 118], + ["china", 116], + ["matchscore", 112], + ["broadcast report", 109], + ["sports", 107], + ["internet", 105], + ["united states", 102], + ["health", 100], + ["iran", 95], + ["languageicon", 93], + ["hys", 92], + ["aussieissue", 90], + ["russia", 87], + ["2012 us presidential election", 87], + ["uk", 85], + ["commons", 83], + ["footballbox-ver", 83], + ["blogsource", 82], + ["palestine", 81], + ["brief credits", 79], + ["turkey", 78], + ["israel", 75], + ["hys question right", 73], + ["lgbt", 72], + ["japan", 71], + ["somalia", 67], + ["scientology", 65], + ["france", 65], + ["worldcup2006", 64], + ["zimbabwe", 63], + ["chile", 62], + ["infobox", 61], + ["thailand", 59], + ["philippines", 59], + ["2012 olympic paralympics", 58], + ["pedia", 57], + ["nopublish", 57], + ["commonscat", 57], + ["indonesia", 57], + ["picture select l", 57], + ["ontarioprovincialelection2007", 56], + ["egypt", 55], + ["texas", 53], + ["north korea", 52], + ["wikinews shorts expand", 52], + ["mainspace disambig", 51], + ["zh", 51], + ["libya", 50], + ["q", 48], + ["2006 israel-lebanon conflict", 47], + ["germany", 47], + ["ja", 46], + ["infosectionend", 45], + ["profit", 45], + ["hidden", 44], + ["infosectionstart", 43], + ["2008-09 financial crisis", 43], + ["quotation", 42], + ["nigeria", 42], + ["brazil", 41], + ["source-science", 41], + ["displaytitle", 41], + ["pt", 40], + ["infoboxend", 40], + ["liveupdate", 40], + ["syria", 39], + ["italy", 39], + ["km to mi", 38], + ["matchresult", 38], + ["iraq war", 38], + ["mexico", 38], + ["article-audiobrief", 38], + ["south africa", 38], + ["historical", 37], + ["phonecontact", 37], + ["audio box", 36], + ["wikisource", 35], + ["scotland", 35], + ["exclusive story", 34], + ["ru", 34], + ["kenya", 34], + ["nl", 33], + ["pdf", 33], + ["mi to km", 32], + ["spanish", 32], + ["greece", 31], + ["de", 31], + ["stanley cup playoffs 2007", 31], + ["spain", 31], + ["money", 31], + ["prefix", 31], + ["multiple image", 30], + ["iran nuclear program", 28], + ["north korea nuclear program", 28], + ["crossword", 27], + ["television", 27], + ["interview model", 27], + ["environment", 27], + ["ukraine", 26], + ["cquote2", 26], + ["null", 25], + ["torontoelection", 25], + ["tour de france 2007", 24], + ["saudi arabia", 24], + ["source offline", 23], + ["infoboxstart", 23], + ["infosection", 23], + ["yemen", 23], + ["sudan", 23], + ["new york", 23], + ["nascar", 23], + ["buffalo, n.y. hotel proposal controversy/infobox", 22], + ["al-qaeda", 22], + ["poland", 22], + ["listenawnb", 22], + ["wni first question", 22], + ["united nations", 22], + ["fr", 21], + ["zh-tw", 21], + ["belgium", 21], + ["pl", 21], + ["2008 olympic games", 21], + ["science and technology", 21], + ["israel/palestine conflict", 21], + ["music", 21], + ["uefa euro 2016", 21], + ["reviewed", 20], + ["venezuela", 20], + ["cdnfed2008interview-on", 20], + ["football stat", 20], + ["2018 fifa world cup", 20], + ["da", 19], + ["wikileaks", 19], + ["bbc", 19], + ["picture select r", 19], + ["rquote", 18], + ["weather news", 18], + ["2010 haiti earthquake", 18], + ["{size", 18], + ["audio wikinews brief", 18], + ["european union", 17], + ["climate change", 17], + ["lebanon", 17], + ["it", 17], + ["news briefs footer", 17], + ["netherlands", 17], + ["south korea", 17], + ["guatemala", 17], + ["sri lanka", 17], + ["okina", 17], + ["ireland", 17], + ["2016 us presidential election", 17], + ["moldova", 16], + ["fiji", 16], + ["2007 iranian seizure of royal navy personnel", 16], + ["iceland", 16], + ["singapore", 16], + ["myanmar", 16], + ["basedon", 16], + ["taiwan", 16], + ["uk election latest", 15], + ["tennis", 15], + ["finland", 15], + ["bristol", 15], + ["pichilemu", 15], + ["apple", 15], + ["template", 14], + ["malaysia", 14], + ["nepal", 14], + ["russian", 14], + ["hong kong", 14], + ["2011 sendai earthquake and tsunami horizontal", 14], + ["culture and entertainment", 14], + ["film", 13], + ["germanelection2005", 13], + ["sweden", 13], + ["sv", 13], + ["war in south ossetia (2008)", 13], + ["haiti", 13], + ["transport", 13], + ["computing", 13], + ["labor", 13], + ["ivory coast", 13], + ["double image", 13], + ["education", 13], + ["mormonism", 12], + ["dutch", 12], + ["switzerland", 12], + ["2009 queensland election", 12], + ["australian rules football", 12], + ["lowercase", 11], + ["出典・ウェブ", 11], + ["sister", 11], + ["3roundbracket", 11], + ["peru", 11], + ["denmark", 11], + ["current", 11], + ["democratic republic of the congo", 11], + ["google", 11], + ["eurovision", 11], + ["swine flu", 11], + ["biology", 11], + ["colombia", 10], + ["pmid/url", 10], + ["wikimedia foundation", 10], + ["bangladesh", 10], + ["2008 tour de taiwan", 10], + ["honduras", 10], + ["ft to m", 10], + ["piracy", 10], + ["broadcast", 10], + ["2020 united states presidential election", 10], + ["microsoft", 9], + ["awn brief", 9], + ["sourcereg", 9], + ["clr", 9], + ["uganda", 9], + ["cuba", 9], + ["cambodia", 9], + ["argentina", 9], + ["2007bwc", 9], + ["algeria", 9], + ["2008tibe", 9], + ["cyclone nargis", 9], + ["norway", 9], + ["2008 financial crisis", 9], + ["guinea", 9], + ["m to ft", 9], + ["click", 9], + ["rwanda", 9], + ["obituary", 9], + ["papersource", 8], + ["fullurl", 8], + ["pdflink", 8], + ["sri lanka news", 8], + ["welsh news", 8], + ["hungary", 8], + ["austria", 8], + ["ghana", 8], + ["serbia", 8], + ["chad", 8], + ["chinese", 8], + ["2008 computex", 8], + ["{countries}", 8], + ["quote box", 8], + ["czech republic", 8], + ["papua new guinea", 8], + ["ethiopia", 8], + ["fullpagename", 8], + ["{width", 8], + ["{qwidth", 8], + ["{2", 8], + ["{height", 8], + ["{qheight", 8], + ["{3", 8], + ["img", 8], + ["macedonia", 7], + ["apasource", 7], + ["morocco", 7], + ["2007 taipei it month", 7], + ["video", 7], + ["2010-olympics", 7], + ["{clear", 7], + ["portugal", 7], + ["romania", 7], + ["he", 7], + ["fi", 7], + ["cdnfed2008", 7], + ["kyrgyzstan", 7], + ["madagascar", 7], + ["bahrain", 7], + ["vietnam", 7], + ["setimes", 7], + ["color", 7], + ["wikinewslang", 6], + ["vatican city", 6], + ["quakersnav", 6], + ["2006 turin medal count", 6], + ["pagename", 6], + ["costa rica", 6], + ["georgia", 6], + ["larrycraig", 6], + ["gitmo", 6], + ["2008 taipei game show", 6], + ["orsource", 6], + ["cyprus", 6], + ["united arab emirates", 6], + ["gambia", 6], + ["tunisia", 6], + ["2008 beijing olympic medal count", 6], + ["canada-h", 6], + ["2009 australian by-elections", 6], + ["itv", 6], + ["image lead", 6], + ["wikipedia2", 6], + ["es icon", 6], + ["formula one", 6], + ["2011 sendai earthquake and tsunami", 6], + ["tl", 6], + ["french", 6], + ["football (soccer)", 6], + ["sisterprojects", 5], + ["donate", 5], + ["nz election scorecard", 5], + ["apec2005", 5], + ["turkish", 5], + ["cl2007", 5], + ["wdsc2007", 5], + ["croatia", 5], + ["scitech", 5], + ["armenia", 5], + ["ecuador", 5], + ["ro", 5], + ["2008 google developer day", 5], + ["phoenix mission", 5], + ["bahamas", 5], + ["azerbaijan", 5], + ["pakistan-h", 5], + ["antarctica", 5], + ["gabon", 5], + ["slovakia", 5], + ["mozambique", 5], + ["jordan", 5], + ["mali", 5], + ["ftscore", 5], + ["jamaica", 5], + ["football match report", 5], + ["south sudan", 5], + ["urlencode", 5], + ["england", 5], + ["tennis scorecard", 5], + ["aviation mishaps", 5], + ["weather", 5], + ["covid-19", 5], + ["have your say", 4], + ["togo", 4], + ["katrina college list top", 4], + ["oil prices surge", 4], + ["prettytable", 4], + ["coor d", 4], + ["nba finals 2006", 4], + ["ufo", 4], + ["cameroon", 4], + ["estonia", 4], + ["sierra leone", 4], + ["laos", 4], + ["coordinates", 4], + ["2007taipeimarathon", 4], + ["2007 taitronics autumn", 4], + ["2007apb", 4], + ["cl2008", 4], + ["scidev", 4], + ["2008 wimax expo taipei", 4], + ["bolivia", 4], + ["cfl box score", 4], + ["war in georgia (2008)", 4], + ["zambia", 4], + ["igd2008taipei", 4], + ["is", 4], + ["htab-box", 4], + ["maldives", 4], + ["namibia", 4], + ["tonga", 4], + ["niger", 4], + ["belarus", 4], + ["swaziland", 4], + ["9/11", 4], + ["human rights", 4], + ["czech", 4], + ["us politics", 4], + ["arabic", 4], + ["colorado", 4], + ["qatar", 4], + ["donut", 4], + ["football bookings", 4], + ["california", 4], + ["xquote", 4], + ["editor tasks", 3], + ["server", 3], + ["namespace", 3], + ["wikisourcepar", 3], + ["lead article", 3], + ["aw", 3], + ["specialpublish", 3], + ["multi-video start", 3], + ["multi-video item", 3], + ["multi-video end", 3], + ["fork", 3], + ["doi", 3], + ["hurricane wilma update", 3], + ["commonspar", 3], + ["or", 3], + ["cricket", 3], + ["new developments", 3], + ["issues/basketball", 3], + ["wikiquotepar", 3], + ["liberia", 3], + ["wikimania 2007", 3], + ["semicontaiwan2007", 3], + ["2007 wimax forum taipei showcase & conference", 3], + ["2007 taipei 101 run up", 3], + ["crude oil prices/core", 3], + ["german", 3], + ["wikiquote", 3], + ["antigua and barbuda", 3], + ["aus vs ind 3rd test nav", 3], + ["albania", 3], + ["kuwait", 3], + ["2008 yodex", 3], + ["liverpool", 3], + ["equatorial guinea", 3], + ["2008 tica", 3], + ["mauritania", 3], + ["location", 3], + ["steady", 3], + ["science and technology - horizontal", 3], + ["lv", 3], + ["stock market", 3], + ["el salvador", 3], + ["tanzania", 3], + ["c to f", 3], + ["xambox", 3], + ["malawi", 3], + ["air france flight 447", 3], + ["hys question bottom", 3], + ["bosnia and herzegovina", 3], + ["image credit", 3], + ["slovenia", 3], + ["cs", 3], + ["maine", 3], + ["mathematics", 3], + ["page layout", 3], + ["imbox", 3], + ["broadcast-inline", 3], + ["2012 olympic games", 3], + ["religion", 3], + ["nobel prize", 3], + ["2016 united states presidential election", 3], + ["anchors", 3], + ["puerto rico", 3], + ["athletics", 3], + ["gain", 3], + ["lead article 1", 2], + ["main headlines", 2], + ["lead article 2", 2], + ["lead article 3", 2], + ["lead article 4", 2], + ["lead article 5", 2], + ["leadstorysandbox", 2], + ["latest news sandbox3", 2], + ["weathernavsandbox3", 2], + ["regionssandbox3", 2], + ["welcomesandbox3", 2], + ["ongoingnews3", 2], + ["digestandoldernewssandbox3", 2], + ["localurl", 2], + ["market data/^dji/latest", 2], + ["market data/^nya/latest", 2], + ["market data/^ixic/latest", 2], + ["market data/^aord/latest", 2], + ["market data/^ftse/latest", 2], + ["interview/media", 2], + ["voa-by", 2], + ["latest news", 2], + ["new2", 2], + ["norwegian", 2], + ["imported", 2], + ["audio2", 2], + ["canelection2006", 2], + ["clearright", 2], + ["start an article", 2], + ["second lead", 2], + ["third lead", 2], + ["original stories", 2], + ["frontpagehistoricallist", 2], + ["get involved", 2], + ["2006europeanchampionshipsathletics", 2], + ["nbc", 2], + ["source/broken", 2], + ["wikinews canada shorts header", 2], + ["côte d'ivoire", 2], + ["panama", 2], + ["english football categories", 2], + ["cricket summary", 2], + ["wikimania 2008", 2], + ["defaultsortkey", 2], + ["english", 2], + ["2007 taipei itf", 2], + ["east timor", 2], + ["sr", 2], + ["2008 taiwan presidential election", 2], + ["2008 secutech expo", 2], + ["2008 autotronics taipei", 2], + ["crude oil prices", 2], + ["mongolia", 2], + ["bulgaria", 2], + ["2008 leisure taiwan", 2], + ["olympic games", 2], + ["2008 beijing paralympic medal count", 2], + ["cdnfed2008interview-bc", 2], + ["cdnfed2008interview-ab", 2], + ["cdnfed2008interview-pr", 2], + ["cdnfed2008interview-qc", 2], + ["prezresult08", 2], + ["obituaries-horizontal", 2], + ["bhutan", 2], + ["guinea-bissau", 2], + ["botswana", 2], + ["cn", 2], + ["burkina faso", 2], + ["kazakhstan", 2], + ["senegal", 2], + ["angola", 2], + ["solomon islands", 2], + ["location map", 2], + ["orphan", 2], + ["{align", 2], + ["talkpagename", 2], + ["sister float", 2], + ["hawaii", 2], + ["barbados", 2], + ["bicentennial of chile", 2], + ["kosovo", 2], + ["dominican republic", 2], + ["guyana", 2], + ["benin", 2], + ["cricket world cup", 2], + ["{headerextension", 2], + ["#time", 2], + ["vanuatu", 2], + ["wikipediamention", 2], + ["uruguay", 2], + ["indiana", 2], + ["portuguese", 2], + ["ukrainian", 2], + ["slovak", 2], + ["photo credit", 2], + ["nato", 2], + ["football kit", 2], + ["olympics", 2], + ["archaeology", 2], + ["fuente", 2], + ["2018 winter olympics", 2], + ["road accidents", 2], + ["samoa", 2], + ["main page header", 1], + ["main page portals", 1], + ["main write", 1], + ["main interviews", 1], + ["main original", 1], + ["main about", 1], + ["main featured", 1], + ["main around", 1], + ["edit", 1], + ["navigatorsandbox3", 1], + ["welcomesandbox4", 1], + ["latestnews", 1], + ["weather world", 1], + ["market data/index/summary", 1], + ["market data/^dji/chart/year", 1], + ["market data/^merv/latest", 1], + ["market data/^merv/chart/year", 1], + ["market data/^ftse/chart/year", 1], + ["market data/^fchi/latest", 1], + ["market data/^fchi/chart/year", 1], + ["market data/^gdaxi/latest", 1], + ["market data/^gdaxi/chart/year", 1], + ["market data/^n225/latest", 1], + ["market data/^n225/chart/year", 1], + ["market data/^ixic/chart/year", 1], + ["portalpar", 1], + ["market data/^hsi/latest", 1], + ["market data/^hsi/chart/year", 1], + ["holcim ltd/infobox", 1], + ["election scorecard", 1], + ["ffl-sm", 1], + ["wrongtitle", 1], + ["market data/^aord/chart/year", 1], + ["market data/^atx/latest", 1], + ["market data/^bfx/latest", 1], + ["market data/^bfx/chart/year", 1], + ["market data/^bvsp/latest", 1], + ["market data/^bvsp/chart/year", 1], + ["market data/^gsptse/latest", 1], + ["market data/^gsptse/chart/year", 1], + ["market data/^ssec/latest", 1], + ["market data/^ssec/chart/year", 1], + ["market data/^px50/latest", 1], + ["market data/^px50/chart/year", 1], + ["market data/^kfx/latest", 1], + ["market data/^kfx/chart/year", 1], + ["market data/^ccsi/latest", 1], + ["market data/^ccsi/chart/year", 1], + ["market data/^bsesn/latest", 1], + ["market data/^bsesn/chart/year", 1], + ["market data/^jkse/latest", 1], + ["market data/^jkse/chart/year", 1], + ["market data/^ta100/latest", 1], + ["market data/^ta100/chart/year", 1], + ["market data/^mibtel/latest", 1], + ["market data/^mibtel/chart/year", 1], + ["market data/^klse/latest", 1], + ["market data/^klse/chart/year", 1], + ["market data/^mxx/latest", 1], + ["market data/^mxx/chart/year", 1], + ["historic", 1], + ["market data/^aex/latest", 1], + ["market data/^aex/chart/year", 1], + ["market data/^nz50/latest", 1], + ["market data/^nz50/chart/year", 1], + ["market data/^oseax/latest", 1], + ["market data/^oseax/chart/year", 1], + ["market data/^mtms/latest", 1], + ["market data/^mtms/chart/year", 1], + ["market data/^sti/latest", 1], + ["market data/^sti/chart/year", 1], + ["market data/^ks11/latest", 1], + ["market data/^ks11/chart/year", 1], + ["market data/^smsi/latest", 1], + ["market data/^smsi/chart/year", 1], + ["market data/^sxaxpi/latest", 1], + ["market data/^sxaxpi/chart/year", 1], + ["market data/^ssmi/latest", 1], + ["market data/^ssmi/chart/year", 1], + ["market data/^twii/latest", 1], + ["market data/^twii/chart/year", 1], + ["market data/^xu100/latest", 1], + ["market data/^xu100/chart/year", 1], + ["market data/^nya/chart/year", 1], + ["market data/^gspc/latest", 1], + ["market data/^gspc/chart/year", 1], + ["cl2005", 1], + ["exitpollsbundestag", 1], + ["katrina college list pages", 1], + ["katrina college list index", 1], + ["polish parliamentary election 2005/exits polls", 1], + ["/-", 1], + ["widenavigatorsandbox3", 1], + ["sisterprojectsbarsandbox", 1], + ["pmid", 1], + ["develop", 1], + ["wikispecies", 1], + ["mainpagemenu", 1], + ["mainpagesectionmenu", 1], + ["recent interviews", 1], + ["wc2006 mainpage", 1], + ["mainpagemediamenu", 1], + ["frontpagemenu", 1], + ["latest news 2", 1], + ["frontpagesectionmenu", 1], + ["frontpagemediamenu", 1], + ["developing stories", 1], + ["commonwealth games count", 1], + ["mergeto", 1], + ["en", 1], + ["finnish", 1], + ["single source", 1], + ["3roundbracket-byes", 1], + ["ccc", 1], + ["wiktionarypar", 1], + ["asean", 1], + ["paraguay", 1], + ["ukmap1", 1], + ["[w", 1], + ["translated wikinews (voa)", 1], + ["2009 summer deaflympics", 1], + ["greek", 1], + ["npov", 1], + ["subpage", 1], + ["archive top", 1], + ["archive bottom", 1], + ["2008 taipei in style", 1], + ["amberalert", 1], + ["pd-small", 1], + ["2008 taipei ampa", 1], + ["french guiana", 1], + ["notice", 1], + ["ice hockey box score/1ot", 1], + ["userboxtop", 1], + ["userboxbottom", 1], + ["british columbia", 1], + ["election box majority", 1], + ["election box turnout", 1], + ["swedish", 1], + ["uzbekistan", 1], + ["superimpose", 1], + ["cdninterview", 1], + ["cdnfed2008interview-m", 1], + ["cdnfed2008interview", 1], + ["stock markets/core", 1], + ["translated wikinews-basedon", 1], + ["stock market data", 1], + ["{country}", 1], + ["yemen horizontal", 1], + ["disasters and accidents horizontal", 1], + ["stock market data‎", 1], + ["india-horizontal", 1], + ["space-hz", 1], + ["sports-hz", 1], + ["nmi to km mi", 1], + ["turks and caicos islands", 1], + ["seychelles", 1], + ["avian flu horizontal", 1], + ["portals up", 1], + ["lithuania", 1], + ["monaco", 1], + ["ep04 results", 1], + ["f to c", 1], + ["cape verde", 1], + ["{color1", 1], + ["{color2", 1], + ["african news", 1], + ["andorra", 1], + ["2010 fifa world cup", 1], + ["nflplayoffs", 1], + ["isle of man", 1], + ["softredirect", 1], + ["5mcintyre", 1], + ["refresh", 1], + ["no.", 1], + ["image label", 1], + ["republic of the congo", 1], + ["|greg biffle", 1], + ["toyota", 1], + ["saint lucia", 1], + ["cy", 1], + ["trinidad and tobago", 1], + ["somalian piracy", 1], + ["grenada", 1], + ["tpi", 1], + ["{header", 1], + ["commonscat2", 1], + ["box", 1], + ["w article", 1], + ["missing image/caption", 1], + ["eritrea", 1], + ["cm to in", 1], + ["commons donate right", 1], + ["tennessee", 1], + ["worldseries", 1], + ["new hampshire", 1], + ["#switch", 1], + ["japanese", 1], + ["tibet", 1], + ["luxembourg", 1], + ["tocleft", 1], + ["bn", 1], + ["nauru", 1], + ["toc right", 1], + ["italian", 1], + ["tocright-small", 1], + ["wales", 1], + ["hidden use", 1], + ["oregon", 1], + ["plainlinks", 1], + ["athens, greece", 1], + ["alaska", 1], + ["crime and law horizontal", 1], + ["vermont", 1], + ["florida", 1], + ["dinosaurs", 1], + ["african union", 1], + ["connecticut", 1], + ["oman", 1] +] diff --git a/plugins/wikis/wikivoyage/README.md b/plugins/wikis/wikivoyage/README.md new file mode 100644 index 00000000..a0ea9dcc --- /dev/null +++ b/plugins/wikis/wikivoyage/README.md @@ -0,0 +1,32 @@ +
+ + +
a plugin for wtf_wikipedia
+ + + + + + + + + + +
+
+ +
+ npm install wtf-plugin-wikivoyage +
+ +A work-in-progress plugin that provides support for infoboxes and templates from the wikivoyage project. + +```js +const wtf = require('wtf_wikipedia') +wtf.extend(require('wtf-plugin-wikivoyage')) +;(async () => { + await wtf.fetch('Toronto','wikivoyage').json() +})() +``` + +MIT \ No newline at end of file diff --git a/plugins/wikis/wikivoyage/package-lock.json b/plugins/wikis/wikivoyage/package-lock.json new file mode 100644 index 00000000..9fc77ba9 --- /dev/null +++ b/plugins/wikis/wikivoyage/package-lock.json @@ -0,0 +1,36 @@ +{ + "name": "wtf-plugin-wikivoyage", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "wtf-plugin-wikivoyage", + "version": "0.0.1", + "license": "MIT", + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, + "dependencies": { + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true + } + } +} diff --git a/plugins/wikis/wikivoyage/package.json b/plugins/wikis/wikivoyage/package.json new file mode 100644 index 00000000..9a9d1c3e --- /dev/null +++ b/plugins/wikis/wikivoyage/package.json @@ -0,0 +1,16 @@ +{ + "name": "wtf-plugin-wikivoyage", + "description": "plugin for wtf_wikipedia", + "version": "0.0.1", + "main": "./plugin.js", + "author": "Spencer Kelly (spencermountain)", + "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/wikis/wikivoyage", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + }, + "license": "MIT" +} diff --git a/plugins/wikis/wikivoyage/plugin.js b/plugins/wikis/wikivoyage/plugin.js new file mode 100644 index 00000000..acee77d3 --- /dev/null +++ b/plugins/wikis/wikivoyage/plugin.js @@ -0,0 +1,7 @@ +const templates = require('./templates') + +const plugin = (models, _templates) => { + // add new templates + Object.assign(_templates, templates) +} +module.exports = plugin diff --git a/plugins/wikis/wikivoyage/templates.js b/plugins/wikis/wikivoyage/templates.js new file mode 100644 index 00000000..e33ab469 --- /dev/null +++ b/plugins/wikis/wikivoyage/templates.js @@ -0,0 +1,154 @@ +// const parse = require('../_parsers/parse') + +const templates = { + // https://en.wikivoyage.org/wiki/Template:Do + listing: (tmpl, list, parser) => { + let obj = parser(tmpl, []) + list.push(obj) + // flatten it all into one line of text + let name = obj.name + if (obj.url) { + name = `[${obj.url} ${obj.name}]` + } + let phone = '' + if (obj.phone) { + phone = `[tel:${obj.phone}]` + } + let updated = '' + if (obj.lastedit) { + updated = `(updated ${obj.lastedit})` + } + let out = `${name} ${obj.address || ''} ${obj.directions || ''} ${phone} ${obj.hours || ''} ${obj.content} ${ + obj.price + } ${updated}` + return out + }, + // https://en.wikivoyage.org/wiki/Template:Station + station: (tmpl, list, parser) => { + let obj = parser(tmpl, ['name']) + list.push(obj) + return obj.name || '' //missing some labels + }, + pagebanner: (tmpl, list, parser) => { + let obj = parser(tmpl, [ + 'image', + 'caption', + 'text', + 'page name', + 'disambiguation', + 'star', + 'DotM', + 'OtBP', + 'Ftt', + 'TOC box', + ]) + list.push(obj) + }, + isPartOf: ['place'], + mapframe: ['lat', 'lng'], + // phone numbers + phone: (tmpl, list, parser) => { + let obj = parser(tmpl, ['number']) + list.push(obj) + return obj.number || '' + }, + kilometer: (tmpl, list, parser) => { + let obj = parser(tmpl, ['km', 'adj']) + let num = Number(obj.km) || 0 + let m = num * 0.62137 + m = Math.round(m * 10) / 10 + if (!m) { + return `${obj.km} km` + } + if (obj.adj === 'on' || obj.adj === 'adj') { + return `${obj.km}-km (${m} mi)` + } + return `${obj.km} km (${m} mi)` + }, + mile: (tmpl, list, parser) => { + let obj = parser(tmpl, ['mi', 'adj']) + let num = Number(obj.mi) || 0 + let m = num * 1.609344 + m = Math.round(m * 10) / 10 + if (!m) { + return `${obj.mi} mi` + } + if (obj.adj === 'on' || obj.adj === 'adj') { + return `${obj.mi}-mile (${m} km)` + } + return `${obj.mi} mi (${m} km)` + }, + related: ['page'], + seealso: (tmpl, list, parser) => { + let obj = parser(tmpl, ['article']) + list.push(obj) + if (obj.article) { + return `See also: [[${obj.article}]]` + } + return '' + }, + confused: (tmpl, list, parser) => { + let obj = parser(tmpl, ['disambig']) + list.push(obj) + if (obj.disambig) { + return `Not to be confused with ${obj.disambig}\n` + } + return '' + }, + 'other uses': (tmpl, list, parser) => { + let obj = parser(tmpl, ['disambig']) + list.push(obj) + if (obj.disambig) { + return `For other places with the same name, see [[${obj.disambig} (disambiguation)]]\n` + } + return '' + }, + relatedwikipedia: (tmpl, list, parser) => { + let obj = parser(tmpl, ['page']) + list.push(obj) + return `[[Wikipedia:${obj.page}]]` + }, + celsius: (tmpl, list, parser) => { + let obj = parser(tmpl, ['c']) + list.push(obj) + return `${obj.c}°C` + }, + pound: (tmpl, list, parser) => { + let obj = parser(tmpl, ['num']) + list.push(obj) + return `${obj.num} lb` + }, + fahrenheit: (tmpl, list, parser) => { + let obj = parser(tmpl, ['c']) + list.push(obj) + return `${obj.c}°F` + }, + foot: (tmpl, list, parser) => { + let obj = parser(tmpl, ['num']) + list.push(obj) + let num = Number(obj.num) + if (num) { + let metres = num / 3.2808 + metres = Math.round(metres * 10) / 10 + return `${obj.num} ft (${metres} m)` + } + return `${obj.num} ft` + }, +} +// are these sorta the same? +templates.see = templates.listing +templates.do = templates.listing +templates.buy = templates.listing +templates.eat = templates.listing +templates.drink = templates.listing +templates.sleep = templates.listing +templates.go = templates.listing +templates.km = templates.kilometer +templates.mi = templates.mile +templates.ft = templates.foot +templates.c = templates.celsius +templates.f = templates.fahrenheit +templates.lb = templates.pound +templates.otheruses = templates['other uses'] + +module.exports = templates diff --git a/plugins/wikis/wiktionary/README.md b/plugins/wikis/wiktionary/README.md new file mode 100644 index 00000000..2d9b50fa --- /dev/null +++ b/plugins/wikis/wiktionary/README.md @@ -0,0 +1,32 @@ +
+ + +
a plugin for wtf_wikipedia
+ + + + + + + + + + +
+
+ +
+ npm install wtf-plugin-wiktionary +
+ +A work-in-progress plugin that provides support for infoboxes and templates from the wiktionary project. + +```js +const wtf = require('wtf_wikipedia') +wtf.extend(require('wtf-plugin-wiktionary')) +;(async () => { + await wtf.fetch('scrumptious','wiktionary').json() +})() +``` + +MIT \ No newline at end of file diff --git a/plugins/wikis/wiktionary/package-lock.json b/plugins/wikis/wiktionary/package-lock.json new file mode 100644 index 00000000..66237dc9 --- /dev/null +++ b/plugins/wikis/wiktionary/package-lock.json @@ -0,0 +1,36 @@ +{ + "name": "wtf-plugin-wiktionary", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "wtf-plugin-wiktionary", + "version": "0.0.1", + "license": "MIT", + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, + "dependencies": { + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true + } + } +} diff --git a/plugins/wikis/wiktionary/package.json b/plugins/wikis/wiktionary/package.json new file mode 100644 index 00000000..4d544821 --- /dev/null +++ b/plugins/wikis/wiktionary/package.json @@ -0,0 +1,16 @@ +{ + "name": "wtf-plugin-wiktionary", + "description": "plugin for wtf_wikipedia", + "version": "0.0.1", + "main": "./plugin.js", + "author": "Spencer Kelly (spencermountain)", + "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/wikis/wiktionary", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + }, + "license": "MIT" +} diff --git a/plugins/wikis/wiktionary/plugin.js b/plugins/wikis/wiktionary/plugin.js new file mode 100644 index 00000000..acee77d3 --- /dev/null +++ b/plugins/wikis/wiktionary/plugin.js @@ -0,0 +1,7 @@ +const templates = require('./templates') + +const plugin = (models, _templates) => { + // add new templates + Object.assign(_templates, templates) +} +module.exports = plugin diff --git a/plugins/wikis/wiktionary/plugin.test.js b/plugins/wikis/wiktionary/plugin.test.js new file mode 100644 index 00000000..d4fe222c --- /dev/null +++ b/plugins/wikis/wiktionary/plugin.test.js @@ -0,0 +1,39 @@ +const wtf = require('../../../src') +wtf.plugin(require('./plugin')) +const test = require('tape') + +test('inline-with-data', function (t) { + const arr = [ + [`acronym`, `{{acronym of|graphical user interface|lang=en}}`], + [`la-verb-form`, `{{la-verb-form|amāre}}`], + ['inflection', `{{inflection of|avoir||3|p|pres|ind|lang=fr}}`], + ] + arr.forEach((a) => { + 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') + }) + t.end() +}) + +test('inline-output', (t) => { + const arr = [[`{{l|cs|háček}}`, 'háček']] + arr.forEach((a) => { + t.equal(wtf(a[0]).text(), a[1], a[0]) + }) + t.end() +}) + +// test('inline-no-data', function (t) { +// const arr = [] +// arr.forEach((a) => { +// 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') +// }) +// t.end() +// }) diff --git a/src/template/templates/wiktionary.js b/plugins/wikis/wiktionary/templates.js similarity index 53% rename from src/template/templates/wiktionary.js rename to plugins/wikis/wiktionary/templates.js index 5bd6b269..5ce65139 100644 --- a/src/template/templates/wiktionary.js +++ b/plugins/wikis/wiktionary/templates.js @@ -1,18 +1,29 @@ -const parse = require('../_parsers/parse') +const parse = require('../../../src/template/parse/toJSON') // const strip = require('./_parsers/_strip'); //wiktionary... who knows. we should atleast try. const templates = { - //{{inflection of|avoir||3|p|pres|ind|lang=fr}} - //https://en.wiktionary.org/wiki/Template:inflection_of - inflection: (tmpl, list) => { - let obj = parse(tmpl, ['lemma']) - obj.tags = obj.list - delete obj.list - obj.type = 'form-of' + etyl: 1, + mention: 1, + link: (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'page', 'display']) list.push(obj) - return obj.lemma || '' + if (obj.display) { + return `[[${obj.page}|${obj.display}]]` + } + return `[[${obj.page}]]` }, + 'la-ipa': 0, + //{{inflection of|avoir||3|p|pres|ind|lang=fr}} + //https://en.wiktionary.org/wiki/Template:inflection_of + // inflection: (tmpl, list) => { + // let obj = parse(tmpl, ['lemma']) + // obj.tags = obj.list + // delete obj.list + // obj.type = 'form-of' + // list.push(obj) + // return obj.lemma || '' + // }, //latin verbs 'la-verb-form': (tmpl, list) => { @@ -20,6 +31,11 @@ const templates = { list.push(obj) return obj.word || '' }, + hyphenation: (tmpl, list) => { + let obj = parse(tmpl, ['lang']) + list.push(obj) + return obj.list.join('‧') + }, 'feminine plural': (tmpl, list) => { let obj = parse(tmpl, ['word']) list.push(obj) @@ -30,11 +46,107 @@ const templates = { list.push(obj) return obj.word || '' }, + desc: (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'word']) + list.push(obj) + return `→ ${obj.lang}: [[${obj.word}]]` //shouldn't use language code + }, rhymes: (tmpl, list) => { let obj = parse(tmpl, ['word']) list.push(obj) return 'Rhymes: -' + (obj.word || '') - } + }, + t: (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'word']) + list.push(obj) + return `[[${obj.lang}:${obj.word}]]` + }, + label: (tmpl, list) => { + let obj = parse(tmpl, ['lang']) + list.push(obj) + return `(${obj.list.join(', ')})` + }, + sense: (tmpl, list) => { + let obj = parse(tmpl, ['context']) + list.push(obj) + return `(${obj.context})` + }, + suffix: (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'root', 'suffix']) + list.push(obj) + return `[[${obj.root}]] +[[-${obj.suffix}|${obj.suffix}]]` + }, + prefix: (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'root', 'prefix']) + list.push(obj) + return `[[${obj.prefix}-|${obj.prefix}]] + [[${obj.root}]]` + }, + compound: (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'first', 'second']) + list.push(obj) + let arr = [obj.first, obj.second || ''] + arr = arr.concat(obj.list || []) + arr = arr.map((str) => `[[${str}]]`) + return arr.join(' + ') + }, + ux: (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'example', 'translation']) + list.push(obj) + let str = `${obj.example}` + if (obj.translation) { + str += `\n` + obj.translation + } + return str + }, + bor: (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'source-lang', 'term']) + list.push(obj) + return `${obj['source-lang']} [[${obj.term}]]` + }, + w: (tmpl, list) => { + let obj = parse(tmpl, ['page', 'label']) + list.push(obj) + let lang = obj.lang || 'en' + if (obj.label) { + return `[https://${lang}.wikipedia.org/wiki/${obj.page}|${obj.label}]` + } + return `[https://${lang}.wikipedia.org/wiki/${obj.page}]` + }, + also: (tmpl, list) => { + let obj = parse(tmpl, []) + list.push(obj) + let links = obj.list.map((str) => `[[${str}]]`) + return `See also: ${links.join(', ')}\n` + }, + wikipedia: ['article', 'link title'], + // https://en.wiktionary.org/wiki/Template:inflection_of + 'inflection of': (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'lemma', 'display']) + list.push(obj) + let words = { + 1: 'first-person', + impers: 'first-person', + 2: 'second-person', + 3: 'third-person', + c: 'common', + an: 'animate', + f: 'feminine', + m: 'masculine', + n: 'neuter', + d: 'dual', + du: 'dual', + p: 'plural', + s: 'singular', + sg: 'singular', + pl: 'plural', + perf: 'perfect', + pres: 'present', + spos: 'single-possession', + } + let terms = obj.list.filter((k) => words[k]) + terms = terms.map((str) => words[str]) + return `${terms.join(', ')} of [[${obj.lemma}]]` + }, } //https://en.wiktionary.org/wiki/Category:Form-of_templates @@ -124,7 +236,7 @@ let conjugations = [ 'imperative', 'imperfective form', 'inflected form', - 'inflection', + // 'inflection', 'informal form', 'informal spelling', 'initialism', @@ -198,9 +310,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 @@ -210,4 +322,19 @@ conjugations.forEach(name => { return obj.lemma || '' } }) + +// aliases +templates.m = templates.mention +templates.inflection = templates['inflection of'] +templates['m-self'] = templates.mention +templates.l = templates.link +templates.ll = templates.link +templates['l-self'] = templates.link +templates.s = templates.sense +templates.tt = templates.t +templates.lb = templates.label +templates.lbl = templates.label +templates['t+'] = templates.t +templates['tt+'] = templates.t + module.exports = templates 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/builds/wtf-plugin-wikitext.js b/plugins/wikitext/builds/wtf-plugin-wikitext.js index 98ed6eae..18c7fe36 100644 --- a/plugins/wikitext/builds/wtf-plugin-wikitext.js +++ b/plugins/wikitext/builds/wtf-plugin-wikitext.js @@ -1,13 +1,14 @@ -/* wtf-plugin-wikitext 0.2.0 MIT */ +/* wtf-plugin-wikitext 1.1.0 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.wtfWikitext = factory()); + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfWikitext = factory()); }(this, (function () { 'use strict'; - var defaults = { + const defaults$3 = { images: true, tables: true, + templates: true, infoboxes: true, categories: true, lists: true, @@ -15,120 +16,112 @@ paragraphs: true }; - var toWiki = function toWiki(options) { + const toWiki$a = function (options) { options = options || {}; - options = Object.assign({}, defaults, options); - var text = ''; //if it's a redirect page + options = Object.assign({}, defaults$3, options); + let text = ''; //if it's a redirect page if (this.isRedirect() === true) { - return "#REDIRECT [[".concat(this.redirectTo().page, "]]"); + return `#REDIRECT [[${this.redirectTo().page}]]`; } //render infoboxes (up at the top) if (options.infoboxes === true) { - text += this.infoboxes().map(function (i) { - return 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) { - var sections = this.sections(); // sections = sections.filter((s) => s.title() !== 'References') - - text += sections.map(function (s) { - return s.wikitext(options); - }).join('\n'); + let sections = this.sections(); + text += sections.map(s => s.makeWikitext(options)).join('\n'); } // add categories on the bottom if (options.categories === true) { text += '\n'; - this.categories().forEach(function (cat) { - return text += "\n[[Category: ".concat(cat, "]]"); - }); + this.categories().forEach(cat => text += `\n[[Category: ${cat}]]`); } return text; }; - var _01Doc = toWiki; + var _01Doc = toWiki$a; - var defaults$1 = {}; + const defaults$2 = {}; - var doTemplate = function doTemplate(obj) { - var data = ''; - var name = obj.template; - Object.keys(obj).forEach(function (k) { + const doTemplate = function (obj) { + let data = ''; + let name = obj.template; + Object.keys(obj).forEach(k => { if (k !== 'template') { - data += " | ".concat(k, " = ").concat(obj[k]); + data += ` | ${k} = ${obj[k]}`; } }); - return "{{".concat(name).concat(data, "}} "); + return `{{${name}${data}}} `; }; - var toWiki$1 = function toWiki(options) { + const toWiki$9 = function (options) { options = options || {}; - options = Object.assign({}, defaults$1, options); - var text = ''; + options = Object.assign({}, defaults$2, options); + let text = ''; if (this.title()) { - var side = '=='; - text += "\n".concat(side, " ").concat(this.title(), " ").concat(side, "\n"); + let side = '=='; + text += `\n${side} ${this.title()} ${side}\n`; } // render some templates? - this.templates().forEach(function (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(function (t) { - return t.wikitext(options); - }).join('\n'); + text += this.tables().map(t => t.makeWikitext(options)).join('\n'); } // make a html bullet-list if (options.lists === true) { - text += this.lists().map(function (list) { - return list.text(options); - }).join('\n'); + text += this.lists().map(list => list.text(options)).join('\n'); } - text += this.paragraphs().map(function (p) { - return p.wikitext(options); + text += this.paragraphs().map(p => { + return p.makeWikitext(options); }).join('\n'); // render references // these will be out of place - this.references().forEach(function (ref) { - text += ref.wikitext(options) + '\n'; + this.references().forEach(ref => { + text += ref.makeWikitext(options) + '\n'; }); return text; }; - var _02Section = toWiki$1; + var _02Section = toWiki$9; - var defaults$2 = {}; + const defaults$1 = {}; - var toWiki$2 = function toWiki(options) { + const toWiki$8 = function (options) { options = options || {}; - options = Object.assign({}, defaults$2, options); - var text = ''; // do images + options = Object.assign({}, defaults$1, options); + let text = ''; // do images - this.images().forEach(function (img) { - text += img.wikitext(); + this.images().forEach(img => { + text += img.makeWikitext(); }); // do lists - this.lists().forEach(function (list) { - text += list.wikitext(); + this.lists().forEach(list => { + text += list.makeWikitext(); }); // render sentences - text += this.sentences().map(function (s) { - return s.wikitext(options); + text += this.sentences().map(s => { + return s.makeWikitext(options); }).join('\n'); return text; }; - var _03Paragraph = toWiki$2; + var _03Paragraph = toWiki$8; //escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(string) { @@ -136,7 +129,7 @@ } //sometimes text-replacements can be ambiguous - words used multiple times.. - var smartReplace = function smartReplace(all, text, result) { + const smartReplace = function (all, text, result) { if (!text || !all) { return all; } @@ -147,7 +140,7 @@ text = escapeRegExp(text); //try a word-boundary replace - var reg = new RegExp('\\b' + text + '\\b'); + let reg = new RegExp('\\b' + text + '\\b'); if (reg.test(all) === true) { all = all.replace(reg, result); @@ -162,32 +155,32 @@ var smartReplace_1 = smartReplace; - var defaults$3 = { + const defaults = { links: true }; - var toWiki$3 = function toWiki(options) { + const toWiki$7 = function (options) { options = options || {}; - options = Object.assign({}, defaults$3, options); - var text = this.text(); + options = Object.assign({}, defaults, options); + let text = this.text(); if (options.links === true) { - this.links().forEach(function (link) { - var str = link.text() || link.page(); - var tag = link.wikitext(); + this.links().forEach(link => { + let str = link.text() || link.page(); + let tag = link.makeWikitext(); text = smartReplace_1(text, str, tag); }); } if (options.formatting === true) { //support bolds - this.bold().forEach(function (str) { - var tag = '**' + str + '**'; + this.bold().forEach(str => { + let tag = '**' + str + '**'; text = smartReplace_1(text, str, tag); }); //do italics - this.italic().forEach(function (str) { - var tag = '***' + str + '***'; + this.italic().forEach(str => { + let tag = '***' + str + '***'; text = smartReplace_1(text, str, tag); }); } @@ -195,42 +188,42 @@ return text; }; - var _04Sentence = toWiki$3; + var _04Sentence = toWiki$7; // add `[text](href)` to the text - var toWiki$4 = function toWiki() { + const toWiki$6 = function () { //if it's an external link, we good if (this.site()) { if (this.text()) { - return "[".concat(this.site(), "|").concat(this.text(), "]"); + return `[${this.site()}|${this.text()}]`; } - return "[".concat(this.site(), "]"); + return `[${this.site()}]`; } - var page = this.page() || ''; + let page = this.page() || ''; if (this.anchor()) { - page += "#".concat(this.anchor()); + page += `#${this.anchor()}`; } - var str = this.text() || ''; + let str = this.text() || ''; if (str && str.toLowerCase() !== page.toLowerCase()) { - return "[[".concat(page, "|").concat(str, "]]"); + return `[[${page}|${str}]]`; } - return "[[".concat(page, "]]"); + return `[[${page}]]`; }; - var _05Link = toWiki$4; + var _05Link = toWiki$6; - var toWiki$5 = function toWiki() { - var text = "[[".concat(this.file(), "|thumb"); - var caption = this.data.caption; + const toWiki$5 = function () { + let text = `[[${this.file()}|thumb`; + let caption = this.data.caption; if (caption) { - text += "|".concat(this.data.caption.wikitext()); + text += `|${this.data.caption.wikitext()}`; } return text + ']]'; @@ -238,93 +231,107 @@ var image = toWiki$5; - var toWiki$6 = function toWiki() { - var _this = this; + const toWiki$4 = function () { + let text = `{{${this.data.template || ''}`; + Object.keys(this.data).forEach(k => { + if (k === 'template') { + return; + } - var text = "{{Infobox ".concat(this._type || '', "\n"); - Object.keys(this.data).forEach(function (k) { - var val = _this.data[k]; + let val = this.data[k]; if (val) { - text += "| ".concat(k, " = ").concat(val.wikitext() || '', "\n"); + text += `| ${k} = ${val || ''}`; } }); text += '}}\n'; return text; }; - var infobox = toWiki$6; + var template = toWiki$4; + + const toWiki$3 = function () { + let text = `{{Infobox ${this._type || ''}\n`; + Object.keys(this.data).forEach(k => { + let val = this.data[k]; - var toWiki$7 = function toWiki() { - var txt = ''; - this.lines().forEach(function (s) { - txt += "* ".concat(s.wikitext(), "\n"); + if (val) { + text += `| ${k} = ${val.wikitext() || ''}\n`; + } }); - return txt; + text += '}}\n'; + return text; }; - var list = toWiki$7; + var infobox = toWiki$3; + + const toWiki$2 = function () { + let txt = ''; + this.lines().forEach(s => { + txt += `* ${s.wikitext()}\n`; + }); + return txt; + }; - var toWiki$8 = function toWiki() { - var _this = this; + var list = toWiki$2; + const toWiki$1 = function () { if (this.data.inline) { - return "".concat(this.data.inline.wikitext(), ""); + return `${this.data.inline.wikitext()}`; } - var type = this.data.type || 'cite web'; - var data = ''; - Object.keys(this.data).forEach(function (k) { + let type = this.data.type || 'cite web'; + let data = ''; + Object.keys(this.data).forEach(k => { if (k !== 'template' && k !== 'type') { - data += " | ".concat(k, " = ").concat(_this.data[k]); + data += ` | ${k} = ${this.data[k]}`; } }); - return "{{".concat(type).concat(data, "}}"); + return `{{${type}${data}}}`; }; - var reference = toWiki$8; + var reference = toWiki$1; - var toWiki$9 = function toWiki(options) { - var rows = this.data; - var wiki = "{| class=\"wikitable\"\n"; // draw headers + const toWiki = function (options) { + let rows = this.data; + let wiki = `{| class="wikitable"\n`; // draw headers - var headers = Object.keys(rows[0]); - headers = headers.filter(function (k) { - return /^col[0-9]/.test(k) !== true; - }); + let headers = Object.keys(rows[0]); + headers = headers.filter(k => /^col[0-9]/.test(k) !== true); if (headers.length > 0) { wiki += '|-\n'; - headers.forEach(function (k) { + headers.forEach(k => { wiki += '! ' + k + '\n'; }); } //make rows - rows.forEach(function (o) { + rows.forEach(o => { wiki += '|-\n'; - Object.keys(o).forEach(function (k) { - var val = o[k].wikitext(options); + Object.keys(o).forEach(k => { + let val = o[k].wikitext(options); wiki += '| ' + val + '\n'; }); }); - wiki += "|}"; + wiki += `|}`; return wiki; }; - var table = toWiki$9; - - var plugin = function plugin(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; + var table = toWiki; + + const plugin = function (models) { + 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 955a6ebe..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 = {\r\n images: true,\r\n tables: true,\r\n infoboxes: true,\r\n categories: true,\r\n lists: true,\r\n links: true,\r\n paragraphs: true\r\n}\r\nconst toWiki = function (options) {\r\n options = options || {}\r\n options = Object.assign({}, defaults, options)\r\n let text = ''\r\n\r\n //if it's a redirect page\r\n if (this.isRedirect() === true) {\r\n return `#REDIRECT [[${this.redirectTo().page}]]`\r\n }\r\n\r\n //render infoboxes (up at the top)\r\n if (options.infoboxes === true) {\r\n text += this.infoboxes()\r\n .map((i) => i.wikitext(options))\r\n .join('\\n')\r\n }\r\n\r\n //render each section\r\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\r\n let sections = this.sections()\r\n // sections = sections.filter((s) => s.title() !== 'References')\r\n text += sections.map((s) => s.wikitext(options)).join('\\n')\r\n }\r\n\r\n // add categories on the bottom\r\n if (options.categories === true) {\r\n text += '\\n'\r\n this.categories().forEach((cat) => (text += `\\n[[Category: ${cat}]]`))\r\n }\r\n return text\r\n}\r\nmodule.exports = toWiki\r\n","const defaults = {}\r\n\r\nconst doTemplate = function (obj) {\r\n let data = ''\r\n let name = obj.template\r\n Object.keys(obj).forEach((k) => {\r\n if (k !== 'template') {\r\n data += ` | ${k} = ${obj[k]}`\r\n }\r\n })\r\n return `{{${name}${data}}} `\r\n}\r\n\r\nconst toWiki = function (options) {\r\n options = options || {}\r\n options = Object.assign({}, defaults, options)\r\n let text = ''\r\n if (this.title()) {\r\n let side = '=='\r\n text += `\\n${side} ${this.title()} ${side}\\n`\r\n }\r\n // render some templates?\r\n this.templates().forEach((tmpl) => {\r\n text += doTemplate(tmpl) + '\\n'\r\n })\r\n\r\n //make a table\r\n if (options.tables === true) {\r\n text += this.tables()\r\n .map((t) => t.wikitext(options))\r\n .join('\\n')\r\n }\r\n\r\n // make a html bullet-list\r\n if (options.lists === true) {\r\n text += this.lists()\r\n .map((list) => list.text(options))\r\n .join('\\n')\r\n }\r\n text += this.paragraphs()\r\n .map((p) => {\r\n return p.wikitext(options)\r\n })\r\n .join('\\n')\r\n\r\n // render references\r\n // these will be out of place\r\n this.references().forEach((ref) => {\r\n text += ref.wikitext(options) + '\\n'\r\n })\r\n\r\n return text\r\n}\r\nmodule.exports = toWiki\r\n","const defaults = {}\r\n\r\nconst toWiki = function (options) {\r\n options = options || {}\r\n options = Object.assign({}, defaults, options)\r\n let text = ''\r\n\r\n // do images\r\n this.images().forEach((img) => {\r\n text += img.wikitext()\r\n })\r\n // do lists\r\n this.lists().forEach((list) => {\r\n text += list.wikitext()\r\n })\r\n // render sentences\r\n text += this.sentences()\r\n .map((s) => {\r\n return s.wikitext(options)\r\n })\r\n .join('\\n')\r\n return text\r\n}\r\nmodule.exports = toWiki\r\n","//escape a string like 'fun*2.Co' for a regExpr\r\nfunction escapeRegExp(string) {\r\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\r\n}\r\n\r\n//sometimes text-replacements can be ambiguous - words used multiple times..\r\nconst smartReplace = function(all, text, result) {\r\n if (!text || !all) {\r\n return all\r\n }\r\n\r\n if (typeof all === 'number') {\r\n all = String(all)\r\n }\r\n text = escapeRegExp(text)\r\n //try a word-boundary replace\r\n let reg = new RegExp('\\\\b' + text + '\\\\b')\r\n if (reg.test(all) === true) {\r\n all = all.replace(reg, result)\r\n } else {\r\n //otherwise, fall-back to a much messier, dangerous replacement\r\n // console.warn('missing \\'' + text + '\\'');\r\n all = all.replace(text, result)\r\n }\r\n return all\r\n}\r\n\r\nmodule.exports = smartReplace\r\n","const smartReplace = require('./_lib/smartReplace')\r\n\r\nconst defaults = {\r\n links: true\r\n}\r\n\r\nconst toWiki = function (options) {\r\n options = options || {}\r\n options = Object.assign({}, defaults, options)\r\n let text = this.text()\r\n if (options.links === true) {\r\n this.links().forEach((link) => {\r\n let str = link.text() || link.page()\r\n let tag = link.wikitext()\r\n text = smartReplace(text, str, tag)\r\n })\r\n }\r\n if (options.formatting === true) {\r\n //support bolds\r\n this.bold().forEach((str) => {\r\n let tag = '**' + str + '**'\r\n text = smartReplace(text, str, tag)\r\n })\r\n //do italics\r\n this.italic().forEach((str) => {\r\n let tag = '***' + str + '***'\r\n text = smartReplace(text, str, tag)\r\n })\r\n }\r\n\r\n return text\r\n}\r\nmodule.exports = toWiki\r\n","// add `[text](href)` to the text\r\nconst toWiki = function() {\r\n //if it's an external link, we good\r\n if (this.site()) {\r\n if (this.text()) {\r\n return `[${this.site()}|${this.text()}]`\r\n }\r\n return `[${this.site()}]`\r\n }\r\n let page = this.page() || ''\r\n if (this.anchor()) {\r\n page += `#${this.anchor()}`\r\n }\r\n\r\n let str = this.text() || ''\r\n if (str && str.toLowerCase() !== page.toLowerCase()) {\r\n return `[[${page}|${str}]]`\r\n }\r\n return `[[${page}]]`\r\n}\r\nmodule.exports = toWiki\r\n","const toWiki = function () {\r\n let text = `[[${this.file()}|thumb`\r\n let caption = this.data.caption\r\n if (caption) {\r\n text += `|${this.data.caption.wikitext()}`\r\n }\r\n return text + ']]'\r\n}\r\nmodule.exports = toWiki\r\n","const toWiki = function() {\r\n let text = `{{Infobox ${this._type || ''}\\n`\r\n Object.keys(this.data).forEach(k => {\r\n let val = this.data[k]\r\n if (val) {\r\n text += `| ${k} = ${val.wikitext() || ''}\\n`\r\n }\r\n })\r\n text += '}}\\n'\r\n return text\r\n}\r\nmodule.exports = toWiki\r\n","const toWiki = function() {\r\n let txt = ''\r\n this.lines().forEach(s => {\r\n txt += `* ${s.wikitext()}\\n`\r\n })\r\n return txt\r\n}\r\nmodule.exports = toWiki\r\n","const toWiki = function () {\r\n if (this.data.inline) {\r\n return `${this.data.inline.wikitext()}`\r\n }\r\n let type = this.data.type || 'cite web'\r\n let data = ''\r\n Object.keys(this.data).forEach((k) => {\r\n if (k !== 'template' && k !== 'type') {\r\n data += ` | ${k} = ${this.data[k]}`\r\n }\r\n })\r\n return `{{${type}${data}}}`\r\n}\r\nmodule.exports = toWiki\r\n","const toWiki = function (options) {\r\n let rows = this.data\r\n let wiki = `{| class=\"wikitable\"\\n`\r\n\r\n // draw headers\r\n let headers = Object.keys(rows[0])\r\n headers = headers.filter((k) => /^col[0-9]/.test(k) !== true)\r\n if (headers.length > 0) {\r\n wiki += '|-\\n'\r\n headers.forEach((k) => {\r\n wiki += '! ' + k + '\\n'\r\n })\r\n }\r\n //make rows\r\n rows.forEach((o) => {\r\n wiki += '|-\\n'\r\n Object.keys(o).forEach((k) => {\r\n let val = o[k].wikitext(options)\r\n wiki += '| ' + val + '\\n'\r\n })\r\n })\r\n wiki += `|}`\r\n return wiki\r\n}\r\nmodule.exports = toWiki\r\n","const doc = require('./01-doc')\r\nconst section = require('./02-section')\r\nconst paragraph = require('./03-paragraph')\r\nconst sentence = require('./04-sentence')\r\nconst link = require('./05-link')\r\nconst image = require('./image')\r\nconst infobox = require('./infobox')\r\nconst list = require('./list')\r\nconst reference = require('./reference')\r\nconst table = require('./table')\r\n\r\nconst plugin = function(models) {\r\n models.Doc.prototype.wikitext = doc\r\n models.Section.prototype.wikitext = section\r\n models.Paragraph.prototype.wikitext = paragraph\r\n models.Sentence.prototype.wikitext = sentence\r\n models.Link.prototype.wikitext = link\r\n models.Image.prototype.wikitext = image\r\n models.Infobox.prototype.wikitext = infobox\r\n models.Table.prototype.wikitext = table\r\n models.List.prototype.wikitext = list\r\n models.Reference.prototype.wikitext = reference\r\n}\r\nmodule.exports = plugin\r\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 e6db4fe5..fe7e7347 100644 --- a/plugins/wikitext/builds/wtf-plugin-wikitext.min.js +++ b/plugins/wikitext/builds/wtf-plugin-wikitext.min.js @@ -1 +1 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).wtfWikitext=n()}(this,(function(){"use strict";var t={images:!0,tables:!0,infoboxes:!0,categories:!0,lists:!0,links:!0,paragraphs:!0},n=function(n){n=n||{},n=Object.assign({},t,n);var i="";if(!0===this.isRedirect())return"#REDIRECT [[".concat(this.redirectTo().page,"]]");if(!0===n.infoboxes&&(i+=this.infoboxes().map((function(t){return t.wikitext(n)})).join("\n")),!0===n.sections||!0===n.paragraphs||!0===n.sentences){var e=this.sections();i+=e.map((function(t){return t.wikitext(n)})).join("\n")}return!0===n.categories&&(i+="\n",this.categories().forEach((function(t){return i+="\n[[Category: ".concat(t,"]]")}))),i},i={},e=function(t){t=t||{},t=Object.assign({},i,t);var n="";if(this.title()){n+="\n".concat("=="," ").concat(this.title()," ").concat("==","\n")}return this.templates().forEach((function(t){var i,e,o;n+=(e="",o=(i=t).template,Object.keys(i).forEach((function(t){"template"!==t&&(e+=" | ".concat(t," = ").concat(i[t]))})),"{{".concat(o).concat(e,"}} ")+"\n")})),!0===t.tables&&(n+=this.tables().map((function(n){return n.wikitext(t)})).join("\n")),!0===t.lists&&(n+=this.lists().map((function(n){return n.text(t)})).join("\n")),n+=this.paragraphs().map((function(n){return n.wikitext(t)})).join("\n"),this.references().forEach((function(i){n+=i.wikitext(t)+"\n"})),n},o={},c=function(t){t=t||{},t=Object.assign({},o,t);var n="";return this.images().forEach((function(t){n+=t.wikitext()})),this.lists().forEach((function(t){n+=t.wikitext()})),n+=this.sentences().map((function(n){return n.wikitext(t)})).join("\n")};var a=function(t,n,i){if(!n||!t)return t;"number"==typeof t&&(t=String(t)),n=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");var e=new RegExp("\\b"+n+"\\b");return t=!0===e.test(t)?t.replace(e,i):t.replace(n,i)},r={links:!0},s=function(t){t=t||{},t=Object.assign({},r,t);var n=this.text();return!0===t.links&&this.links().forEach((function(t){var i=t.text()||t.page(),e=t.wikitext();n=a(n,i,e)})),!0===t.formatting&&(this.bold().forEach((function(t){n=a(n,t,"**"+t+"**")})),this.italic().forEach((function(t){n=a(n,t,"***"+t+"***")}))),n},f=function(){if(this.site())return this.text()?"[".concat(this.site(),"|").concat(this.text(),"]"):"[".concat(this.site(),"]");var t=this.page()||"";this.anchor()&&(t+="#".concat(this.anchor()));var n=this.text()||"";return n&&n.toLowerCase()!==t.toLowerCase()?"[[".concat(t,"|").concat(n,"]]"):"[[".concat(t,"]]")},u=function(){var t="[[".concat(this.file(),"|thumb");return this.data.caption&&(t+="|".concat(this.data.caption.wikitext())),t+"]]"},h=function(){var t=this,n="{{Infobox ".concat(this._type||"","\n");return Object.keys(this.data).forEach((function(i){var e=t.data[i];e&&(n+="| ".concat(i," = ").concat(e.wikitext()||"","\n"))})),n+="}}\n"},p=function(){var t="";return this.lines().forEach((function(n){t+="* ".concat(n.wikitext(),"\n")})),t},x=function(){var t=this;if(this.data.inline)return"".concat(this.data.inline.wikitext(),"");var n=this.data.type||"cite web",i="";return Object.keys(this.data).forEach((function(n){"template"!==n&&"type"!==n&&(i+=" | ".concat(n," = ").concat(t.data[n]))})),"{{".concat(n).concat(i,"}}")},k=function(t){var n=this.data,i='{| class="wikitable"\n',e=Object.keys(n[0]);return(e=e.filter((function(t){return!0!==/^col[0-9]/.test(t)}))).length>0&&(i+="|-\n",e.forEach((function(t){i+="! "+t+"\n"}))),n.forEach((function(n){i+="|-\n",Object.keys(n).forEach((function(e){var o=n[e].wikitext(t);i+="| "+o+"\n"}))})),i+="|}"};return function(t){t.Doc.prototype.wikitext=n,t.Section.prototype.wikitext=e,t.Paragraph.prototype.wikitext=c,t.Sentence.prototype.wikitext=s,t.Link.prototype.wikitext=f,t.Image.prototype.wikitext=u,t.Infobox.prototype.wikitext=h,t.Table.prototype.wikitext=k,t.List.prototype.wikitext=p,t.Reference.prototype.wikitext=x}})); +!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 c05ebeb4..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 */ -var defaults = { +/* wtf-plugin-wikitext 1.1.0 MIT */ +const defaults$3 = { images: true, tables: true, + templates: true, infoboxes: true, categories: true, lists: true, @@ -9,120 +10,112 @@ var defaults = { paragraphs: true }; -var toWiki = function toWiki(options) { +const toWiki$a = function (options) { options = options || {}; - options = Object.assign({}, defaults, options); - var text = ''; //if it's a redirect page + options = Object.assign({}, defaults$3, options); + let text = ''; //if it's a redirect page if (this.isRedirect() === true) { - return "#REDIRECT [[".concat(this.redirectTo().page, "]]"); + return `#REDIRECT [[${this.redirectTo().page}]]`; } //render infoboxes (up at the top) if (options.infoboxes === true) { - text += this.infoboxes().map(function (i) { - return 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) { - var sections = this.sections(); // sections = sections.filter((s) => s.title() !== 'References') - - text += sections.map(function (s) { - return s.wikitext(options); - }).join('\n'); + let sections = this.sections(); + text += sections.map(s => s.makeWikitext(options)).join('\n'); } // add categories on the bottom if (options.categories === true) { text += '\n'; - this.categories().forEach(function (cat) { - return text += "\n[[Category: ".concat(cat, "]]"); - }); + this.categories().forEach(cat => text += `\n[[Category: ${cat}]]`); } return text; }; -var _01Doc = toWiki; +var _01Doc = toWiki$a; -var defaults$1 = {}; +const defaults$2 = {}; -var doTemplate = function doTemplate(obj) { - var data = ''; - var name = obj.template; - Object.keys(obj).forEach(function (k) { +const doTemplate = function (obj) { + let data = ''; + let name = obj.template; + Object.keys(obj).forEach(k => { if (k !== 'template') { - data += " | ".concat(k, " = ").concat(obj[k]); + data += ` | ${k} = ${obj[k]}`; } }); - return "{{".concat(name).concat(data, "}} "); + return `{{${name}${data}}} `; }; -var toWiki$1 = function toWiki(options) { +const toWiki$9 = function (options) { options = options || {}; - options = Object.assign({}, defaults$1, options); - var text = ''; + options = Object.assign({}, defaults$2, options); + let text = ''; if (this.title()) { - var side = '=='; - text += "\n".concat(side, " ").concat(this.title(), " ").concat(side, "\n"); + let side = '=='; + text += `\n${side} ${this.title()} ${side}\n`; } // render some templates? - this.templates().forEach(function (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(function (t) { - return t.wikitext(options); - }).join('\n'); + text += this.tables().map(t => t.makeWikitext(options)).join('\n'); } // make a html bullet-list if (options.lists === true) { - text += this.lists().map(function (list) { - return list.text(options); - }).join('\n'); + text += this.lists().map(list => list.text(options)).join('\n'); } - text += this.paragraphs().map(function (p) { - return p.wikitext(options); + text += this.paragraphs().map(p => { + return p.makeWikitext(options); }).join('\n'); // render references // these will be out of place - this.references().forEach(function (ref) { - text += ref.wikitext(options) + '\n'; + this.references().forEach(ref => { + text += ref.makeWikitext(options) + '\n'; }); return text; }; -var _02Section = toWiki$1; +var _02Section = toWiki$9; -var defaults$2 = {}; +const defaults$1 = {}; -var toWiki$2 = function toWiki(options) { +const toWiki$8 = function (options) { options = options || {}; - options = Object.assign({}, defaults$2, options); - var text = ''; // do images + options = Object.assign({}, defaults$1, options); + let text = ''; // do images - this.images().forEach(function (img) { - text += img.wikitext(); + this.images().forEach(img => { + text += img.makeWikitext(); }); // do lists - this.lists().forEach(function (list) { - text += list.wikitext(); + this.lists().forEach(list => { + text += list.makeWikitext(); }); // render sentences - text += this.sentences().map(function (s) { - return s.wikitext(options); + text += this.sentences().map(s => { + return s.makeWikitext(options); }).join('\n'); return text; }; -var _03Paragraph = toWiki$2; +var _03Paragraph = toWiki$8; //escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(string) { @@ -130,7 +123,7 @@ function escapeRegExp(string) { } //sometimes text-replacements can be ambiguous - words used multiple times.. -var smartReplace = function smartReplace(all, text, result) { +const smartReplace = function (all, text, result) { if (!text || !all) { return all; } @@ -141,7 +134,7 @@ var smartReplace = function smartReplace(all, text, result) { text = escapeRegExp(text); //try a word-boundary replace - var reg = new RegExp('\\b' + text + '\\b'); + let reg = new RegExp('\\b' + text + '\\b'); if (reg.test(all) === true) { all = all.replace(reg, result); @@ -156,32 +149,32 @@ var smartReplace = function smartReplace(all, text, result) { var smartReplace_1 = smartReplace; -var defaults$3 = { +const defaults = { links: true }; -var toWiki$3 = function toWiki(options) { +const toWiki$7 = function (options) { options = options || {}; - options = Object.assign({}, defaults$3, options); - var text = this.text(); + options = Object.assign({}, defaults, options); + let text = this.text(); if (options.links === true) { - this.links().forEach(function (link) { - var str = link.text() || link.page(); - var tag = link.wikitext(); + this.links().forEach(link => { + let str = link.text() || link.page(); + let tag = link.makeWikitext(); text = smartReplace_1(text, str, tag); }); } if (options.formatting === true) { //support bolds - this.bold().forEach(function (str) { - var tag = '**' + str + '**'; + this.bold().forEach(str => { + let tag = '**' + str + '**'; text = smartReplace_1(text, str, tag); }); //do italics - this.italic().forEach(function (str) { - var tag = '***' + str + '***'; + this.italic().forEach(str => { + let tag = '***' + str + '***'; text = smartReplace_1(text, str, tag); }); } @@ -189,42 +182,42 @@ var toWiki$3 = function toWiki(options) { return text; }; -var _04Sentence = toWiki$3; +var _04Sentence = toWiki$7; // add `[text](href)` to the text -var toWiki$4 = function toWiki() { +const toWiki$6 = function () { //if it's an external link, we good if (this.site()) { if (this.text()) { - return "[".concat(this.site(), "|").concat(this.text(), "]"); + return `[${this.site()}|${this.text()}]`; } - return "[".concat(this.site(), "]"); + return `[${this.site()}]`; } - var page = this.page() || ''; + let page = this.page() || ''; if (this.anchor()) { - page += "#".concat(this.anchor()); + page += `#${this.anchor()}`; } - var str = this.text() || ''; + let str = this.text() || ''; if (str && str.toLowerCase() !== page.toLowerCase()) { - return "[[".concat(page, "|").concat(str, "]]"); + return `[[${page}|${str}]]`; } - return "[[".concat(page, "]]"); + return `[[${page}]]`; }; -var _05Link = toWiki$4; +var _05Link = toWiki$6; -var toWiki$5 = function toWiki() { - var text = "[[".concat(this.file(), "|thumb"); - var caption = this.data.caption; +const toWiki$5 = function () { + let text = `[[${this.file()}|thumb`; + let caption = this.data.caption; if (caption) { - text += "|".concat(this.data.caption.wikitext()); + text += `|${this.data.caption.wikitext()}`; } return text + ']]'; @@ -232,93 +225,107 @@ var toWiki$5 = function toWiki() { var image = toWiki$5; -var toWiki$6 = function toWiki() { - var _this = this; +const toWiki$4 = function () { + let text = `{{${this.data.template || ''}`; + Object.keys(this.data).forEach(k => { + if (k === 'template') { + return; + } - var text = "{{Infobox ".concat(this._type || '', "\n"); - Object.keys(this.data).forEach(function (k) { - var val = _this.data[k]; + let val = this.data[k]; if (val) { - text += "| ".concat(k, " = ").concat(val.wikitext() || '', "\n"); + text += `| ${k} = ${val || ''}`; } }); text += '}}\n'; return text; }; -var infobox = toWiki$6; +var template = toWiki$4; + +const toWiki$3 = function () { + let text = `{{Infobox ${this._type || ''}\n`; + Object.keys(this.data).forEach(k => { + let val = this.data[k]; -var toWiki$7 = function toWiki() { - var txt = ''; - this.lines().forEach(function (s) { - txt += "* ".concat(s.wikitext(), "\n"); + if (val) { + text += `| ${k} = ${val.wikitext() || ''}\n`; + } }); - return txt; + text += '}}\n'; + return text; }; -var list = toWiki$7; +var infobox = toWiki$3; + +const toWiki$2 = function () { + let txt = ''; + this.lines().forEach(s => { + txt += `* ${s.wikitext()}\n`; + }); + return txt; +}; -var toWiki$8 = function toWiki() { - var _this = this; +var list = toWiki$2; +const toWiki$1 = function () { if (this.data.inline) { - return "".concat(this.data.inline.wikitext(), ""); + return `${this.data.inline.wikitext()}`; } - var type = this.data.type || 'cite web'; - var data = ''; - Object.keys(this.data).forEach(function (k) { + let type = this.data.type || 'cite web'; + let data = ''; + Object.keys(this.data).forEach(k => { if (k !== 'template' && k !== 'type') { - data += " | ".concat(k, " = ").concat(_this.data[k]); + data += ` | ${k} = ${this.data[k]}`; } }); - return "{{".concat(type).concat(data, "}}"); + return `{{${type}${data}}}`; }; -var reference = toWiki$8; +var reference = toWiki$1; -var toWiki$9 = function toWiki(options) { - var rows = this.data; - var wiki = "{| class=\"wikitable\"\n"; // draw headers +const toWiki = function (options) { + let rows = this.data; + let wiki = `{| class="wikitable"\n`; // draw headers - var headers = Object.keys(rows[0]); - headers = headers.filter(function (k) { - return /^col[0-9]/.test(k) !== true; - }); + let headers = Object.keys(rows[0]); + headers = headers.filter(k => /^col[0-9]/.test(k) !== true); if (headers.length > 0) { wiki += '|-\n'; - headers.forEach(function (k) { + headers.forEach(k => { wiki += '! ' + k + '\n'; }); } //make rows - rows.forEach(function (o) { + rows.forEach(o => { wiki += '|-\n'; - Object.keys(o).forEach(function (k) { - var val = o[k].wikitext(options); + Object.keys(o).forEach(k => { + let val = o[k].wikitext(options); wiki += '| ' + val + '\n'; }); }); - wiki += "|}"; + wiki += `|}`; return wiki; }; -var table = toWiki$9; - -var plugin = function plugin(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; +var table = toWiki; + +const plugin = function (models) { + 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-lock.json b/plugins/wikitext/package-lock.json index d55b94eb..ceb256b6 100644 --- a/plugins/wikitext/package-lock.json +++ b/plugins/wikitext/package-lock.json @@ -1,446 +1,3413 @@ { "name": "wtf-plugin-wikitext", "version": "0.2.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "wtf-plugin-wikitext", + "version": "0.2.0", + "license": "MIT", + "devDependencies": { + "@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", + "rollup-plugin-json": "^4.0.0", + "rollup-plugin-node-resolve": "^5.1.0", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "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.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.2", + "json5": "^2.1.2", + "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/generator": { + "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.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "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.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.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.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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-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-explode-assignable-expression": { + "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.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "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/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "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.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "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/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-optimise-call-expression": { + "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.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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.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.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "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.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "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.13.12" + } + }, + "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", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "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.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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "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.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "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" + }, + "engines": { + "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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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.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.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.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": { + "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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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.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-block-scoped-functions": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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.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.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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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.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.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.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.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.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-umd": { + "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.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.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.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "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.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.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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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-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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/runtime": { + "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.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "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.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" + } + }, + "node_modules/@babel/types": { + "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.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@types/node": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", + "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "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", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "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.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "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.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "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": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "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.16.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/deep-equal": { + "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": { + "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.4", + "object-keys": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "dev": true + }, + "node_modules/es-abstract": { + "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.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.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "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": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "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": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "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.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.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.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.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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "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", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "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": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39" + } + }, + "node_modules/is-reference/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/is-regex": { + "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.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", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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.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" + }, + "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, + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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 + }, + "node_modules/readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/regenerate": { + "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 + }, + "node_modules/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, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "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" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "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" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/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, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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, + "dependencies": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/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, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "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": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.trim": { + "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.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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": { + "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.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "bin": { + "tap-dancer": "src/index.js" + } + }, + "node_modules/tap-dancer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap-dancer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap-dancer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tap-dancer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-dancer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "bin": { + "tap-out": "bin/cmd.js" + } + }, + "node_modules/tape": { + "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": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "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.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "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", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "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.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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "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.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", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true, + "bin": { + "wtf_wikipedia": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.12.13" } }, "@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.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.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.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.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@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.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.9.0", + "@babel/types": "^7.13.0", "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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "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/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@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.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.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.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "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==", + "@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.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@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.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.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/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "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.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.8.3" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3" + "@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.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==", + "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.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" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@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.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.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.8.3" + "@babel/types": "^7.12.13" } }, "@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.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.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==", + "@babel/helper-remap-async-to-generator": { + "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": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@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==", + "@babel/helper-replace-supers": { + "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-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-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-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==", + "@babel/helper-simple-access": { + "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/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/types": "^7.13.12" } }, - "@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==", + "@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/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@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.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.8.3" + "@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.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.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.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/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.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@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.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.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "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.12.11", "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.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.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.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.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.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-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.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.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@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.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.13.0", + "@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.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.8.3", - "@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.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.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.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@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.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.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@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.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.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.8.3", - "@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.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.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.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "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-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -452,6 +3419,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "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.12.13" + } + }, "@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 +3437,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 +3455,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 +3474,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 +3510,407 @@ } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@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.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.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.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.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.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.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.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.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" } }, "@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.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.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@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.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-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.13.0", + "@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.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.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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.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-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@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.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.8.3" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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.12.13" } }, "@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.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.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@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", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@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/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.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==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.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.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@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.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": { - "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,63 +3921,49 @@ } }, "@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.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.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "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.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@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.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.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.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.13" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, @@ -1006,16 +3988,61 @@ "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.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" + } + }, + "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-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==", + "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": { - "object.assign": "^4.1.0" + "@babel/helper-define-polyfill-provider": "^0.1.5" } }, "balanced-match": { @@ -1035,15 +4062,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "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.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1064,10 +4092,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "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.2" + } + }, "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.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { @@ -1096,6 +4134,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "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": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1118,12 +4162,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.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.8.3", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1142,26 +4186,43 @@ "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.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { + "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.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.4", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "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" + }, + "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 +4250,57 @@ } }, "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.704", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", + "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", "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", + "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.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.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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.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.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.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" + }, + "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 +4314,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 +4338,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 +4347,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 +4360,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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 }, @@ -1280,11 +4373,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.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", + "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", @@ -1314,6 +4418,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", @@ -1321,9 +4431,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": { @@ -1342,39 +4452,75 @@ "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==", + "is-arguments": { + "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": { - "loose-envify": "^1.0.0" + "call-bind": "^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==", + "is-bigint": { + "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.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.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "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.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-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.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "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.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": { + "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 +4539,27 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, + "is-set": { + "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": { + "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 +4569,31 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "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.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^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 +4601,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,61 +4641,25 @@ "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": { - "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 }, - "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" - } + "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": { "version": "0.25.7", @@ -1531,9 +4686,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 +4698,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.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "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.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.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.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } }, "object-keys": { "version": "1.1.1", @@ -1578,15 +4726,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 +4746,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 +4758,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 +4795,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,35 +4810,34 @@ } }, "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": { - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "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,15 +4849,15 @@ } }, "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": { - "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" @@ -1779,12 +4890,12 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "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": { @@ -1839,16 +4950,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": { @@ -1867,16 +4977,30 @@ "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": { - "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { "version": "0.5.7", @@ -1885,9 +5009,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", @@ -1917,44 +5041,44 @@ "through": "2" } }, - "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==", + "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "safe-buffer": "~5.1.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.trim": { + "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", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.2" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimend": { + "version": "1.0.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", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "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==", + "string.prototype.trimstart": { + "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": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -1967,13 +5091,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 +5164,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.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "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.4", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "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.2.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 } } @@ -2048,6 +5237,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", @@ -2082,11 +5283,57 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "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.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": { + "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.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", + "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" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "wtf_wikipedia": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/wtf_wikipedia/-/wtf_wikipedia-8.5.1.tgz", + "integrity": "sha512-tvLDPsC9bGG9ABMijCCEFwPhK4678glSVX45UwXwT7KhTJgQFhn3cdm84cMOKSTag+/bRfgBG+qe9qXn3AyStw==", + "peer": true } } } diff --git a/plugins/wikitext/package.json b/plugins/wikitext/package.json index 9156d94a..00488c02 100644 --- a/plugins/wikitext/package.json +++ b/plugins/wikitext/package.json @@ -1,12 +1,16 @@ { "name": "wtf-plugin-wikitext", "description": "wikitext output plugin for wtf_wikipedia", - "version": "0.2.0", + "version": "1.1.0", "main": "./builds/wtf-plugin-wikitext.js", "unpkg": "./builds/wtf-plugin-wikitext.min.js", "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", @@ -23,22 +27,21 @@ "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", + "@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", "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.2.2" }, - "licence": "MIT" + "license": "MIT" } 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/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..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 +const plugin = function (models) { + 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/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 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 66a3d52a..3cbff7d6 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() @@ -24,7 +24,8 @@ test('basic-wikitext', (t) => { ] arr.forEach((str) => { let doc = wtf(str) - t.equal(tidy(doc.wikitext()), tidy(str), str) + let have = doc.makeWikitext() + t.equal(tidy(have), tidy(str), str) }) t.end() }) diff --git a/plugins/wikitext/tests/stress.test.js b/plugins/wikitext/tests/stress.test.js index e364c490..f67ff810 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', @@ -86,7 +86,7 @@ var 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 832fb304..246f93cf 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().makeWikitext() 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().makeWikitext() t.equal(tidy(have), tidy(str), 'no-header') diff --git a/readFile.js b/readFile.js deleted file mode 100644 index cb6662fe..00000000 --- a/readFile.js +++ /dev/null @@ -1,8 +0,0 @@ -var wtf = require('./src/index') -wtf.extend(require('./plugins/summary/src')) - -let file = 'United-Kingdom' -let str = require('fs').readFileSync(`/Users/spencer/mountain/wtf_wikipedia/tests/cache/${file}.txt`).toString() - -let doc = wtf(str) -console.log(JSON.stringify(doc.summary(), null, 2)) diff --git a/rollup.config.js b/rollup.config.js index 9ba2f2dd..6eb9f2f3 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,8 +1,8 @@ import commonjs from 'rollup-plugin-commonjs' import { terser } from 'rollup-plugin-terser' import babel from 'rollup-plugin-babel' -import alias from '@rollup/plugin-alias' 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') @@ -13,7 +13,7 @@ export default [ { input: 'src/index.js', output: [{ banner: banner, file: 'builds/wtf_wikipedia.mjs', format: 'esm' }], - external: ['https'], + external: ['isomorphic-unfetch'], plugins: [ commonjs(), babel({ @@ -32,10 +32,12 @@ export default [ file: 'builds/wtf_wikipedia.js', format: 'umd', name: 'wtf', - globals: { https: 'https' }, + globals: { + "isomorphic-unfetch": 'unfetch' + } }, ], - external: ['https'], + external: ['isomorphic-unfetch'], plugins: [ commonjs(), babel({ @@ -55,21 +57,19 @@ export default [ file: 'builds/wtf_wikipedia-client.js', format: 'umd', name: 'wtf', - sourcemap: false, + sourcemap: false }, ], plugins: [ + nodeResolve({ + browser: true + }), commonjs(), babel({ babelrc: false, presets: ['@babel/preset-env'], }), - alias({ - entries: [ - { find: './http/server', replacement: './http/client' }, - { find: './_fetch/http/server', replacement: './_fetch/http/client' }, - ], - }), + ], }, // === client-side min.js === @@ -85,17 +85,14 @@ export default [ }, ], plugins: [ + nodeResolve({ + browser: true + }), commonjs(), babel({ babelrc: false, presets: ['@babel/preset-env'], }), - alias({ - entries: [ - { find: './http/server', replacement: './http/client' }, - { find: './_fetch/http/server', replacement: './_fetch/http/client' }, - ], - }), terser(), sizeCheck({ expect: 123, warn: 10 }), ], @@ -113,17 +110,14 @@ export default [ }, ], plugins: [ + nodeResolve({ + browser: true + }), commonjs(), babel({ babelrc: false, presets: ['@babel/preset-env'], }), - alias({ - entries: [ - { find: './http/server', replacement: './http/client' }, - { find: './_fetch/http/server', replacement: './_fetch/http/client' }, - ], - }), terser(), sizeCheck({ expect: 123, warn: 10 }), ], diff --git a/scratch.js b/scratch.js index f25ff334..22586731 100644 --- a/scratch.js +++ b/scratch.js @@ -1,20 +1,14 @@ -var wtf = require('./src/index') +const wtf = require('./src/index') wtf.extend(require('./plugins/wikitext/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()) +// one +// let str = `[[one]] and [[two]] {{one}} and {{two}}` +// let doc = wtf(str) +// console.log(doc.templates(1)[0].json()) -// wtf.fetch('Quartz', 'en').then((doc) => { -// // console.log(doc.lang()) -// 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 str = `{{Infobox country +| common_name = United Kingdom +}} ` -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 obj = wtf(str).infobox(0).json() +console.log(obj) diff --git a/scripts/fetch-templates.js b/scripts/fetch-templates.js index 8d0eb5a5..c8349179 100644 --- a/scripts/fetch-templates.js +++ b/scripts/fetch-templates.js @@ -1,18 +1,27 @@ const got = require('got') const ns = 10 //templates +// known templates we don't need custom stuff for +// const doNothing = { +// about: true, +// main: true, +// 'main list': true, +// see: true, +// for: true, +// 'further information': true, +// listen: true, +// } + let url = - 'https://en.wikipedia.org/w/api.php?action=query&list=allpages&aplimit=500&apnamespace=' + - ns + - '&format=json' + 'https://wiki.openstreetmap.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/scripts/test.js b/scripts/test.js index 5d1d819e..68cacac6 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -1,31 +1,11 @@ const sh = require('shelljs') -// if given, run just one test: -let arg = process.argv[2] -if (arg) { - let code = 0 - console.log(arg + ':') - if (arg === 'main') { - code = sh.exec('tape "./tests/*.test.js" | tap-dancer --color always').code - } else if (arg === 'category') { - // these are hard on wikipedia - code = sh.exec(`tape "./plugins/${arg}/tests/*.fetch.js" | tap-dancer --color always`).code - } else { - code = sh.exec(`tape "./plugins/${arg}/tests/*.test.js" | tap-dancer --color always`).code - } - sh.exit(code) -} - -// run the main tests: +let code = 0 let fail = false -let code = sh.exec('tape "./tests/*.test.js" | tap-dancer --color always').code -if (code !== 0) { - fail = true -} // run each plugin's tests: sh.ls('./plugins').forEach(function (dir) { - console.log(dir) + console.log(dir + ':') code = sh.exec(`tape "./plugins/${dir}/tests/*.test.js" | tap-dancer --color always`).code if (code !== 0) { console.log(dir) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index 35d0df43..4d7d487a 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -1,8 +1,9 @@ const sectionMap = require('./_sectionMap') const toJSON = require('./toJson') -const disambig = require('./disambig') +const isDisambig = require('./isDisambig') const setDefaults = require('../_lib/setDefaults') const Image = require('../image/Image') + const redirects = require('./redirects') const preProcess = require('./preProcess') const parse = { @@ -10,53 +11,18 @@ 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 - * - * 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 - * @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 +/** + * The document class is the main entry point of wtf_wikipedia. + * this class represents an article of wikipedia. + * from here you can go to the infoboxes or paragraphs * - * @borrows Document#reference as Document#citations + * @class */ class Document { /** @@ -68,24 +34,34 @@ 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, + title: options.title || null, + type: 'page', + redirectTo: null, + wikidata: options.wikidata || null, + wiki: wiki || '', + categories: [], + sections: [], + coordinates: [], + } + // this._missing_templates = {} //for stats+debugging purposes + + 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 @@ -126,9 +102,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 } @@ -144,7 +120,7 @@ class Document { if (id !== undefined) { this._pageID = id } - return this._pageID + return this._pageID || null } /** @@ -158,7 +134,7 @@ class Document { if (id !== undefined) { this._wikidata = id } - return this._wikidata + return this._wikidata || null } /** @@ -172,7 +148,7 @@ class Document { if (str !== undefined) { this._domain = str } - return this._domain + return this._domain || null } /** @@ -186,12 +162,7 @@ class Document { if (lang !== undefined) { this._lang = lang } - return this._lang - } - - //eslint-disable-next-line require-jsdoc -- inherits from language - lang(lang) { - return this.language(lang) + return this._lang || null } /** @@ -225,12 +196,7 @@ class Document { if (ns !== undefined) { this._namespace = ns } - return this._namespace - } - - //eslint-disable-next-line require-jsdoc -- inherits from namespace - ns(ns) { - return this.namespace(ns) + return this._namespace || null } /** @@ -245,63 +211,33 @@ 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 - redirectsTo() { - return this.redirectTo() - } - - //eslint-disable-next-line require-jsdoc -- inherits from redirectTo - redirect() { - return this.redirectTo() - } - - //eslint-disable-next-line require-jsdoc -- inherits from redirectTo - redirects() { - return this.redirectTo() - } - /** * This function finds out if a page is a disambiguation page * * @returns {boolean} Whether the page is a disambiguation page */ isDisambiguation() { - return disambig(this) - } - - //eslint-disable-next-line require-jsdoc -- inherits from isDisambiguation - isDisambig() { - return this.isDisambiguation() + return isDisambig(this) } /** * 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) { + let arr = this._categories || [] if (typeof clue === 'number') { - return this._categories[clue] + return [arr[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) + return arr } /** @@ -312,45 +248,34 @@ 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 }) + } else if (typeof clue === 'number') { + return [arr[clue]] } - - 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 * * 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 {Paragraph | Paragraph[]} the selected paragraph or an array of all paragraphs + * @param {number | string} [clue] given index of a paragraph + * @returns {object | object[]} the selected paragraph or an array of all paragraphs */ paragraphs(clue) { let arr = [] @@ -358,31 +283,16 @@ class Document { arr = arr.concat(s.paragraphs()) }) if (typeof clue === 'number') { - return arr[clue] + 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 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 - * @returns {Sentence[]|Sentence} an array of sentences or a single sentence + * @param {number | string} [clue] given index of a sentence + * @returns {object[]|object} an array of sentences or a single sentence */ sentences(clue) { let arr = [] @@ -390,27 +300,16 @@ class Document { arr = arr.concat(sec.sentences()) }) if (typeof clue === 'number') { - return arr[clue] + 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. * 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) { @@ -424,9 +323,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() @@ -437,21 +336,11 @@ class Document { } }) if (typeof clue === 'number') { - return arr[clue] + 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 * @@ -462,16 +351,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 * @@ -487,70 +366,40 @@ 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) @@ -562,28 +411,13 @@ class Document { * @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) - } - - //eslint-disable-next-line require-jsdoc -- inherits from reference citations(clue) { 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 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 @@ -592,26 +426,16 @@ 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') + 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) { @@ -619,20 +443,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 } /** @@ -651,11 +463,6 @@ class Document { return arr.join('\n\n') } - //eslint-disable-next-line require-jsdoc -- inherits from text - plaintext(options) { - return this.text(options) - } - /** * return a json version of the Document class * @@ -667,6 +474,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 * @@ -676,7 +492,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)')) @@ -685,4 +501,37 @@ 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) + return arr[0] || null + } +}) +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 new file mode 100644 index 00000000..e6d9f126 --- /dev/null +++ b/src/01-document/_disambig.js @@ -0,0 +1,45 @@ +//alt disambig-templates en-wikipedia uses +let d = ' disambiguation' +const templates = [ + 'dab', + 'dab', + 'disamb', + 'disambig', + 'geodis', + 'hndis', + 'setindex', + 'ship index', + 'split dab', + 'sport index', + 'wp disambig', + 'disambiguation cleanup', + 'airport' + d, + 'biology' + d, + 'call sign' + d, + 'caselaw' + d, + 'chinese title' + d, + 'genus' + d, + 'hospital' + d, + 'lake index', + 'letter' + d, + 'letter-number combination' + d, + 'mathematical' + d, + 'military unit' + d, + 'mountainindex', + 'number' + d, + 'phonetics' + d, + 'place name' + d, + 'portal' + d, + 'road' + d, + 'school' + d, + 'species latin name abbreviation' + d, + 'species latin name' + d, + 'station' + d, + 'synagogue' + d, + 'taxonomic authority' + d, + 'taxonomy' + d, +].reduce((h, str) => { + h[str] = true + return h +}, {}) +module.exports = templates diff --git a/src/01-document/_sectionMap.js b/src/01-document/_sectionMap.js index 738d1c26..81a02d43 100644 --- a/src/01-document/_sectionMap.js +++ b/src/01-document/_sectionMap.js @@ -5,23 +5,26 @@ * @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 = [] - 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) }) }) if (typeof clue === 'number') { - return arr[clue] + if (arr[clue] === undefined) { + return [] + } + return [arr[clue]] } return arr } diff --git a/src/01-document/disambig.js b/src/01-document/disambig.js deleted file mode 100644 index c725b5c5..00000000 --- a/src/01-document/disambig.js +++ /dev/null @@ -1,78 +0,0 @@ -const i18n = require('../_data/disambig').reduce((h, str) => { - h[str] = true - return h -}, {}) - -//special disambig-templates en-wikipedia uses -let d = ' disambiguation' -const english = [ - 'dab', - 'dab', - 'disamb', - 'disambig', - 'geodis', - 'hndis', - 'setindex', - 'ship index', - 'split dab', - 'sport index', - 'wp disambig', - 'disambiguation cleanup', - 'airport' + d, - 'biology' + d, - 'call sign' + d, - 'caselaw' + d, - 'chinese title' + d, - 'genus' + d, - 'hospital' + d, - 'lake index', - 'letter' + d, - 'letter-number combination' + d, - 'mathematical' + d, - 'military unit' + d, - 'mountainindex', - 'number' + d, - 'phonetics' + d, - 'place name' + d, - 'portal' + d, - 'road' + d, - 'school' + d, - 'species latin name abbreviation' + d, - 'species latin name' + d, - 'station' + d, - 'synagogue' + d, - 'taxonomic authority' + d, - 'taxonomy' + d, -].reduce((h, str) => { - h[str] = true - return h -}, {}) - -/** - * Parses the wikitext to find out if this page is a disambiguation - * - * @private - * @param {Document} doc the document that is examined - * @returns {boolean} an indication if the document is a disambiguation page - */ -const isDisambig = function (doc) { - let templates = doc.templates() - let found = templates.find(obj => { - return english.hasOwnProperty(obj.template) || i18n.hasOwnProperty(obj.template) - }) - if (found) { - return true - } - //try 'may refer to' on first line for en-wiki? - if (doc.sentences(0)) { - let firstLine = doc.sentences(0).text() - if (firstLine !== null && firstLine[0]) { - if (/. may refer to ./i.test(firstLine) === true) { - return true - } - } - } - return false -} - -module.exports = isDisambig diff --git a/src/01-document/isDisambig.js b/src/01-document/isDisambig.js new file mode 100644 index 00000000..dfa600dd --- /dev/null +++ b/src/01-document/isDisambig.js @@ -0,0 +1,51 @@ +const i18n = require('../_data/i18n') +const alt_disambig = require('./_disambig') +const inTitle = new RegExp('. \\((' + i18n.disambig_titles.join('|') + ')\\)$', 'i') +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 + * + * @private + * @param {Document} doc the document that is examined + * @returns {boolean} an indication if the document is a disambiguation page + */ +const isDisambig = function (doc) { + // check for a {{disambig}} template + let templates = doc.templates().map((tmpl) => tmpl.json()) + let found = templates.find((obj) => { + return alt_disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template) + }) + if (found) { + return true + } + // check for (disambiguation) in title + let title = doc.title() + if (title && inTitle.test(title) === true) { + return true + } + //try 'may refer to' on first line for en-wiki? + if (byText(doc.sentence(0)) === true || byText(doc.sentence(1)) === true) { + return true + } + return false +} + +module.exports = isDisambig 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/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/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..4abe0635 100644 --- a/src/01-document/toJson.js +++ b/src/01-document/toJson.js @@ -1,4 +1,18 @@ const setDefaults = require('../_lib/setDefaults') + +/** + * @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, @@ -6,25 +20,56 @@ const defaults = { categories: true, } -//an opinionated output of the most-wanted data +/** + * @typedef documentToJsonReturn + * @property {string | undefined} title + * @property {number | null | undefined} pageID + * @property {string[] | undefined} categories + * @property {object[] | undefined} sections + * @property {boolean | undefined} isRedirect + * @property {object | undefined} redirectTo + * @property {object[] | undefined} coordinates + * @property {object[] | undefined} infoboxes + * @property {Image[] | undefined} images + * @property {string | undefined} plaintext + * @property {object[] | 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)) + 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 +77,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)) + 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) } + 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 5b1db996..c2d67a35 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -1,6 +1,15 @@ 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,260 +18,509 @@ 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, - }) -} +/** + * 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 { + /** + * 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) { + 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) + this._wiki = startEndTemplates.text + this._templates = this._templates.concat(startEndTemplates.templates) -const methods = { - title: function () { + //parse-out the tags + parse.references(this) + //parse-out all {{templates}} + parse.templates(this, doc) + + //parse the tables + parse.table(this) + + //now parse all double-newlines + 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 || '' - }, - index: function () { - if (!this.doc) { + } + + /** + * 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 } - 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) { - let arr = this.paragraphs().reduce((list, p) => { + } + + /** + * 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() + } + + /** + * returns all sentences in the section + * if an clue is provided then it returns the sentence at clue-th index + * + * @returns {object | object[]} all sentences in an array or the clue-th sentence + */ + sentences() { + return this.paragraphs().reduce((list, p) => { return list.concat(p.sentences()) }, []) - if (typeof n === 'number') { - return arr[n] - } - return arr || [] - }, - paragraphs: function (n) { - let arr = this.data.paragraphs || [] - if (typeof n === 'number') { - return arr[n] - } - return arr || [] - }, - paragraph: function (n) { - let arr = this.data.paragraphs || [] - if (typeof n === 'number') { - return arr[n] - } - return arr[0] - }, - links: function (n) { + } + + /** + * returns all paragraphs in the section + * if an clue is provided then it returns the paragraph at clue-th index + * + * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph + */ + paragraphs() { + return this._paragraphs || [] + } + + /** + * 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 {object | object[]} 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 => { - templ.links(n).forEach(link => arr.push(link)) + + this.infoboxes().forEach((templ) => { + arr.push(templ.links()) }) - this.sentences().forEach(s => { - s.links(n).forEach(link => arr.push(link)) + + this.sentences().forEach((s) => { + arr.push(s.links()) }) - this.tables().forEach(t => { - t.links(n).forEach(link => arr.push(link)) + + this.tables().forEach((t) => { + arr.push(t.links()) }) - this.lists().forEach(list => { - list.links(n).forEach(link => arr.push(link)) + + this.lists().forEach((list) => { + arr.push(list.links()) }) - 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) + + 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 clue === 'string') { + let link = arr.find((o) => o.page().toLowerCase() === clue.toLowerCase()) return link === undefined ? [] : [link] } + return arr - }, - tables: function (clue) { - let arr = this.data.tables || [] - if (typeof clue === 'number') { - return arr[clue] - } - return arr - }, - templates: function (clue) { - let arr = this.data.templates || [] - arr = arr.map(t => t.json()) - if (typeof clue === 'number') { - return arr[clue] - } + } + + /** + * returns all tables in the section + * if an clue is provided then it returns the table at clue-th index + * + * @returns {object | object[]} all tables in an array or the clue-th infobox + */ + tables() { + return this._tables || [] + } + + /** + * 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 {object | object[]} 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()) if (typeof clue === 'string') { clue = clue.toLowerCase() - return arr.filter(o => o.template === clue || o.name === clue) - } - return arr - }, - infoboxes: function (clue) { - let arr = this.data.infoboxes || [] - if (typeof clue === 'number') { - return arr[clue] + return arr.filter((o) => o.data.template === clue || o.data.name === clue) } + return arr - }, - coordinates: function (clue) { - let arr = [].concat(this.templates('coord'), this.templates('coor')) - if (typeof clue === 'number') { - if (!arr[clue]) { - return [] - } - return arr[clue] + } + + /** + * returns all infoboxes in the 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 {object | object[]} all infoboxes in an array or the clue-th infobox + */ + infoboxes(clue) { + let arr = this._infoboxes || [] + if (typeof clue === 'string') { + clue = clue.replace(/^infobox /i, '') + clue = clue.trim().toLowerCase() + return arr.filter((info) => info._type === clue) } return arr - }, - lists: function (clue) { + } + + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + coordinates() { + let arr = [...this.templates('coord'), ...this.templates('coor')] + return arr.map((tmpl) => tmpl.json()) + } + + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + lists() { let arr = [] - this.paragraphs().forEach(p => { + this.paragraphs().forEach((p) => { arr = arr.concat(p.lists()) }) - if (typeof clue === 'number') { - return arr[clue] - } 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 + * + * @returns {object | object[]} all interwiki links in an array or the clue-th interwiki link + */ + interwiki() { let arr = [] - this.paragraphs().forEach(p => { + this.paragraphs().forEach((p) => { arr = arr.concat(p.interwiki()) }) - if (typeof num === 'number') { - return arr[num] - } - return arr || [] - }, - images: function (clue) { + return arr + } + + /** + * returns all images in the section + * if an clue is provided then it returns the image at clue-th index + * + * @returns {Image | Image[]} all images in an array or the clue-th image + */ + images() { let arr = [] - this.paragraphs().forEach(p => { + this.paragraphs().forEach((p) => { arr = arr.concat(p.images()) }) - if (typeof clue === 'number') { - return arr[clue] - } - return arr || [] - }, - references: function (clue) { - let arr = this.data.references || [] - if (typeof clue === 'number') { - return arr[clue] - } return arr - }, + } + + /** + * returns all references in the section + * if an clue is provided then it returns the reference at clue-th index + * + * @returns {object | object[]} all references in an array or the clue-th reference + */ + references() { + return this._references || [] + } //transformations - remove: function () { - if (!this.doc) { + /** + * 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) - this.doc._sections = sections - return this.doc - }, + 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 - nextSibling: function () { - if (!this.doc) { + /** + * 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) { return null } - 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) { + + //first we get the a list of sections and our own position in this list + let sections = this._doc.sections() + 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 + //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) { + } + + /** + * 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 } - let sections = this.doc.sections() - let index = this.index() + let sections = this._doc.sections() + let index = this.index() || 0 return sections[index - 1] || null - }, - children: function (n) { - if (!this.doc) { + } + + /** + * 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() + } + + /** + * 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 } - let sections = this.doc.sections() - let index = this.index() + let sections = this._doc.sections() + let index = this.index() || 0 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 } } } - if (typeof n === 'string') { - n = n.toLowerCase() - return children.find(s => s.title().toLowerCase() === n) - } - if (typeof n === 'number') { - return children[n] + if (typeof clue === 'string') { + return children.find((s) => s.title().toLowerCase() === clue.toLowerCase()) } return children - }, - parent: function () { - if (!this.doc) { + } + + /** + * 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() + let sections = this._doc.sections() + let index = this.index() || 0 + 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) { + } + + //outputs + + /** + * returns a plaintext version of the section + * + * @param {object} 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') - }, - json: function (options) { + 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 + * + * @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) - }, + } } -//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] -}) +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: 'citation', +} +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] || null + } +}) module.exports = Section diff --git a/src/02-section/heading.js b/src/02-section/heading.js index 37859d81..19cc7655 100644 --- a/src/02-section/heading.js +++ b/src/02-section/heading.js @@ -1,10 +1,25 @@ -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) { + +/** + * @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) { section.title = '' @@ -13,21 +28,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 } + let obj = { _wiki: title } parseReferences(obj) - title = obj.wiki + 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/02-section/index.js b/src/02-section/index.js index 9914b41a..aee65b2f 100644 --- a/src/02-section/index.js +++ b/src/02-section/index.js @@ -6,40 +6,29 @@ 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 } +/** + * 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) { 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?... + if (sections[i + 1] && sections[i + 1].depth() > s.depth()) { + sections[i + 1]._depth -= 1 //move it up a level?... } return false } @@ -47,31 +36,40 @@ 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 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..b4e30e87 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 {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) => { 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 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 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..b22975a6 100644 --- a/src/02-section/start-to-end/gallery.js +++ b/src/02-section/start-to-end/gallery.js @@ -3,18 +3,25 @@ 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 {object} 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 +30,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..6095ba88 100644 --- a/src/02-section/start-to-end/index.js +++ b/src/02-section/start-to-end/index.js @@ -4,16 +4,36 @@ 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 Template = require('../../template/Template') + +/** + * 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 + * @returns {Object} wikitext + */ const xmlTemplates = function (section, doc) { - parseElection(section) - parseGallery(section, doc) - parseMath(section) - parseMlb(section) - parseMMA(section) - parseNBA(section) + const res = { + templates: [], + text: section._wiki, + } + + parseElection(res) + parseGallery(res, doc, section) + parseMath(res) + parseMlb(res) + parseMMA(res) + parseNBA(res) + + // turn them into Template objects + res.templates = res.templates.map((obj) => new Template(obj)) + return res } 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..ffffe59c 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 {object} 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..0e11ef7c 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,28 +15,38 @@ const whichHeadings = function(tmpl) { } return headings } +/** + * + * @private + * @param {object} 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) -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 => { - 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) - rows = rows.map(row => { - Object.keys(row).forEach(k => { - row[k] = row[k].text() + 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() + }) + return row + }) + + catcher.templates.push({ + template: 'mlb game log section', + data: rows, }) - return row - }) - section.templates.push({ - template: 'mlb game log section', - data: rows - }) - return '' - }) - section.wiki = wiki + + //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 2e2548c1..e112b426 100644 --- a/src/02-section/start-to-end/mma.js +++ b/src/02-section/start-to-end/mma.js @@ -1,27 +1,35 @@ 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 {object} 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) - 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 }) - 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..88b37b6b 100644 --- a/src/02-section/start-to-end/nba.js +++ b/src/02-section/start-to-end/nba.js @@ -2,32 +2,41 @@ 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) => { - 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) +/** + * https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start + * + * @private + * @param {object} 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() - 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 - }) - section.templates.push({ - template: 'NBA ' + name + ' statistics', - data: rows - }) - return '' - }) - section.wiki = wiki + + catcher.templates.push({ + template: 'NBA ' + name + ' statistics', + data: rows, + }) + + //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 fb396cea..8fd87f5b 100644 --- a/src/02-section/toJson.js +++ b/src/02-section/toJson.js @@ -10,74 +10,89 @@ const defaults = { templates: true, infoboxes: true, lists: true, - references: true + references: true, } -// -const toJSON = function(section, options) { + +/** + * + * @param {Section} section + * @param {sectionToJsonOptions} options + * @returns {object} + */ +const toJSON = function (section, options) { options = setDefaults(options, defaults) + /** + * @type {object} + */ let data = {} + if (options.headers === true) { data.title = section.title() } + if (options.depth === true) { - data.depth = section.depth + data.depth = section.depth() } + //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 } } + //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 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/Paragraph.js b/src/03-paragraph/Paragraph.js index 97a4f661..035e65dc 100644 --- a/src/03-paragraph/Paragraph.js +++ b/src/03-paragraph/Paragraph.js @@ -14,53 +14,36 @@ const Paragraph = function (data) { } const methods = { - sentences: function (num) { - if (typeof num === 'number') { - return this.data.sentences[num] - } + sentences: function () { return this.data.sentences || [] }, - references: function (num) { - if (typeof num === 'number') { - return this.data.references[num] - } + references: function () { return this.data.references }, - lists: function (num) { - if (typeof num === 'number') { - return this.data.lists[num] - } + lists: function () { return this.data.lists }, - images(num) { - if (typeof num === 'number') { - return this.data.images[num] - } + images() { return this.data.images || [] }, - links: function (n) { + links: function (clue) { let arr = [] this.sentences().forEach((s) => { - arr = arr.concat(s.links(n)) + arr = arr.concat(s.links(clue)) }) - if (typeof n === 'number') { - return arr[n] - } else if (typeof n === 'string') { + if (typeof clue === '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) + clue = clue.charAt(0).toUpperCase() + clue.substring(1) //titlecase it + let link = arr.find((o) => o.page() === clue) return link === undefined ? [] : [link] } return arr || [] }, - interwiki(num) { + interwiki() { let arr = [] this.sentences().forEach((s) => { arr = arr.concat(s.interwiki()) }) - if (typeof num === 'number') { - return arr[num] - } return arr || [] }, text: function (options) { @@ -77,9 +60,33 @@ 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) => { 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 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/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/Sentence.js b/src/04-sentence/Sentence.js index fadcc78a..e020eb4c 100644 --- a/src/04-sentence/Sentence.js +++ b/src/04-sentence/Sentence.js @@ -1,7 +1,7 @@ const toJSON = require('./toJson') //where we store the formatting, link, date information -const Sentence = function (data) { +const Sentence = function (data = {}) { Object.defineProperty(this, 'data', { enumerable: false, value: data, @@ -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) @@ -21,39 +19,20 @@ const methods = { } return arr }, - interwiki: function (n) { - let arr = this.links().filter((l) => l.wiki !== undefined) - if (typeof n === 'number') { - return arr[n] - } - 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 || [] } - if (typeof n === 'number') { - return arr[n] - } - 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 || [] - } - if (typeof n === 'number') { - return arr[n] - } - return arr - }, - dates: function (n) { - let arr = [] - if (typeof n === 'number') { - return arr[n] + return this.data.fmt.italic || [] } - return arr + return [] }, text: function (str) { if (str !== undefined && typeof str === 'string') { @@ -65,13 +44,35 @@ const methods = { json: function (options) { return toJSON(this, options) }, + wikitext: function () { + return this.data.wiki || '' + }, + isEmpty: function () { + return this.data.text === '' + }, } 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', +} +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/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/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/src/04-sentence/parse.js b/src/04-sentence/parse.js index ac83cb52..db41e40b 100644 --- a/src/04-sentence/parse.js +++ b/src/04-sentence/parse.js @@ -7,10 +7,10 @@ const literalAbbreviations = require('./_abbreviations') const abbreviations = literalAbbreviations.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') +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) { 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_templates.js similarity index 99% rename from src/_data/disambig.js rename to src/_data/disambig_templates.js index 98cbd8e4..c54b64c8 100644 --- a/src/_data/disambig.js +++ b/src/_data/disambig_templates.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/disambig_titles.js b/src/_data/disambig_titles.js new file mode 100644 index 00000000..196552a0 --- /dev/null +++ b/src/_data/disambig_titles.js @@ -0,0 +1,20 @@ +// used in titles to denote disambiguation pages +// see 'Football_(disambiguation)' +module.exports = [ + 'disambiguation', //en + 'homonymie', //fr + 'توضيح', //ar + 'desambiguação', //pt + 'Begriffsklärung', //de + 'disambigua', //it + '曖昧さ回避', //ja + '消歧義', //zh + '搞清楚', //zh-yue + 'значения', //ru + 'ابهام‌زدایی', //fa + 'د ابہام', //ur + '동음이의', //ko + 'dubbelsinnig', //af + 'այլ կիրառումներ', //hy + 'ujednoznacznienie', //pl +] diff --git a/src/_data/flags.js b/src/_data/flags.js index 46b9109f..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'], @@ -269,5 +256,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 5800627e..ba206b0b 100644 --- a/src/_data/i18n.js +++ b/src/_data/i18n.js @@ -1,58 +1,72 @@ -// 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'), + disambig_templates: require('./disambig_templates'), + disambig_titles: require('./disambig_titles'), images: require('./images'), infoboxes: require('./infoboxes'), redirects: require('./redirects'), - references: require('./references') + 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/_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/00-parseUrl.js b/src/_fetch/00-parseUrl.js deleted file mode 100644 index bc1be3b8..00000000 --- a/src/_fetch/00-parseUrl.js +++ /dev/null @@ -1,10 +0,0 @@ -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 - } -} -module.exports = parseUrl diff --git a/src/_fetch/01-makeUrl.js b/src/_fetch/01-makeUrl.js deleted file mode 100644 index f5223d5c..00000000 --- a/src/_fetch/01-makeUrl.js +++ /dev/null @@ -1,67 +0,0 @@ -const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/ - -const defaults = { - action: 'query', - prop: 'revisions|pageprops', //we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. - rvprop: 'content', - maxlag: 5, - rvslots: 'main', - origin: '*', - format: 'json', - redirects: 'true', -} - -const toQueryString = function (obj) { - return Object.entries(obj) - .map(([key, value]) => { - return `${encodeURIComponent(key)}=${encodeURIComponent(value)}` - }) - .join('&') -} - -const isArray = function (arr) { - return Object.prototype.toString.call(arr) === '[object Array]' -} - -const cleanTitle = (page) => { - page = page.replace(/ /g, '_') - page = page.trim() - // page = encodeURIComponent(page) - return page -} - -const makeUrl = function (options) { - let params = Object.assign({}, defaults) - // default url - let url = `https://${options.lang}.${options.wiki}.org/w/api.php?` - // from a 3rd party wiki - options.domain = options.domain || options.wikiUrl //support old syntax - if (options.domain) { - let path = options.path - //wikimedia api uses ./w/api path. no others do - if (isInterWiki.test(options.domain)) { - path = 'w/api.php' - } - url = `https://${options.domain}/${path}?` - } - if (!options.follow_redirects) { - delete params.redirects - } - // support numerical ids - let page = options.title - if (typeof page === 'number') { - params.pageids = page //single pageId - } else if (isArray(page) && typeof page[0] === 'number') { - params.pageids = page.join('|') //pageid array - } else if (isArray(page) === true) { - //support array - params.titles = page.map(cleanTitle).join('|') - } else { - // single page - params.titles = cleanTitle(page) - } - // make it! - url += toQueryString(params) - return url -} -module.exports = makeUrl diff --git a/src/_fetch/03-parseDoc.js b/src/_fetch/03-parseDoc.js deleted file mode 100644 index cda3d111..00000000 --- a/src/_fetch/03-parseDoc.js +++ /dev/null @@ -1,17 +0,0 @@ -const Document = require('../01-document/Document') - -//flip response object into proper Doc objs -const parseDoc = function (res) { - res = res.filter(o => o) - let docs = res.map(o => { - return new Document(o.wiki, o.meta) - }) - if (docs.length === 0) { - return null - } - if (docs.length === 1) { - return docs[0] - } - return docs -} -module.exports = parseDoc diff --git a/src/_fetch/_headers.js b/src/_fetch/_headers.js index 63039e94..c2fa7b72 100644 --- a/src/_fetch/_headers.js +++ b/src/_fetch/_headers.js @@ -1,3 +1,10 @@ +/** + * factory for header options + * + * @private + * @param {object} options + * @returns {object} the generated options + */ const makeHeaders = function (options) { let agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library' @@ -9,16 +16,16 @@ const makeHeaders = function (options) { origin = options.origin || options.Origin || '*' } - const opts = { + return { method: 'GET', headers: { 'Content-Type': 'application/json', 'Api-User-Agent': agent, 'User-Agent': agent, Origin: origin, + 'Accept-Encoding': 'gzip', }, redirect: 'follow', } - return opts } module.exports = makeHeaders diff --git a/src/_fetch/02-getResult.js b/src/_fetch/getResult.js similarity index 54% rename from src/_fetch/02-getResult.js rename to src/_fetch/getResult.js index 9d1c5bf4..22a14494 100644 --- a/src/_fetch/02-getResult.js +++ b/src/_fetch/getResult.js @@ -1,23 +1,41 @@ -//this data-format from mediawiki api is nutso -const getResult = function (data, options) { - options = options || {} +/** + * parses the media wiki api response to something we can use + * + * the data-format from mediawiki api is nutso + * + * @private + * @param {object} data + * @param {object} [options] + * @returns {*} result + */ +const getResult = function (data, options = {}) { + //get all the pagesIds from the result let pages = Object.keys(data.query.pages) - let docs = pages.map((id) => { + + // map over the pageIds to parse out all the information + return pages.map((id) => { + // get the page by pageID let page = data.query.pages[id] || {} + + // if the page is missing or not found than return null if (page.hasOwnProperty('missing') || page.hasOwnProperty('invalid')) { return null } + + // get the text from the object let text = page.revisions[0]['*'] - // console.log(page.revisions[0]) - //us the 'generator' result format, for the random() method + // if the text is not found in the regular place than it is at the other place if (!text && page.revisions[0].slots) { text = page.revisions[0].slots.main['*'] } + page.pageprops = page.pageprops || {} + let domain = options.domain if (!domain && options.wiki) { domain = `${options.wiki}.org` } + let meta = Object.assign({}, options, { title: page.title, pageID: page.pageid, @@ -26,13 +44,10 @@ const getResult = function (data, options) { wikidata: page.pageprops.wikibase_item, description: page.pageprops['wikibase-shortdesc'], }) - try { - return { wiki: text, meta: meta } - } catch (e) { - console.error(e) - throw e - } + + + return { wiki: text, meta: meta } }) - return docs } + module.exports = getResult diff --git a/src/_fetch/http/client.js b/src/_fetch/http/client.js deleted file mode 100644 index a62b94c3..00000000 --- a/src/_fetch/http/client.js +++ /dev/null @@ -1,8 +0,0 @@ -// use the native client-side fetch function -const request = function (url, opts) { - //eslint-disable-next-line - return fetch(url, opts).then(function (res) { - return res.json() - }) -} -module.exports = request diff --git a/src/_fetch/http/server.js b/src/_fetch/http/server.js deleted file mode 100644 index ccdc94d3..00000000 --- a/src/_fetch/http/server.js +++ /dev/null @@ -1,28 +0,0 @@ -const https = require('https') - -// use the native nodejs request function -const request = function (url, opts = {}) { - return new Promise((resolve, reject) => { - https - .get(url, opts, (resp) => { - let data = '' - // A chunk of data has been recieved. - resp.on('data', (chunk) => { - data += chunk - }) - // The whole response has been received. Print out the result. - resp.on('end', () => { - try { - let json = JSON.parse(data) - resolve(json) - } catch (e) { - reject(e) - } - }) - }) - .on('error', (err) => { - reject(err) - }) - }) -} -module.exports = request diff --git a/src/_fetch/index.js b/src/_fetch/index.js index 4e8ae30a..bc5dad34 100644 --- a/src/_fetch/index.js +++ b/src/_fetch/index.js @@ -1,56 +1,73 @@ -const parseUrl = require('./00-parseUrl') -const makeUrl = require('./01-makeUrl') -const getResult = require('./02-getResult') -const parseDoc = require('./03-parseDoc') -const http = require('./http/server') +const unfetch = require('isomorphic-unfetch') + +const parseUrl = require('./parseUrl') +const makeUrl = require('./makeUrl') +const getResult = require('./getResult') +const parseDoc = require('./parseDoc') const makeHeaders = require('./_headers') 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 | number | Array | 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 } -const fetch = function (title, options, c) { - let callback = null - if (typeof options === 'function') { - callback = options - options = {} - } - if (typeof c === 'function') { - callback = c - c = {} - } - //support lang 2nd param +/** + * @callback fetchCallback + * @param {Object} error + * @param {(null | Document | Document[])} response + */ + +/** + * fetches the page from the wiki and returns a Promise with the parsed wiki text + * + * @param {string | number | Array | Array} title the title, PageID, URL or an array of all three of the page(s) you want to fetch + * @param {fetchDefaults} [options] the options for the fetch or the language of the wiki for the article + * @param {fetchCallback} [callback] the callback function for the call + * @returns {Promise} either null if the pages is not found, Document if you asked for one result, and a array of Documents if you asked for multiple pages + */ +const fetch = function (title, options, callback) { + // support lang as 2nd param if (typeof options === 'string') { - c = c || {} - options = Object.assign({}, { lang: options }, c) + options = { lang: options } } - options = options || {} - options = Object.assign({}, defaults, options) + options = { ...defaults, ...options } options.title = title - // parse url input - if (isUrl.test(title)) { - options = Object.assign(options, parseUrl(title)) + + //parse url input + if (typeof title === 'string' && isUrl.test(title)) { + options = { ...options, ...parseUrl(title) } } const url = makeUrl(options) const headers = makeHeaders(options) - return http(url, headers) + + return unfetch(url, headers) + .then((res) => res.json()) .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/makeUrl.js b/src/_fetch/makeUrl.js new file mode 100644 index 00000000..5b248c96 --- /dev/null +++ b/src/_fetch/makeUrl.js @@ -0,0 +1,91 @@ +const { isArray } = require('../_lib/helpers') + +const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/ + +const defaults = { + action: 'query', + prop: 'revisions|pageprops', // we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. + rvprop: 'content', + maxlag: 5, + rvslots: 'main', + origin: '*', + format: 'json', + redirects: 'true', +} + +/** + * turns a object into a query string + * + * @private + * @param {Object} obj + * @returns {string} QueryString + */ +const toQueryString = function (obj) { + return Object.entries(obj) + .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`) + .join('&') +} + +/** + * cleans and prepares the tile by replacing the spaces with underscores (_) and trimming the white spaces of the ends + * + * @private + * @param {string} page the title that needs cleaning + * @returns {string} the cleaned title + */ +const cleanTitle = (page) => { + return page.replace(/ /g, '_') + .trim() +} + +/** + * generates the url for fetching the pages + * + * @private + * @param {import('.').fetchDefaults} options + * @returns {string} the url that can be used to make the fetch + */ +const makeUrl = function (options) { + let params = Object.assign({}, defaults) + + //default url + let apiPath = '' + + //add support for third party apis + if (options.domain) { + //wikimedia is the only api that uses `/w/api` as its path. other wikis use other paths + let path = isInterWiki.test(options.domain) ? 'w/api.php' : options.path + apiPath = `https://${options.domain}/${path}?` + } else if (options.lang && options.wiki) { + apiPath = `https://${options.lang}.${options.wiki}.org/w/api.php?` + } else { + return '' + } + + + if (!options.follow_redirects) { + delete params.redirects + } + + //support numerical ids + let title = options.title + if (typeof title === 'number') { + //single pageId + params.pageids = title + } else if (typeof title === 'string') { + //single page title + params.titles = cleanTitle(title) + } else if (title !== undefined && isArray(title) && typeof title[0] === 'number') { + //pageid array + params.pageids = title.join('|') + } else if (title !== undefined && isArray(title) === true && typeof title[0] === 'string') { + //title array + params.titles = title.map(cleanTitle).join('|') + } else { + return '' + } + + //make it! + return `${apiPath}${toQueryString(params)}` +} +module.exports = makeUrl diff --git a/src/_fetch/parseDoc.js b/src/_fetch/parseDoc.js new file mode 100644 index 00000000..b379a14f --- /dev/null +++ b/src/_fetch/parseDoc.js @@ -0,0 +1,31 @@ +const Document = require('../01-document/Document') +/** + * 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) { + // filter out undefined + res = res.filter((o) => o) + + + // put all the responses into Document formats + let docs = res.map((o) => { + return new Document(o.wiki, o.meta) + }) + + // if the list is empty than there are no results + if (docs.length === 0) { + return null + } + + // if there is only one response then we can get it out of the array + if (docs.length === 1) { + return docs[0] + } + + return docs +} +module.exports = parseDoc diff --git a/src/_fetch/parseUrl.js b/src/_fetch/parseUrl.js new file mode 100644 index 00000000..051cb1f2 --- /dev/null +++ b/src/_fetch/parseUrl.js @@ -0,0 +1,17 @@ +/** + * 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) + let title = parsed.pathname.replace(/^\/(wiki\/)?/, '') + title = decodeURIComponent(title) + return { + domain: parsed.host, + title: title, + } +} +module.exports = parseUrl diff --git a/src/_fetch/random.js b/src/_fetch/random.js deleted file mode 100644 index a529acf4..00000000 --- a/src/_fetch/random.js +++ /dev/null @@ -1,47 +0,0 @@ -const http = require('./http/server') -const makeHeaders = require('./_headers') -const getResult = require('./02-getResult') -const parseDoc = require('./03-parseDoc') - -const defaults = { - lang: 'en', - wiki: 'wikipedia', - 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 || {} - 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/_lib/encode.js b/src/_lib/encode.js index e0711409..8240f307 100644 --- a/src/_lib/encode.js +++ b/src/_lib/encode.js @@ -1,9 +1,16 @@ -// 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) { +/** + * this function encodes a string to make it mongodb compatible. + * https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 + * + * @param {string} str + * @returns {string} the encoded string + */ +const encodeStr = function (str) { if (typeof str !== 'string') { str = '' } @@ -13,7 +20,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 +35,5 @@ const encodeObj = function(obj = {}) { } module.exports = { - encodeObj: encodeObj + encodeObj: encodeObj, } diff --git a/src/_lib/fetch.js b/src/_lib/fetch.js new file mode 100644 index 00000000..383c8acc --- /dev/null +++ b/src/_lib/fetch.js @@ -0,0 +1,16 @@ +const unfetch = require('isomorphic-unfetch') + +/** + * 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) { + return unfetch(url, opts).then(function (res) { + return res.json() + }) +} +module.exports = request \ No newline at end of file diff --git a/src/_lib/helpers.js b/src/_lib/helpers.js index fde2933f..d6187ee6 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 '' +/** + * capitalizes the input + * hello -> Hello + * hello there -> Hello there + * + * @private + * @param {string} [str] the string that will be capitalized + * @returns {string} the capitalized 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..b378a819 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 {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) } module.exports = setDefaults 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 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 4595cc10..d26b5e30 100644 --- a/src/image/index.js +++ b/src/image/index.js @@ -1,6 +1,6 @@ const i18n = require('../_data/i18n') const Image = require('./Image') -const parseTemplate = require('../template/_parsers/parse') +const parseTemplate = require('../template/parse/toJSON') const parseSentence = require('../04-sentence').fromText const nested_find = require('./nested_find') //regexes: @@ -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/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/index.js b/src/index.js index 43d5a956..b5615a84 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') @@ -22,24 +20,20 @@ const models = { Reference: require('./reference/Reference'), Table: require('./table/Table'), Template: require('./template/Template'), - http: require('./_fetch/http/server'), + http: require('./_lib/fetch'), wtf: wtf, } -let templates = require('./template/templates') +let templates = require('./template/custom') +let infoboxes = require('./infobox/_infoboxes') 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) + fn(models, templates, infoboxes) return this } +wtf.plugin = wtf.extend wtf.version = version module.exports = wtf diff --git a/src/infobox/Infobox.js b/src/infobox/Infobox.js index e579fdb4..fd21dc12 100644 --- a/src/infobox/Infobox.js +++ b/src/infobox/Infobox.js @@ -1,20 +1,26 @@ const toJson = require('./toJson') const Image = require('../image/Image') +const { isArray } = require('../_lib/helpers') +const Sentence = require('../04-sentence/Sentence') -const normalize = (str) => { +const normalize = (str = '') => { str = str.toLowerCase() str = str.replace(/[-_]/g, ' ') return str.trim() } //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 = { @@ -26,9 +32,7 @@ const methods = { Object.keys(this.data).forEach((k) => { this.data[k].links().forEach((l) => arr.push(l)) }) - 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) @@ -37,7 +41,7 @@ const methods = { return arr }, image: function () { - let s = this.get('image') || this.get('image2') || this.get('logo') + let s = this.data.image || this.data.image2 || this.data.logo || this.data.image_skyline || this.data.image_flag if (!s) { return null } @@ -47,16 +51,32 @@ const methods = { obj.domain = this.domain // add domain information for image return new Image(obj) }, - get: function (key = '') { - key = normalize(key) - let keys = Object.keys(this.data) - for (let i = 0; i < keys.length; i += 1) { - let tmp = normalize(keys[i]) - if (key === tmp) { - return this.data[keys[i]] + get: function (keys) { + let allKeys = Object.keys(this.data) + if (typeof keys === 'string') { + let key = normalize(keys) + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]) + if (key === tmp) { + return this.data[allKeys[i]] + } } + return new Sentence() + } + if (isArray(keys)) { + // support array-input + keys = keys.map(normalize) + return keys.map((k) => { + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]) + if (k === tmp) { + return this.data[allKeys[i]] + } + } + return new Sentence() + }) } - return null + return new Sentence() }, text: function () { return '' @@ -65,6 +85,9 @@ const methods = { options = options || {} return toJson(this, options) }, + wikitext: function () { + return this.wiki || '' + }, keyValue: function () { return Object.keys(this.data).reduce((h, k) => { if (this.data[k]) { @@ -75,7 +98,6 @@ const methods = { }, } //aliases - Object.keys(methods).forEach((k) => { Infobox.prototype[k] = methods[k] }) diff --git a/src/infobox/_infoboxes.js b/src/infobox/_infoboxes.js new file mode 100644 index 00000000..49879805 --- /dev/null +++ b/src/infobox/_infoboxes.js @@ -0,0 +1,37 @@ +module.exports = { + 'gnf protein box': true, + 'automatic taxobox': true, + 'chembox ': true, + editnotice: true, + geobox: true, + hybridbox: true, + ichnobox: true, + infraspeciesbox: true, + mycomorphbox: true, + oobox: true, + 'paraphyletic group': true, + speciesbox: true, + subspeciesbox: true, + 'starbox short': true, + taxobox: true, + nhlteamseason: true, + 'asian games bid': true, + 'canadian federal election results': true, + 'dc thomson comic strip': true, + 'daytona 24 races': true, + edencharacter: true, + 'moldova national football team results': true, + samurai: true, + protein: true, + 'sheet authority': true, + 'order-of-approx': true, + 'bacterial labs': true, + 'medical resources': true, + ordination: true, + 'hockey team coach': true, + 'hockey team gm': true, + 'pro hockey team': true, + 'hockey team player': true, + 'hockey team start': true, + mlbbioret: true, +} 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 99785b25..77b06d80 100644 --- a/src/link/Link.js +++ b/src/link/Link.js @@ -1,28 +1,30 @@ 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 + let txt = this.data.text || this.data.page || '' + // remove bold/italics + txt = txt.replace(/''+/g, '') + return txt }, - json: function() { + json: function () { let obj = { - text: this.text(), - type: this.type() + text: this.data.text, + type: this.type(), } if (obj.type === 'internal') { obj.page = this.page() @@ -37,38 +39,42 @@ const methods = { } return obj }, - page: function(str) { + wikitext: function () { + let txt = this.data.raw || '' + return txt + }, + 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,14 +95,14 @@ 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 => { +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..255232c1 100644 --- a/src/link/index.js +++ b/src/link/index.js @@ -4,18 +4,18 @@ 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 + // delete link.raw return new Link(link) }) wiki = removeLinks(wiki) 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..22c8f9c7 100644 --- a/src/list/List.js +++ b/src/list/List.js @@ -3,17 +3,21 @@ 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, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, - value: data + value: data, + }) + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki, }) } @@ -21,31 +25,32 @@ const methods = { lines() { return this.data }, - links(n) { + links(clue) { let links = [] - this.lines().forEach(s => { + this.lines().forEach((s) => { links = links.concat(s.links()) }) - if (typeof n === 'number') { - return links[n] - } else if (typeof n === 'string') { + if (typeof clue === '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) + clue = clue.charAt(0).toUpperCase() + clue.substring(1) //titlecase it + let link = links.find((o) => o.page() === clue) 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) - } + }, + wikitext() { + return this.wiki || '' + }, } -Object.keys(methods).forEach(k => { +Object.keys(methods).forEach((k) => { List.prototype[k] = methods[k] }) module.exports = List diff --git a/src/list/index.js b/src/list/index.js index a7c524b3..ece3f16f 100644 --- a/src/list/index.js +++ b/src/list/index.js @@ -47,7 +47,6 @@ const grabList = function (lines, i) { const parseList = function (paragraph) { let wiki = paragraph.wiki let lines = wiki.split(/\n/g) - // lines = lines.filter(l => has_word.test(l)); let lists = [] let theRest = [] for (let i = 0; i < lines.length; i++) { @@ -61,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/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 fb8df056..ab5d4ce2 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('../template/parse/toJSON') +//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,50 +16,55 @@ 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 (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 ' ' }) - // + + // 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.wiki = wiki + section._references = references.map((obj) => new Reference(obj.json, obj.wiki)) + section._wiki = wiki } + module.exports = parseRefs diff --git a/src/table/Table.js b/src/table/Table.js index 44583abf..3897955c 100644 --- a/src/table/Table.js +++ b/src/table/Table.js @@ -2,36 +2,73 @@ const setDefaults = require('../_lib/setDefaults') const toJson = require('./toJson') const defaults = {} -const Table = function(data) { +const normalize = function (key = '') { + key = key.toLowerCase() + key = key.replace(/[_-]/g, ' ') + key = key.replace(/\(.*?\)/, '') + key = key.trim() + return key +} + +const Table = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, - value: data + value: data, + }) + Object.defineProperty(this, '_wiki', { + enumerable: false, + value: wiki, }) } 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()) }) }) - //grab a specific link.. - if (typeof n === 'number') { - return links[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 = links.find(o => o.page() === n) + let link = links.find((o) => o.page() === n) return link === undefined ? [] : [link] } 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).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 + }, {}) + }) + }, 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 +81,16 @@ const methods = { text() { return '' - } + }, + + wikitext() { + return this._wiki || '' + }, } 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 911776fc..74fdb083 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) { @@ -30,22 +30,22 @@ const findTables = function(section) { } //work-em together for a Table class let tables = [] - list.forEach(str => { + 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) if (data && data.length > 0) { - tables.push(new Table(data)) + tables.push(new Table(data, str)) } } }) if (tables.length > 0) { - section.tables = tables + section._tables = tables } - section.wiki = wiki + section._wiki = wiki } module.exports = findTables 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..4c81be09 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(/\|/)) { @@ -27,14 +27,16 @@ const cleanText = function(str) { str = str.replace(/style=['"].*?["']/, '') //'!' is used as a highlighed-column str = str.replace(/^!/, '') + // str = str.replace(/\(.*?\)/, '') str = str.trim() + // str = str.toLowerCase() 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 +45,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 +56,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 +66,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 +89,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 +101,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 +123,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 +153,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/Template.js b/src/template/Template.js index 3658ab3b..7ac9e3ec 100644 --- a/src/template/Template.js +++ b/src/template/Template.js @@ -1,17 +1,33 @@ -const Template = function (data) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data, - }) -} +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, 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) => { Template.prototype[k] = methods[k] }) diff --git a/src/template/_infobox.js b/src/template/_infobox.js deleted file mode 100644 index da54553d..00000000 --- a/src/template/_infobox.js +++ /dev/null @@ -1,91 +0,0 @@ -const i18n = require('../_data/i18n') -const i18nReg = new RegExp( - '^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', - 'i', -) -//some looser ones -const startReg = /^infobox /i -const endReg = / infobox$/i -const yearIn = /$Year in [A-Z]/i - -//some known ones from -//https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes -//and https://en.wikipedia.org/wiki/Category:Infobox_templates -const known = { - 'gnf protein box': true, - 'automatic taxobox': true, - 'chembox ': true, - editnotice: true, - geobox: true, - hybridbox: true, - ichnobox: true, - infraspeciesbox: true, - mycomorphbox: true, - oobox: true, - 'paraphyletic group': true, - speciesbox: true, - subspeciesbox: true, - 'starbox short': true, - taxobox: true, - nhlteamseason: true, - 'asian games bid': true, - 'canadian federal election results': true, - 'dc thomson comic strip': true, - 'daytona 24 races': true, - edencharacter: true, - 'moldova national football team results': true, - samurai: true, - protein: true, - 'sheet authority': true, - 'order-of-approx': true, - 'bacterial labs': true, - 'medical resources': true, - ordination: true, - 'hockey team coach': true, - 'hockey team gm': true, - 'pro hockey team': true, - 'hockey team player': true, - 'hockey team start': true, - mlbbioret: true, -} -// -const isInfobox = function (name) { - //known - if (known.hasOwnProperty(name) === true) { - return true - } - if (i18nReg.test(name)) { - return true - } - if (startReg.test(name) || endReg.test(name)) { - return true - } - //these are also infoboxes: 'Year in Belarus' - if (yearIn.test(name)) { - return true - } - return false -} - -//turns template data into good infobox data -const fmtInfobox = function (obj = {}) { - let m = obj.template.match(i18nReg) - let type = obj.template - if (m && m[0]) { - type = type.replace(m[0], '') - } - type = type.trim() - let infobox = { - template: 'infobox', - type: type, - data: obj, - } - delete infobox.data.template //already have this. - delete infobox.data.list //just in case! - return infobox -} - -module.exports = { - isInfobox: isInfobox, - format: fmtInfobox, -} diff --git a/src/template/_parsers/01-pipe-splitter.js b/src/template/_parsers/01-pipe-splitter.js deleted file mode 100644 index c6b82371..00000000 --- a/src/template/_parsers/01-pipe-splitter.js +++ /dev/null @@ -1,34 +0,0 @@ -//turn {{name|one|two|three}} into [name, one, two, three] -const pipeSplitter = function(tmpl) { - //start with a naiive '|' split - let arr = tmpl.split(/\n?\|/) - //we've split by '|', which is pretty lame - //look for broken-up links and fix them :/ - arr.forEach((a, i) => { - if (a === null) { - 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) - || (a.split('[[').length !== a.split(']]').length) - ) { - arr[i + 1] = arr[i] + '|' + arr[i + 1] - 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] === '') { - arr.pop() - } - break - } - return arr -} -module.exports = pipeSplitter diff --git a/src/template/_parsers/02-keyMaker.js b/src/template/_parsers/02-keyMaker.js deleted file mode 100644 index 2df288e2..00000000 --- a/src/template/_parsers/02-keyMaker.js +++ /dev/null @@ -1,54 +0,0 @@ -// 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 -const reserved = { - template: true, - list: true, - prototype: true -} - -//turn 'key=val' into {key:key, val:val} -const parseKey = function(str) { - let parts = str.split('=') - let key = parts[0] || '' - key = key.toLowerCase().trim() - let val = parts.slice(1).join('=') - //don't let it be called 'template'.. - if (reserved.hasOwnProperty(key)) { - key = '_' + key - } - return { - key: key, - 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() - //support named keys - 'foo=bar' - if (hasKey.test(str) === true) { - let res = parseKey(str) - if (res.key) { - h[res.key] = res.val - return h - } - } - //try a key from given 'order' names - if (order && order[o]) { - let key = order[o] //here goes! - h[key] = str - } else { - h.list = h.list || [] - h.list.push(str) - } - o += 1 - return h - }, {}) -} - -module.exports = keyMaker diff --git a/src/template/_parsers/_strip.js b/src/template/_parsers/_strip.js deleted file mode 100644 index 82d96b31..00000000 --- a/src/template/_parsers/_strip.js +++ /dev/null @@ -1,7 +0,0 @@ -//remove the top/bottom off the template -const strip = function(tmpl) { - tmpl = tmpl.replace(/^\{\{/, '') - tmpl = tmpl.replace(/\}\}$/, '') - return tmpl -} -module.exports = strip diff --git a/src/template/custom/_lib.js b/src/template/custom/_lib.js new file mode 100644 index 00000000..f728d719 --- /dev/null +++ b/src/template/custom/_lib.js @@ -0,0 +1,71 @@ +const languages = require('../../_data/languages') + +//simply num/denom * 100 +const percentage = function (obj) { + if (!obj.numerator && !obj.denominator) { + return null + } + let perc = Number(obj.numerator) / Number(obj.denominator) + perc *= 100 + let dec = Number(obj.decimals) + if (isNaN(dec)) { + dec = 1 + } + perc = perc.toFixed(dec) + return Number(perc) +} + +const toNumber = function (str = '') { + if (typeof str === 'number') { + return str + } + str = str.replace(/,/g, '') + str = str.replace(/−/g, '-') + let num = Number(str) + if (isNaN(num)) { + return str + } + return num +} + +const getLang = function (name) { + //grab the language from the template name - 'ipa-de' + let lang = name.match(/ipac?-(.+)/) + if (lang !== null) { + if (languages.hasOwnProperty(lang[1]) === true) { + return languages[lang[1]].english_title + } + return lang[1] + } + return null +} + +const titlecase = (str) => { + return str.charAt(0).toUpperCase() + str.substring(1) +} + +const 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', +} + +module.exports = { + titlecase: titlecase, + sisterProjects: sisterProjects, + getLang: getLang, + percentage: percentage, + toNumber: toNumber, +} diff --git a/src/template/custom/aliases.js b/src/template/custom/aliases.js new file mode 100644 index 00000000..34a31c5b --- /dev/null +++ b/src/template/custom/aliases.js @@ -0,0 +1,178 @@ +const languages = require('../../_data/languages') + +//aliases +let aliases = { + 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', +} + +//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'], + + 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', //https://en.wikipedia.org/wiki/Template:URL + ], +} + +// - 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) => { + aliases['ipa-' + lang] = 'ipa' + aliases['ipac-' + lang] = 'ipac' +}) + +// add each alias in +Object.keys(multi).forEach((k) => { + multi[k].forEach((str) => { + aliases[str] = k + }) +}) + +module.exports = aliases diff --git a/src/template/custom/data-only/functions.js b/src/template/custom/data-only/functions.js new file mode 100644 index 00000000..6fffa1ca --- /dev/null +++ b/src/template/custom/data-only/functions.js @@ -0,0 +1,404 @@ +const parse = require('../../parse/toJSON') +const Image = require('../../../image/Image') +const lib = require('../_lib') + +module.exports = { + // https://en.wikipedia.org/wiki/Template:IPA + ipa: (tmpl, list) => { + let obj = parse(tmpl, ['transcription', 'lang', 'audio']) + obj.lang = lib.getLang(obj.template) + obj.template = 'ipa' + list.push(obj) + return '' + }, + //https://en.wikipedia.org/wiki/Template:IPAc-en + ipac: (tmpl, list) => { + let obj = parse(tmpl) + obj.transcription = (obj.list || []).join(',') + delete obj.list + obj.lang = lib.getLang(obj.template) + obj.template = 'ipac' + list.push(obj) + return '' + }, + + quote: (tmpl, list) => { + let order = ['text', 'author'] + let obj = parse(tmpl, order) + list.push(obj) + //create plaintext version + if (obj.text) { + let str = `"${obj.text}"` + if (obj.author) { + str += '\n\n' + str += ` - ${obj.author}` + } + return str + '\n' + } + return '' + }, + + //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS + 'cite gnis': (tmpl, list) => { + let order = ['id', 'name', 'type'] + let obj = parse(tmpl, order) + obj.type = 'gnis' + obj.template = 'citation' + list.push(obj) + return '' + }, + + 'spoken wikipedia': (tmpl, list) => { + let order = ['file', 'date'] + let obj = parse(tmpl, order) + obj.template = 'audio' + list.push(obj) + return '' + }, + + //yellow card + yel: (tmpl, list) => { + let obj = parse(tmpl, ['min']) + list.push(obj) + if (obj.min) { + return `yellow: ${obj.min || ''}'` //no yellow-card emoji + } + return '' + }, + + subon: (tmpl, list) => { + let obj = parse(tmpl, ['min']) + list.push(obj) + if (obj.min) { + return `sub on: ${obj.min || ''}'` //no yellow-card emoji + } + return '' + }, + + suboff: (tmpl, list) => { + let obj = parse(tmpl, ['min']) + list.push(obj) + if (obj.min) { + return `sub off: ${obj.min || ''}'` //no yellow-card emoji + } + return '' + }, + + //https://en.wikipedia.org/wiki/Template:Sfn + sfn: (tmpl, list, parser, alias) => { + let order = ['author', 'year', 'location'] + let obj = parse(tmpl, order) + if (alias) { + obj.name = obj.template + obj.teplate = alias + } + list.push(obj) + return '' + }, + + //https://en.wikipedia.org/wiki/Template:Redirect + redirect: (tmpl, list) => { + let data = parse(tmpl, ['redirect']) + let lines = data.list || [] + let links = [] + for (let i = 0; i < lines.length; i += 2) { + links.push({ + page: lines[i + 1], + desc: lines[i], + }) + } + let obj = { + template: 'redirect', + redirect: data.redirect, + links: links, + } + list.push(obj) + return '' + }, + + //https://en.wikipedia.org/wiki/Template:Sister_project_links + 'sister project links': (tmpl, list) => { + let data = parse(tmpl) + //rename 'wd' to 'wikidata' + let links = {} + Object.keys(lib.sisterProjects).forEach((k) => { + if (data.hasOwnProperty(k) === true) { + links[lib.sisterProjects[k]] = data[k] //.text(); + } + }) + let obj = { + template: 'sister project links', + links: links, + } + list.push(obj) + return '' + }, + + //https://en.wikipedia.org/wiki/Template:Subject_bar + 'subject bar': (tmpl, list) => { + let data = parse(tmpl) + Object.keys(data).forEach((k) => { + //rename 'voy' to 'wikivoyage' + if (lib.sisterProjects.hasOwnProperty(k)) { + data[lib.sisterProjects[k]] = data[k] + delete data[k] + } + }) + let obj = { + template: 'subject bar', + links: data, + } + list.push(obj) + return '' + }, + + //amazingly, this one does not obey any known patterns + //https://en.wikipedia.org/wiki/Template:Gallery + gallery: (tmpl, list) => { + let obj = parse(tmpl) + let images = (obj.list || []).filter((line) => /^ *File ?:/.test(line)) + images = images.map((file) => { + let img = { + file: file, + } + // todo: add lang and domain information + return new Image(img).json() + }) + obj = { + template: 'gallery', + images: images, + } + list.push(obj) + return '' + }, + + //https://en.wikipedia.org/wiki/Template:Sky + sky: (tmpl, list) => { + let obj = parse(tmpl, [ + 'asc_hours', + 'asc_minutes', + 'asc_seconds', + 'dec_sign', + 'dec_degrees', + 'dec_minutes', + 'dec_seconds', + 'distance', + ]) + let template = { + template: 'sky', + ascension: { + hours: obj.asc_hours, + minutes: obj.asc_minutes, + seconds: obj.asc_seconds, + }, + declination: { + sign: obj.dec_sign, + degrees: obj.dec_degrees, + minutes: obj.dec_minutes, + seconds: obj.dec_seconds, + }, + distance: obj.distance, + } + list.push(template) + return '' + }, + + // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see + // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original + // parsing code. + 'medical cases chart': (tmpl, list) => { + let order = [ + 'date', + 'deathsExpr', + 'recoveriesExpr', + 'casesExpr', + '4thExpr', + '5thExpr', + 'col1', + 'col1Change', + 'col2', + 'col2Change', + ] + + let obj = parse(tmpl) + obj.data = obj.data || '' + let rows = obj.data.split('\n') + + // Mimic row parsing in _buildBars in the Lua source, from the following + // line on: + // + // for parameter in mw.text.gsplit(line, ';') do + let dataArray = rows.map((row) => { + let parameters = row.split(';') + let rowObject = { + options: new Map(), + } + let positionalIndex = 0 + for (let i = 0; i < parameters.length; i++) { + let parameter = parameters[i].trim() + if (parameter.match(/^[a-zA-Z_]/)) { + // Named argument + let [key, value] = parameter.split('=') + // At this point, the Lua code evaluates alttot1 and alttot2 values as + // #expr expressions, but we just pass them through. See also: + // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr + if (value === undefined) { + value = null + } + rowObject.options.set(key, value) + } else { + // Positional argument + // Here again, the Lua code evaluates arguments at index 1 through 5 + // as #expr expressions, but we just pass them through. + if (positionalIndex < order.length) { + rowObject[order[positionalIndex]] = parameter + } + positionalIndex++ + } + } + for (; positionalIndex < order.length; positionalIndex++) { + rowObject[order[positionalIndex]] = null + } + return rowObject + }) + obj.data = dataArray + list.push(obj) + return '' + }, + + graph: (tmpl, list) => { + let data = parse(tmpl) + if (data.x) { + data.x = data.x.split(',').map((str) => str.trim()) + } + if (data.y) { + data.y = data.y.split(',').map((str) => str.trim()) + } + let y = 1 + while (data['y' + y]) { + data['y' + y] = data['y' + y].split(',').map((str) => str.trim()) + y += 1 + } + list.push(data) + return '' + }, + + //https://en.wikipedia.org/wiki/Template:Historical_populations + 'historical populations': (tmpl, list) => { + let data = parse(tmpl) + data.list = data.list || [] + let years = [] + for (let i = 0; i < data.list.length; i += 2) { + let num = data.list[i + 1] + years.push({ + year: data.list[i], + val: Number(num) || num, + }) + } + data.data = years + delete data.list + list.push(data) + return '' + }, + + // this one is a handful! + //https://en.wikipedia.org/wiki/Template:Weather_box + 'weather box': (tmpl, list) => { + const hasMonth = /^jan /i + const isYear = /^year /i + let obj = parse(tmpl) + const monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'] + let byMonth = {} + 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) => { + let key = `${m} ${prop}` + if (obj.hasOwnProperty(key)) { + let num = lib.toNumber(obj[key]) + delete obj[key] + byMonth[prop].push(num) + } + }) + }) + //add these to original + obj.byMonth = byMonth + //collect year-based data + let byYear = {} + Object.keys(obj).forEach((k) => { + if (isYear.test(k)) { + let prop = k.replace(isYear, '') + byYear[prop] = obj[k] + delete obj[k] + } + }) + obj.byYear = byYear + list.push(obj) + return '' + }, + + //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation + //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) => lib.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), + } + delete obj.list + obj.template = 'weather box' + list.push(obj) + return '' + }, + + 'weather box/concise f': (tmpl, list) => { + let obj = parse(tmpl) + obj.list = obj.list.map((s) => lib.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), + } + delete obj.list + obj.template = 'weather box' + list.push(obj) + return '' + }, + + //https://en.wikipedia.org/wiki/Template:Climate_chart + 'climate chart': (tmpl, list) => { + let lines = parse(tmpl).list || [] + let title = lines[0] + let source = lines[38] + lines = lines.slice(1) + //amazingly, they use '−' symbol here instead of negatives... + lines = lines.map((str) => { + if (str && str[0] === '−') { + str = str.replace(/−/, '-') + } + return str + }) + let months = [] + //groups of three, for 12 months + for (let i = 0; i < 36; i += 3) { + months.push({ + low: lib.toNumber(lines[i]), + high: lib.toNumber(lines[i + 1]), + precip: lib.toNumber(lines[i + 2]), + }) + } + let obj = { + template: 'climate chart', + data: { + title: title, + source: source, + months: months, + }, + } + list.push(obj) + return '' + }, +} diff --git a/src/template/custom/data-only/id-name.js b/src/template/custom/data-only/id-name.js new file mode 100644 index 00000000..1dcc140c --- /dev/null +++ b/src/template/custom/data-only/id-name.js @@ -0,0 +1,24 @@ +let templates = {} +// these all have ['id', 'name'] +let idName = [ + 'goodreads author', + 'twitter', + 'facebook', + 'instagram', + 'tumblr', + 'pinterest', + 'espn nfl', + 'espn nhl', + 'espn fc', + 'hockeydb', + 'fifa player', + 'worldcat', + 'worldcat id', + 'nfl player', + 'ted speaker', + 'playmate', +] +idName.forEach((name) => { + templates[name] = ['id', 'name'] +}) +module.exports = templates diff --git a/src/template/custom/data-only/id-title.js b/src/template/custom/data-only/id-title.js new file mode 100644 index 00000000..1e96a158 --- /dev/null +++ b/src/template/custom/data-only/id-title.js @@ -0,0 +1,29 @@ +let templates = {} +// these all have ['id', 'title', 'description', 'section'] +let idTitle = [ + 'imdb title', //https://en.wikipedia.org/wiki/Template: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', //https://en.wikipedia.org/wiki/Template:DMOZ +] +idTitle.forEach((name) => { + templates[name] = ['id', 'title', 'description', 'section'] +}) +module.exports = templates diff --git a/src/template/custom/data-only/index.js b/src/template/custom/data-only/index.js new file mode 100644 index 00000000..6045370f --- /dev/null +++ b/src/template/custom/data-only/index.js @@ -0,0 +1,18 @@ +let templates = { + //https://en.wikipedia.org/wiki/Category:External_link_templates + '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'], //https://en.wikipedia.org/wiki/Template:Taxon_info + 'portuguese name': ['first', 'second', 'suffix'], // https://en.wikipedia.org/wiki/Template:Portuguese_name + geo: ['lat', 'lon', 'zoom'], //https://en.wikivoyage.org/wiki/Template:Geo +} +templates = Object.assign(templates, require('./id-name'), require('./id-title'), require('./functions')) + +module.exports = templates diff --git a/src/template/custom/index.js b/src/template/custom/index.js new file mode 100644 index 00000000..b9fabded --- /dev/null +++ b/src/template/custom/index.js @@ -0,0 +1,13 @@ +const aliases = require('./aliases') + +let templates = Object.assign({}, require('./text-only'), require('./data-only'), require('./text-and-data')) + +Object.keys(aliases).forEach((k) => { + // if (templates[aliases[k]] === undefined) { + // console.error(`Missing template: '${aliases[k]}'`) + // } + templates[k] = templates[aliases[k]] +}) +module.exports = templates + +// console.log(Object.keys(templates).length) diff --git a/src/template/templates/currency.js b/src/template/custom/text-and-data/currency.js similarity index 73% rename from src/template/templates/currency.js rename to src/template/custom/text-and-data/currency.js index da5ef968..cb02e545 100644 --- a/src/template/templates/currency.js +++ b/src/template/custom/text-and-data/currency.js @@ -1,4 +1,4 @@ -const parse = require('../_parsers/parse') +const parse = require('../../parse/toJSON') const codes = { '£': 'GB£', // https://en.wikipedia.org/wiki/Template:GBP @@ -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,26 +74,16 @@ 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() - 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 || ''}` + let str = `${codes[code] || ''}${o.amount || ''}` //support unknown currencies after the number - like '5 BTC' if (o.code && !codes[o.code.toLowerCase()]) { str += ' ' + o.code @@ -101,54 +91,12 @@ const parseCurrency = (tmpl, list) => { return str } -const inrConvert = (tmpl, list) => { - let o = parse(tmpl, ['rupee_value', 'currency_formatting']) - list.push(o) - let formatting = o.currency_formatting - 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 - } - o.rupee_value = o.rupee_value * multiplier - } - let str = `inr ${o.rupee_value || ''}` - return str -} - -const currencies = { - //this one is generic https://en.wikipedia.org/wiki/Template:Currency +let templates = { currency: parseCurrency, - monnaie: parseCurrency, - unité: parseCurrency, - nombre: parseCurrency, - nb: parseCurrency, - iso4217: parseCurrency, - inrconvert: inrConvert } -//the others fit the same pattern.. -Object.keys(codes).forEach(k => { - currencies[k] = parseCurrency +//and the others fit the same pattern +Object.keys(codes).forEach((k) => { + templates[k] = parseCurrency }) -module.exports = currencies +module.exports = templates diff --git a/src/template/templates/dates/_format.js b/src/template/custom/text-and-data/dates/_format.js similarity index 86% rename from src/template/templates/dates/_format.js rename to src/template/custom/text-and-data/dates/_format.js index d026aa39..f43e460d 100644 --- a/src/template/templates/dates/_format.js +++ b/src/template/custom/text-and-data/dates/_format.js @@ -1,5 +1,19 @@ //assorted parsing methods for date/time templates -const months = require('./_months') +const months = [ + undefined, //1-based months.. :/ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', +] const monthName = months.reduce((h, str, i) => { if (i === 0) { @@ -10,7 +24,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 +57,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 +93,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/custom/text-and-data/dates/_lib.js b/src/template/custom/text-and-data/dates/_lib.js new file mode 100644 index 00000000..2e61a485 --- /dev/null +++ b/src/template/custom/text-and-data/dates/_lib.js @@ -0,0 +1,82 @@ +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' +} + +//this is allowed to be rough +const day = 1000 * 60 * 60 * 24 +const month = day * 30 +const year = day * 365 + +const getEpoch = function (obj) { + return new Date(`${obj.year}-${obj.month || 0}-${obj.date || 1}`).getTime() +} + +//very rough! +const delta = function (from, to) { + from = getEpoch(from) + to = getEpoch(to) + let diff = to - from + let obj = {} + //get years + let years = Math.floor(diff / year, 10) + if (years > 0) { + obj.years = years + diff -= obj.years * year + } + //get months + let monthCount = Math.floor(diff / month, 10) + if (monthCount > 0) { + obj.months = monthCount + diff -= obj.months * month + } + //get days + let days = Math.floor(diff / day, 10) + if (days > 0) { + obj.days = days + // diff -= (obj.days * day); + } + return obj +} + +//not all too fancy - used in {{timesince}} +const timeSince = function (str) { + let d = new Date(str) + if (isNaN(d.getTime())) { + return '' + } + let now = new Date() + let delt = now.getTime() - d.getTime() + let predicate = 'ago' + if (delt < 0) { + predicate = 'from now' + delt = Math.abs(delt) + } + //figure out units + let hours = delt / 1000 / 60 / 60 + let days = hours / 24 + if (days < 365) { + return parseInt(days, 10) + ' days ' + predicate + } + let years = days / 365 + return parseInt(years, 10) + ' years ' + predicate +} + +const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] + +module.exports = { + days: days, + timeSince: timeSince, + delta: delta, + toOrdinal: toOrdinal, +} diff --git a/src/template/templates/dates/parsers.js b/src/template/custom/text-and-data/dates/_parsers.js similarity index 82% rename from src/template/templates/dates/parsers.js rename to src/template/custom/text-and-data/dates/_parsers.js index 2bc85b42..c38b0173 100644 --- a/src/template/templates/dates/parsers.js +++ b/src/template/custom/text-and-data/dates/_parsers.js @@ -1,32 +1,30 @@ -const strip = require('../../_parsers/_strip') -const parse = require('../../_parsers/parse') -const delta = require('./_delta') +const strip = require('../../../parse/toJSON/_strip') +const parse = require('../../../parse/toJSON') +const delta = require('./_lib').delta const fmt = require('./_format') -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)) + let from = fmt.ymd(arr.slice(1, 4)) let to = arr.slice(4, 7) //assume now, if 'to' is empty if (to.length === 0) { let d = new Date() to = [d.getFullYear(), d.getMonth(), d.getDate()] } - to = ymd(to) + to = fmt.ymd(to) return { from: from, - to: to + to: to, } } @@ -35,8 +33,8 @@ const parsers = { date: (tmpl, list) => { let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone'] let obj = parse(tmpl, order) - let data = ymd([obj.year, obj.month, obj.date || obj.day]) - obj.text = toText(data) //make the replacement string + let data = fmt.ymd([obj.year, obj.month, obj.date || obj.day]) + obj.text = fmt.toText(data) //make the replacement string if (obj.timezone) { if (obj.timezone === 'Z') { obj.timezone = 'UTC' @@ -87,7 +85,7 @@ const parsers = { let year = Number(obj.year) list.push( template({ - year: year + year: year, }) ) return String(year) @@ -95,34 +93,26 @@ 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') { - let date = ymd([obj.birth_year, obj.birth_month, obj.birth_date]) + let date = fmt.ymd([obj.birth_year, obj.birth_month, obj.birth_date]) list.push(template(date)) - return toText(date) + return fmt.toText(date) } - let date = ymd([obj.death_year, obj.death_month, obj.death_date]) + let date = fmt.ymd([obj.death_year, obj.death_month, obj.death_date]) list.push(template(date)) - return toText(date) + return fmt.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 +120,8 @@ 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 +137,8 @@ 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,8 @@ 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 +178,8 @@ 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 +192,6 @@ const parsers = { arr.push(diff.days + ' days') } return arr.join(', ') - } + }, } module.exports = parsers diff --git a/src/template/templates/dates/index.js b/src/template/custom/text-and-data/dates/index.js similarity index 71% rename from src/template/templates/dates/index.js rename to src/template/custom/text-and-data/dates/index.js index 75fe63ca..085e8528 100644 --- a/src/template/templates/dates/index.js +++ b/src/template/custom/text-and-data/dates/index.js @@ -1,10 +1,7 @@ -const misc = require('./misc') -const parsers = require('./parsers') -const parse = require('../../_parsers/parse') -const timeSince = require('./_timeSince') +const parsers = require('./_parsers') +const parse = require('../../../parse/toJSON') +const lib = require('./_lib') const format = require('./_format') -const date = parsers.date -const natural_date = parsers.natural_date const months = [ 'January', @@ -18,19 +15,18 @@ const months = [ 'September', 'October', 'November', - 'December' + 'December', ] -const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] //date- templates we support -let dateTmpl = Object.assign({}, misc, { +module.exports = { currentday: () => { let d = new Date() return String(d.getDate()) }, currentdayname: () => { let d = new Date() - return days[d.getDay()] + return lib.days[d.getDay()] }, currentmonth: () => { let d = new Date() @@ -54,12 +50,11 @@ let dateTmpl = Object.assign({}, misc, { d.setMonth(d.getMonth() + 1) return months[d.getMonth()] + ' ' + d.getFullYear() }, - //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) + return lib.timeSince(time) }, //https://en.wikipedia.org/wiki/Template:Birth_date_and_age 'birth date and age': (tmpl, list) => { @@ -67,7 +62,7 @@ let dateTmpl = Object.assign({}, misc, { let obj = parse(tmpl, order) //support 'one property' version if (obj.year && /[a-z]/i.test(obj.year)) { - return natural_date(tmpl, list) + return parsers.natural_date(tmpl, list) } list.push(obj) obj = format.ymd([obj.year, obj.month, obj.day]) @@ -78,7 +73,7 @@ let dateTmpl = Object.assign({}, misc, { let obj = parse(tmpl, order) //support 'one property' version if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return natural_date(tmpl, list) + return parsers.natural_date(tmpl, list) } list.push(obj) let age = new Date().getFullYear() - parseInt(obj.birth_year, 10) @@ -94,7 +89,7 @@ let dateTmpl = Object.assign({}, misc, { let obj = parse(tmpl, order) //support 'one property' version if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return natural_date(tmpl, list) + return parsers.natural_date(tmpl, list) } list.push(obj) obj = format.ymd([obj.death_year, obj.death_month]) @@ -134,7 +129,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, '') @@ -158,49 +153,40 @@ let dateTmpl = Object.assign({}, misc, { } return '' }, - //date/age/time templates - start: date, - end: date, - birth: date, - death: date, - 'start date': date, - 'end date': date, - 'birth date': date, - 'death date': date, - 'start date and age': date, - 'end date and age': date, - //this is insane (hyphen ones are different) - 'start-date': natural_date, - 'end-date': natural_date, - 'birth-date': natural_date, - 'death-date': natural_date, - 'birth-date and age': natural_date, - 'birth-date and given age': natural_date, - 'death-date and age': natural_date, - 'death-date and given age': natural_date, - birthdeathage: parsers.two_dates, - dob: date, - // 'birth date and age2': date, + //we can't do timezones, so fake this one a little bit + //https://en.wikipedia.org/wiki/Template:Time + time: () => { + let d = new Date() + let obj = format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]) + return format.toText(obj) + }, + // 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 `${lib.toOrdinal(Math.abs(year))} BC` + } + return `${lib.toOrdinal(year)}` + } + return `${lib.toOrdinal(year)} millennium` + }, + //date/age/time templates + start: parsers.date, + 'start-date': parsers.natural_date, + birthdeathage: parsers.two_dates, age: parsers.age, 'age nts': parsers.age, 'age in years': parsers['diff-y'], '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'], + // 'birth date and age2': date, // 'age in years, months, weeks and days': true, // 'age as of date': true, -}) -//aliases -dateTmpl.localday = dateTmpl.currentday -dateTmpl.localdayname = dateTmpl.currentdayname -dateTmpl.localmonth = dateTmpl.currentmonth -dateTmpl.localyear = dateTmpl.currentyear -dateTmpl.currentmonthname = dateTmpl.currentmonth -dateTmpl.currentmonthabbrev = dateTmpl.currentmonth -dateTmpl['death date and age'] = dateTmpl['birth date and age'] -dateTmpl.bda = dateTmpl['birth date and age'] -dateTmpl['birth date based on age at death'] = dateTmpl['birth based on age as of date'] -module.exports = dateTmpl +} diff --git a/src/template/custom/text-and-data/functions.js b/src/template/custom/text-and-data/functions.js new file mode 100644 index 00000000..f2bc098d --- /dev/null +++ b/src/template/custom/text-and-data/functions.js @@ -0,0 +1,341 @@ +const parse = require('../../parse/toJSON') +const lib = require('../_lib') + +let templates = { + // https://en.wikipedia.org/wiki/Template:Math + math: (tmpl, list) => { + let obj = parse(tmpl, ['formula']) + list.push(obj) + return '\n\n' + (obj.formula || '') + '\n\n' + }, + + isbn: (tmpl, list) => { + let order = ['id', 'id2', 'id3'] + let obj = parse(tmpl, order) + list.push(obj) + return 'ISBN: ' + (obj.id || '') + }, + + //https://en.wikipedia.org/wiki/Template:Based_on + 'based on': (tmpl, list) => { + let obj = parse(tmpl, ['title', 'author']) + list.push(obj) + return `${obj.title} by ${obj.author || ''}` + }, + + //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t + 'bbl to t': (tmpl, list) => { + let obj = parse(tmpl, ['barrels']) + list.push(obj) + if (obj.barrels === '0') { + return obj.barrels + ' barrel' + } + return obj.barrels + ' barrels' + }, + + //minor planet - https://en.wikipedia.org/wiki/Template:MPC + mpc: (tmpl, list) => { + let obj = parse(tmpl, ['number', 'text']) + list.push(obj) + return `[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${obj.text || obj.number}]` + }, + + pengoal: (tmpl, list) => { + list.push({ + template: 'pengoal', + }) + return '✅' + }, + + penmiss: (tmpl, list) => { + list.push({ + template: 'penmiss', + }) + return '❌' + }, + + // https://en.wikipedia.org/wiki/Template:Ordered_list + 'ordered list': (tmpl, list) => { + let obj = parse(tmpl) + list.push(obj) + obj.list = obj.list || [] + let lines = obj.list.map((str, i) => `${i + 1}. ${str}`) + return lines.join('\n\n') + }, + + // https://en.wikipedia.org/wiki/Template:Title_year + 'title year': (tmpl, _list, _alias, _parse, 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, _alias, _parse, 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, _alias, _parse, 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 + }, + + //https://en.wikipedia.org/wiki/Template:Nihongo + nihongo: (tmpl, list) => { + let obj = parse(tmpl, ['english', 'kanji', 'romaji', 'extra']) + list.push(obj) + let str = obj.english || obj.romaji || '' + if (obj.kanji) { + str += ` (${obj.kanji})` + } + return str + }, + + //https://en.wikipedia.org/wiki/Template:Marriage + //this one creates a template, and an inline response + marriage: (tmpl, list) => { + let data = parse(tmpl, ['spouse', 'from', 'to', 'end']) + list.push(data) + let str = data.spouse || '' + if (data.from) { + if (data.to) { + str += ` (m. ${data.from}-${data.to})` + } else { + str += ` (m. ${data.from})` + } + } + return str + }, + + //'red' card - {{sent off|cards|min1|min2}} + 'sent off': (tmpl, list) => { + let obj = parse(tmpl, ['cards']) + let result = { + template: 'sent off', + cards: obj.cards, + minutes: obj.list || [], + } + list.push(result) + let mins = result.minutes.map((m) => m + "'").join(', ') + return 'sent off: ' + mins + }, + + transl: (tmpl, list) => { + let obj = parse(tmpl, ['lang', 'text', 'text2']) + // support 3-param + if (obj.text2) { + obj.iso = obj.text + obj.text = obj.text2 + delete obj.text2 + } + list.push(obj) + return obj.text || '' + }, + + //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list + 'collapsible list': (tmpl, list) => { + let obj = parse(tmpl) + list.push(obj) + let str = '' + if (obj.title) { + str += `'''${obj.title}'''` + '\n\n' + } + if (!obj.list) { + obj.list = [] + for (let i = 1; i < 10; i += 1) { + if (obj[i]) { + obj.list.push(obj[i]) + delete obj[i] + } + } + } + obj.list = obj.list.filter((s) => s) + str += obj.list.join('\n\n') + return str + }, + + //https://en.wikipedia.org/wiki/Template:Columns-list + 'columns-list': (tmpl, list) => { + let arr = parse(tmpl).list || [] + let str = arr[0] || '' + let lines = str.split(/\n/).filter((f) => f) + lines = lines.map((s) => s.replace(/\*/, '')) + list.push({ + template: 'columns-list', + list: lines, + }) + lines = lines.map((s) => '• ' + s) + return lines.join('\n\n') + }, + + //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} + height: (tmpl, list) => { + let obj = parse(tmpl) + list.push(obj) + let result = [] + let units = ['m', 'cm', 'ft', 'in'] //order matters + units.forEach((unit) => { + if (obj.hasOwnProperty(unit) === true) { + result.push(obj[unit] + unit) + } + }) + return result.join(' ') + }, + + //https://en.wikipedia.org/wiki/Template:Sic + sic: (tmpl, list) => { + let obj = parse(tmpl, ['one', 'two', 'three']) + let word = (obj.one || '') + (obj.two || '') + //support '[sic?]' + if (obj.one === '?') { + word = (obj.two || '') + (obj.three || '') + } + list.push({ + template: 'sic', + word: word, + }) + if (obj.nolink === 'y') { + return word + } + return `${word} [sic]` + }, + + // + inrconvert: (tmpl, list) => { + let o = parse(tmpl, ['rupee_value', 'currency_formatting']) + list.push(o) + const mults = { + k: 1000, + m: 1000000, + b: 1000000000, + t: 1000000000000, + l: 100000, + c: 10000000, + lc: 1000000000000, + } + if (o.currency_formatting) { + let multiplier = mults[o.currency_formatting] || 1 + o.rupee_value = o.rupee_value * multiplier + } + return `inr ${o.rupee_value || ''}` + }, + + //fraction - https://en.wikipedia.org/wiki/Template:Sfrac + frac: (tmpl, list) => { + let order = ['a', 'b', 'c'] + let obj = parse(tmpl, order) + let data = { + template: 'sfrac', + } + if (obj.c) { + data.integer = obj.a + data.numerator = obj.b + data.denominator = obj.c + } else if (obj.b) { + data.numerator = obj.a + data.denominator = obj.b + } else { + data.numerator = 1 + data.denominator = obj.a + } + list.push(data) + if (data.integer) { + return `${data.integer} ${data.numerator}⁄${data.denominator}` + } + return `${data.numerator}⁄${data.denominator}` + }, + + 'winning percentage': (tmpl, list) => { + let obj = parse(tmpl, ['wins', 'losses', 'ties']) + list.push(obj) + let wins = Number(obj.wins) + let losses = Number(obj.losses) + let ties = Number(obj.ties) || 0 + let games = wins + losses + ties + if (obj.ignore_ties === 'y') { + ties = 0 + } + if (ties) { + wins += ties / 2 + } + let num = lib.percentage({ + numerator: wins, + denominator: games, + decimals: 1, + }) + if (num === null) { + return '' + } + return `.${num * 10}` + }, + + winlosspct: (tmpl, list) => { + let obj = parse(tmpl, ['wins', 'losses']) + list.push(obj) + let wins = Number(obj.wins) + let losses = Number(obj.losses) + let num = lib.percentage({ + numerator: wins, + denominator: wins + losses, + decimals: 1, + }) + if (num === null) { + return '' + } + num = `.${num * 10}` + return `${wins || 0} || ${losses || 0} || ${num || '-'}` + }, + + //https://en.wikipedia.org/wiki/Template:Video_game_release + 'video game release': (tmpl, list) => { + let order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4'] + let obj = parse(tmpl, order) + let template = { + template: 'video game release', + 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]], + }) + } + } + 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 = parse(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}'']]` + }, +} +module.exports = templates diff --git a/src/template/templates/geo/coor.js b/src/template/custom/text-and-data/geo/_lib.js similarity index 62% rename from src/template/templates/geo/coor.js rename to src/template/custom/text-and-data/geo/_lib.js index 03936690..e2959f0b 100644 --- a/src/template/templates/geo/coor.js +++ b/src/template/custom/text-and-data/geo/_lib.js @@ -1,7 +1,25 @@ -const convertDMS = require('./dms-format') -const parse = require('../../_parsers/parse') +const parse = require('../../../parse/toJSON') -const round = function(num) { +/** + * converts DMS (decimal-minute-second) geo format to lat/lng format. + * major thank you to https://github.com/gmaclennan/parse-dms and https://github.com/WSDOT-GIS/dms-js 👏 + **/ +function parseDMS(arr) { + let hemisphere = arr.pop() + let degrees = Number(arr[0] || 0) + let minutes = Number(arr[1] || 0) + let seconds = Number(arr[2] || 0) + if (typeof hemisphere !== 'string' || isNaN(degrees)) { + return null + } + let sign = 1 + if (/[SW]/i.test(hemisphere)) { + sign = -1 + } + return sign * (degrees + minutes / 60 + seconds / 3600) +} + +const round = function (num) { if (typeof num !== 'number') { return num } @@ -12,16 +30,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 +52,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)) + lat: parseDMS(arr.slice(0, 3)), + lon: parseDMS(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)) + lat: parseDMS(arr.slice(0, 4)), + lon: parseDMS(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 +88,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) @@ -85,6 +103,9 @@ const parseCoor = function(tmpl) { return obj } +//console.log(parseDms([57, 18, 22, 'N'])); +//console.log(parseDms([4, 27, 32, 'W'])); + module.exports = parseCoor // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} // {{Coor title dec|latitude|longitude|template parameters}} diff --git a/src/template/custom/text-and-data/geo/index.js b/src/template/custom/text-and-data/geo/index.js new file mode 100644 index 00000000..cb9a4b4b --- /dev/null +++ b/src/template/custom/text-and-data/geo/index.js @@ -0,0 +1,20 @@ +const parseCoor = require('./_lib') + +const templates = { + coord: (tmpl, list) => { + let obj = parseCoor(tmpl) + list.push(obj) + //display inline, by default + if (!obj.display || obj.display.indexOf('inline') !== -1) { + return `${obj.lat || ''}°N, ${obj.lon || ''}°W` + } + return '' + }, +} + +//{{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}} + +module.exports = templates diff --git a/src/template/custom/text-and-data/index.js b/src/template/custom/text-and-data/index.js new file mode 100644 index 00000000..1f9a5f53 --- /dev/null +++ b/src/template/custom/text-and-data/index.js @@ -0,0 +1,14 @@ +module.exports = Object.assign( + {}, + require('./shorthand'), + require('./functions'), + require('./currency'), + require('./dates'), + require('./geo'), + require('./misc'), + require('./stock-exchanges'), + require('./sports/_lib'), + require('./sports/sports'), + require('./sports/_lib'), + require('./sports/sports') +) diff --git a/src/template/custom/text-and-data/misc.js b/src/template/custom/text-and-data/misc.js new file mode 100644 index 00000000..227eebc1 --- /dev/null +++ b/src/template/custom/text-and-data/misc.js @@ -0,0 +1,28 @@ +const parse = require('../../parse/toJSON') + +const generic = function (tmpl, list, _parser, alias) { + let obj = parse(tmpl) + if (alias) { + obj.name = obj.template + obj.template = alias + } + list.push(obj) + return '' +} +// it may seem redundant, +// but we need these templates for our i18n mappings +const misc = { + persondata: generic, + taxobox: generic, + citation: generic, + portal: generic, + reflist: generic, + 'cite book': generic, + 'cite journal': generic, + 'cite web': generic, + 'commons cat': generic, + 'election box candidate': generic, + 'election box begin': generic, + main: generic, +} +module.exports = misc diff --git a/src/template/custom/text-and-data/shorthand.js b/src/template/custom/text-and-data/shorthand.js new file mode 100644 index 00000000..75a01ee9 --- /dev/null +++ b/src/template/custom/text-and-data/shorthand.js @@ -0,0 +1,44 @@ +module.exports = { + mlbplayer: { + props: ['number', 'name', 'il'], + out: 'name', + }, + syntaxhighlight: { + props: [], + out: 'code', + }, + samp: { + props: ['1'], + out: '1', + }, + //https://en.wikipedia.org/wiki/Template:Sub + sub: { + props: ['text'], + out: 'text', + }, + //https://en.wikipedia.org/wiki/Template:Sup + sup: { + props: ['text'], + out: 'text', + }, + + //https://en.wikipedia.org/wiki/Template:Chem2 + chem2: { + props: ['equation'], + out: 'equation', + }, + //https://en.wikipedia.org/wiki/Template:Interlanguage_link + ill: { + props: ['text', 'lan1', 'text1', 'lan2', 'text2'], + out: 'text', + }, + //https://en.wikipedia.org/wiki/Template:Abbr + abbr: { + props: ['abbr', 'meaning', 'ipa'], + out: 'abbr', + }, + // name: { + // props: [], + // out: '', + // }, +} diff --git a/src/template/templates/brackets.js b/src/template/custom/text-and-data/sports/_lib.js similarity index 53% rename from src/template/templates/brackets.js rename to src/template/custom/text-and-data/sports/_lib.js index 166b46c1..15a07d28 100644 --- a/src/template/templates/brackets.js +++ b/src/template/custom/text-and-data/sports/_lib.js @@ -1,4 +1,4 @@ -const parse = require('../_parsers/parse') +const parse = require('../../../parse/toJSON') const zeroPad = function (num) { num = String(num) @@ -24,6 +24,7 @@ const parseTeam = function (obj, round, team) { } } +// https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates //these are weird. const playoffBracket = function (tmpl) { let rounds = [] @@ -51,52 +52,4 @@ const playoffBracket = function (tmpl) { } } -let all = { - //playoff brackets - '4teambracket': function (tmpl, list) { - let obj = playoffBracket(tmpl) - list.push(obj) - return '' - }, -} - -//a bunch of aliases for these ones: -// https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates -const brackets = [ - '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', -] -brackets.forEach((key) => { - all[key] = all['4teambracket'] -}) - -module.exports = all +module.exports = playoffBracket diff --git a/src/template/custom/text-and-data/sports/sports.js b/src/template/custom/text-and-data/sports/sports.js new file mode 100644 index 00000000..27108035 --- /dev/null +++ b/src/template/custom/text-and-data/sports/sports.js @@ -0,0 +1,86 @@ +const parse = require('../../../parse/toJSON') +const flags = require('../../../../_data/flags') +const playoffBracket = require('./_lib') + +let sports = { + //playoff brackets + '4teambracket': function (tmpl, list) { + let obj = playoffBracket(tmpl) + list.push(obj) + return '' + }, + + player: (tmpl, list) => { + let res = parse(tmpl, ['number', 'country', 'name', 'dl']) + list.push(res) + let str = `[[${res.name}]]` + if (res.country) { + let country = (res.country || '').toLowerCase() + let flag = flags.find((a) => country === a[1] || country === a[2]) || [] + if (flag && flag[0]) { + str = flag[0] + ' ' + str + } + } + if (res.number) { + str = res.number + ' ' + str + } + return str + }, + + //https://en.wikipedia.org/wiki/Template:Goal + goal: (tmpl, list) => { + let res = parse(tmpl) + let obj = { + template: 'goal', + data: [], + } + let arr = res.list || [] + for (let i = 0; i < arr.length; i += 2) { + obj.data.push({ + min: arr[i], + note: arr[i + 1] || '', + }) + } + list.push(obj) + //generate a little text summary + let summary = '⚽ ' + summary += obj.data + .map((o) => { + let note = o.note + if (note) { + note = ` (${note})` + } + return o.min + "'" + note + }) + .join(', ') + return summary + }, + + //a transcluded sports module - https://en.m.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Module:Sports_table + // https://en.wikipedia.org/wiki/Template:2020–21_NHL_North_Division_standings + 'sports table': (tmpl, list) => { + let obj = parse(tmpl) + let byTeam = {} + let teams = Object.keys(obj) + .filter((k) => /^team[0-9]/.test(k)) + .map((k) => obj[k].toLowerCase()) + teams.forEach((team) => { + byTeam[team] = { + name: obj[`name_${team}`], + win: Number(obj[`win_${team}`]) || 0, + loss: Number(obj[`loss_${team}`]) || 0, + tie: Number(obj[`tie_${team}`]) || 0, + otloss: Number(obj[`otloss_${team}`]) || 0, + goals_for: Number(obj[`gf_${team}`]) || 0, + goals_against: Number(obj[`ga_${team}`]) || 0, + } + }) + let res = { + date: obj.update, + header: obj.table_header, + teams: byTeam, + } + list.push(res) + }, +} +module.exports = sports diff --git a/src/template/templates/stock-exchanges.js b/src/template/custom/text-and-data/stock-exchanges.js similarity index 98% rename from src/template/templates/stock-exchanges.js rename to src/template/custom/text-and-data/stock-exchanges.js index 01cbe8bb..6c260db8 100644 --- a/src/template/templates/stock-exchanges.js +++ b/src/template/custom/text-and-data/stock-exchanges.js @@ -1,4 +1,4 @@ -const parse = require('../_parsers/parse') +const parse = require('../../parse/toJSON') const codes = { adx: 'adx', //https://en.wikipedia.org/wiki/Template:Abu_Dhabi_Securities_Exchange @@ -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/flags.js b/src/template/custom/text-only/flags.js similarity index 67% rename from src/template/templates/flags.js rename to src/template/custom/text-only/flags.js index d842a9e7..2383a5ce 100644 --- a/src/template/templates/flags.js +++ b/src/template/custom/text-only/flags.js @@ -1,97 +1,92 @@ -const parse = require('../_parsers/parse') -const flags = require('../../_data/flags') +const parse = require('../../parse/toJSON') +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] } }) -//cricket -templates['cr'] = templates.flagcountry -templates['cr-rt'] = templates.flagcountry -templates['cricon'] = templates.flagicon - module.exports = templates diff --git a/src/template/custom/text-only/functions.js b/src/template/custom/text-only/functions.js new file mode 100644 index 00000000..1c09df1c --- /dev/null +++ b/src/template/custom/text-only/functions.js @@ -0,0 +1,441 @@ +const parse = require('../../parse/toJSON') +const strip = require('../../parse/toJSON/_strip') +const lib = require('../_lib') + +module.exports = { + //https://en.wikipedia.org/wiki/Template:Ra + ra: (tmpl) => { + let obj = parse(tmpl, ['hours', 'minutes', 'seconds']) + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':') + }, + + //https://en.wikipedia.org/wiki/Template:Deg2HMS + deg2hms: (tmpl) => { + //this template should do the conversion + let obj = parse(tmpl, ['degrees']) + return (obj.degrees || '') + '°' + }, + + hms2deg: (tmpl) => { + //this template should do the conversion too + let obj = parse(tmpl, ['hours', 'minutes', 'seconds']) + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':') + }, + + decdeg: (tmpl) => { + //this template should do the conversion too + let obj = parse(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']) + return (obj.deg || obj.degrees) + '°' + }, + //https://en.wikipedia.org/wiki/Template:Sortname + sortname: (tmpl) => { + let order = ['first', 'last', 'target', 'sort'] + let obj = parse(tmpl, order) + let name = `${obj.first || ''} ${obj.last || ''}` + name = name.trim() + if (obj.nolink) { + return obj.target || name + } + if (obj.dab) { + name += ` (${obj.dab})` + if (obj.target) { + obj.target += ` (${obj.dab})` + } + } + if (obj.target) { + return `[[${obj.target}|${name}]]` + } + return `[[${name}]]` + }, + + // https://en.wikipedia.org/wiki/Template:First_word + 'first word': (tmpl) => { + let obj = parse(tmpl, ['text']) + let str = obj.text + if (obj.sep) { + return str.split(obj.sep)[0] + } + return str.split(' ')[0] + }, + + trunc: (tmpl) => { + let order = ['str', 'len'] + let obj = parse(tmpl, order) + return obj.str.substr(0, obj.len) + }, + + 'str mid': (tmpl) => { + let order = ['str', 'start', 'end'] + let obj = parse(tmpl, order) + let start = parseInt(obj.start, 10) - 1 + let end = parseInt(obj.end, 10) + return obj.str.substr(start, end) + }, + + reign: (tmpl) => { + let order = ['start', 'end'] + let obj = parse(tmpl, order) + return `(r. ${obj.start} – ${obj.end})` + }, + + circa: (tmpl) => { + let obj = parse(tmpl, ['year']) + return `c. ${obj.year}` + }, + + // 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:Radic + radic: (tmpl) => { + let order = ['after', 'before'] + let obj = parse(tmpl, order) + return `${obj.before || ''}√${obj.after || ''}` + }, + + 'medical cases chart/row': (tmpl) => { + // Deprecated template; we keep it. + return tmpl + }, + + //https://en.wikipedia.org/wiki/Template:OldStyleDate + oldstyledate: (tmpl) => { + let order = ['date', 'year'] + let obj = parse(tmpl, order) + return obj.year ? obj.date + ' ' + obj.year : obj.date + }, + + //formatting things - https://en.wikipedia.org/wiki/Template:Nobold + braces: (tmpl) => { + let obj = parse(tmpl, ['text']) + let attrs = '' + if (obj.list) { + attrs = '|' + obj.list.join('|') + } + return '{{' + (obj.text || '') + attrs + '}}' + }, + + hlist: (tmpl) => { + let obj = parse(tmpl) + obj.list = obj.list || [] + return obj.list.join(' · ') + }, + + 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) => { + let arr = parse(tmpl).list || [] + return arr.join(', ') + }, + + //https://en.wikipedia.org/wiki/Template:Br_separated_entries + 'br separated entries': (tmpl) => { + let arr = parse(tmpl).list || [] + return arr.join('\n\n') + }, + + 'comma separated entries': (tmpl) => { + let arr = parse(tmpl).list || [] + return arr.join(', ') + }, + + //https://en.wikipedia.org/wiki/Template:Bare_anchored_list + 'anchored list': (tmpl) => { + let arr = parse(tmpl).list || [] + arr = arr.map((str, i) => `${i + 1}. ${str}`) + return arr.join('\n\n') + }, + + 'bulleted list': (tmpl) => { + let arr = parse(tmpl).list || [] + arr = arr.filter((f) => f) + arr = arr.map((str) => '• ' + str) + return arr.join('\n\n') + }, + + //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist + plainlist: (tmpl) => { + tmpl = strip(tmpl) + let arr = tmpl.split('|').slice(1) //remove the title + arr = arr.join('|').split(/\n ?\* ?/) //split on newline + arr = arr.filter((s) => s) + return arr.join('\n\n') + }, + + //https://en.wikipedia.org/wiki/Template:Term + term: (tmpl) => { + let obj = parse(tmpl, ['term']) + return `${obj.term}:` + }, + + linum: (tmpl) => { + let obj = parse(tmpl, ['num', 'text']) + return `${obj.num}. ${obj.text}` + }, + + 'block indent': (tmpl) => { + let obj = parse(tmpl) + if (obj['1']) { + return '\n' + obj['1'] + '\n' + } + return '' + }, + + //https://en.wikipedia.org/wiki/Template:Lbs + lbs: (tmpl) => { + let obj = parse(tmpl, ['text']) + return `[[${obj.text} Lifeboat Station|${obj.text}]]` + }, + + //Foo-class + lbc: (tmpl) => { + let obj = parse(tmpl, ['text']) + return `[[${obj.text}-class lifeboat|${obj.text}-class]]` + }, + + lbb: (tmpl) => { + let obj = parse(tmpl, ['text']) + return `[[${obj.text}-class lifeboat|${obj.text}]]` + }, + + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + '#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) => { + tmpl = tmpl.replace(/:/, '|') + let obj = parse(tmpl, ['text']) + return (obj.text || '').toLowerCase() + }, + + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + uc: (tmpl) => { + tmpl = tmpl.replace(/:/, '|') + let obj = parse(tmpl, ['text']) + return (obj.text || '').toUpperCase() + }, + + lcfirst: (tmpl) => { + tmpl = tmpl.replace(/:/, '|') + let text = parse(tmpl, ['text']).text + if (!text) { + return '' + } + return text[0].toLowerCase() + text.substr(1) + }, + + ucfirst: (tmpl) => { + tmpl = tmpl.replace(/:/, '|') + let text = parse(tmpl, ['text']).text + if (!text) { + return '' + } + return text[0].toUpperCase() + text.substr(1) + }, + + 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) => { + tmpl = tmpl.replace(/:/, '|') + let obj = parse(tmpl, ['text', 'num']) + let text = obj.text || '' + return text.padEnd(obj.num, obj.str || '0') + }, + + //https://en.wikipedia.org/wiki/Template:Abbrlink + abbrlink: (tmpl) => { + let obj = parse(tmpl, ['abbr', 'page']) + if (obj.page) { + return `[[${obj.page}|${obj.abbr}]]` + } + return `[[${obj.abbr}]]` + }, + + // https://en.wikipedia.org/wiki/Template:Own + own: (tmpl) => { + let obj = parse(tmpl, ['author']) + let str = 'Own work' + if (obj.author) { + str += ' by ' + obj.author + } + return str + }, + + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + formatnum: (tmpl) => { + tmpl = tmpl.replace(/:/, '|') + let obj = parse(tmpl, ['number']) + let str = obj.number || '' + str = str.replace(/,/g, '') + let num = Number(str) + return num.toLocaleString() || '' + }, + + //https://en.wikipedia.org/wiki/Template:Frac + frac: (tmpl) => { + let order = ['a', 'b', 'c'] + let obj = parse(tmpl, order) + if (obj.c) { + return `${obj.a} ${obj.b}/${obj.c}` + } + if (obj.b) { + return `${obj.a}/${obj.b}` + } + return `1/${obj.b}` + }, + + //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values + convert: (tmpl) => { + let order = ['num', 'two', 'three', 'four'] + let obj = parse(tmpl, order) + //todo: support plural units + if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { + if (obj.four) { + return `${obj.num} ${obj.two} ${obj.three} ${obj.four}` + } + return `${obj.num} ${obj.two} ${obj.three}` + } + return `${obj.num} ${obj.two}` + }, + + // Large number of aliases - https://en.wikipedia.org/wiki/Template:Tl + tl: (tmpl) => { + let order = ['first', 'second'] + let obj = parse(tmpl, order) + return obj.second || obj.first + }, + + //this one's a little different + won: (tmpl) => { + let data = parse(tmpl, ['text']) + return data.place || data.text || lib.titlecase(data.template) + }, + + //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag + tag: (tmpl) => { + let obj = parse(tmpl, ['tag', 'open']) + const ignore = { + span: true, + div: true, + p: true, + } + //pair, empty, close, single + if (!obj.open || obj.open === 'pair') { + //just skip generating spans and things.. + if (ignore[obj.tag]) { + return obj.content || '' + } + return `<${obj.tag} ${obj.attribs || ''}>${obj.content || ''}` + } + return '' + }, + + //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural + plural: (tmpl) => { + tmpl = tmpl.replace(/plural:/, 'plural|') + let order = ['num', 'word'] + let obj = parse(tmpl, order) + let num = Number(obj.num) + let word = obj.word + if (num !== 1) { + if (/.y$/.test(word)) { + word = word.replace(/y$/, 'ies') + } else { + word += 's' + } + } + return num + ' ' + word + }, + + //https://en.wikipedia.org/wiki/Template:DEC + dec: (tmpl) => { + let obj = parse(tmpl, ['degrees', 'minutes', 'seconds']) + let str = (obj.degrees || 0) + '°' + if (obj.minutes) { + str += obj.minutes + `′` + } + if (obj.seconds) { + str += obj.seconds + '″' + } + return str + }, + + //https://en.wikipedia.org/wiki/Template:Val + val: (tmpl) => { + let obj = parse(tmpl, ['number', 'uncertainty']) + let num = obj.number + if (num && Number(num)) { + num = Number(num).toLocaleString() + } + let str = num || '' + //prefix/suffix + if (obj.p) { + str = obj.p + str + } + if (obj.s) { + str = obj.s + str + } + //add units, too + if (obj.u || obj.ul || obj.upl) { + str = str + ' ' + (obj.u || obj.ul || obj.upl) + } + return str + }, + + //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} + percentage: (tmpl) => { + let obj = parse(tmpl, ['numerator', 'denominator', 'decimals']) + let num = lib.percentage(obj) + if (num === null) { + return '' + } + return num + '%' + }, + + // {{Percent-done|done=N|total=N|digits=N}} + 'percent-done': (tmpl) => { + let obj = parse(tmpl, ['done', 'total', 'digits']) + let num = lib.percentage({ + numerator: obj.done, + denominator: obj.total, + decimals: obj.digits, + }) + if (num === null) { + return '' + } + return `${obj.done} (${num}%) done` + }, +} diff --git a/src/template/custom/text-only/hardcoded.js b/src/template/custom/text-only/hardcoded.js new file mode 100644 index 00000000..a2cbe0ac --- /dev/null +++ b/src/template/custom/text-only/hardcoded.js @@ -0,0 +1,41 @@ +module.exports = { + '·': '·', + 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: '▲', +} diff --git a/src/template/custom/text-only/index.js b/src/template/custom/text-only/index.js new file mode 100644 index 00000000..59ed2c2c --- /dev/null +++ b/src/template/custom/text-only/index.js @@ -0,0 +1,8 @@ +module.exports = Object.assign( + {}, + require('./hardcoded'), + require('./shorthand'), + require('./functions'), + require('./flags'), + require('./table-cell') +) diff --git a/src/template/custom/text-only/shorthand.js b/src/template/custom/text-only/shorthand.js new file mode 100644 index 00000000..4ce6a8f0 --- /dev/null +++ b/src/template/custom/text-only/shorthand.js @@ -0,0 +1,79 @@ +const languages = require('../../../_data/languages') + +//grab the first, second or third pipe.. +let templates = { + p1: 0, + p2: 1, + p3: 2, + resize: 1, //https://en.wikipedia.org/wiki/Template:Resize + lang: 1, + 'rtl-lang': 1, + l: 2, + h: 1, //https://en.wikipedia.org/wiki/Template:Hover_title + sort: 1, //https://en.wikipedia.org/wiki/Template:Sort +} + +//templates that we simply grab their insides as plaintext +let zeros = [ + 'defn', + 'lino', //https://en.wikipedia.org/wiki/Template:Linum + 'finedetail', //https://en.wikipedia.org/wiki/Template:Finedetail + 'nobold', + 'noitalic', + 'nocaps', + 'vanchor', //https://en.wikipedia.org/wiki/Template:Visible_anchor + 'rnd', + 'date', //Explictly-set dates - https://en.wikipedia.org/wiki/Template: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', //https://en.wikipedia.org/wiki/Template:Delink + 'pre', + 'var', + 'mvar', + 'pre2', + 'code', +] +zeros.forEach((k) => { + templates[k] = 0 +}) + +//https://en.wikipedia.org/wiki/Category:Lang-x_templates +Object.keys(languages).forEach((k) => { + templates['lang-' + k] = 0 +}) + +module.exports = templates diff --git a/src/template/templates/wikipedia/table-cell.js b/src/template/custom/text-only/table-cell.js similarity index 78% rename from src/template/templates/wikipedia/table-cell.js rename to src/template/custom/text-only/table-cell.js index b37ef900..9c88199b 100644 --- a/src/template/templates/wikipedia/table-cell.js +++ b/src/template/custom/text-only/table-cell.js @@ -1,9 +1,6 @@ //random misc for inline wikipedia templates -const parse = require('../../_parsers/parse') - -const titlecase = str => { - return str.charAt(0).toUpperCase() + str.substring(1) -} +const parse = require('../../parse/toJSON') +const titlecase = require('../_lib').titlecase //https://en.wikipedia.org/wiki/Template:Yes let templates = {} @@ -71,10 +68,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,19 +96,13 @@ 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 => { - let data = parse(tmpl, ['text']) - return data.place || data.text || titlecase(data.template) -} - module.exports = templates diff --git a/src/template/find/index.js b/src/template/find/01-nested.js similarity index 91% rename from src/template/find/index.js rename to src/template/find/01-nested.js index 2e4f100a..799e585a 100644 --- a/src/template/find/index.js +++ b/src/template/find/01-nested.js @@ -1,5 +1,5 @@ -const findFlat = require('./flat') -const getName = require('../_parsers/_getName') +const findFlat = require('./02-flat') +const getName = require('../parse/toJSON/_getName') const hasTemplate = /\{\{/ const parseTemplate = function (tmpl) { diff --git a/src/template/find/flat.js b/src/template/find/02-flat.js similarity index 96% rename from src/template/find/flat.js rename to src/template/find/02-flat.js index c5022edc..711617ce 100644 --- a/src/template/find/flat.js +++ b/src/template/find/02-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/index.js b/src/template/index.js index 67fd081e..99e56c8d 100644 --- a/src/template/index.js +++ b/src/template/index.js @@ -1,43 +1,30 @@ -const Infobox = require('../infobox/Infobox') -const Reference = require('../reference/Reference') -const findTemplates = require('./find') -const parse = require('./parse') -const Template = require('./Template') -const isCitation = new RegExp('^(cite |citation)', 'i') +const findTemplates = require('./find/01-nested') +const parseTemplate = require('./parse') +const sortOut = require('./sortOut') -const references = { - citation: true, - refn: true, - harvnb: true, -} - -const isReference = function (obj) { - return references[obj.template] === true || isCitation.test(obj.template) === true -} - -const isObject = function (obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]' -} - -const isInfobox = function (obj) { - return obj.template === 'infobox' && obj.data && isObject(obj.data) -} - -//reduce the scary recursive situations -const allTemplates = function (section, doc) { - let wiki = section.wiki +// return a flat list of all {{templates}} +const allTemplates = function (wiki, doc) { + let list = [] //nested data-structure of templates - let list = findTemplates(wiki) - let keep = [] - + let nested = findTemplates(wiki) //recursive template-parser - const parseThem = function (obj, parent) { + const parseNested = function (obj, parent) { obj.parent = parent //do tail-first recursion if (obj.children && obj.children.length > 0) { - obj.children.forEach((ch) => parseThem(ch, obj)) + obj.children.forEach((ch) => parseNested(ch, obj)) + } + //parse template into json, return replacement wikitext + let [text, json] = parseTemplate(obj, doc) + obj.wiki = text + if (json) { + list.push({ + name: obj.name, + wiki: obj.body, + text: text, + json: json, + }) } - obj.out = parse(obj, keep) //remove the text from every parent const removeIt = function (node, body, out) { if (node.parent) { @@ -45,38 +32,36 @@ const allTemplates = function (section, doc) { removeIt(node.parent, body, out) } } - removeIt(obj, obj.body, obj.out) - wiki = wiki.replace(obj.body, obj.out) + removeIt(obj, obj.body, obj.wiki) + wiki = wiki.replace(obj.body, obj.wiki) } - //kick it off - list.forEach((node) => parseThem(node, null)) + nested.forEach((node) => parseNested(node, null)) + //remove the templates from our wiki text + nested.forEach((node) => { + wiki = wiki.replace(node.body, node.wiki) + }) + return { list: list, wiki: wiki } +} + +//find + parse all templates in the section +const process = function (section, doc) { + // find+parse them all + let { list, wiki } = allTemplates(section._wiki, doc) + // split-out references and infoboxes + let domain = doc ? doc._domain : null + let { infoboxes, references, templates } = sortOut(list, domain) //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) - //remove references and infoboxes from our list - section.templates = section.templates.filter((obj) => { - if (isReference(obj) === true) { - section.references.push(new Reference(obj)) - return false - } - if (isInfobox(obj) === true) { - obj.domain = doc._domain - section.infoboxes.push(new Infobox(obj)) - return false - } - return true - }) - section.templates = section.templates.map((obj) => new Template(obj)) + section._infoboxes = section._infoboxes || [] + section._references = section._references || [] + section._templates = section._templates || [] - //remove the templates from our wiki text - list.forEach((node) => { - wiki = wiki.replace(node.body, node.out) - }) - section.wiki = wiki + section._infoboxes = section._infoboxes.concat(infoboxes) + section._references = section._references.concat(references) + section._templates = section._templates.concat(templates) + + section._wiki = wiki } -module.exports = allTemplates +module.exports = process diff --git a/src/template/parse.js b/src/template/parse.js deleted file mode 100644 index 26ab3c37..00000000 --- a/src/template/parse.js +++ /dev/null @@ -1,68 +0,0 @@ -const ignore = require('./_ignore') -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 = function(arr) { - return Object.prototype.toString.call(arr) === '[object Array]' -} - -//this gets all the {{template}} strings and decides how to parse them -const parseTemplate = function(tmpl, list) { - let name = tmpl.name - - if (ignore.hasOwnProperty(name) === true) { - return '' - } - - // {{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... - if (/^cite [a-z]/.test(name) === true) { - let obj = parse(tmpl.body, list) - obj.type = obj.template - obj.template = 'citation' - list.push(obj) - return '' - } - - // known template - if (templates.hasOwnProperty(name) === true) { - // 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 - if (typeof templates[name] === 'string') { - return templates[name] - } - // handle array sytax - if (isArray(templates[name]) === true) { - let obj = generic(tmpl.body, templates[name]) - list.push(obj) - return '' - } - // handle function syntax - if (typeof templates[name] === 'function') { - return templates[name](tmpl.body, list) - } - } - - // unknown template, try to parse it - let parsed = parse(tmpl.body) - if (list && Object.keys(parsed).length > 0) { - list.push(parsed) - } - // ..then remove it - return '' -} -module.exports = parseTemplate diff --git a/src/template/_ignore.js b/src/template/parse/_ignore.js similarity index 100% rename from src/template/_ignore.js rename to src/template/parse/_ignore.js diff --git a/src/template/parse/_infobox.js b/src/template/parse/_infobox.js new file mode 100644 index 00000000..a007edb7 --- /dev/null +++ b/src/template/parse/_infobox.js @@ -0,0 +1,51 @@ +const i18n = require('../../_data/i18n') +const infoboxes = require('../../infobox/_infoboxes') +const i18nReg = new RegExp('^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', 'i') +//some looser ones +const startReg = /^infobox /i +const endReg = / infobox$/i +const yearIn = /$Year in [A-Z]/i + +//some known ones from +//https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes +//and https://en.wikipedia.org/wiki/Category:Infobox_templates +const isInfobox = function (name) { + //known + if (infoboxes.hasOwnProperty(name) === true) { + return true + } + if (i18nReg.test(name)) { + return true + } + if (startReg.test(name) || endReg.test(name)) { + return true + } + //these are also infoboxes: 'Year in Belarus' + if (yearIn.test(name)) { + return true + } + return false +} + +//turns template data into good infobox data +const fmtInfobox = function (obj = {}) { + let m = obj.template.match(i18nReg) + let type = obj.template + if (m && m[0]) { + type = type.replace(m[0], '') + } + type = type.trim() + let infobox = { + template: 'infobox', + type: type, + data: obj, + } + delete infobox.data.template //already have this. + delete infobox.data.list //just in case! + return infobox +} + +module.exports = { + isInfobox: isInfobox, + format: fmtInfobox, +} diff --git a/src/template/parse/index.js b/src/template/parse/index.js new file mode 100644 index 00000000..f85d2296 --- /dev/null +++ b/src/template/parse/index.js @@ -0,0 +1,73 @@ +const ignore = require('./_ignore') +const infobox = require('./_infobox') +const templates = require('../custom') +const toJSON = require('./toJSON') +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, doc) { + let name = tmpl.name + // dont bother with some junk templates + if (ignore.hasOwnProperty(name) === true) { + return [''] + } + //{{infobox settlement...}} + if (infobox.isInfobox(name) === true) { + 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] + } + // ok, here we go! + //parse some known templates + if (templates.hasOwnProperty(name) === true) { + //handle number-syntax + if (typeof templates[name] === 'number') { + let obj = toJSON(tmpl.body, nums) + let key = String(templates[name]) + return [obj[key] || ''] + } + //handle string-syntax + if (typeof templates[name] === 'string') { + return [templates[name]] + } + //handle array sytax + if (isArray(templates[name]) === true) { + let obj = toJSON(tmpl.body, templates[name]) + // 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], obj] + } + //handle function syntax + if (typeof templates[name] === 'function') { + // let json = toJSON(tmpl.body) + //(tmpl, list, alias, doc) + let arr = [] + let txt = templates[name](tmpl.body, arr, toJSON, null, doc) + return [txt, arr[0]] + } + } + //an unknown template with data, so just keep it. + let json = toJSON(tmpl.body) + if (Object.keys(json).length === 0) { + // list.push(json) + json = null + } + //..then remove it + return ['', json] +} +module.exports = parseTemplate diff --git a/src/template/parse/toJSON/01-pipe-splitter.js b/src/template/parse/toJSON/01-pipe-splitter.js new file mode 100644 index 00000000..3c33e8ea --- /dev/null +++ b/src/template/parse/toJSON/01-pipe-splitter.js @@ -0,0 +1,43 @@ +/** + * 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 :/ + arr.forEach((a, i) => { + if (a === null) { + return + } + //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 + ) { + 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] === '') { + arr.pop() + } + break + } + return arr +} +module.exports = pipeSplitter diff --git a/src/template/parse/toJSON/02-keyMaker.js b/src/template/parse/toJSON/02-keyMaker.js new file mode 100644 index 00000000..d15c5323 --- /dev/null +++ b/src/template/parse/toJSON/02-keyMaker.js @@ -0,0 +1,75 @@ +//every value in {{tmpl|a|b|c}} needs a name +//here we come up with names for them +const hasKey = /^[\p{Letter}0-9\._\- '()œ]+=/iu + +//templates with these properties are asking for trouble +const reserved = { + template: true, + list: true, + prototype: true, +} + +/** + * @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] || '' + key = key.toLowerCase().trim() + let val = parts.slice(1).join('=') + //don't let it be called 'template'.. + if (reserved.hasOwnProperty(key)) { + key = '_' + key + } + return { + key: key, + val: val.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 {object} 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) + if (res.key) { + h[res.key] = res.val + return h + } + } + + //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) + } + + keyIndex += 1 + return h + }, {}) +} + +module.exports = keyMaker diff --git a/src/template/_parsers/03-cleanup.js b/src/template/parse/toJSON/03-cleanup.js similarity index 85% rename from src/template/_parsers/03-cleanup.js rename to src/template/parse/toJSON/03-cleanup.js index 3493931c..7fdb181f 100644 --- a/src/template/_parsers/03-cleanup.js +++ b/src/template/parse/toJSON/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/parse/toJSON/_fmtName.js similarity index 82% rename from src/template/_parsers/_fmtName.js rename to src/template/parse/toJSON/_fmtName.js index e5a181b7..02aeabb1 100644 --- a/src/template/_parsers/_fmtName.js +++ b/src/template/parse/toJSON/_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/parse/toJSON/_getName.js similarity index 94% rename from src/template/_parsers/_getName.js rename to src/template/parse/toJSON/_getName.js index aaa05f7b..093c2b05 100644 --- a/src/template/_parsers/_getName.js +++ b/src/template/parse/toJSON/_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/parse/toJSON/_strip.js b/src/template/parse/toJSON/_strip.js new file mode 100644 index 00000000..719518e5 --- /dev/null +++ b/src/template/parse/toJSON/_strip.js @@ -0,0 +1,14 @@ +/** + * 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/parse/toJSON/index.js similarity index 55% rename from src/template/_parsers/parse.js rename to src/template/parse/toJSON/index.js index 789a6c21..8d60e1d4 100644 --- a/src/template/_parsers/parse.js +++ b/src/template/parse/toJSON/index.js @@ -1,13 +1,20 @@ //remove the top/bottom off the template const strip = require('./_strip') const fmtName = require('./_fmtName') -const parseSentence = require('../../04-sentence').fromText +const parseSentence = require('../../../04-sentence').fromText 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} str + * @param {'json' | 'raw'} [fmt] + * @returns {string} text + */ +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) { @@ -41,13 +59,14 @@ 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) }) + //add the template name if (name) { obj.template = fmtName(name) diff --git a/src/template/sortOut.js b/src/template/sortOut.js new file mode 100644 index 00000000..99a86f38 --- /dev/null +++ b/src/template/sortOut.js @@ -0,0 +1,42 @@ +const Infobox = require('../infobox/Infobox') +const Reference = require('../reference/Reference') +const Template = require('./Template') +const isCitation = /^(cite |citation)/i + +const referenceTypes = { + citation: true, + refn: true, + harvnb: true, + source: true, //wikinews +} + +// split Infoboxes from templates and references +const sortOut = function (list, domain) { + let res = { + infoboxes: [], + templates: [], + references: [], + } + //remove references and infoboxes from our list + 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(json, obj.wiki)) + return + } + // is it an Infobox? + 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, obj.wiki)) + return + } + // otherwise, it's just a template + res.templates.push(new Template(json, obj.text, obj.wiki)) + }) + return res +} + +module.exports = sortOut diff --git a/src/template/templates/dates/_delta.js b/src/template/templates/dates/_delta.js deleted file mode 100644 index 45a3bb08..00000000 --- a/src/template/templates/dates/_delta.js +++ /dev/null @@ -1,37 +0,0 @@ -//this is allowed to be rough -const day = 1000 * 60 * 60 * 24 -const month = day * 30 -const year = day * 365 - -const getEpoch = function(obj) { - return new Date(`${obj.year}-${obj.month || 0}-${obj.date || 1}`).getTime() -} - -//very rough! -const delta = function(from, to) { - from = getEpoch(from) - to = getEpoch(to) - let diff = to - from - let obj = {} - //get years - let years = Math.floor(diff / year, 10) - if (years > 0) { - obj.years = years - diff -= obj.years * year - } - //get months - let months = Math.floor(diff / month, 10) - if (months > 0) { - obj.months = months - diff -= obj.months * month - } - //get days - let days = Math.floor(diff / day, 10) - if (days > 0) { - obj.days = days - // diff -= (obj.days * day); - } - return obj -} - -module.exports = delta diff --git a/src/template/templates/dates/_months.js b/src/template/templates/dates/_months.js deleted file mode 100644 index 23cf6074..00000000 --- a/src/template/templates/dates/_months.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = [ - undefined, //1-based months.. :/ - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December' -] diff --git a/src/template/templates/dates/_timeSince.js b/src/template/templates/dates/_timeSince.js deleted file mode 100644 index 9e05d3c3..00000000 --- a/src/template/templates/dates/_timeSince.js +++ /dev/null @@ -1,23 +0,0 @@ -//not all too fancy - used in {{timesince}} -const timeSince = function(str) { - let d = new Date(str) - if (isNaN(d.getTime())) { - return '' - } - let now = new Date() - let delta = now.getTime() - d.getTime() - let predicate = 'ago' - if (delta < 0) { - predicate = 'from now' - delta = Math.abs(delta) - } - //figure out units - let hours = delta / 1000 / 60 / 60 - let days = hours / 24 - if (days < 365) { - return parseInt(days, 10) + ' days ' + predicate - } - let years = days / 365 - return parseInt(years, 10) + ' years ' + predicate -} -module.exports = timeSince diff --git a/src/template/templates/dates/misc.js b/src/template/templates/dates/misc.js deleted file mode 100644 index 95d3a0b3..00000000 --- a/src/template/templates/dates/misc.js +++ /dev/null @@ -1,33 +0,0 @@ -const format = require('./_format') -const parse = require('../../_parsers/parse') - -const misc = { - reign: tmpl => { - let order = ['start', 'end'] - let obj = parse(tmpl, order) - return `(r. ${obj.start} – ${obj.end})` - }, - circa: tmpl => { - let obj = parse(tmpl, ['year']) - return `c. ${obj.year}` - }, - //we can't do timezones, so fake this one a little bit - //https://en.wikipedia.org/wiki/Template:Time - time: () => { - let d = new Date() - let obj = format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]) - return format.toText(obj) - }, - monthname: 0, - //https://en.wikipedia.org/wiki/Template:OldStyleDate - oldstyledate: tmpl => { - let order = ['date', 'year'] - let obj = parse(tmpl, order) - let str = obj.date - if (obj.year) { - str += ' ' + obj.year - } - return str - } -} -module.exports = misc diff --git a/src/template/templates/elections.js b/src/template/templates/elections.js deleted file mode 100644 index 59b96cca..00000000 --- a/src/template/templates/elections.js +++ /dev/null @@ -1,46 +0,0 @@ -const parse = require('../_parsers/parse') - -let templates = { - //https://en.wikipedia.org/wiki/Template:Election_box - 'election box begin': (tmpl, list) => { - let data = parse(tmpl) - list.push(data) - return '' - }, - 'election box candidate': (tmpl, list) => { - let data = parse(tmpl) - list.push(data) - return '' - }, - 'election box hold with party link': (tmpl, list) => { - let data = parse(tmpl) - list.push(data) - return '' - }, - 'election box gain with party link': (tmpl, list) => { - let data = parse(tmpl) - list.push(data) - return '' - } -} -//aliases -templates['election box begin no change'] = templates['election box begin'] -templates['election box begin no party'] = templates['election box begin'] -templates['election box begin no party no change'] = templates['election box begin'] -templates['election box inline begin'] = templates['election box begin'] -templates['election box inline begin no change'] = templates['election box begin'] - -templates['election box candidate for alliance'] = templates['election box candidate'] -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 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 incumbent'] = templates['election box candidate'] -module.exports = templates diff --git a/src/template/templates/formatting/format.js b/src/template/templates/formatting/format.js deleted file mode 100644 index 851b9f69..00000000 --- a/src/template/templates/formatting/format.js +++ /dev/null @@ -1,211 +0,0 @@ -const parse = require('../../_parsers/parse') - -let templates = { - //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag - tag: (tmpl) => { - let obj = parse(tmpl, ['tag', 'open']) - const ignore = { - span: true, - div: true, - p: true, - } - //pair, empty, close, single - if (!obj.open || obj.open === 'pair') { - //just skip generating spans and things.. - if (ignore[obj.tag]) { - return obj.content || '' - } - return `<${obj.tag} ${obj.attribs || ''}>${obj.content || ''}` - } - return '' - }, - //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural - plural: (tmpl) => { - tmpl = tmpl.replace(/plural:/, 'plural|') - let order = ['num', 'word'] - let obj = parse(tmpl, order) - let num = Number(obj.num) - let word = obj.word - if (num !== 1) { - if (/.y$/.test(word)) { - word = word.replace(/y$/, 'ies') - } else { - word += 's' - } - } - return num + ' ' + word - }, - // https://en.wikipedia.org/wiki/Template:First_word - 'first word': (tmpl) => { - let obj = parse(tmpl, ['text']) - let str = obj.text - if (obj.sep) { - return str.split(obj.sep)[0] - } - return str.split(' ')[0] - }, - trunc: (tmpl) => { - let order = ['str', 'len'] - let obj = parse(tmpl, order) - return obj.str.substr(0, obj.len) - }, - 'str mid': (tmpl) => { - let order = ['str', 'start', 'end'] - let obj = parse(tmpl, order) - let start = parseInt(obj.start, 10) - 1 - let end = parseInt(obj.end, 10) - return obj.str.substr(start, end) - }, - //grab the first, second or third pipe - p1: 0, - p2: 1, - p3: 2, - //formatting things - https://en.wikipedia.org/wiki/Template:Nobold - braces: (tmpl) => { - let obj = parse(tmpl, ['text']) - let attrs = '' - if (obj.list) { - attrs = '|' + obj.list.join('|') - } - return '{{' + (obj.text || '') + attrs + '}}' - }, - nobold: 0, - noitalic: 0, - nocaps: 0, - syntaxhighlight: (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - return obj.code || '' - }, - samp: (tmpl, list) => { - let obj = parse(tmpl, ['1']) - list.push(obj) - return obj['1'] || '' - }, - //https://en.wikipedia.org/wiki/Template:Visible_anchor - vanchor: 0, - //https://en.wikipedia.org/wiki/Template:Resize - resize: 1, - //https://en.wikipedia.org/wiki/Template:Ra - ra: (tmpl) => { - let obj = parse(tmpl, ['hours', 'minutes', 'seconds']) - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':') - }, - //https://en.wikipedia.org/wiki/Template:Deg2HMS - deg2hms: (tmpl) => { - //this template should do the conversion - let obj = parse(tmpl, ['degrees']) - return (obj.degrees || '') + '°' - }, - hms2deg: (tmpl) => { - //this template should do the conversion too - let obj = parse(tmpl, ['hours', 'minutes', 'seconds']) - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':') - }, - decdeg: (tmpl) => { - //this template should do the conversion too - let obj = parse(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']) - return (obj.deg || obj.degrees) + '°' - }, - rnd: 0, - //https://en.wikipedia.org/wiki/Template:DEC - dec: (tmpl) => { - let obj = parse(tmpl, ['degrees', 'minutes', 'seconds']) - let str = (obj.degrees || 0) + '°' - if (obj.minutes) { - str += obj.minutes + `′` - } - if (obj.seconds) { - str += obj.seconds + '″' - } - return str - }, - //https://en.wikipedia.org/wiki/Template:Val - val: (tmpl) => { - let obj = parse(tmpl, ['number', 'uncertainty']) - let num = obj.number - if (num && Number(num)) { - num = Number(num).toLocaleString() - } - let str = num || '' - //prefix/suffix - if (obj.p) { - str = obj.p + str - } - if (obj.s) { - str = obj.s + str - } - //add units, too - if (obj.u || obj.ul || obj.upl) { - str = str + ' ' + (obj.u || obj.ul || obj.upl) - } - return str - }, - //https://en.wikipedia.org/wiki/Template:Sub - sub: (tmpl, list) => { - let obj = parse(tmpl, ['text']) - list.push(obj) - return obj.text || '' - }, - //https://en.wikipedia.org/wiki/Template:Sup - sup: (tmpl, list) => { - let obj = parse(tmpl, ['text']) - list.push(obj) - return obj.text || '' - }, -} - -//aliases -templates['rndfrac'] = templates.rnd -templates['rndnear'] = templates.rnd -templates['unité'] = templates.val - -//templates that we simply grab their insides as plaintext -let inline = [ - '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', //https://en.wikipedia.org/wiki/Template:Delink - //half-supported - 'pre', - 'var', - 'mvar', - 'pre2', - 'code', -] -inline.forEach((k) => { - templates[k] = (tmpl) => { - return parse(tmpl, ['text']).text || '' - } -}) - -module.exports = templates diff --git a/src/template/templates/formatting/index.js b/src/template/templates/formatting/index.js deleted file mode 100644 index 1ed06423..00000000 --- a/src/template/templates/formatting/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = Object.assign({}, require('./format'), require('./lists'), require('./misc')) diff --git a/src/template/templates/formatting/lists.js b/src/template/templates/formatting/lists.js deleted file mode 100644 index 04633e55..00000000 --- a/src/template/templates/formatting/lists.js +++ /dev/null @@ -1,110 +0,0 @@ -const strip = require('../../_parsers/_strip') -const parse = require('../../_parsers/parse') - -const tmpls = { - //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist - plainlist: tmpl => { - tmpl = strip(tmpl) - //remove the title - let arr = tmpl.split('|') - arr = arr.slice(1) - tmpl = arr.join('|') - //split on newline - arr = tmpl.split(/\n ?\* ?/) - arr = arr.filter(s => s) - return arr.join('\n\n') - }, - - //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list - 'collapsible list': (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - let str = '' - if (obj.title) { - str += `'''${obj.title}'''` + '\n\n' - } - if (!obj.list) { - obj.list = [] - for (let i = 1; i < 10; i += 1) { - if (obj[i]) { - obj.list.push(obj[i]) - delete obj[i] - } - } - } - obj.list = obj.list.filter(s => s) - str += obj.list.join('\n\n') - return str - }, - // https://en.wikipedia.org/wiki/Template:Ordered_list - 'ordered list': (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - obj.list = obj.list || [] - let lines = obj.list.map((str, i) => `${i + 1}. ${str}`) - return lines.join('\n\n') - }, - hlist: tmpl => { - let obj = parse(tmpl) - obj.list = obj.list || [] - return obj.list.join(' · ') - }, - 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 => { - let arr = parse(tmpl).list || [] - return arr.join(', ') - }, - //https://en.wikipedia.org/wiki/Template:Br_separated_entries - 'br separated entries': tmpl => { - let arr = parse(tmpl).list || [] - return arr.join('\n\n') - }, - 'comma separated entries': tmpl => { - let arr = parse(tmpl).list || [] - return arr.join(', ') - }, - //https://en.wikipedia.org/wiki/Template:Bare_anchored_list - 'anchored list': tmpl => { - let arr = parse(tmpl).list || [] - arr = arr.map((str, i) => `${i + 1}. ${str}`) - return arr.join('\n\n') - }, - 'bulleted list': tmpl => { - let arr = parse(tmpl).list || [] - arr = arr.filter(f => f) - arr = arr.map(str => '• ' + str) - return arr.join('\n\n') - }, - //https://en.wikipedia.org/wiki/Template:Columns-list - 'columns-list': (tmpl, list) => { - 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(/\*/, '')) - list.push({ - template: 'columns-list', - list: lines - }) - lines = lines.map(s => '• ' + s) - return lines.join('\n\n') - } - // 'pagelist':(tmpl)=>{}, -} -//aliases -tmpls.flatlist = tmpls.plainlist -tmpls.ublist = tmpls.plainlist -tmpls['unbulleted list'] = tmpls['collapsible list'] -tmpls['ubl'] = tmpls['collapsible list'] -tmpls['bare anchored list'] = tmpls['anchored list'] -tmpls['plain list'] = tmpls['plainlist'] -tmpls.cmn = tmpls['columns-list'] -tmpls.collist = tmpls['columns-list'] -tmpls['col-list'] = tmpls['columns-list'] -tmpls.columnslist = tmpls['columns-list'] -module.exports = tmpls diff --git a/src/template/templates/formatting/misc.js b/src/template/templates/formatting/misc.js deleted file mode 100644 index 1c4be859..00000000 --- a/src/template/templates/formatting/misc.js +++ /dev/null @@ -1,211 +0,0 @@ -const parse = require('../../_parsers/parse') - -const inline = { - //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values - convert: tmpl => { - let order = ['num', 'two', 'three', 'four'] - let obj = parse(tmpl, order) - //todo: support plural units - if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { - if (obj.four) { - return `${obj.num} ${obj.two} ${obj.three} ${obj.four}` - } - return `${obj.num} ${obj.two} ${obj.three}` - } - return `${obj.num} ${obj.two}` - }, - //https://en.wikipedia.org/wiki/Template:Term - term: tmpl => { - let obj = parse(tmpl, ['term']) - return `${obj.term}:` - }, - defn: 0, - //https://en.wikipedia.org/wiki/Template:Linum - lino: 0, - linum: tmpl => { - let obj = parse(tmpl, ['num', 'text']) - return `${obj.num}. ${obj.text}` - }, - //https://en.wikipedia.org/wiki/Template:Interlanguage_link - 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 => { - let order = ['a', 'b', 'c'] - let obj = parse(tmpl, order) - if (obj.c) { - return `${obj.a} ${obj.b}/${obj.c}` - } - if (obj.b) { - return `${obj.a}/${obj.b}` - } - return `1/${obj.b}` - }, - //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} - height: (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - let result = [] - let units = ['m', 'cm', 'ft', 'in'] //order matters - units.forEach(unit => { - if (obj.hasOwnProperty(unit) === true) { - result.push(obj[unit] + unit) - } - }) - return result.join(' ') - }, - 'block indent': tmpl => { - let obj = parse(tmpl) - if (obj['1']) { - return '\n' + obj['1'] + '\n' - } - return '' - }, - quote: (tmpl, list) => { - let order = ['text', 'author'] - let obj = parse(tmpl, order) - list.push(obj) - //create plaintext version - if (obj.text) { - let str = `"${obj.text}"` - if (obj.author) { - str += '\n\n' - str += ` - ${obj.author}` - } - return str + '\n' - } - return '' - }, - - //https://en.wikipedia.org/wiki/Template:Lbs - lbs: tmpl => { - let obj = parse(tmpl, ['text']) - return `[[${obj.text} Lifeboat Station|${obj.text}]]` - }, - //Foo-class - lbc: tmpl => { - let obj = parse(tmpl, ['text']) - return `[[${obj.text}-class lifeboat|${obj.text}-class]]` - }, - lbb: tmpl => { - let obj = parse(tmpl, ['text']) - return `[[${obj.text}-class lifeboat|${obj.text}]]` - }, - // https://en.wikipedia.org/wiki/Template:Own - own: tmpl => { - let obj = parse(tmpl, ['author']) - let str = 'Own work' - if (obj.author) { - str += ' by ' + obj.author - } - return str - }, - //https://en.wikipedia.org/wiki/Template:Sic - sic: (tmpl, list) => { - let obj = parse(tmpl, ['one', 'two', 'three']) - let word = (obj.one || '') + (obj.two || '') - //support '[sic?]' - if (obj.one === '?') { - word = (obj.two || '') + (obj.three || '') - } - list.push({ - template: 'sic', - word: word - }) - if (obj.nolink === 'y') { - return word - } - return `${word} [sic]` - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - formatnum: tmpl => { - tmpl = tmpl.replace(/:/, '|') - let obj = parse(tmpl, ['number']) - let str = obj.number || '' - str = str.replace(/,/g, '') - let num = Number(str) - return num.toLocaleString() || '' - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - '#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 => { - tmpl = tmpl.replace(/:/, '|') - let obj = parse(tmpl, ['text']) - return (obj.text || '').toLowerCase() - }, - lcfirst: tmpl => { - tmpl = tmpl.replace(/:/, '|') - let obj = parse(tmpl, ['text']) - let text = obj.text - if (!text) { - return '' - } - return text[0].toLowerCase() + text.substr(1) - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - uc: tmpl => { - tmpl = tmpl.replace(/:/, '|') - let obj = parse(tmpl, ['text']) - return (obj.text || '').toUpperCase() - }, - ucfirst: tmpl => { - tmpl = tmpl.replace(/:/, '|') - let obj = parse(tmpl, ['text']) - let text = obj.text - if (!text) { - return '' - } - return text[0].toUpperCase() + text.substr(1) - }, - 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 => { - tmpl = tmpl.replace(/:/, '|') - let obj = parse(tmpl, ['text', 'num']) - let text = obj.text || '' - return text.padEnd(obj.num, obj.str || '0') - }, - //abbreviation/meaning - //https://en.wikipedia.org/wiki/Template:Abbr - abbr: tmpl => { - let obj = parse(tmpl, ['abbr', 'meaning', 'ipa']) - return obj.abbr - }, - //https://en.wikipedia.org/wiki/Template:Abbrlink - abbrlink: tmpl => { - let obj = parse(tmpl, ['abbr', 'page']) - if (obj.page) { - return `[[${obj.page}|${obj.abbr}]]` - } - return `[[${obj.abbr}]]` - }, - //https://en.wikipedia.org/wiki/Template:Hover_title - //technically 'h:title' - h: 1, - //https://en.wikipedia.org/wiki/Template:Finedetail - finedetail: 0, - //https://en.wikipedia.org/wiki/Template:Sort - sort: 1 -} - -//aliases -inline['str left'] = inline.trunc -inline['str crop'] = inline.trunc -inline['tooltip'] = inline.abbr -inline['abbrv'] = inline.abbr -inline['define'] = inline.abbr -inline['cvt'] = inline.convert - -module.exports = inline diff --git a/src/template/templates/geo/dms-format.js b/src/template/templates/geo/dms-format.js deleted file mode 100644 index bd5a3a4e..00000000 --- a/src/template/templates/geo/dms-format.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * converts DMS (decimal-minute-second) geo format to lat/lng format. - * - * major thank you to https://github.com/gmaclennan/parse-dms - * and https://github.com/WSDOT-GIS/dms-js 👏 - * - * accepts an array of descending Degree, Minute, Second values, with a hemisphere at the end - * must have N/S/E/W as last thing - * - * @private - * @param {Array.} arr an array of descending Degree, Minute, Second values, with a hemisphere at the end - * @returns {number} the lat or lon in numbers - */ -function parseDms(arr) { - let hemisphere = arr.pop() - let degrees = Number(arr[0] || 0) - let minutes = Number(arr[1] || 0) - let seconds = Number(arr[2] || 0) - if (typeof hemisphere !== 'string' || isNaN(degrees)) { - return null - } - let sign = 1 - if (/[SW]/i.test(hemisphere)) { - sign = -1 - } - return sign * (degrees + minutes / 60 + seconds / 3600) -} -module.exports = parseDms -//console.log(parseDms([57, 18, 22, 'N'])); -//console.log(parseDms([4, 27, 32, 'W'])); diff --git a/src/template/templates/geo/index.js b/src/template/templates/geo/index.js deleted file mode 100644 index ccd64bfd..00000000 --- a/src/template/templates/geo/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const parseCoor = require('./coor') - -const templates = { - coord: (tmpl, list) => { - let obj = parseCoor(tmpl) - list.push(obj) - //display inline, by default - if (!obj.display || obj.display.indexOf('inline') !== -1) { - return `${obj.lat || ''}°N, ${obj.lon || ''}°W` - } - return '' - }, - //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}} -templates['coor'] = templates.coord -// 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 diff --git a/src/template/templates/index.js b/src/template/templates/index.js deleted file mode 100644 index cfc1d64c..00000000 --- a/src/template/templates/index.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = Object.assign( - {}, - require('./dates'), - require('./formatting'), - require('./geo'), - require('./wikipedia'), - - require('./brackets'), - require('./currency'), - require('./elections'), - require('./flags'), - require('./ipa'), - require('./languages'), - require('./math'), - require('./misc'), - require('./punctuation'), - require('./science'), - require('./soccer'), - require('./sports'), - require('./stock-exchanges'), - require('./weather'), - require('./websites'), - require('./wiktionary'), - require('./wikivoyage') -) diff --git a/src/template/templates/ipa.js b/src/template/templates/ipa.js deleted file mode 100644 index 44fecc4a..00000000 --- a/src/template/templates/ipa.js +++ /dev/null @@ -1,56 +0,0 @@ -const parse = require('../_parsers/parse') -const languages = require('../../_data/languages') - -const getLang = function(name) { - //grab the language from the template name - 'ipa-de' - let lang = name.match(/ipac?-(.+)/) - if (lang !== null) { - if (languages.hasOwnProperty(lang[1]) === true) { - return languages[lang[1]].english_title - } - return lang[1] - } - return null -} - -// pronounciation info -const templates = { - // https://en.wikipedia.org/wiki/Template:IPA - ipa: (tmpl, list) => { - let obj = parse(tmpl, ['transcription', 'lang', 'audio']) - obj.lang = getLang(obj.template) - obj.template = 'ipa' - list.push(obj) - return '' - }, - //https://en.wikipedia.org/wiki/Template:IPAc-en - ipac: (tmpl, list) => { - let obj = parse(tmpl) - obj.transcription = (obj.list || []).join(',') - delete obj.list - obj.lang = getLang(obj.template) - obj.template = 'ipac' - list.push(obj) - return '' - }, - transl: (tmpl, list) => { - let obj = parse(tmpl, ['lang', 'text', 'text2']) - // support 3-param - if (obj.text2) { - obj.iso = obj.text - obj.text = obj.text2 - delete obj.text2 - } - 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 => { - templates['ipa-' + lang] = templates.ipa - templates['ipac-' + lang] = templates.ipac -}) - -module.exports = templates diff --git a/src/template/templates/languages.js b/src/template/templates/languages.js deleted file mode 100644 index c6173b83..00000000 --- a/src/template/templates/languages.js +++ /dev/null @@ -1,30 +0,0 @@ -const languages = require('../../_data/languages') -const parse = require('../_parsers/parse') - -const templates = { - lang: 1, - //this one has a million variants - 'lang-de': 0, - 'rtl-lang': 1, - //german keyboard letterscn - taste: 0, - //https://en.wikipedia.org/wiki/Template:Nihongo - nihongo: (tmpl, list) => { - let obj = parse(tmpl, ['english', 'kanji', 'romaji', 'extra']) - list.push(obj) - let str = obj.english || obj.romaji || '' - if (obj.kanji) { - str += ` (${obj.kanji})` - } - return str - } -} -//https://en.wikipedia.org/wiki/Category:Lang-x_templates -Object.keys(languages).forEach(k => { - templates['lang-' + k] = templates['lang-de'] -}) -templates['nihongo2'] = templates.nihongo -templates['nihongo3'] = templates.nihongo -templates['nihongo-s'] = templates.nihongo -templates['nihongo foot'] = templates.nihongo -module.exports = templates diff --git a/src/template/templates/math.js b/src/template/templates/math.js deleted file mode 100644 index 89f74cf7..00000000 --- a/src/template/templates/math.js +++ /dev/null @@ -1,127 +0,0 @@ -const parse = require('../_parsers/parse') -// const parseSentence = require('../../04-sentence').fromText; - -//simply num/denom * 100 -const percentage = function(obj) { - if (!obj.numerator && !obj.denominator) { - return null - } - let perc = Number(obj.numerator) / Number(obj.denominator) - perc *= 100 - let dec = Number(obj.decimals) - if (isNaN(dec)) { - dec = 1 - } - perc = perc.toFixed(dec) - return Number(perc) -} - -let templates = { - // https://en.wikipedia.org/wiki/Template:Math - math: (tmpl, list) => { - let obj = parse(tmpl, ['formula']) - list.push(obj) - return '\n\n' + (obj.formula || '') + '\n\n' - }, - - //fraction - https://en.wikipedia.org/wiki/Template:Sfrac - frac: (tmpl, list) => { - let order = ['a', 'b', 'c'] - let obj = parse(tmpl, order) - let data = { - template: 'sfrac' - } - if (obj.c) { - data.integer = obj.a - data.numerator = obj.b - data.denominator = obj.c - } else if (obj.b) { - data.numerator = obj.a - data.denominator = obj.b - } else { - data.numerator = 1 - data.denominator = obj.a - } - list.push(data) - if (data.integer) { - return `${data.integer} ${data.numerator}⁄${data.denominator}` - } - return `${data.numerator}⁄${data.denominator}` - }, - //https://en.wikipedia.org/wiki/Template:Radic - 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 => { - let obj = parse(tmpl, ['numerator', 'denominator', 'decimals']) - let num = percentage(obj) - if (num === null) { - return '' - } - return num + '%' - }, - // {{Percent-done|done=N|total=N|digits=N}} - 'percent-done': tmpl => { - let obj = parse(tmpl, ['done', 'total', 'digits']) - let num = percentage({ - numerator: obj.done, - denominator: obj.total, - decimals: obj.digits - }) - if (num === null) { - return '' - } - return `${obj.done} (${num}%) done` - }, - 'winning percentage': (tmpl, list) => { - let obj = parse(tmpl, ['wins', 'losses', 'ties']) - list.push(obj) - let wins = Number(obj.wins) - let losses = Number(obj.losses) - let ties = Number(obj.ties) || 0 - let games = wins + losses + ties - if (obj.ignore_ties === 'y') { - ties = 0 - } - if (ties) { - wins += ties / 2 - } - let num = percentage({ - numerator: wins, - denominator: games, - decimals: 1 - }) - if (num === null) { - return '' - } - return `.${num * 10}` - }, - winlosspct: (tmpl, list) => { - let obj = parse(tmpl, ['wins', 'losses']) - list.push(obj) - let wins = Number(obj.wins) - let losses = Number(obj.losses) - let num = percentage({ - numerator: wins, - denominator: wins + losses, - decimals: 1 - }) - if (num === null) { - return '' - } - num = `.${num * 10}` - return `${wins || 0} || ${losses || 0} || ${num || '-'}` - } -} -//aliases -templates['sfrac'] = templates.frac -templates['sqrt'] = templates.radic -templates['pct'] = templates.percentage -templates['percent'] = templates.percentage -templates['winpct'] = templates['winning percentage'] -templates['winperc'] = templates['winning percentage'] - -module.exports = templates diff --git a/src/template/templates/misc.js b/src/template/templates/misc.js deleted file mode 100644 index 97229126..00000000 --- a/src/template/templates/misc.js +++ /dev/null @@ -1,102 +0,0 @@ -const parse = require('../_parsers/parse') - -const generic = function(tmpl, list, alias) { - let obj = parse(tmpl) - if (alias) { - obj.name = obj.template - obj.template = alias - } - list.push(obj) - return '' -} - -const misc = { - //i18n templates - persondata: generic, - taxobox: generic, - citation: generic, - portal: generic, - reflist: generic, - 'cite book': generic, - 'cite journal': generic, - 'cite web': generic, - 'commons cat': generic, - - // https://en.wikipedia.org/wiki/Template:Portuguese_name - 'portuguese name': ['first', 'second', 'suffix'], - uss: ['ship', 'id'], - isbn: (tmpl, list) => { - let order = ['id', 'id2', 'id3'] - let obj = parse(tmpl, order) - list.push(obj) - return 'ISBN: ' + (obj.id || '') - }, - //https://en.wikipedia.org/wiki/Template:Marriage - //this one creates a template, and an inline response - marriage: (tmpl, list) => { - let data = parse(tmpl, ['spouse', 'from', 'to', 'end']) - list.push(data) - let str = `${data.spouse || ''}` - if (data.from) { - if (data.to) { - str += ` (m. ${data.from}-${data.to})` - } else { - str += ` (m. ${data.from})` - } - } - return str - }, - //https://en.wikipedia.org/wiki/Template:Based_on - 'based on': (tmpl, list) => { - let obj = parse(tmpl, ['title', 'author']) - list.push(obj) - return `${obj.title} by ${obj.author || ''}` - }, - //https://en.wikipedia.org/wiki/Template:Video_game_release - 'video game release': (tmpl, list) => { - let order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4'] - let obj = parse(tmpl, order) - let template = { - template: 'video game release', - 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]] - }) - } - } - list.push(template) - 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 - 'bbl to t': (tmpl, list) => { - let obj = parse(tmpl, ['barrels']) - list.push(obj) - if (obj.barrels === '0') { - return obj.barrels + ' barrel' - } - return obj.barrels + ' barrels' - }, - //https://en.wikipedia.org/wiki/Template:Historical_populations - 'historical populations': (tmpl, list) => { - let data = parse(tmpl) - data.list = data.list || [] - let years = [] - for (let i = 0; i < data.list.length; i += 2) { - let num = data.list[i + 1] - years.push({ - year: data.list[i], - 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 deleted file mode 100644 index 6ca5a238..00000000 --- a/src/template/templates/punctuation.js +++ /dev/null @@ -1,51 +0,0 @@ -// okay, these just hurts my feelings -// https://www.mediawiki.org/wiki/Help:Magic_words#Other -let punctuation = [ - // https://en.wikipedia.org/wiki/Template:%C2%B7 - ['·', '·'], - ['·', '·'], - ['dot', '·'], - ['middot', '·'], - ['•', ' • '], - //yup, oxford comma template - [',', ','], - ['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', ' – '], - // these '{{^}}' things are nuts, and used as some ilicit spacing thing. - ['^', ' '], - ['!', '|'], - ['\\', ' /'], - ['`', '`'], - ['=', '='], - ['bracket', '['], - ['[', '['], - ['*', '*'], - ['asterisk', '*'], - ['long dash', '———'], - ['clear', '\n\n'], - ['h.', 'ḥ'] -] -const templates = {} -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 deleted file mode 100644 index 52c92c8b..00000000 --- a/src/template/templates/science.js +++ /dev/null @@ -1,117 +0,0 @@ -const parse = require('../_parsers/parse') - -let templates = { - //https://en.wikipedia.org/wiki/Template:Taxon_info - 'taxon info': ['taxon', 'item'], - - //minor planet - https://en.wikipedia.org/wiki/Template:MPC - mpc: (tmpl, list) => { - let obj = parse(tmpl, ['number', 'text']) - list.push(obj) - return `[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${obj.text || obj.number}]` - }, - //https://en.wikipedia.org/wiki/Template:Chem2 - chem2: (tmpl, list) => { - let obj = parse(tmpl, ['equation']) - list.push(obj) - return obj.equation - }, - //https://en.wikipedia.org/wiki/Template:Sky - sky: (tmpl, list) => { - let obj = parse(tmpl, [ - 'asc_hours', - 'asc_minutes', - 'asc_seconds', - 'dec_sign', - 'dec_degrees', - 'dec_minutes', - 'dec_seconds', - 'distance', - ]) - let template = { - template: 'sky', - ascension: { - hours: obj.asc_hours, - minutes: obj.asc_minutes, - seconds: obj.asc_seconds, - }, - declination: { - sign: obj.dec_sign, - degrees: obj.dec_degrees, - minutes: obj.dec_minutes, - seconds: obj.dec_seconds, - }, - distance: obj.distance, - } - list.push(template) - return '' - }, - - // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see - // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original - // parsing code. - 'medical cases chart': (tmpl, list) => { - let order = [ - 'date', - 'deathsExpr', - 'recoveriesExpr', - 'casesExpr', - '4thExpr', - '5thExpr', - 'col1', - 'col1Change', - 'col2', - 'col2Change', - ] - - let obj = parse(tmpl) - obj.data = obj.data || '' - let rows = obj.data.split('\n') - - // Mimic row parsing in _buildBars in the Lua source, from the following - // line on: - // - // for parameter in mw.text.gsplit(line, ';') do - let dataArray = rows.map((row) => { - let parameters = row.split(';') - let rowObject = { - options: new Map - } - let positionalIndex = 0 - for (let i = 0; i < parameters.length; i++) { - let parameter = parameters[i].trim() - if (parameter.match(/^[a-zA-Z_]/)) { - // Named argument - let [key, value] = parameter.split('=') - // At this point, the Lua code evaluates alttot1 and alttot2 values as - // #expr expressions, but we just pass them through. See also: - // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr - if (value === undefined) { - value = null - } - rowObject.options.set(key, value) - } else { - // Positional argument - // Here again, the Lua code evaluates arguments at index 1 through 5 - // as #expr expressions, but we just pass them through. - if (positionalIndex < order.length) { - rowObject[order[positionalIndex]] = parameter - } - positionalIndex++ - } - } - for (; positionalIndex < order.length; positionalIndex++) { - rowObject[order[positionalIndex]] = null - } - return rowObject - }) - obj.data = dataArray - list.push(obj) - return '' - }, - 'medical cases chart/row': (tmpl) => { - // Deprecated template; we keep it. - return tmpl - }, -} -module.exports = templates diff --git a/src/template/templates/soccer.js b/src/template/templates/soccer.js deleted file mode 100644 index c6087b9f..00000000 --- a/src/template/templates/soccer.js +++ /dev/null @@ -1,100 +0,0 @@ -const parse = require('../_parsers/parse') -const flags = require('../../_data/flags') - -let sports = { - player: (tmpl, list) => { - let res = parse(tmpl, ['number', 'country', 'name', 'dl']) - list.push(res) - let str = `[[${res.name}]]` - if (res.country) { - let country = (res.country || '').toLowerCase() - let flag = flags.find(a => country === a[1] || country === a[2]) || [] - if (flag && flag[0]) { - str = flag[0] + ' ' + str - } - } - if (res.number) { - str = res.number + ' ' + str - } - return str - }, - - //https://en.wikipedia.org/wiki/Template:Goal - goal: (tmpl, list) => { - let res = parse(tmpl) - let obj = { - template: 'goal', - data: [] - } - let arr = res.list || [] - for (let i = 0; i < arr.length; i += 2) { - obj.data.push({ - min: arr[i], - note: arr[i + 1] || '' - }) - } - list.push(obj) - //generate a little text summary - let summary = '⚽ ' - summary += obj.data - .map(o => { - let note = o.note - if (note) { - note = ` (${note})` - } - return o.min + "'" + note - }) - .join(', ') - return summary - }, - //yellow card - yel: (tmpl, list) => { - let obj = parse(tmpl, ['min']) - list.push(obj) - if (obj.min) { - return `yellow: ${obj.min || ''}'` //no yellow-card emoji - } - return '' - }, - subon: (tmpl, list) => { - let obj = parse(tmpl, ['min']) - list.push(obj) - if (obj.min) { - return `sub on: ${obj.min || ''}'` //no yellow-card emoji - } - return '' - }, - suboff: (tmpl, list) => { - let obj = parse(tmpl, ['min']) - list.push(obj) - if (obj.min) { - return `sub off: ${obj.min || ''}'` //no yellow-card emoji - } - return '' - }, - pengoal: (tmpl, list) => { - list.push({ - template: 'pengoal' - }) - return '✅' - }, - penmiss: (tmpl, list) => { - list.push({ - template: 'penmiss' - }) - return '❌' - }, - //'red' card - {{sent off|cards|min1|min2}} - 'sent off': (tmpl, list) => { - let obj = parse(tmpl, ['cards']) - let result = { - template: 'sent off', - cards: obj.cards, - minutes: obj.list || [] - } - list.push(result) - 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 deleted file mode 100644 index d416ac57..00000000 --- a/src/template/templates/sports.js +++ /dev/null @@ -1,12 +0,0 @@ -const parse = require('../_parsers/parse') - -const misc = { - 'baseball secondary style': 0, - 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/weather.js b/src/template/templates/weather.js deleted file mode 100644 index d2b61c68..00000000 --- a/src/template/templates/weather.js +++ /dev/null @@ -1,132 +0,0 @@ -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 toNumber = function(str) { - str = str.replace(/,/g, '') - str = str.replace(/−/g, '-') - let num = Number(str) - if (isNaN(num)) { - return str - } - return num -} - -let templates = { - // this one is a handful! - //https://en.wikipedia.org/wiki/Template:Weather_box - 'weather box': (tmpl, list) => { - 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 => { - byMonth[prop] = [] - monthList.forEach(m => { - let key = `${m} ${prop}` - if (obj.hasOwnProperty(key)) { - let num = toNumber(obj[key]) - delete obj[key] - byMonth[prop].push(num) - } - }) - }) - //add these to original - obj.byMonth = byMonth - - //collect year-based data - let byYear = {} - Object.keys(obj).forEach(k => { - if (isYear.test(k)) { - let prop = k.replace(isYear, '') - byYear[prop] = obj[k] - delete obj[k] - } - }) - obj.byYear = byYear - - list.push(obj) - return '' - }, - - //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation - //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.byMonth = { - 'high c': obj.list.slice(0, 12), - 'low c': obj.list.slice(12, 24), - 'rain mm': obj.list.slice(24, 36) - } - delete obj.list - obj.template = 'weather box' - list.push(obj) - return '' - }, - 'weather box/concise f': (tmpl, list) => { - let obj = parse(tmpl) - 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) - } - delete obj.list - obj.template = 'weather box' - list.push(obj) - return '' - }, - - //https://en.wikipedia.org/wiki/Template:Climate_chart - 'climate chart': (tmpl, list) => { - let lines = parse(tmpl).list || [] - let title = lines[0] - let source = lines[38] - lines = lines.slice(1) - //amazingly, they use '−' symbol here instead of negatives... - lines = lines.map(str => { - if (str && str[0] === '−') { - str = str.replace(/−/, '-') - } - return str - }) - let months = [] - //groups of three, for 12 months - for (let i = 0; i < 36; i += 3) { - months.push({ - low: toNumber(lines[i]), - high: toNumber(lines[i + 1]), - precip: toNumber(lines[i + 2]) - }) - } - let obj = { - template: 'climate chart', - data: { - title: title, - source: source, - months: months - } - } - list.push(obj) - return '' - } -} - -module.exports = templates diff --git a/src/template/templates/websites.js b/src/template/templates/websites.js deleted file mode 100644 index 88199628..00000000 --- a/src/template/templates/websites.js +++ /dev/null @@ -1,56 +0,0 @@ -//this format seems to be a pattern for these -const generic = ['id', 'title', 'description', 'section'] -const idName = ['id', 'name'] - -//https://en.wikipedia.org/wiki/Category:External_link_templates -const externals = { - //https://en.wikipedia.org/wiki/Template:IMDb_title - 'imdb title': generic, - 'imdb name': generic, - 'imdb episode': generic, - 'imdb event': generic, - 'afi film': generic, - 'allmovie title': generic, - allgame: generic, - 'tcmdb title': generic, - 'discogs artist': generic, - 'discogs label': generic, - 'discogs release': generic, - 'discogs master': generic, - 'librivox author': generic, - 'musicbrainz artist': generic, - 'musicbrainz label': generic, - 'musicbrainz recording': generic, - 'musicbrainz release': generic, - 'musicbrainz work': generic, - youtube: generic, - 'goodreads author': idName, - 'goodreads book': generic, - twitter: idName, - facebook: idName, - instagram: idName, - tumblr: idName, - pinterest: idName, - 'espn nfl': idName, - 'espn nhl': idName, - 'espn fc': idName, - hockeydb: idName, - 'fifa player': idName, - worldcat: idName, - 'worldcat id': idName, - 'nfl player': idName, - 'ted speaker': idName, - playmate: idName, - //https://en.wikipedia.org/wiki/Template:DMOZ - dmoz: generic, - - 'find a grave': ['id', 'name', 'work', 'last', 'first', 'date', 'accessdate'], - - congbio: ['id', 'name', 'date'], - - 'hollywood walk of fame': ['name'] -} -//alias -externals.imdb = externals['imdb name'] -externals['imdb episodess'] = externals['imdb episode'] -module.exports = externals diff --git a/src/template/templates/wikipedia/index.js b/src/template/templates/wikipedia/index.js deleted file mode 100644 index a8947d1e..00000000 --- a/src/template/templates/wikipedia/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = Object.assign({}, require('./links'), require('./page'), require('./table-cell')) diff --git a/src/template/templates/wikipedia/links.js b/src/template/templates/wikipedia/links.js deleted file mode 100644 index 2b677827..00000000 --- a/src/template/templates/wikipedia/links.js +++ /dev/null @@ -1,76 +0,0 @@ -const parse = require('../../_parsers/parse') - -let templates = { - /* mostly wiktionary*/ - etyl: 1, - mention: 1, - link: 1, - 'la-verb-form': 0, - 'la-ipa': 0, - //https://en.wikipedia.org/wiki/Template:Sortname - sortname: tmpl => { - let order = ['first', 'last', 'target', 'sort'] - let obj = parse(tmpl, order) - let name = `${obj.first || ''} ${obj.last || ''}` - name = name.trim() - if (obj.nolink) { - return obj.target || name - } - if (obj.dab) { - name += ` (${obj.dab})` - if (obj.target) { - obj.target += ` (${obj.dab})` - } - } - if (obj.target) { - return `[[${obj.target}|${name}]]` - } - return `[[${name}]]` - } -} - -//these are insane -// https://en.wikipedia.org/wiki/Template:Tl -const links = [ - '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' //https://en.wikipedia.org/wiki/Template:URL -] - -//keyValues -links.forEach(k => { - templates[k] = tmpl => { - let order = ['first', 'second'] - let obj = parse(tmpl, order) - return obj.second || obj.first - } -}) -//aliases -templates.m = templates.mention -templates['m-self'] = templates.mention -templates.l = templates.link -templates.ll = templates.link -templates['l-self'] = templates.link -module.exports = templates diff --git a/src/template/templates/wikipedia/page.js b/src/template/templates/wikipedia/page.js deleted file mode 100644 index a26c311a..00000000 --- a/src/template/templates/wikipedia/page.js +++ /dev/null @@ -1,209 +0,0 @@ -const parse = require('../../_parsers/parse') -const Image = require('../../../image/Image') - -const 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', -} - -const parsers = { - // https://en.wikipedia.org/wiki/Template:About - about: (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - return '' - }, - - // https://en.wikipedia.org/wiki/Template:Main - main: (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - return '' - }, - - // https://en.wikipedia.org/wiki/Template:Main_list - 'main list': (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - return '' - }, - - // https://en.wikipedia.org/wiki/Template:See - see: (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - return '' - }, - - // https://en.wikipedia.org/wiki/Template:For - for: (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - return '' - }, - - // https://en.wikipedia.org/wiki/Template:Further - further: (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - return '' - }, - - // same as "further" (but this name is still in use) - 'further information': (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - return '' - }, - - // https://en.wikipedia.org/wiki/Template:Listen - listen: (tmpl, list) => { - let obj = parse(tmpl) - list.push(obj) - return '' - }, - - 'wide image': ['file', 'width', 'caption'], - - //https://en.wikipedia.org/wiki/Template:Redirect - redirect: (tmpl, list) => { - let data = parse(tmpl, ['redirect']) - let lines = data.list || [] - let links = [] - for (let i = 0; i < lines.length; i += 2) { - links.push({ - page: lines[i + 1], - desc: lines[i], - }) - } - let obj = { - template: 'redirect', - redirect: data.redirect, - links: links, - } - list.push(obj) - return '' - }, - - //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS - 'cite gnis': (tmpl, list) => { - let order = ['id', 'name', 'type'] - let obj = parse(tmpl, order) - obj.type = 'gnis' - obj.template = 'citation' - list.push(obj) - return '' - }, - - //https://en.wikipedia.org/wiki/Template:Sfn - sfn: (tmpl, list, alias) => { - let order = ['author', 'year', 'location'] - let obj = parse(tmpl, order) - if (alias) { - obj.name = obj.template - obj.teplate = alias - } - list.push(obj) - return '' - }, - - audio: ['file', 'text', 'type'], - rp: ['page'], - - 'spoken wikipedia': (tmpl, list) => { - let order = ['file', 'date'] - let obj = parse(tmpl, order) - obj.template = 'audio' - list.push(obj) - return '' - }, - - //https://en.wikipedia.org/wiki/Template:Sister_project_links - 'sister project links': (tmpl, list) => { - let data = parse(tmpl) - //rename 'wd' to 'wikidata' - let links = {} - Object.keys(sisterProjects).forEach((k) => { - if (data.hasOwnProperty(k) === true) { - links[sisterProjects[k]] = data[k] //.text(); - } - }) - let obj = { - template: 'sister project links', - links: links, - } - list.push(obj) - return '' - }, - - //https://en.wikipedia.org/wiki/Template:Subject_bar - 'subject bar': (tmpl, list) => { - let data = parse(tmpl) - Object.keys(data).forEach((k) => { - //rename 'voy' to 'wikivoyage' - if (sisterProjects.hasOwnProperty(k)) { - data[sisterProjects[k]] = data[k] - delete data[k] - } - }) - let obj = { - template: 'subject bar', - links: data, - } - list.push(obj) - return '' - }, - - 'short description': ['description'], - 'coord missing': ['region'], - //amazingly, this one does not obey any known patterns - //https://en.wikipedia.org/wiki/Template:Gallery - gallery: (tmpl, list) => { - let obj = parse(tmpl) - let images = (obj.list || []).filter((line) => /^ *File ?:/.test(line)) - images = images.map((file) => { - let img = { - file: file, - } - // TODO: add lang and domain information - return new Image(img).json() - }) - obj = { - template: 'gallery', - images: images, - } - list.push(obj) - return '' - }, - //https://en.wikipedia.org/wiki/Template:See_also - 'see also': (tmpl, list) => { - let data = parse(tmpl) - list.push(data) - return '' - }, - unreferenced: ['date'], -} -//aliases -parsers['cite'] = parsers.citation -parsers['sfnref'] = parsers.sfn -parsers['harvid'] = parsers.sfn -parsers['harvnb'] = parsers.sfn -parsers['unreferenced section'] = parsers.unreferenced -parsers['redir'] = parsers.redirect -parsers['sisterlinks'] = parsers['sister project links'] -parsers['main article'] = parsers['main'] - -module.exports = parsers diff --git a/src/template/templates/wikivoyage.js b/src/template/templates/wikivoyage.js deleted file mode 100644 index e8601c6b..00000000 --- a/src/template/templates/wikivoyage.js +++ /dev/null @@ -1,36 +0,0 @@ -const parse = require('../_parsers/parse') - -const templates = { - // https://en.wikivoyage.org/wiki/Template:Do - listing: (tmpl, list) => { - let obj = parse(tmpl, []) - list.push(obj) - // flatten it all into one line of text - let name = obj.name - if (obj.url) { - name = `[${obj.url} ${obj.name}]` - } - let phone = '' - if (obj.phone) { - phone = `[tel:${obj.phone}]` - } - let updated = '' - if (obj.lastedit) { - updated = `(updated ${obj.lastedit})` - } - let out = `${name} ${obj.address || ''} ${obj.directions || ''} ${phone} ${obj.hours || ''} ${obj.content} ${ - obj.price - } ${updated}` - return out - }, -} -// are these sorta the same? -templates.see = templates.listing -templates.do = templates.listing -templates.buy = templates.listing -templates.eat = templates.listing -templates.drink = templates.listing -templates.sleep = templates.listing -templates.go = templates.listing - -module.exports = templates diff --git a/tests/Document.test.js b/tests/Document.test.js deleted file mode 100644 index 6a889691..00000000 --- a/tests/Document.test.js +++ /dev/null @@ -1,1596 +0,0 @@ -const test = require('tape') -const wtf = require('./lib') -const fs = require('fs') -const path = require('path') - -//title -test('Tile - get - first sentence', (t) => { - let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') - let doc = wtf(str) - t.equal(doc.title(), 'Charles Frank Milstead', 'the title equals the fist bolded text') - t.end() -}) - -test('Tile - get - no bold in sentence ', (t) => { - let str = 'no bold in first sentence' - let doc = wtf(str) - t.equal(doc.title(), undefined, 'the title equals undefined') - t.end() -}) - -test('Tile - get - return null if there are no sentences', (t) => { - let str = '' - let doc = wtf(str) - t.equal(doc.title(), null, 'the title equals null') - t.end() -}) - -test('Tile - get / set - if the title is already set than get it from internal object', (t) => { - let str = 'no bold in first sentence' - let doc = wtf(str) - doc.title('some title') - t.equal(doc.title(), 'some title', 'the title equals the set title') - t.end() -}) - -//pageID -test('pageID - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.pageID(), null, 'the pageID equals null') - t.end() -}) - -test('pageID - get - if the pageID is already set than get it from internal object', (t) => { - let doc = wtf('', {pageID: 1}) - t.equal(doc.pageID(), 1, 'the pageID equals 1') - t.end() -}) - -test('pageID - get / set - if the pageID is set then it should return the same ', (t) => { - let doc = wtf('') - doc.pageID(1) - t.equal(doc.pageID(), 1, 'the pageID equals 1') - t.end() -}) - -//wikidata -test('wikidata - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.wikidata(), null, 'the wikidata equals null') - t.end() -}) - -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\'') - 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.end() -}) - -//domain -test('domain - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.domain(), null, 'the null equals undefined') - t.end() -}) - -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\'') - 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.end() -}) - -//language - Same test as lang -test('language - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.language(), null, 'the language equals null') - t.end() -}) - -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\'') - 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.end() -}) - -//lang - Same test as language -test('lang - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.lang(), null, 'the lang equals null') - t.end() -}) - -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\'') - 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.end() -}) - -//url -test('url - get - if there is no title return null', (t) => { - let doc = wtf('') - t.equal(doc.url(), null, 'the url equals null') - t.end() -}) - -test('url - get - if lang and domain are undefined then default to en.wikipedia.org', (t) => { - 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'}) - t.equal(doc.url(), 'https://military.wikia.org/wiki/Barack_Obama', 'the url equals the right page') - t.end() -}) - -//namespace - same test as ns -test('namespace - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.namespace(), null, 'the namespace equals null') - t.end() -}) - -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\'') - 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\'') - 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.end() -}) - -//ns - same test as namespace -test('ns - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.ns(), null, 'the ns equals null') - t.end() -}) - -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\'') - 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\'') - 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.end() -}) - -//isRedirect -test('isRedirect - get - should initially be false', (t) => { - let doc = wtf('') - t.equal(doc.isRedirect(), false, 'the isRedirect equals false') - t.end() -}) - -test('isRedirect - get - if the type of page is should default to page and return false', (t) => { - let doc = wtf('', {type: 'redirect'}) - t.equal(doc.isRedirect(), false, 'the isRedirect equals false') - t.end() -}) - -test('isRedirect - get - if the page is a redirect than return true', (t) => { - let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - t.equal(doc.isRedirect(), true, 'the isRedirect equals true') - t.end() -}) - -test('isRedirect - get - if the page is too long to be a redirect page than return false', (t) => { - let doc = wtf('#DOORVERWIJZING [[Doelpagina]]' + 'l'.repeat(505)) - t.equal(doc.isRedirect(), false, 'the isRedirect equals false') - t.end() -}) - - -//redirectTo -- same as redirectsTo & redirect & redirects -test('redirectTo - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.redirectTo(), null, 'the redirectTo equals null') - t.end() -}) - -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.end() -}) - -//redirectsTo -- same as redirectTo -test('redirectsTo - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.redirectsTo(), null, 'the redirectsTo equals null') - t.end() -}) - -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.end() -}) - -//redirect -- same as redirectTo -test('redirect - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.redirect(), null, 'the redirect equals null') - t.end() -}) - -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.end() -}) - -//redirects -- same as redirectTo -test('redirects - get - should initially be null', (t) => { - let doc = wtf('') - t.equal(doc.redirects(), null, 'the redirects equals null') - t.end() -}) - -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.end() -}) - -//isDisambiguation -- same as isDisambig -test('isDisambiguation - get - if the page is not a Disambiguation page than return false', (t) => { - let doc = wtf('not disambiguation') - t.equal(doc.isDisambiguation(), false, 'the isDisambiguation equals false') - t.end() -}) - -test('isDisambiguation - get - if the page is a Disambiguation page than return true', (t) => { - let doc = wtf('{{dp}}') - t.equal(doc.isDisambiguation(), true, 'the isDisambiguation equals true') - t.end() -}) - -//isDisambig -- same as isDisambiguation -test('isDisambig - get - if the page is not a Disambiguation page than return false', (t) => { - let doc = wtf('not disambiguation') - t.equal(doc.isDisambig(), false, 'the isDisambig equals false') - t.end() -}) - -test('isDisambig - get - if the page is a Disambiguation page than return true', (t) => { - let doc = wtf('{{dp}}') - t.equal(doc.isDisambig(), true, 'the isDisambig equals true') - t.end() -}) - -//categories -test('categories - get - should initially be []', (t) => { - let doc = wtf('') - t.deepEqual(doc.categories(), [], 'the categories equals []') - t.end() -}) - -test('categories - get - if the categories is in the option. ignore it', (t) => { - let doc = wtf('', {categories: ['Q42']}) - t.deepEqual(doc.categories(), [], 'the categories equals []') - t.end() -}) - -test('categories - get - if the clue is a undefined / unset return the list of categories', (t) => { - let doc = wtf(` - [[Category:WWE Hall of Fame inductees]] - [[Category:Writers from New York City]] - [[Category:American people of German descent]] - [[Category:American people of Scottish descent]] - `) - const expected = [ - 'WWE Hall of Fame inductees', - 'Writers from New York City', - 'American people of German descent', - 'American people of Scottish descent', - ] - t.deepEqual(doc.categories(), expected, 'the categories in the wiki text') - t.end() -}) - -test('categories - get - if the clue is a number return the category in that index', (t) => { - let doc = wtf(` - [[Category:WWE Hall of Fame inductees]] - [[Category:Writers from New York City]] - [[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.end() -}) - -test('categories - get - if the clue is not a number return the list of categories', (t) => { - let doc = wtf(` - [[Category:WWE Hall of Fame inductees]] - [[Category:Writers from New York City]] - [[Category:American people of German descent]] - [[Category:American people of Scottish descent]] - `) - const expected = [ - 'WWE Hall of Fame inductees', - 'Writers from New York City', - 'American people of German descent', - 'American people of Scottish descent', - ] - t.deepEqual(doc.categories('string'), expected, 'the categories in the wiki text') - t.end() -}) - -//sections -test('sections - get - should initially be []', (t) => { - let doc = wtf('') - t.deepEqual(doc.sections(), [], 'the sections equals []') - t.end() -}) - -test('sections - get - if the sections is in the option. ignore it', (t) => { - let doc = wtf('', {sections: ['Q42']}) - t.deepEqual(doc.sections(), [], 'the sections equals []') - t.end() -}) - -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 = [ - {depth: 0, _title: ''}, - {depth: 0, _title: 'Career'}, - {depth: 0, _title: 'References'}, - ] - - t.deepEqual(JSON.stringify(doc.sections()), JSON.stringify(expected), 'the sections in the wiki text') - t.end() -}) - -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(JSON.stringify(doc.sections(1)), JSON.stringify({depth: 0, _title: 'Career'}), 'the section at index 1') - t.end() -}) - -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(JSON.stringify(doc.sections('Career')), JSON.stringify({ - depth: 0, - _title: 'Career', - }), 'the section at index 1') - t.end() -}) - -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(JSON.stringify(doc.sections('CAREER')), JSON.stringify({ - depth: 0, - _title: 'Career', - }), 'the section at index 1') - t.end() -}) - -//paragraphs -test('paragraphs - get - should initially be []', (t) => { - let doc = wtf('') - t.deepEqual(doc.paragraphs(), [], 'the paragraphs equals []') - t.end() -}) - -test('paragraphs - get - if the paragraphs is in the option. ignore it', (t) => { - let doc = wtf('', {paragraphs: ['Q42']}) - t.deepEqual(doc.paragraphs(), [], 'the paragraphs equals []') - t.end() -}) - -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, 'the paragraphs in the wiki text') - t.end() -}) - -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.paragraphs(1).text().length), '66', 'the paragraph at index 1') - t.end() -}) - -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.paragraphs('string').map((p) => p.text().length), expected, 'the paragraphs in the wiki text') - t.end() -}) - -//paragraph -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() -}) - -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() -}) - -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() -}) - -//sentences -test('sentences - get - should initially be []', (t) => { - let doc = wtf('') - t.deepEqual(doc.sentences(), [], 'the sentences equals []') - t.end() -}) - -test('sentences - get - if the sentences is in the option. ignore it', (t) => { - let doc = wtf('', {sentences: ['Q42']}) - t.deepEqual(doc.sentences(), [], 'the sentences equals []') - t.end() -}) - -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, 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.end() -}) - -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() -}) - -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, 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.end() -}) -//sentence -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() -}) - -//images -test('images - get - should initially be []', (t) => { - let doc = wtf('') - t.deepEqual(doc.images(), [], 'the images equals []') - t.end() -}) - -test('images - get - if the images is in the option. ignore it', (t) => { - let doc = wtf('', {images: ['Q42']}) - t.deepEqual(doc.images(), [], 'the images equals []') - t.end() -}) - -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, 'the images in the wiki text') - t.end() -}) - -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() -}) - -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, 'the images in the wiki text') - t.end() -}) - -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, 'the images in the wiki text') - t.end() -}) - -//image -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() -}) - -//links -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, 'returns all links') - t.end() -}) - -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() -}) - -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, 'the link at index the content \'Jace Rocker\'') - t.end() -}) - -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, 'returns all links') - t.end() -}) - -//interwiki -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, 'returns all interwiki') - t.end() -}) - -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() -}) - -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, 'returns all interwiki') - t.end() -}) - -//lists -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, 'returns all lists') - t.end() -}) - -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() -}) - -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, 'returns all lists') - t.end() -}) -//tables -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, 'returns all tables') - t.end() -}) - -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() -}) - -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, 'returns all tables') - t.end() -}) - -//templates -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, 'returns all templates') - t.end() -}) - -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() -}) - -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, 'returns all templates') - t.end() -}) - -//references -- same as citations -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] - - //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.end() -}) - -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() -}) - -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] - - //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.end() -}) - -//citations -- same as references -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] - - //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.end() -}) - -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() -}) - -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] - - //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.end() -}) - -//coordinates -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', - template: 'coord', - props: {region: 'US_type:city'}, - lat: 39.18861, - lon: -120.10889, - }, - { - template: 'coord', - props: {type: 'city'}, - lat: 39.18861, - lon: -120.10889, - }, - ] - - t.deepEqual(doc.coordinates(), expected, 'returns all coordinates') - t.end() -}) - -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() -}) - -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', - template: 'coord', - props: {region: 'US_type:city'}, - lat: 39.18861, - lon: -120.10889, - }, - { - template: 'coord', - props: {type: 'city'}, - lat: 39.18861, - lon: -120.10889, - }, - ] - - t.deepEqual(doc.coordinates('string'), expected, 'returns all coordinates') - t.end() -}) - -//infoboxes -const infoboxPage = ` -{{Infobox venue -| name = Royal Cinema -| nickname = -| former names = The Pylon, The Golden Princess -| logo_image = -| logo_caption = -}} -{{Infobox venue -| name = Royal Cinema -| nickname = -| former names = The Pylon, The Golden Princess -| logo_image = -| logo_caption = -| image = Royal_Cinema.JPG -| image_size = 250px -| caption = The Royal Cinema in 2009 -}} -{{Infobox venue -| name = Royal Cinema -| nickname = -| former names = The Pylon, The Golden Princess -| logo_image = -| logo_caption = -| image = Royal_Cinema.JPG -| image_size = 250px -| caption = The Royal Cinema in 2009 -}} -` - -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, 'returns all references') - t.end() -}) - -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, 'returns all references') - t.end() -}) - -//text -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') - t.end() -}) - -test('text - get - enpty string for redirects', (t) => { - let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - - const expected = '' - - t.deepEqual(doc.text(), expected, 'empty string') - t.end() -}) - -//plaintext -- same as text -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') - t.end() -}) - -test('plaintext - get - enpty string for redirects', (t) => { - let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - - const expected = '' - - t.deepEqual(doc.plaintext(), expected, 'empty string') - t.end() -}) - -//json -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, 'version of the document') - t.end() -}) -//debug -//we need something like sinon for mocking the console.log - -//singular-methods -test('plurals / singular - all should exist', (t) => { - let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - - - let singels = [ - 'section', - 'infobox', - 'sentence', - 'citation', - 'reference', - 'coordinate', - 'table', - 'list', - 'link', - 'image', - '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) - //console.log(JSON.stringify(result)) - t.deepEqual(JSON.stringify(result), JSON.stringify(testCase.expected), 'expect doc.' + fn + '(' + testCase.clue + ') to equal ' + testCase.expected) - }) - - }) - t.end() -}) diff --git a/tests/api.test.js b/tests/api.test.js deleted file mode 100644 index 29c061ae..00000000 --- a/tests/api.test.js +++ /dev/null @@ -1,138 +0,0 @@ -var test = require('tape') -var fs = require('fs') -var path = require('path') -var wtf = require('./lib') -var docs = require('./lib/api.json') - -//read cached file -var readFile = function(file) { - return fs.readFileSync(path.join(__dirname, 'cache', file + '.txt'), 'utf-8') -} - -var pages = [ - 'al_Haytham', - 'Mozilla-Firefox', - 'anarchism', - 'toronto', - 'toronto_star', - 'royal_cinema', - 'jodie_emery', - 'Allen-R.-Morris', - 'United-Kingdom', - '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 - doc[obj.name]() - t.ok(true, desc) - }) - }) - 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 - sec[obj.name]() - t.ok(true, desc) - }) - }) - 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 - sen[obj.name]() - t.ok(true, desc) - }) - }) - 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 - sen[obj.name]() - t.ok(true, desc) - }) - }) - 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 - sen[obj.name]() - t.ok(true, desc) - }) - }) - t.end() -}) - -test('Infobox-methods-do-not-throw', t => { - var mypages = [ - 'al_Haytham', - 'Mozilla-Firefox', - 'toronto', - 'toronto_star', - 'royal_cinema', - 'jodie_emery', - 'Allen-R.-Morris', - 'Irina-Saratovtseva' - ] - mypages.forEach(page => { - var doc = wtf(readFile(page)) - var sen = doc.infoboxes(0) - docs.Infobox.forEach(obj => { - var desc = obj.name + ' - ' + page - sen[obj.name]() - t.ok(true, desc) - }) - }) - 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 - sen[obj.name]() - t.ok(true, desc) - }) - }) - 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 - sen[obj.name]() - t.ok(true, desc) - }) - }) - t.end() -}) diff --git a/tests/disambig.test.js b/tests/disambig.test.js new file mode 100644 index 00000000..fc933113 --- /dev/null +++ b/tests/disambig.test.js @@ -0,0 +1,82 @@ +const test = require('tape') +const wtf = require('./lib') + +test('disambig template', function (t) { + const str = ` +'''Park Place''' is cool: +* [[Park Place (Ontario)]], a park in the city of Barrie +* [[Park Place (Vancouver)]], a skyscraper +* [[Park Place Mall]], Lethbridge, Alberta +{{disambiguation}} + ` + const doc = wtf(str) + t.equal(doc.isDisambiguation(), true, 'is-disambiguation') + t.end() +}) + +test('alt template', function (t) { + const str = ` +* [[Park Place (Ontario)]], a park in the city of Barrie +* [[Park Place (Vancouver)]], a skyscraper +{{geodis}} + ` + const doc = wtf(str) + t.equal(doc.isDisambiguation(), true, 'is-disambiguation') + t.end() +}) + +test('i18n template', function (t) { + const str = ` +'''Park Place''' is cool: +* [[Park Place (Ontario)]], a park in the city of Barrie +* [[Park Place (Vancouver)]], a skyscraper +{{bisongidila}} + ` + const doc = wtf(str) + t.equal(doc.isDisambiguation(), true, 'is-disambiguation') + t.end() +}) + +test('may refer to', function (t) { + const str = ` +'''Park Place''' may refer to: +{{TOC right}} + +== Media == +* [[Park Place (TV series)|Park Place]], a 1981 CBS sitcom + +== Places == +* [[Park Place (Ontario)]], a park in the city of Barrie +* [[Park Place (Vancouver)]], a skyscraper +* [[Park Place Mall]], Lethbridge, Alberta + ` + const doc = wtf(str) + t.equal(doc.isDisambiguation(), true, 'is-disambiguation') + t.equal(doc.links().length, 4, 'links') + t.equal(doc.link().page(), 'Park Place (TV series)', 'first-link') + t.end() +}) + +test('by title', function (t) { + const str = ` +'''Park Place''' is cool: +* [[Park Place (Ontario)]], a park in the city of Barrie +* [[Park Place (Vancouver)]], a skyscraper + ` + const doc = wtf(str) + doc.title('Park Place (disambiguation)') + t.equal(doc.isDisambiguation(), true, 'is-disambiguation') + t.end() +}) + +test('by i18n title', function (t) { + const str = ` +'''Park Place''' is cool: +* [[Park Place (Ontario)]], a park in the city of Barrie +* [[Park Place (Vancouver)]], a skyscraper + ` + const doc = wtf(str) + doc.title('Park Place (توضيح)') + t.equal(doc.isDisambiguation(), true, 'is-disambiguation') + t.end() +}) diff --git a/tests/fetch/category.test.js b/tests/fetch/category.test.js deleted file mode 100644 index 85b92f22..00000000 --- a/tests/fetch/category.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const test = require('tape') -const wtf = require('../lib') - -test('category', t => { - t.plan(2) - var p = wtf.category('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.catch(function(e) { - t.throw(e) - }) -}) diff --git a/tests/fetch/fetch.test.js b/tests/fetch/fetch.test.js index cef1383b..71f128ae 100644 --- a/tests/fetch/fetch.test.js +++ b/tests/fetch/fetch.test.js @@ -1,9 +1,10 @@ -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', { + lang: 'en', 'Api-User-Agent': 'wtf_wikipedia test script - ', }) p.then(function (doc) { @@ -26,7 +27,8 @@ 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', { + lang: 'en', 'Api-User-Agent': 'wtf_wikipedia test script - ', }) p.then(function (doc) { @@ -39,7 +41,8 @@ test('fetch-invalid', (t) => { test('fetch-missing', (t) => { t.plan(1) - var p = wtf.fetch('NonExistentPage', 'en', { + const p = wtf.fetch('NonExistentPage', { + lang: 'en', 'Api-User-Agent': 'wtf_wikipedia test script - ', }) p.then(function (doc) { @@ -52,7 +55,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 +70,8 @@ test('fetch-redirect', (t) => { test('fetch-alternate-wiki', (t) => { t.plan(1) - var p = wtf.fetch(336711, 'en', { + const p = wtf.fetch(336711, { + lang: 'en', 'Api-User-Agent': 'wtf_wikipedia test script - ', domain: 'www.mixesdb.com', path: 'db/api.php', @@ -82,7 +86,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 +101,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') + let 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') + let 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,10 +121,22 @@ 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) => - wtf.fetch(page, 'en', { + const promises = pages.map((page) => + wtf.fetch(page, { + lang: 'en', 'Api-User-Agent': 'wtf_wikipedia test script - ', }) ) 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..5c39baf6 100644 --- a/tests/fetch/metadata.test.js +++ b/tests/fetch/metadata.test.js @@ -1,9 +1,10 @@ -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', { + lang: 'en', 'Api-User-Agent': 'wtf_wikipedia test script - ', }) p.then(function (doc) { diff --git a/tests/fetch/random.test.js b/tests/fetch/random.test.js deleted file mode 100644 index 0d20a2e2..00000000 --- a/tests/fetch/random.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const test = require('tape') -const wtf = require('../lib') - -test('random', t => { - t.plan(1) - var p = wtf.random('simple', 'simple', { - follow_redirects: false, - 'Api-User-Agent': 'wtf_wikipedia test script - ' - }) - p.then(function(doc) { - t.ok(doc.title(), 'got redirect') - }) - p.catch(function(e) { - t.throw(e) - }) -}) diff --git a/tests/fmt.test.js b/tests/fmt.test.js deleted file mode 100644 index 7d7dc1db..00000000 --- a/tests/fmt.test.js +++ /dev/null @@ -1,48 +0,0 @@ -var test = require('tape') -var wtf = require('./lib') - -test('bold/italics', t => { - var str = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]]. - - She is '''''very''''' good` - var 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') - - sentence = wtf(str).sentences(1) - t.deepEqual(sentence.bold(), ['very'], 'two bold') - t.deepEqual(sentence.italic(), ['very'], 'two italic') - t.end() -}) - -test('inline mixquotes test', t => { - var str = `this is ''''four'''' and this is '''''five'''''` - var 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 = [ - [`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`] - ] - 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`) - 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.end() -}) diff --git a/tests/integration/api.test.js b/tests/integration/api.test.js new file mode 100644 index 00000000..335b7533 --- /dev/null +++ b/tests/integration/api.test.js @@ -0,0 +1,138 @@ +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 +const readFile = function (file) { + return fs.readFileSync(path.join(__dirname, '../', 'cache', file + '.txt'), 'utf-8') +} + +const pages = [ + 'al_Haytham', + 'Mozilla-Firefox', + 'anarchism', + 'toronto', + 'toronto_star', + 'royal_cinema', + 'jodie_emery', + 'Allen-R.-Morris', + 'United-Kingdom', + 'Irina-Saratovtseva', +] + +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) + }) + }) + t.end() +}) + +test('Section-methods-do-not-throw', (t) => { + pages.forEach((page) => { + const doc = wtf(readFile(page)) + const sec = doc.section() + docs.Section.forEach((obj) => { + const desc = obj.name + ' - ' + page + sec[obj.name]() + t.ok(true, desc) + }) + }) + t.end() +}) + +test('Sentence-methods-do-not-throw', (t) => { + pages.forEach((page) => { + const doc = wtf(readFile(page)) + const sen = doc.sentence() + docs.Sentence.forEach((obj) => { + const desc = obj.name + ' - ' + page + sen[obj.name]() + t.ok(true, desc) + }) + }) + t.end() +}) + +test('Reference-methods-do-not-throw', (t) => { + pages.forEach((page) => { + const doc = wtf(readFile(page)) + const ref = doc.reference() + docs.Reference.forEach((obj) => { + const desc = obj.name + ' - ' + page + ref[obj.name]() + t.ok(true, desc) + }) + }) + t.end() +}) + +test('Image-methods-do-not-throw', (t) => { + pages.forEach((page) => { + const doc = wtf(readFile(page)) + const img = doc.image() + docs.Image.forEach((obj) => { + const desc = obj.name + ' - ' + page + img[obj.name]() + t.ok(true, desc) + }) + }) + t.end() +}) + +test('Infobox-methods-do-not-throw', (t) => { + const mypages = [ + 'al_Haytham', + 'Mozilla-Firefox', + 'toronto', + 'toronto_star', + 'royal_cinema', + 'jodie_emery', + 'Allen-R.-Morris', + 'Irina-Saratovtseva', + ] + mypages.forEach((page) => { + const doc = wtf(readFile(page)) + const inf = doc.infobox() + docs.Infobox.forEach((obj) => { + const desc = obj.name + ' - ' + page + inf[obj.name]() + t.ok(true, desc) + }) + }) + t.end() +}) + +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 list = doc.list() + docs.List.forEach((obj) => { + const desc = obj.name + ' - ' + page + list[obj.name]() + t.ok(true, desc) + }) + }) + t.end() +}) + +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 table = doc.table() + docs.Table.forEach((obj) => { + const desc = obj.name + ' - ' + page + table[obj.name]() + t.ok(true, desc) + }) + }) + t.end() +}) diff --git a/tests/comments.test.js b/tests/integration/comments.test.js similarity index 76% rename from tests/comments.test.js rename to tests/integration/comments.test.js index 9ef46d30..466de8a0 100644 --- a/tests/comments.test.js +++ b/tests/integration/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/integration/coord.test.js similarity index 73% rename from tests/coord.test.js rename to tests/integration/coord.test.js index e39c6571..38482e73 100644 --- a/tests/coord.test.js +++ b/tests/integration/coord.test.js @@ -1,60 +1,60 @@ -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') 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') @@ -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).coordinate() + 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).coordinate() + 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/integration/currencies.test.js similarity index 92% rename from tests/currencies.test.js rename to tests/integration/currencies.test.js index 0dde47ea..61e2f2ce 100644 --- a/tests/currencies.test.js +++ b/tests/integration/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') @@ -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().json().amount, '1,000', 'got template amount') doc = wtf('{{Currency|1000|USD}}') t.equal(doc.text(), 'US$1000', 'currency named parameters') @@ -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/integration/date.test.js similarity index 91% rename from tests/date.test.js rename to tests/integration/date.test.js index 592f38fd..ead16f68 100644 --- a/tests/date.test.js +++ b/tests/integration/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').sentence(); +// 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/integration/domain.test.js similarity index 88% rename from tests/domain.test.js rename to tests/integration/domain.test.js index ee37d3c1..c917e75b 100644 --- a/tests/domain.test.js +++ b/tests/integration/domain.test.js @@ -1,10 +1,10 @@ -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` 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/encoding.test.js b/tests/integration/encoding.test.js similarity index 75% rename from tests/encoding.test.js rename to tests/integration/encoding.test.js index 30b479bb..85eaa09e 100644 --- a/tests/encoding.test.js +++ b/tests/integration/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/integration/extend.test.js similarity index 52% rename from tests/extend.test.js rename to tests/integration/extend.test.js index 0955e874..18bab83a 100644 --- a/tests/extend.test.js +++ b/tests/integration/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) => { @@ -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') @@ -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 = '' @@ -42,3 +42,16 @@ test('string template syntax', t => { t.equal(doc.text(), 'before inside after', 'template as string') t.end() }) + +test('extend infoboxes', (t) => { + let str = `{{ValueDescription + |key=aerialway + |value=cable_car}} cool` + t.equal(wtf(str).infoboxes().length, 0, 'found no infobox') + //add it + wtf.extend((models, templates, infoboxes) => { + Object.assign(infoboxes, { place: true, keydescription: true, valuedescription: true }) + }) + t.equal(wtf(str).infoboxes().length, 1, 'found infobox') + t.end() +}) diff --git a/tests/integration/fmt.test.js b/tests/integration/fmt.test.js new file mode 100644 index 00000000..5fab1635 --- /dev/null +++ b/tests/integration/fmt.test.js @@ -0,0 +1,48 @@ +const test = require('tape') +const wtf = require('../lib') + +test('bold/italics', (t) => { + const str = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]]. + + She is '''''very''''' good` + let sentence = wtf(str).sentence(0) + t.deepEqual(sentence.bolds(), ['K. Nicole Mitchell'], 'one bold') + t.deepEqual(sentence.italics(), ['currently'], 'one italic') + t.equal(sentence.links().length, 1, 'one link') + + sentence = wtf(str).sentence(1) + t.deepEqual(sentence.bolds(), ['very'], 'two bold') + t.deepEqual(sentence.italics(), ['very'], 'two italic') + t.end() +}) + +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.italics(), ['five'], 'five is italic') + t.end() +}) + +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`], + ] + arr.forEach((a) => { + t.equal(wtf(a[0]).text(), a[1], a[1]) + }) + t.end() +}) + +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.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/html.test.js b/tests/integration/html.test.js similarity index 87% rename from tests/html.test.js rename to tests/integration/html.test.js index 9ad5bec4..ab2a2cd0 100644 --- a/tests/html.test.js +++ b/tests/integration/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`) @@ -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().json() || {} 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().json() || {} t.equal(tmpl.text, 'world', 'got sup template') t.end() }) diff --git a/tests/i18n.test.js b/tests/integration/i18n.test.js similarity index 59% rename from tests/i18n.test.js rename to tests/integration/i18n.test.js index 96fe97b8..9e52f584 100644 --- a/tests/i18n.test.js +++ b/tests/integration/i18n.test.js @@ -1,12 +1,12 @@ -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') + t.equal(doc.template(0).json().romaji, 'Tōkyō tawā', 'have translation') str = `In Japanese, {{Nihongo2|虚無僧}} reads ''komusō''.` doc = wtf(str) @@ -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).image(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/integration/images.test.js similarity index 87% rename from tests/images.test.js rename to tests/integration/images.test.js index fc858e2e..001d4760 100644 --- a/tests/images.test.js +++ b/tests/integration/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,18 +18,18 @@ 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) - t.deepEqual(doc.sections('paintings').templates('gallery').length, 1, 'section-has-gallery') - var templ = doc.templates(0) + const doc = wtf(str) + t.deepEqual(doc.section('paintings').templates('gallery').length, 1, 'section-has-gallery') + 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.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() }) 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.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') @@ -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).template().json() 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() }) diff --git a/tests/infobox.test.js b/tests/integration/infobox.test.js similarity index 87% rename from tests/infobox.test.js rename to tests/integration/infobox.test.js index 796c4fa0..ea72c13c 100644 --- a/tests/infobox.test.js +++ b/tests/integration/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('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/interwiki.test.js b/tests/integration/interwiki.test.js similarity index 82% rename from tests/interwiki.test.js rename to tests/integration/interwiki.test.js index d99483f1..c272ea24 100644 --- a/tests/interwiki.test.js +++ b/tests/integration/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/integration/json-full.test.js b/tests/integration/json-full.test.js new file mode 100644 index 00000000..86e12ede --- /dev/null +++ b/tests/integration/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: null, + }, + ], + 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, 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' }, + { 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/integration/json.test.js similarity index 68% rename from tests/json.test.js rename to tests/integration/json.test.js index c93f77a2..ab53e848 100644 --- a/tests/json.test.js +++ b/tests/integration/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.sentence() + 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/integration/links.test.js b/tests/integration/links.test.js new file mode 100644 index 00000000..78db1f8c --- /dev/null +++ b/tests/integration/links.test.js @@ -0,0 +1,103 @@ +const test = require('tape') +const wtf = require('../lib') + +test('document-links', (t) => { + const str = `before [[the shining|movie]] +{| +! h1 !! h2 || h3 +|- +| one +| two +| three +|- +| [[Minnesota Twins|Twins]] +| five +| six +|} + +after now +* one +* two +* [[three]] +* four +` + const links = wtf(str).links() + t.equal(links.length, 3, 'found-all-links') + t.ok( + links.find((l) => l.text()), + 'movie', + 'link-text' + ) + t.ok( + links.find((l) => l.page()), + 'Minnesota Twins', + 'link-table' + ) + t.ok( + links.find((l) => l.page()), + 'three', + 'link-list' + ) + t.end() +}) + +test('anchor-links', (t) => { + let str = `[[Doug Ford#Personal Life]]` + let link = wtf(str).link(0) + t.equal(link.page(), 'Doug Ford', 'page1') + t.equal(link.text(), 'Doug Ford', 'text1') + t.equal(link.anchor(), 'Personal Life', 'anchor1') + + str = `[[Toronto_Blue_Jays#Problems|Tranno J birds]]` + const doc = wtf(str) + 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.sentence().html(), + // 'Tranno J birds', + // 'html-anchor' + // ) + // t.equal( + // doc.sentence().markdown(), + // '[Tranno J birds](./Toronto_Blue_Jays#Problems)', + // 'markdown-anchor' + // ) + + t.end() +}) + +test('title-case-links', (t) => { + t.equal(wtf('[[john]]').link(0).page(), 'john', 'page') + t.equal(wtf('[[john]]').link(0).text(), 'john', 'lowercase text') + + 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]]').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() +}) + +test('remove styling in link text', (t) => { + let doc = wtf(`[[cool|fun ''times'']]`) + let txt = doc.link().text() + t.equal(txt, `fun times`, 'no-italics') + + doc = wtf(`[[cool stuff|fun '''times''' now]]`) + txt = doc.link().text() + t.equal(txt, `fun times now`, 'no-bold') + t.end() +}) + +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.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/integration/lists.test.js similarity index 75% rename from tests/lists.test.js rename to tests/integration/lists.test.js index 8c56eb35..bd0d1267 100644 --- a/tests/lists.test.js +++ b/tests/integration/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.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.templates(0) || {} + 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') @@ -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.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') @@ -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.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/math.test.js b/tests/integration/math.test.js similarity index 66% rename from tests/math.test.js rename to tests/integration/math.test.js index 1fd3089c..4185e9c2 100644 --- a/tests/math.test.js +++ b/tests/integration/math.test.js @@ -1,42 +1,42 @@ -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.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.templates(0) || {} + 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.templates(0) || {} + 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.templates(0) || {} + tmpl = doc.template().json() || {} t.ok(tmpl.formula.length > 10, 'tmpl formula3') t.equal(doc.text(), '', 'no text output3') 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.template().json() || {} 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/integration/misc.test.js similarity index 80% rename from tests/misc.test.js rename to tests/integration/misc.test.js index 7ebfd75f..5d84bf1e 100644 --- a/tests/misc.test.js +++ b/tests/integration/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,25 +33,25 @@ 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.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') 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'], @@ -61,7 +61,6 @@ test('misc templates', t => { [`hello {{small|2 February}}`, 'hello 2 February'], [`{{tiw|Hatnote}}`, 'Hatnote'], [`{{date|June 8 2018|mdy}}`, 'June 8 2018'], - [`{{l|cs|háček}}`, 'háček'], [`{{IPA|/ˈkærəktɚz/}}`, ''], [`{{IPAc-ar|2|a|l|l|u|gh|a|t_|a|l|3|a|r|a|b|i|y|y|a}}`, ''], [`{{dts|July 1, 1867}}`, 'July 1, 1867'], @@ -80,16 +79,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/integration/more-templates.test.js b/tests/integration/more-templates.test.js new file mode 100644 index 00000000..25f07628 --- /dev/null +++ b/tests/integration/more-templates.test.js @@ -0,0 +1,120 @@ +const test = require('tape') +const wtf = require('../lib') + +test('imdb', (t) => { + let str = `{{IMDb title | 0426883 | Alpha Dog }}` + let doc = wtf(str) + 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().json() + t.equal(obj.id, '0426883', 'id1') + t.equal(obj.title, 'Alpha Dog', 'title') + t.end() +}) + +test('taxon', (t) => { + const str = `{{Taxon info|Felis|parent}}` + const doc = wtf(str) + const obj = doc.template().json() + t.equal(obj.taxon, 'Felis', 'taxon') + t.end() +}) + +test('generic-list', (t) => { + const str = `{{Portal bar|portal 1|portal 2}}` + const doc = wtf(str) + 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') + t.equal(obj.list.length, 2, 'list-len') + t.end() +}) + +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().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') + t.equal(obj.links[0].desc, 'the municipal government', 'desc1') + t.equal(obj.links.length, 2, 'list-len') + t.end() +}) + +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).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') + 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') + t.equal(templates[0].spouse, 'Mileva Marić', 'marriage2-name') + t.equal(templates[2].template, 'sfnp', 'sfnp') + t.end() +}) + +test('support-nowrap-in-infobox', (t) => { + const str = ` +{{Infobox scientist +| name = Albert Einstein +| image = Einstein 1921 by F Schmutzer - restoration.jpg +| spouse = {{nowrap| {{marriage|[[Elsa Löwenthal]]
|1919|1936|end=died}} }} +| residence = Germany, Italy, Switzerland, Austria (present-day Czech Republic), Belgium, United States +| signature = Albert Einstein signature 1934.svg +| chiffre = {{nobr|912 millions}} +}}` + 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') + t.equal(data.chiffre.text, '912 millions', 'got infobox nobr') + t.end() +}) + +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') + t.end() +}) + +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().json().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', + 'got-plaintext' + ) + 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].json().description, + 'Constitutional monarchic union from 1867 to October 1918', + 'short-description' + ) + t.end() +}) diff --git a/tests/nesting.test.js b/tests/integration/nesting.test.js similarity index 61% rename from tests/nesting.test.js rename to tests/integration/nesting.test.js index abac3699..7ffaa523 100644 --- a/tests/nesting.test.js +++ b/tests/integration/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/integration/options.test.js similarity index 71% rename from tests/options.test.js rename to tests/integration/options.test.js index 461ec3a0..aabf3c42 100644 --- a/tests/options.test.js +++ b/tests/integration/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/integration/page.test.js b/tests/integration/page.test.js new file mode 100644 index 00000000..333e8395 --- /dev/null +++ b/tests/integration/page.test.js @@ -0,0 +1,93 @@ +const test = require('tape') +const readFile = require('../lib/_cachedPage') + +test('royal_cinema page', (t) => { + const doc = readFile('royal_cinema') + 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.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.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); + t.end() +}) + +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.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.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.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() +}) + +test('statoil', (t) => { + const doc = readFile('statoil') + t.equal(doc.isRedirect(), false, 'not-redirect') + 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.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.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.image(1).file(), "File:Stark's Park - geograph.org.uk - 204446.jpg", 'img-file') + t.equal( + doc.image(1).url(), + `https://wikipedia.org/wiki/Special:Redirect/file/Stark's_Park_-_geograph.org.uk_-_204446.jpg`, + 'image-url' + ) + t.end() +}) + +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') + let s = doc.section('publikasies') + t.equal(s.tables().length, 1, 'got table') + t.equal(doc.table().links().length, 0, 'table has no links') + t.equal(s.lists().length, 0, 'no list') + s = doc.section('toekennings') + t.equal(s.lists().length, 1, 'got list') + t.equal(s.list().lines().length, 4, 'got 4 items in list') + t.end() +}) diff --git a/tests/integration/paragraphs.test.js b/tests/integration/paragraphs.test.js new file mode 100644 index 00000000..38ebea8e --- /dev/null +++ b/tests/integration/paragraphs.test.js @@ -0,0 +1,122 @@ +const test = require('tape') +const wtf = require('../lib') + +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. + +==Section== +Here is the third paragraph. Nobody knows if this will work.[http://commonsense.com/everybody|says everybody] + +` + 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') + t.equal(doc.section().references().length, 3, 'first references') + t.end() +}) + +test('sentence/paragraphs by newlines', (t) => { + const doc = wtf(`Leading text + +Closing remark`) + t.equal(doc.paragraphs().length, 2, '2 paragraphs') + t.equal(doc.sentences().length, 2, '2 sentences') + 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 + + + +world` + const doc = wtf(str) + t.equal(doc.text(), 'hello\n\nworld', 'plaintext has one newline') + t.end() +}) + +test('newlines in templates', (t) => { + const str = `hello world{{cite web |url=http://coolc.om |title=whoa hello |last= |first= + + + +|date= |website= |publisher= |access-date= + + +|quote=}} + +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.paragraph(1).text(), 'Paragraph two!', '2nd paragraph') + t.end() +}) + +test('newlines in tables', (t) => { + const str = `hello world. Up here. +{| 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 +|} + +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.paragraph(1).text(), 'Second paragraph here.', '2nd paragraph') + t.equal(doc.tables().length, 1, 'got broken table') + t.end() +}) + +test('cyrillic symbols', (t) => { + const str = `== Заголовок == +Соединённые + +По «окончании» + +После — четырёх + +Лишённые + +Спустя + +В напряжённом` + const doc = wtf(str) + t.equal(doc.paragraphs().length, 6, 'paragraphs') + 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/redirect.test.js b/tests/integration/redirect.test.js similarity index 71% rename from tests/redirect.test.js rename to tests/integration/redirect.test.js index e4cc328a..4408817a 100644 --- a/tests/redirect.test.js +++ b/tests/integration/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.equal(doc.link().page, 'Toronto', 'redirect-place') + t.equal(doc.infobox(), null, 'has-no-infobox') 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/integration/reference.test.js similarity index 60% rename from tests/reference.test.js rename to tests/integration/reference.test.js index 64eb41c6..236ef4fe 100644 --- a/tests/reference.test.js +++ b/tests/integration/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,72 +26,72 @@ 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].link().site, 'http://www.imdb.com/name/nm3225194/', 'inline-url'); // t.equal(arr[0].text(), 'Allen Morris IMDb profile', 'inline-text'); // t.end(); // }); // // 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.equal(arr[0].link().site, 'https://books.google.com/books?id=Vfr', 'fould late link'); // t.end(); // }); diff --git a/tests/sections.test.js b/tests/integration/sections.test.js similarity index 83% rename from tests/sections.test.js rename to tests/integration/sections.test.js index 39041189..2fd8f13e 100644 --- a/tests/sections.test.js +++ b/tests/integration/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/integration/sentences.test.js similarity index 86% rename from tests/sentences.test.js rename to tests/integration/sentences.test.js index 4873aaff..690ed79d 100644 --- a/tests/sentences.test.js +++ b/tests/integration/sentences.test.js @@ -1,35 +1,35 @@ -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(), + doc.sentence().text(), 'he is credited as Mr. Lawrence and sometimes Doug Lawrence.', 'tough-sentence #' + i ) @@ -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/integration/start-end.test.js similarity index 89% rename from tests/start-end.test.js rename to tests/integration/start-end.test.js index 2658afb9..8660faa6 100644 --- a/tests/start-end.test.js +++ b/tests/integration/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) - t.equal(doc.text(), 'hello world', 'text') + const doc = wtf(str) + t.equal(doc.text(), 'hello world', 'nba-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,24 +39,24 @@ 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 + 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') @@ -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/integration/stockexchange.test.js similarity index 56% rename from tests/stockexchange.test.js rename to tests/integration/stockexchange.test.js index 2c4875ab..dfae650a 100644 --- a/tests/stockexchange.test.js +++ b/tests/integration/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/integration/stress.test.js similarity index 85% rename from tests/stress.test.js rename to tests/integration/stress.test.js index 9685e821..c0b8feef 100644 --- a/tests/stress.test.js +++ b/tests/integration/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.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 { 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/integration/table-span.test.js similarity index 92% rename from tests/table-span.test.js rename to tests/integration/table-span.test.js index 3f6fbec9..642c77b8 100644 --- a/tests/table-span.test.js +++ b/tests/integration/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 @@ -29,8 +29,8 @@ test('arenas table', t => { |- |}` let doc = wtf(str) - let rows = doc.tables(0).keyValue() - rows = rows.filter(r => r.Arena) + 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') 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%"|# @@ -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') diff --git a/tests/table.test.js b/tests/integration/table.test.js similarity index 76% rename from tests/table.test.js rename to tests/integration/table.test.js index a5e5c0de..a898485e 100644 --- a/tests/table.test.js +++ b/tests/integration/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 +test('bluejays table', (t) => { + 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') @@ -12,17 +12,17 @@ test('bluejays table', t => { t.end() }) -test('rnli stations', t => { - var doc = readFile('rnli_stations') +test('rnli stations', (t) => { + const doc = readFile('rnli_stations') t.equal(doc.categories().length, 5, 'cat-length') - var 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') - var key = doc.sections(1) - t.equal(key.depth, 0, 'key-depth') + 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') 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') - t.equal(lifeboat.templates(0).list[0], 'Royal National Lifeboat Institution lifeboats', 'lifeboat-main') - t.equal(lifeboat.lists(0).json().length, 3, 'lifeboat-list') + const lifeboat = doc.section(2) + t.equal(lifeboat._depth, 1, 'lifeboat-depth') + 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') t.deepEqual(lifeboat.tables(), [], 'lifeboat-no-tables') - var 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') - var 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') - var south = doc.sections(7) - var 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() }) -// https://en.wikipedia.org/wiki/Help:Table -test('simple table', t => { - var simple = `{| class="wikitable" +//https://en.wikipedia.org/wiki/Help:Table +test('simple table', (t) => { + 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.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') @@ -83,8 +84,8 @@ test('simple table', t => { t.end() }) -test('multiplication table', t => { - var mult = `{| class="wikitable" style="text-align: center; width: 200px; height: 200px;" +test('multiplication table', (t) => { + const mult = `{| class="wikitable" style="text-align: center; width: 200px; height: 200px;" |+ Multiplication table |- ! × @@ -107,16 +108,16 @@ 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.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') t.end() }) -test('inline-table-test', t => { - var inline = `{| class="wikitable" +test('inline-table-test', (t) => { + 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.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') @@ -136,9 +137,9 @@ 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 - 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.table(0).data t.equal(table[0]['col1'].text(), 'Col 1, row 1', '1,1') t.end() }) -test('wikisortable-tables-test', t => { +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.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') @@ -195,8 +196,8 @@ test('wikisortable-tables-test', t => { t.end() }) -test('messy-table-test', t => { - var messy = ` {| class="wikitable" +test('messy-table-test', (t) => { + 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.table(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 = ` {| +test('embedded-table', (t) => { + const str = ` {| | one | two | three @@ -233,15 +234,15 @@ 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') t.end() }) -test('embedded-table-2', t => { - var str = ` {| class="oopsie" +test('embedded-table-2', (t) => { + 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.sentence().text() t.equal('Actual first sentence is here', text, 'got proper first sentence') t.end() }) -test('sortable table', t => { - var str = `{|class="wikitable sortable" +test('sortable table', (t) => { + 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.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() }) -test('missing-row test', t => { - var str = `{|class="wikitable" +test('missing-row test', (t) => { + 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).table(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 +test('table newline removal', (t) => { + 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" +test('table rowspan', (t) => { + 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.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') @@ -350,8 +351,8 @@ test('table rowspan', t => { t.end() }) -test('table colspan', t => { - var str = `{| class="wikitable" +test('table colspan', (t) => { + 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.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') @@ -372,8 +373,8 @@ test('table colspan', t => { }) //use first row as the table header -test('first-row as header', t => { - var simple = `{| class="wikitable" +test('first-row as header', (t) => { + 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.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') @@ -398,8 +399,8 @@ test('first-row as header', t => { }) //two-row header composite -test('two-rows as header', t => { - var str = `{| class="wikitable" +test('two-rows as header', (t) => { + const str = `{| class="wikitable" |- ! A ! B @@ -414,9 +415,7 @@ test('two-rows as header', t => { |- | a || b || c || d || e |}` - var 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') @@ -425,8 +424,8 @@ test('two-rows as header', t => { }) //two-row header with spans -test('two-header-rows-with-spans', t => { - var str = `{| class="wikitable" +test('two-header-rows-with-spans', (t) => { + const str = `{| class="wikitable" |- ! A ! B @@ -440,9 +439,7 @@ test('two-header-rows-with-spans', t => { |- | a || b || c || d || e |}` - var 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') @@ -452,8 +449,8 @@ test('two-header-rows-with-spans', t => { }) //nfl football table -test('junky-table', t => { - var str = `{| class="navbox plainrowheaders wikitable" style="width:100%" +test('junky-table', (t) => { + const str = `{| class="navbox plainrowheaders wikitable" style="width:100%" ! A ! B ! C @@ -470,9 +467,7 @@ test('junky-table', t => { |[[Hard Rock Stadium]] |- |}` - var 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') @@ -481,8 +476,8 @@ test('junky-table', t => { t.end() }) -test('table double bar', t => { - var str = `{| class="wikitable" +test('table double bar', (t) => { + const str = `{| class="wikitable" |- ! h1 ! h2 @@ -498,8 +493,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.table(0).keyValue() t.equal(data[0].h1, 'a', 'h1') t.equal(data[0].h2, 'aa', 'h2') t.equal(data[0].h3, 'aaa', 'h3') @@ -513,8 +508,8 @@ test('table double bar', t => { }) //testing https://github.com/spencermountain/wtf_wikipedia/issues/332 -test('table newline', t => { - var str = `{| class="wikitable" +test('table newline', (t) => { + const str = `{| class="wikitable" |- ! h1 ! h2 @@ -529,8 +524,8 @@ test('table newline', t => { b2 | c |}` - var doc = wtf(str) - var data = doc.tables(0).keyValue() + const doc = wtf(str) + 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/integration/template.test.js similarity index 86% rename from tests/template.test.js rename to tests/integration/template.test.js index 0226cf82..20d1c8ce 100644 --- a/tests/template.test.js +++ b/tests/integration/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,22 +37,22 @@ 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).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() }) -test('hurricane infobox', function(t) { - var hurricane = ` +test('hurricane infobox', function (t) { + const hurricane = ` {{Infobox Hurricane | Name=Tropical Storm Edouard | Type=Tropical storm @@ -72,39 +70,16 @@ test('hurricane infobox', function(t) { | Areas=[[Florida]] | Hurricane season=[[2002 Atlantic hurricane season]] }}` - var 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() }) -test('parkplace disambig', function(t) { - var park_place = ` -'''Park Place''' may refer to: -{{TOC right}} - -== Media == -* [[Park Place (TV series)|Park Place]], a 1981 CBS sitcom - -== Places == - -=== Canada === -* [[Park Place (Ontario)]], a park in the city of Barrie -* [[Park Place (Vancouver)]], a skyscraper -* [[Park Place Mall]], Lethbridge, Alberta -{{disambiguation}} - ` - var 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 +91,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).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') @@ -127,7 +102,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 +131,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).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) @@ -165,8 +140,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 +176,15 @@ test('Radiohead infobox', function(t) { * [[Ed O'Brien]] * [[Philip Selway]] }} ` - var 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') 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 +195,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 +204,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 +221,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 +290,15 @@ test('microsoft currency parsing', function(t) { | website = {{URL|https://microsoft.com}} }} ` - var 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) 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 +314,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).template().json().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/integration/templates-data.test.js similarity index 90% rename from tests/templates-data.test.js rename to tests/integration/templates-data.test.js index 956594fa..fb9f04cf 100644 --- a/tests/templates-data.test.js +++ b/tests/integration/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.template().json() || {} 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}}`], @@ -112,12 +112,13 @@ test('wikipedia-templates', function (t) { | boxsize = yes }}`, ], + [`tooltip`, `{{Tooltip|G|Games played}}`], // [``, ``], ] 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.template().json() || {} t.equal(tmpl.template, a[0], a[0] + ' name') }) t.end() @@ -144,7 +145,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).template().json().byMonth['high c'] t.equal(arr.length, 12, 'got twelve months') t.equal(arr[1], 0.7, 'got february') @@ -153,14 +154,14 @@ 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().json().byMonth['high c'] t.equal(arr.length, 12, 'got twelve months concise') t.equal(arr[1], 19.9, 'got february') t.end() }) 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 +183,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.template().json() || {} 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.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') @@ -200,7 +201,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().json() || {} 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 +229,7 @@ test('covid-1', function (t) { }} ` let doc = wtf(str) - let obj = doc.templates(0) + 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]') @@ -236,7 +237,7 @@ test('covid-1', function (t) { }) test('playoff-brackets', function (t) { - var str = `{{4TeamBracket + const str = `{{4TeamBracket | RD2 = Final | seed-width = @@ -265,7 +266,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().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/templates-inline.test.js b/tests/integration/templates-inline.test.js similarity index 84% rename from tests/templates-inline.test.js rename to tests/integration/templates-inline.test.js index 8b395db9..ab323a03 100644 --- a/tests/templates-inline.test.js +++ b/tests/integration/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.}}`], @@ -51,7 +51,6 @@ test('inline-no-data', function (t) { * Example 3 }}`, ], - [`tooltip`, `{{Tooltip|G|Games played}}`], [`abbrlink`, `{{abbrlink|UK|United Kingdom}}`], [ `h`, @@ -72,8 +71,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,17 +81,17 @@ 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}}`], [`winning percentage`, `{{Winning percentage|100|50|leading_zero=y}}`], [`death date and age`, `{{death date and age |1993|2|24 |1921|4|12 |df=yes}}`], [`sentoff`, `{{sent off|cards|min1|min2}}`], - [`acronym`, `{{acronym of|graphical user interface|lang=en}}`], - [`la-verb-form`, `{{la-verb-form|amāre}}`], + // [`acronym`, `{{acronym of|graphical user interface|lang=en}}`], + // [`la-verb-form`, `{{la-verb-form|amāre}}`], + // ['inflection', `{{inflection of|avoir||3|p|pres|ind|lang=fr}}`], [`goal`, `{{goal|14||54|p|72||87}}`], - ['inflection', `{{inflection of|avoir||3|p|pres|ind|lang=fr}}`], [`isbn`, `{{ISBN|978-1-4133-0454-1}}`], [`based on`, `{{based on|"[[Super-Toys Last All Summer Long]]"|[[Brian Aldiss]]}}`], [`mpc`, `{{MPC|75482|(75482) 1999 XC173}}`], @@ -117,8 +116,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 +126,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`], @@ -150,6 +149,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]) @@ -158,23 +166,23 @@ 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') + t.equal(doc.link(1).text(), 'DEU', 'link text') + t.equal(doc.link(1).page(), 'germany', 'link page') t.equal(doc.text(), 'one 🇺🇸 USA, two 🇩🇪 DEU, three 🇨🇦 CAN.', 'made emoji flags') t.end() }) //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'); t.equal(doc.templates().length, 1, 'found one template') - t.equal(doc.templates(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/text.test.js b/tests/integration/text.test.js similarity index 66% rename from tests/text.test.js rename to tests/integration/text.test.js index 1ac85f08..52348c48 100644 --- a/tests/text.test.js +++ b/tests/integration/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/integration/tracklist.test.js similarity index 86% rename from tests/tracklist.test.js rename to tests/integration/tracklist.test.js index 8c8e7bc5..09508585 100644 --- a/tests/tracklist.test.js +++ b/tests/integration/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.template().json() 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].json() t.equal(track.total_length, '23:14', 'track-total_length') t.end() }) diff --git a/tests/traverse.test.js b/tests/integration/traverse.test.js similarity index 71% rename from tests/traverse.test.js rename to tests/integration/traverse.test.js index bcfc7eea..553e23bb 100644 --- a/tests/traverse.test.js +++ b/tests/integration/traverse.test.js @@ -1,23 +1,23 @@ -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 - sec = sec.children(0) + sec = sec.children()[0] t.equal(sec.title(), 'Topography', 'first child') sec = sec.nextSibling() t.equal(sec.title(), 'Climate', 'first child') @@ -26,11 +26,11 @@ test('traverse sections', (t) => { sec = sec.parent() t.equal(sec.title(), 'Geography', 'skip-over children') //access child by title - t.equal(sec.children(1).title(), 'Climate', 'second child') + t.equal(sec.children()[1].title(), 'Climate', 'second child') sec.remove() t.equal(doc.sections().length, 32, 'removed self and children') - doc.sections('See also').remove() + doc.section('See also').remove() t.equal(doc.sections().length, 31, 'removed one') t.end() diff --git a/tests/unit.test.js b/tests/integration/unit.test.js similarity index 82% rename from tests/unit.test.js rename to tests/integration/unit.test.js index 89583eda..795a4f7c 100644 --- a/tests/unit.test.js +++ b/tests/integration/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,25 +114,25 @@ 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) - t.equal(obj.sections(0).interwiki(0).page(), 'Radiohead', 'interwiki-link') - t.equal(obj.sections(0).interwiki(0).wiki(), 'wikinews', 'interwiki-link') + const str = 'hello [[wikinews:Radiohead]] world [[Category:Films]]' + const obj = wtf(str) + 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.equal(obj.category(0), 'Films', 'cat-match') t.end() }) 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/integration/v9.test.js b/tests/integration/v9.test.js new file mode 100644 index 00000000..509feb60 --- /dev/null +++ b/tests/integration/v9.test.js @@ -0,0 +1,73 @@ +const test = require('tape') +const wtf = require('../lib') + +test('wikitext', (t) => { + let 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.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() +}) + +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.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() +}) +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() +}) diff --git a/tests/xml.test.js b/tests/integration/xml.test.js similarity index 66% rename from tests/xml.test.js rename to tests/integration/xml.test.js index 0209bcf5..0032d5c2 100644 --- a/tests/xml.test.js +++ b/tests/integration/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,15 @@ lkjsdf ` - var doc = wtf(str) + const doc = wtf(str) 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() +}) 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 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/links.test.js b/tests/links.test.js deleted file mode 100644 index 92d6f645..00000000 --- a/tests/links.test.js +++ /dev/null @@ -1,92 +0,0 @@ -var test = require('tape') -var wtf = require('./lib') - -test('document-links', (t) => { - var str = `before [[the shining|movie]] -{| -! h1 !! h2 || h3 -|- -| one -| two -| three -|- -| [[Minnesota Twins|Twins]] -| five -| six -|} - -after now -* one -* two -* [[three]] -* four -` - var links = wtf(str).links() - t.equal(links.length, 3, 'found-all-links') - t.ok( - links.find((l) => l.text()), - 'movie', - 'link-text' - ) - t.ok( - links.find((l) => l.page()), - 'Minnesota Twins', - 'link-table' - ) - t.ok( - links.find((l) => l.page()), - 'three', - 'link-list' - ) - t.end() -}) - -test('anchor-links', (t) => { - var str = `[[Doug Ford#Personal Life]]` - var 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) - link = doc.links(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(), - // 'Tranno J birds', - // 'html-anchor' - // ) - // t.equal( - // doc.sentences(0).markdown(), - // '[Tranno J birds](./Toronto_Blue_Jays#Problems)', - // 'markdown-anchor' - // ) - - t.end() -}) - -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 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|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.end() -}) - -test('tricksy-links', (t) => { - var doc = wtf(`[[US]]9999.2`) - t.equal(doc.text(), 'US9999.2', 'link-nospace') - // var 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/more-templates.test.js b/tests/more-templates.test.js deleted file mode 100644 index c104a792..00000000 --- a/tests/more-templates.test.js +++ /dev/null @@ -1,124 +0,0 @@ -var test = require('tape') -var wtf = require('./lib') - -test('imdb', t => { - var str = `{{IMDb title | 0426883 | Alpha Dog }}` - var doc = wtf(str) - var obj = doc.templates(0) - 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) - t.equal(obj.id, '0426883', 'id1') - t.equal(obj.title, 'Alpha Dog', 'title') - t.end() -}) - -test('taxon', t => { - var str = `{{Taxon info|Felis|parent}}` - var doc = wtf(str) - var 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) - t.equal(obj.template, 'portal bar', 'name') - t.equal(obj.list[0], 'portal 1', 'list1') - t.equal(obj.list[1], 'portal 2', 'list2') - t.equal(obj.list.length, 2, 'list-len') - 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) - 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') - t.equal(obj.links[0].desc, 'the municipal government', 'desc1') - t.equal(obj.links.length, 2, 'list-len') - 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() - 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() - 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') - t.equal(templates[0].spouse, 'Mileva Marić', 'marriage2-name') - t.equal(templates[2].template, 'sfnp', 'sfnp') - t.end() -}) - -test('support-nowrap-in-infobox', t => { - var str = ` - {{Infobox scientist - | name = Albert Einstein - | image = Einstein 1921 by F Schmutzer - restoration.jpg - | spouse = {{nowrap| {{marriage|[[Elsa Löwenthal]]
|1919|1936|end=died}} }} - | residence = Germany, Italy, Switzerland, Austria (present-day Czech Republic), Belgium, United States - | signature = Albert Einstein signature 1934.svg - | chiffre = {{nobr|912 millions}} - }} - ` - var infobox = wtf(str).infoboxes(0) - var 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) - 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') - t.end() -}) - -test('three-layer-templates', t => { - var str = `she married {{nowrap| {{nowrap| {{marriage|Johnny-boy}} }}}}` - var 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'''` - - var doc = wtf(str) - - t.equal( - doc.text(), - '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.links('budapest')[0].page(), 'Budapest', 'got Budapest link') - t.equal( - doc.templates('short description')[0].description, - 'Constitutional monarchic union from 1867 to October 1918', - 'short-description' - ) - t.end() -}) diff --git a/tests/page.test.js b/tests/page.test.js deleted file mode 100644 index 2ba2d729..00000000 --- a/tests/page.test.js +++ /dev/null @@ -1,100 +0,0 @@ -var test = require('tape') -var readFile = require('./lib/_cachedPage') - -test('royal_cinema page', t => { - var 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).keyValue()['opened'], 1939, 'year-number'); - t.end() -}) - -test('toronto_star page', t => { - var 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') - 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') - 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') - 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') - t.end() -}) - -test('jodie_emery', t => { - var 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.categories().length, 8, 'cat-length') - t.equal(doc.images().length, 1, 'image-length') - t.end() -}) - -test('statoil', t => { - var 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') - // (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.end() -}) - -test('raith rovers', t => { - var 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') - 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.images(1).url(), - `https://wikipedia.org/wiki/Special:Redirect/file/Stark's_Park_-_geograph.org.uk_-_204446.jpg`, - 'image-url' - ) - t.end() -}) - -test('mark behr', t => { - var 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') - 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') - s = doc.sections('toekennings') - t.equal(s.lists().length, 1, 'got list') - t.equal(s.lists(0).lines().length, 4, 'got 4 items in list') - t.end() -}) diff --git a/tests/paragraphs.test.js b/tests/paragraphs.test.js deleted file mode 100644 index feca424f..00000000 --- a/tests/paragraphs.test.js +++ /dev/null @@ -1,113 +0,0 @@ -var test = require('tape') -var 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=}} -and tap-dance pioneer. He was born in glasgowirelandtimes. - -This is paragraph two.{{cite web |url=http://paragraphtwo.net}} It is the same deal. - -==Section== -Here is the third paragraph. Nobody knows if this will work.[http://commonsense.com/everybody|says everybody] - -` - var 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') - t.equal(doc.sections(0).references().length, 3, 'first references') - t.end() -}) - -test('sentence/paragraphs by newlines', t => { - var doc = wtf(`Leading text - -Closing remark`) - t.equal(doc.paragraphs().length, 2, '2 paragraphs') - t.equal(doc.sentences().length, 2, '2 sentences') - t.end() -}) - -test('bring newlines to plaintext', t => { - var str = `hello - - - -world` - var 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= - - - -|date= |website= |publisher= |access-date= - - -|quote=}} - -Paragraph two!` - var 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. -{| 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 -|} - -Second paragraph here.` - var 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') - t.equal(doc.tables().length, 1, 'got broken table') - t.end() -}) - -test('cyrillic symbols', t => { - var str = `== Заголовок == -Соединённые - -По «окончании» - -После — четырёх - -Лишённые - -Спустя - -В напряжённом` - var 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.end() -}) 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/tests/unit/Document.test.js b/tests/unit/Document.test.js new file mode 100644 index 00000000..96fc7267 --- /dev/null +++ b/tests/unit/Document.test.js @@ -0,0 +1,1034 @@ +const test = require('tape') +const wtf = require('../lib') +const fs = require('fs') +const path = require('path') + +//title +test('Tile - get - first sentence', (t) => { + let str = fs.readFileSync(path.join(__dirname, '../', 'cache', 'Charlie-Milstead.txt'), 'utf-8') + let doc = wtf(str) + t.equal(doc.title(), 'Charles Frank Milstead', 'the title equals the fist bolded text') + t.end() +}) + +test('Tile - get - no bold in sentence ', (t) => { + let str = 'no bold in first sentence' + let doc = wtf(str) + t.equal(doc.title(), undefined, 'the title equals undefined') + t.end() +}) + +test('Tile - get - return null if there are no sentences', (t) => { + let str = '' + let doc = wtf(str) + t.equal(doc.title(), null, 'the title equals null') + t.end() +}) + +test('Tile - get / set - if the title is already set than get it from internal object', (t) => { + let str = 'no bold in first sentence' + let doc = wtf(str) + doc.title('some title') + t.equal(doc.title(), 'some title', 'the title equals the set title') + t.end() +}) + +//pageID +test('pageID - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.pageID(), null, 'the pageID equals null') + t.end() +}) + +test('pageID - get - if the pageID is already set than get it from internal object', (t) => { + let doc = wtf('', { pageID: 1 }) + t.equal(doc.pageID(), 1, 'the pageID equals 1') + t.end() +}) + +test('pageID - get / set - if the pageID is set then it should return the same ', (t) => { + let doc = wtf('') + doc.pageID(1) + t.equal(doc.pageID(), 1, 'the pageID equals 1') + t.end() +}) + +//wikidata +test('wikidata - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.wikidata(), null, 'the wikidata equals null') + t.end() +}) + +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'") + 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.end() +}) + +//domain +test('domain - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.domain(), null, 'the null equals undefined') + t.end() +}) + +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'") + 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.end() +}) + +//language - Same test as lang +test('language - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.language(), null, 'the language equals null') + t.end() +}) + +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'") + 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.end() +}) + +//lang - Same test as language +test('lang - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.lang(), null, 'the lang equals null') + t.end() +}) + +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'") + 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.end() +}) + +//url +test('url - get - if there is no title return null', (t) => { + let doc = wtf('') + t.equal(doc.url(), null, 'the url equals null') + t.end() +}) + +test('url - get - if lang and domain are undefined then default to en.wikipedia.org', (t) => { + 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' }) + t.equal(doc.url(), 'https://military.wikia.org/wiki/Barack_Obama', 'the url equals the right page') + t.end() +}) + +//namespace - same test as ns +test('namespace - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.namespace(), null, 'the namespace equals null') + t.end() +}) + +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'") + 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'") + 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.end() +}) + +//ns - same test as namespace +test('ns - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.ns(), null, 'the ns equals null') + t.end() +}) + +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'") + 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'") + 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.end() +}) + +//isRedirect +test('isRedirect - get - should initially be false', (t) => { + let doc = wtf('') + t.equal(doc.isRedirect(), false, 'the isRedirect equals false') + t.end() +}) + +test('isRedirect - get - if the type of page is should default to page and return false', (t) => { + let doc = wtf('', { type: 'redirect' }) + t.equal(doc.isRedirect(), false, 'the isRedirect equals false') + t.end() +}) + +test('isRedirect - get - if the page is a redirect than return true', (t) => { + let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') + t.equal(doc.isRedirect(), true, 'the isRedirect equals true') + t.end() +}) + +test('isRedirect - get - if the page is too long to be a redirect page than return false', (t) => { + let doc = wtf('#DOORVERWIJZING [[Doelpagina]]' + 'l'.repeat(505)) + t.equal(doc.isRedirect(), false, 'the isRedirect equals false') + t.end() +}) + +//redirectTo -- same as redirectsTo & redirect & redirects +test('redirectTo - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.redirectTo(), null, 'the redirectTo equals null') + t.end() +}) + +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.end() +}) + +//redirectsTo -- same as redirectTo +test('redirectsTo - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.redirectsTo(), null, 'the redirectsTo equals null') + t.end() +}) + +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.end() +}) + +//redirect -- same as redirectTo +test('redirect - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.redirect(), null, 'the redirect equals null') + t.end() +}) + +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.end() +}) + +//redirects -- same as redirectTo +test('redirects - get - should initially be null', (t) => { + let doc = wtf('') + t.equal(doc.redirects(), null, 'the redirects equals null') + t.end() +}) + +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.end() +}) + +//isDisambiguation -- same as isDisambig +test('isDisambiguation - get - if the page is not a Disambiguation page than return false', (t) => { + let doc = wtf('not disambiguation') + t.equal(doc.isDisambiguation(), false, 'the isDisambiguation equals false') + t.end() +}) + +test('isDisambiguation - get - if the page is a Disambiguation page than return true', (t) => { + let doc = wtf('{{dp}}') + t.equal(doc.isDisambiguation(), true, 'the isDisambiguation equals true') + t.end() +}) + +//isDisambig -- same as isDisambiguation +test('isDisambig - get - if the page is not a Disambiguation page than return false', (t) => { + let doc = wtf('not disambiguation') + t.equal(doc.isDisambig(), false, 'the isDisambig equals false') + t.end() +}) + +test('isDisambig - get - if the page is a Disambiguation page than return true', (t) => { + let doc = wtf('{{dp}}') + t.equal(doc.isDisambig(), true, 'the isDisambig equals true') + t.end() +}) + +//categories +test('categories - get - should initially be []', (t) => { + let doc = wtf('') + t.deepEqual(doc.categories(), [], 'the categories equals []') + t.end() +}) + +test('categories - get - if the categories is in the option. ignore it', (t) => { + let doc = wtf('', { categories: ['Q42'] }) + t.deepEqual(doc.categories(), [], 'the categories equals []') + t.end() +}) + +test('categories - get - if the clue is a undefined / unset return the list of categories', (t) => { + let doc = wtf(` + [[Category:WWE Hall of Fame inductees]] + [[Category:Writers from New York City]] + [[Category:American people of German descent]] + [[Category:American people of Scottish descent]] + `) + const expected = [ + 'WWE Hall of Fame inductees', + 'Writers from New York City', + 'American people of German descent', + 'American people of Scottish descent', + ] + t.deepEqual(doc.categories(), expected, 'the categories in the wiki text') + t.end() +}) + +test('categories - get - if the clue is a number return the category in that index', (t) => { + let doc = wtf(` + [[Category:WWE Hall of Fame inductees]] + [[Category:Writers from New York City]] + [[Category:American people of German descent]] + [[Category:American people of Scottish descent]] + `) + t.equal(doc.category(1), 'Writers from New York City', 'the categories at index 1') + t.end() +}) + +test('categories - get - if the clue is not a number return the list of categories', (t) => { + let doc = wtf(` + [[Category:WWE Hall of Fame inductees]] + [[Category:Writers from New York City]] + [[Category:American people of German descent]] + [[Category:American people of Scottish descent]] + `) + const expected = [ + 'WWE Hall of Fame inductees', + 'Writers from New York City', + 'American people of German descent', + 'American people of Scottish descent', + ] + t.deepEqual(doc.categories('string'), expected, 'the categories in the wiki text') + t.end() +}) + +//sections +test('sections - get - should initially be []', (t) => { + let doc = wtf('') + t.deepEqual(doc.sections(), [], 'the sections equals []') + t.end() +}) + +test('sections - get - if the sections is in the option. ignore it', (t) => { + let doc = wtf('', { sections: ['Q42'] }) + t.deepEqual(doc.sections(), [], 'the sections equals []') + t.end() +}) + +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, + 'the sections in the wiki text' + ) + t.end() +}) + +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() +}) + +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() +}) + +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() +}) + +//paragraphs +test('paragraphs - get - should initially be []', (t) => { + let doc = wtf('') + t.deepEqual(doc.paragraphs(), [], 'the paragraphs equals []') + t.end() +}) + +test('paragraphs - get - if the paragraphs is in the option. ignore it', (t) => { + let doc = wtf('', { paragraphs: ['Q42'] }) + t.deepEqual(doc.paragraphs(), [], 'the paragraphs equals []') + t.end() +}) + +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) + 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.end() +}) + +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() +}) + +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) + 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.end() +}) + +//paragraph +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) + t.equal(JSON.stringify(doc.paragraph(1).text().length), '66', 'the paragraph at index 1') + t.end() +}) + +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) + t.equal(JSON.stringify(doc.paragraph().text().length), '804', 'the paragraph at index 0') + t.end() +}) + +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) + t.equal(JSON.stringify(doc.paragraph('string').text().length), '804', 'the paragraph at index 0') + t.end() +}) + +//sentences +test('sentences - get - should initially be []', (t) => { + let doc = wtf('') + t.deepEqual(doc.sentences(), [], 'the sentences equals []') + t.end() +}) + +test('sentences - get - if the sentences is in the option. ignore it', (t) => { + let doc = wtf('', { sentences: ['Q42'] }) + t.deepEqual(doc.sentences(), [], 'the sentences equals []') + t.end() +}) + +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.equal( + doc + .sentences() + .map((p) => p.text().length) + .join(','), + expected, + 'the sentences in the wiki text' + ) + t.end() +}) + +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.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' + t.equal( + doc + .sentences('string') + .map((p) => p.text().length) + .join(','), + expected, + 'the sentences in the wiki text' + ) + t.end() +}) +//sentence +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) + t.deepEqual(doc.sentence().text().length, 90, 'the first sentence in the wiki text') + t.end() +}) + +//images +test('images - get - should initially be []', (t) => { + let doc = wtf('') + t.deepEqual(doc.images(), [], 'the images equals []') + t.end() +}) + +test('images - get - if the images is in the option. ignore it', (t) => { + let doc = wtf('', { images: ['Q42'] }) + t.deepEqual(doc.images(), [], 'the images equals []') + t.end() +}) + +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) + const expected = [82, 89] + t.deepEqual( + doc.images().map((p) => p.url().length), + expected, + 'the images in the wiki text' + ) + t.end() +}) + +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.image(1).url().length), '89', 'the images at index 1') + t.end() +}) + +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) + const expected = [82, 89] + t.deepEqual( + doc.images('string').map((p) => p.url().length), + expected, + 'the images in the wiki text' + ) + t.end() +}) + +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) + 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.end() +}) + +//image +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) + t.deepEqual(doc.image().url().length, 82, 'the first image on the page') + t.end() +}) + +//links +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] + t.deepEqual( + doc.links().map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all links' + ) + t.end() +}) + +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.link(1).json()).length, 71, 'the link at index 1') + t.end() +}) + +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) + t.deepEqual( + JSON.stringify(doc.links('Jace Rocker')[0].json()).length, + 40, + "the link at index the content 'Jace Rocker'" + ) + t.end() +}) + +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] + t.deepEqual( + doc.links([]).map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all links' + ) + t.end() +}) + +//interwiki +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] + t.deepEqual( + doc.interwiki().map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all interwiki' + ) + t.end() +}) + +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.end() +}) + +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] + t.deepEqual( + doc.interwiki([]).map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all interwiki' + ) + t.end() +}) + +//lists +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] + t.deepEqual( + doc.lists().map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all lists' + ) + t.end() +}) + +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.list(1).json()).length, 815, 'the lists at index 1') + t.end() +}) + +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] + t.deepEqual( + doc.lists('string').map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all lists' + ) + t.end() +}) +//tables +// 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] +// t.deepEqual( +// doc.tables().map((l) => JSON.stringify(l.json()).length), +// expected, +// 'returns all tables' +// ) +// t.end() +// }) + +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.end() +}) + +// 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] +// t.deepEqual( +// doc.tables('string').map((l) => JSON.stringify(l.json()).length), +// expected, +// 'returns all tables' +// ) +// t.end() +// }) + +//templates +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] + t.deepEqual( + doc.templates().map((te) => te.json().template.length), + expected, + 'returns all templates' + ) + t.end() +}) + +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.template(1).json().template.length, 12, 'the templates at index 1') + t.end() +}) + +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] + t.deepEqual( + doc.templates().map((te) => te.json().template.length), + expected, + 'returns all templates' + ) + t.end() +}) + +//references -- same as citations +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.equal( + doc + .references() + .map((r) => r.title().length) + .join(','), + expected, + 'returns all references' + ) + t.end() +}) + +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.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' + t.deepEqual( + doc + .references('string') + .map((re) => re.title().length) + .join(','), + expected, + 'returns all references' + ) + t.end() +}) + +//citations -- same as references +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.equal( + doc + .citations() + .map((c) => c.title().length) + .join(','), + expected, + 'returns all citations' + ) + t.end() +}) + +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.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' + t.equal( + doc + .citations('string') + .map((ci) => ci.title().length) + .join(','), + expected, + 'returns all citations' + ) + t.end() +}) + +//coordinates +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', + template: 'coord', + props: { region: 'US_type:city' }, + lat: 39.18861, + lon: -120.10889, + }, + { + template: 'coord', + props: { type: 'city' }, + lat: 39.18861, + lon: -120.10889, + }, + ] + t.deepEqual(doc.coordinates(), expected, 'returns all coordinates') + t.end() +}) + +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.coordinate(1), expected, 'the coordinates at index 1') + t.end() +}) + +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', + template: 'coord', + props: { region: 'US_type:city' }, + lat: 39.18861, + lon: -120.10889, + }, + { + template: 'coord', + props: { type: 'city' }, + lat: 39.18861, + lon: -120.10889, + }, + ] + t.deepEqual(doc.coordinates('string'), expected, 'returns all coordinates') + t.end() +}) + +//infoboxes +const infoboxPage = ` +{{Infobox venue +| name = Royal Cinema +| nickname = +| former names = The Pylon, The Golden Princess +| logo_image = +| logo_caption = +}} +{{Infobox venue +| name = Royal Cinema +| nickname = +| former names = The Pylon, The Golden Princess +| logo_image = +| logo_caption = +| image = Royal_Cinema.JPG +| image_size = 250px +| caption = The Royal Cinema in 2009 +}} +{{Infobox venue +| name = Royal Cinema +| nickname = +| former names = The Pylon, The Golden Princess +| logo_image = +| logo_caption = +| image = Royal_Cinema.JPG +| image_size = 250px +| caption = The Royal Cinema in 2009 +}} +` + +test('infoboxes - get - return all templates', (t) => { + let doc = wtf(infoboxPage) + const expected = [201, 201, 89] + t.deepEqual( + doc.infoboxes().map((i) => JSON.stringify(i.json()).length), + expected, + 'returns all references' + ) + t.end() +}) + +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 infoboxes at index 1') + t.end() +}) + +test('infoboxes - get - if the clue is any other type then return all references', (t) => { + let doc = wtf(infoboxPage) + const expected = [] + t.deepEqual( + doc.infoboxes('string').map((info) => JSON.stringify(info.json()).length), + expected, + 'returns all infoboxes' + ) + t.end() +}) + +//text +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') + t.end() +}) + +test('text - get - enpty string for redirects', (t) => { + let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') + const expected = '' + t.deepEqual(doc.text(), expected, 'empty string') + t.end() +}) + +//plaintext -- same as text +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') + t.end() +}) + +test('plaintext - get - enpty string for redirects', (t) => { + let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') + const expected = '' + t.deepEqual(doc.plaintext(), expected, 'empty string') + t.end() +}) + +//json +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() +}) +//debug +//we need something like sinon for mocking the console.log + +//singular-methods +test('plurals / singular - all should exist', (t) => { + let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') + let singels = [ + 'section', + 'infobox', + 'sentence', + 'citation', + 'reference', + 'coordinate', + 'table', + 'list', + 'link', + 'image', + 'template', + 'category', + ] + singels.forEach((s) => { + t.equal(typeof doc[s], 'function', 'every function needs to be defined. also ' + s) + }) + t.end() +}) diff --git a/tests/unit/Section.test.js b/tests/unit/Section.test.js new file mode 100644 index 00000000..18dd2465 --- /dev/null +++ b/tests/unit/Section.test.js @@ -0,0 +1,339 @@ +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.sentence(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.paragraph(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.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() +}) + +//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.table(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.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() +}) + +//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.infobox()).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.coordinate()).length, 70, '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.list().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.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), + 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.equal( + sec + .references() + .map((s) => s.title().length) + .join(','), + 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.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.equal( + sec + .citations() + .map((s) => s.title().length) + .join(','), + 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() + t.equal(sec.citation().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/unit/fetch/getResult.test.js b/tests/unit/fetch/getResult.test.js new file mode 100644 index 00000000..f572916d --- /dev/null +++ b/tests/unit/fetch/getResult.test.js @@ -0,0 +1,149 @@ +const test = require('tape') +const getResult = require('../../../src/_fetch/getResult') + + + +test('parse a normal case', (t) => { + const options = { + "domain": "liquipedia.net", + "path": "counterstrike/api.php", + "follow_redirects": true, + "Api-User-Agent": "wtf_wikipedia test script - ", + "title": "Team_Liquid" + } + + const response = { + "warnings": { + "main": { + "*": "Unrecognized parameter: rvslots." + } + }, + "batchcomplete": "", + "query": { + "normalized": [ + { + "from": "Team_Liquid", + "to": "Team Liquid" + } + ], + "pages": { + "19571": { + "pageid": 19571, + "ns": 0, + "title": "Team Liquid", + "revisions": [ + { + "contentformat": "text/x-wiki", + "contentmodel": "wikitext", + "*": "test" + } + ], + "pageprops": { + "displaytitle": "Team Liquid", + "metaimage": "Team Liquid 2020.png", + "metaimageurl": "https://liquipedia.net/commons/images/7/7e/Team_Liquid_2020.png", + } + } + } + } + } + + const expected = [ + { + wiki: "test", + meta: { + "domain": "liquipedia.net", + "path": "counterstrike/api.php", + "follow_redirects": true, + "Api-User-Agent": "wtf_wikipedia test script - ", + "title": "Team Liquid", + pageID: 19571, + namespace: 0, + wikidata: undefined, + description: undefined, + } + } + ] + + const result = getResult(response, options) + t.deepEqual(expected, result) + t.end() +}) + +test('parse a normal case from wikimedia', (t) => { + const options = { + "lang": "it", + "wiki": "wiktionary", + "follow_redirects": true, + "path": "api.php", + "title": "casa" + } + + const response = { + "batchcomplete": "", + "query": { + "pages": { + "742": { + "pageid": 742, + "ns": 0, + "title": "casa", + "revisions": [ + { + "slots": { + "main": { + "contentmodel": "wikitext", + "contentformat": "text/x-wiki", + "*": "Italian wiktionary" + } + } + } + ], + "pageprops": { + "page_image_free": "RybnoeDistrict_06-13_Konstantinovo_village_05.jpg" + } + } + } + } + } + + const expected = [ + { + wiki: 'Italian wiktionary', + meta: { + lang: 'it', + wiki: 'wiktionary', + follow_redirects: true, + path: 'api.php', + title: 'casa', + pageID: 742, + namespace: 0, + domain: 'wiktionary.org', + wikidata: undefined, + description: undefined + } + } + ] + + const result = getResult(response, options) + t.deepEqual(expected, result) + t.end() +}) + +test('parse a not found case', (t) => { + const options = { + "lang": "en", + "wiki": "wikipedia", + "follow_redirects": true, + "path": "api.php", + "Api-User-Agent": "wtf_wikipedia test script - ", + "title": "165111651dfasfasdfsadfas" + } + + const response = { "batchcomplete": "", "query": { "pages": { "-1": { "ns": 0, "title": "165111651dfasfasdfsadfas", "missing": "" } } } } + + const expected = [null] + + const result = getResult(response, options) + t.deepEqual(expected, result) + t.end() +}) \ No newline at end of file diff --git a/tests/unit/fetch/makeUrl.test.js b/tests/unit/fetch/makeUrl.test.js new file mode 100644 index 00000000..84a23e49 --- /dev/null +++ b/tests/unit/fetch/makeUrl.test.js @@ -0,0 +1,90 @@ +const test = require('tape') +const makeUrl = require('../../../src/_fetch/makeUrl') + +//makeUrl +const tests = [ + { + options: { + "lang": "en", + "wiki": "wikipedia", + "follow_redirects": true, + "path": "api.php", + "Api-User-Agent": "wtf_wikipedia test script - ", + "title": [ + "Marina Gilardoni", + "Jessica Kilian", + "Tanja Morel" + ] + }, + url: 'https://en.wikipedia.org/w/api.php?action=query&prop=revisions%7Cpageprops&rvprop=content&maxlag=5&rvslots=main&origin=*&format=json&redirects=true&titles=Marina_Gilardoni%7CJessica_Kilian%7CTanja_Morel' + }, + { + options: { + "lang": "it", + "wiki": "wiktionary", + "follow_redirects": true, + "path": "api.php", + "title": "casa" + }, + url: 'https://it.wiktionary.org/w/api.php?action=query&prop=revisions%7Cpageprops&rvprop=content&maxlag=5&rvslots=main&origin=*&format=json&redirects=true&titles=casa' + }, + { + options: { + "lang": "nl", + "wiki": "wikipedia", + "follow_redirects": false, + "Api-User-Agent": "wtf_wikipedia test script - ", + "title": 5321546 + }, + url: 'https://nl.wikipedia.org/w/api.php?action=query&prop=revisions%7Cpageprops&rvprop=content&maxlag=5&rvslots=main&origin=*&format=json&pageids=5321546' + }, + { + options: { + "lang": "en", + "wiki": "wikipedia", + "follow_redirects": true, + "Api-User-Agent": "wtf_wikipedia test script - ", + "title": [145422, 3120522] + }, + url: 'https://en.wikipedia.org/w/api.php?action=query&prop=revisions%7Cpageprops&rvprop=content&maxlag=5&rvslots=main&origin=*&format=json&redirects=true&pageids=145422%7C3120522' + }, + { + options: { + "domain": "liquipedia.net", + "path": "counterstrike/api.php", + "follow_redirects": true, + "Api-User-Agent": "wtf_wikipedia test script - ", + "title": "Team_Liquid" + }, + url: 'https://liquipedia.net/counterstrike/api.php?action=query&prop=revisions%7Cpageprops&rvprop=content&maxlag=5&rvslots=main&origin=*&format=json&redirects=true&titles=Team_Liquid' + }, + { + options: { + "domain": "en.wikipedia.org", + "follow_redirects": true, + "Api-User-Agent": "wtf_wikipedia test script - ", + "title": [145422, 3120522] + }, + url: 'https://en.wikipedia.org/w/api.php?action=query&prop=revisions%7Cpageprops&rvprop=content&maxlag=5&rvslots=main&origin=*&format=json&redirects=true&pageids=145422%7C3120522' + }, + { + options: {}, + url: '' + }, + { + options: { + "domain": "en.wikipedia.org", + "follow_redirects": true, + "Api-User-Agent": "wtf_wikipedia test script - " + }, + url: '' + }, +] + +tests.forEach(testCase => { + test('make the correct url', (t) => { + const result = makeUrl(testCase.options) + t.equal(testCase.url, result) + t.end() + }) +}) diff --git a/tests/unit/fetch/parseUrl.test.js b/tests/unit/fetch/parseUrl.test.js new file mode 100644 index 00000000..1bfbcfd4 --- /dev/null +++ b/tests/unit/fetch/parseUrl.test.js @@ -0,0 +1,34 @@ +const test = require('tape') +const parseUrl = require('../../../src/_fetch/parseUrl') + +const tests = [ + { + test: 'https://en.wikipedia.org/wiki/Ainmanes', + domain: 'en.wikipedia.org', + title: 'Ainmanes' + }, + { + test: 'https://nl.wikivoyage.org/wiki/Wandelroute_E9', + domain: 'nl.wikivoyage.org', + title: 'Wandelroute_E9' + }, + { + test: 'https://dota2.gamepedia.com/Abaddon', + domain: 'dota2.gamepedia.com', + title: 'Abaddon' + }, + { + test: 'https://bulbapedia.bulbagarden.net/wiki/Aegislash_(Pok%C3%A9mon)', + domain: 'bulbapedia.bulbagarden.net', + title: 'Aegislash_(Pokémon)' + } +] + +tests.forEach(testCase => { + test('parse the urls ' + testCase.title, (t) => { + const result = parseUrl(testCase.test) + t.equal(result.domain, testCase.domain) + t.equal(result.title, testCase.title) + t.end() + }) +}) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..5bc62aac --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,32 @@ +/* docs: https://aka.ms/tsconfig.json */ +{ + "compilerOptions": { + /* Basic Options */ + "target": "es2018" /* 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. */, + "noEmit": true /* Do not emit outputs. */, + + /* 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. */, + + /* 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 */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, + "allowSyntheticDefaultImports": true + }, + "include": ["src/**/*.js", "plugins/**/*.js"], + "exclude": ["node_modules", "**/node_modules/*"] +} diff --git a/types/index.d.ts b/types/index.d.ts index c2a3c800..0b9310a7 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -18,13 +18,12 @@ declare module wtf { /** extend built-in functionality */ export function extend(fn: any): any + /** extend built-in functionality */ + export function plugin(fn: any): any /** grab wikipedia content from an API */ - export function fetch(titleOrId: string | number, lang?: string, options?: any, cb?: any): Promise - - /** grab wikipedia content from an API */ - export function fetch(titlesOrIds: string[] | number[], lang?: string, options?: any, cb?: any): Promise - + export function fetch(titleOrId: string | number | number[] | string[], options?: Record, callback?: (error: unknown, result: null | Document | Document[]) => void): Promise + /** grab a random article from a wikimedia API */ export function random(lang?: string, options?: object, cb?: any): Promise @@ -67,88 +66,75 @@ declare module wtf { isDisambig(): boolean /** fetch a list of this page's categories */ - categories(): string[] - /** fetch the nth category */ - categories(clue: number): string[] - /** fetch the first category */ - category(clue: number): 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: number | string): Section + sections(clue?: string): Section[] /** fetch the first Section */ - section(clue: number | string): Section + section(clue?: number | string): Section /**return a list, or given-index of Paragraphs, in all sections */ - paragraphs(): Paragraph[] - /**grab the nth paragraph */ - paragraphs(n: number): Paragraph + paragraphs(clue?: number): Paragraph[] /**grab the first paragraph */ - paragraph(n: number | undefined): Paragraph + paragraph(n?: number): Paragraph - /** return a list, or given-index of all sentences in the document*/ - sentences(): Sentence[] - /** return the nth sentence in the document*/ - sentences(n: number): Sentence + /** list of all sentences in the document*/ + sentences(clue?: number): Sentence[] /** return the first sentence in the document*/ - sentence(n: number): Sentence + sentence(n?: number): Sentence /** return all images in the document */ - images(): Image[] - /** return the nth image in the docu,ent */ - images(clue: number): Image - /** return the first image in the docu,ent */ - image(clue: number): Image + images(clue?: number): Image[] + /** return the first image in the document */ + image(n?: number): Image - /**return a list, or given-index of all links, in all parts of the document */ - links(clue?: string): object[] - links(clue: number): object - link(clue: number): object + /**list of all links in the document */ + links(clue?: string): Link[] + link(clue?: number | string): Link /**any links to other language wikis */ interwiki(clue?: string): object[] - interwiki(clue: number): object + interwiki(clue?: number): object /**sections in a page where each line begins with a bullet point */ - lists(clue?: string): List[] - lists(clue: number): List + lists(clue?: number): List[] + lists(n?: number): List - /**return a list, or given-index of all structured tables in the document */ - tables(clue?: string): Table[] - tables(clue: number): Table - table(clue: number): Table + /**list of all structured tables in the document */ + tables(clue?: number): Table[] + table(n?: number): Table - /**any type of structured-data elements, typically wrapped in like {{this}} */ - templates(clue?: string): object[] - templates(clue: number): object + /**list any type of structured-data elements, typically wrapped in like {{this}} */ + templates(clue?: string): Template[] + template(clue?: number): Template - /**return a list, or given-index of 'citations' in the document */ + /**list of 'citations' in the document */ references(clue?: string): Reference[] - references(clue: number): Reference - reference(clue: number): Reference + reference(clue?: number): Reference + /** Alias of references */ citations(clue?: string): Reference[] - /** Alias of references */ - citations(clue: number): Reference - // Alias and singular - citation(clue: number): Reference + /** Alias of reference */ + citation(clue?: number): Reference /**geo-locations that appear on the page */ coordinates(clue?: string): object[] - coordinates(clue: number): object - coordinate(clue: number): object + coordinate(clue?: string|number): object /**specific type of template, that appear on the top-right of the page */ - infoboxes(clue: number): Infobox - infobox(clue: number): Infobox - 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 } @@ -166,46 +152,44 @@ declare module wtf { /**how many steps deep into the table of contents it is */ indentation(): number - sentences(): Sentence[] - sentences(n: number): Sentence + sentences(clue?: number): Sentence[] + sentence(n: number): Sentence - paragraphs(): Paragraph[] + paragraphs(clue?: number): Paragraph[] paragraph(n?: number): Paragraph - paragraphs(n: number): Paragraph links(n?: string): object[] - links(n: number): object + link(n?: number): object - tables(): Table[] - tables(n: number): Table + tables(clue?: number): Table[] + table(n?: number): Table - templates(clue?: string): object[] - templates(clue: number): object + templates(clue?: string): Template[] + template(clue?: number): Template - infoboxes(): Infobox[] - infoboxes(clue: number): Infobox + infoboxes(clue?: number): Infobox[] + infoboxe(clue?: number): Infobox - coordinates(): object[] - coordinates(clue: number): object + coordinates(clue?: number): object[] + coordinate(clue?: number): object - lists(): List[] - lists(clue: number): List + lists(clue?: number): List[] + list(clue?: number): List /**any links to other language wikis */ - interwiki(): object[] - interwiki(num: number): object + interwiki(clue?: number): object[] + interwikis(num: number): object - /**return a list, or given index, of any images in this section */ - images(): Image[] - images(clue: number): Image - - references(): Reference[] - references(clue: number): Reference - /** Alias of references() */ - citations(clue: number): Reference + /**return a list of any images in this section */ + images(clue?: number): Image[] + image(clue?: number): Image + references(clue?: string): Reference[] + reference(clue?: number|string): Reference /** Alias of references() */ - citations(): Reference[] + citations(clue?: string): Reference + /** Alias of reference() */ + citation(clue?: number|string): Reference[] /**remove the current section from the document */ remove(): Document @@ -225,35 +209,34 @@ declare module wtf { previous(): Section | null /**any sections more specific than this one: eg. History → [PreHistory, 1920s, 1930s] */ children(n?: string): Section[] - children(n: number): Section + child(n: number): Section /** Alias of children */ sections(n?: string): Section[] /** Alias of children */ - sections(n: number): Section + 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 { private _type: string type(): string - /** Alias of type() */ template(): string - links(n: number): object - links(n?: string): object[] image(): Image | null /** Alias of image() */ - images(): Image | null + images(): Image | null//FIXME get(key: string): object | null @@ -262,29 +245,42 @@ 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 { private data: object - links(n: number): object - links(n?: string): object[] - keyValue(options: object): object + keyValue(options?: object): object /** Alias of keyValue */ - keyvalue(options: object): object + keyvalue(options?: object): object // Alais of keyValue - keyval(options: object): object - + keyval(options?: object): object + /** readable plaintext */ text(): string - + /** all parsed data */ json(options?: object): object + /** original wiki markup */ + wikitext(): string } class Reference { @@ -295,48 +291,45 @@ 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 { private data: object - sentences(num: number): Sentence - sentences(): Sentence[] - references(num: number): Reference - - references(): Reference[] + references(clue?: string|number): Reference[] + reference(): Reference /** Alias of references */ - citations(num: number): Reference - + citations(clue?: string): Reference [] /** Alias of references */ - citations(): Reference[] - - lists(num: number): List + citation(clue?: string|number): Reference[] lists(): List[] - - images(num: number): Image + lists(): List images(): Image[] + images(clue?: number | string): Image - links(n: number): object - - links(n?: string): object - interwiki(num: number): object + links(clue?: string|number): object + link(clue?: string|number): object + 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 { @@ -355,73 +348,60 @@ declare module wtf { /** Alias of url() */ src(): string - thumbnail(size: number): string + thumbnail(size?: number): string /** Alias of thumbnail() */ - thumb(size: number): string + thumb(size?: number): string format(): string - + /** readable plaintext */ text(): string - + /** all parsed data */ json(options?: object): object + /** original wiki markup */ + wikitext(): string } class List { private data: object - lines(): object + lines(): object[] - links(n: number): object - - links(n?: string): object + links(clue?: number): object[] + // link(n?: string): object - interwiki(num: number): object + 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 { private data: object - links(n: number): object - - links(n?: string): object - - interwiki(num: number): object + links(clue?: string|number): object + link(clue?: string|number): object + interwiki(clue?: number|string): object interwiki(): object[] - bolds(n: number): string - - bolds(): string[] + bolds(clue?: number|string): string[] + bold(clue?:number|string): string - /** Alias of bolds */ - bold(n: number): string - - /** Alias of bolds */ - bold(): string[] - - italics(n: number): string - - italics(): string[] - - /** Alias of italics */ - italic(n: number): string - - /** Alias of italics */ - italic(): string[] + 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 } }