From 8ffb4bbb8218969d6f902eda1eeb124af8a62421 Mon Sep 17 00:00:00 2001 From: Francis Tyers Date: Thu, 10 Jun 2021 18:16:44 +0100 Subject: [PATCH] deploy? --- package-lock.json | 5061 ++++++--- server/public/js/bundle.js | 19694 ++++++++++++++++++++--------------- 2 files changed, 14909 insertions(+), 9846 deletions(-) diff --git a/package-lock.json b/package-lock.json index 58d954e7..b064af2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,36 +5,52 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "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.0.0" + "@babel/highlight": "^7.12.13" } }, + "@babel/compat-data": { + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.4.tgz", + "integrity": "sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ==", + "dev": true + }, "@babel/core": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", - "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helpers": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.5", - "@babel/types": "^7.4.4", - "convert-source-map": "^1.1.0", + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz", + "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.3", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.3", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", "source-map": "^0.5.0" }, "dependencies": { + "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" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -44,255 +60,374 @@ "ms": "^2.1.1" } }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "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 } } }, "@babel/generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", - "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz", + "integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==", "dev": true, "requires": { - "@babel/types": "^7.4.4", + "@babel/types": "^7.14.2", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - } + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "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.0.0" + "@babel/types": "^7.12.13" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "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.14.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz", + "integrity": "sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/compat-data": "^7.14.4", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "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-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "@babel/helper-create-class-features-plugin": { + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.4.tgz", + "integrity": "sha512-idr3pthFlDCpV+p/rMgGLGYIVtazeatrSOQk8YzO2pAepIjQhCN3myeihVg58ax2bbbGK9PUE1reFi7axOYIOw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.14.4", + "@babel/helper-split-export-declaration": "^7.12.13" } }, - "@babel/helper-define-map": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", - "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz", + "integrity": "sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "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" + } + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "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" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + }, + "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.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "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.1.0", - "@babel/types": "^7.0.0" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", + "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.14.2" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "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.0.0" + "@babel/types": "^7.12.13" } }, "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "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.0.0" + "@babel/types": "^7.13.12" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "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.0.0" + "@babel/types": "^7.13.12" } }, "@babel/helper-module-transforms": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", - "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz", + "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@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.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "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.0.0" + "@babel/types": "^7.12.13" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "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.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", - "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", + "@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.11" + "@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.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "@babel/helper-replace-supers": { + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz", + "integrity": "sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.4" } }, - "@babel/helper-replace-supers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", - "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", + "@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.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/types": "^7.13.12" } }, - "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "@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.1.0", - "@babel/types": "^7.0.0" + "@babel/types": "^7.12.1" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "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.4.4" + "@babel/types": "^7.12.13" } }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "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.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "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.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@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.4.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", - "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", "dev": true, "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.14.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" }, "dependencies": { @@ -334,661 +469,793 @@ } }, "@babel/parser": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", - "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", - "dev": true + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.4.tgz", + "integrity": "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==" }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "@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.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@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-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz", + "integrity": "sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.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-object-rest-spread": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", - "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", + "@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.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "@babel/plugin-proposal-class-static-block": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz", + "integrity": "sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-create-class-features-plugin": "^7.14.3", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" } }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "@babel/plugin-proposal-dynamic-import": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz", + "integrity": "sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" - }, - "dependencies": { - "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, - "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz", + "integrity": "sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, - "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "@babel/plugin-proposal-json-strings": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz", + "integrity": "sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz", + "integrity": "sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz", + "integrity": "sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "@babel/plugin-proposal-numeric-separator": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz", + "integrity": "sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz", - "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==", + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.4.tgz", + "integrity": "sha512-AYosOWBlyyXEagrPRfLJ1enStufsr7D1+ddpj8OLi9k7B6+NdZ0t/9V7Fh+wJ4g2Jol8z2JkgczYqtWrZd4vbA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/compat-data": "^7.14.4", + "@babel/helper-compilation-targets": "^7.14.4", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.2" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz", + "integrity": "sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", - "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", + "@babel/plugin-proposal-optional-chaining": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz", + "integrity": "sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.11" + "@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-transform-classes": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", - "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", + "@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-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.4.4", - "@babel/helper-split-export-declaration": "^7.4.4", - "globals": "^11.1.0" - }, - "dependencies": { - "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 - } + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", - "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", + "@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-plugin-utils": "^7.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "@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.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" - }, - "dependencies": { - "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "@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.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", + "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "@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.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "@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-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "@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.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "@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.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/plugin-transform-modules-amd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "@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-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", - "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", + "@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-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz", - "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==", + "@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-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "@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-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", - "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", + "@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": { - "regexp-tree": "^0.1.6" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, - "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "@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.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "@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-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "@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-plugin-utils": "^7.0.0" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "@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": { - "regenerator-transform": "^0.14.0" - }, - "dependencies": { - "regenerator-transform": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", - "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", - "dev": true, - "requires": { - "private": "^0.1.6" - } - } + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "@babel/plugin-transform-block-scoping": { + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.4.tgz", + "integrity": "sha512-5KdpkGxsZlTk+fPleDtGKsA+pon28+ptYmMO8GBSa5fHERCJWAzj50uAfCKBqq42HO+Zot6JF1x37CRprwmN4g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "@babel/plugin-transform-classes": { + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.4.tgz", + "integrity": "sha512-p73t31SIj6y94RDVX57rafVjttNr8MvKEgs5YFatNB/xC68zM3pyosuOEcQmYsYlyQaGY9R7rAULVRcat5FKJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.14.4", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + }, + "dependencies": { + "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 + } + } + }, + "@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.14.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.4.tgz", + "integrity": "sha512-JyywKreTCGTUsL1OKu1A3ms/R1sTP0WxbpXlALeGzF53eB3bxtNkYdMj9SDgK7g6ImPy76J5oYYKoTtQImlhQA==", + "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.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz", + "integrity": "sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", + "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.13.12", + "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.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", + "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.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.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz", + "integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==", + "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.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + }, + "dependencies": { + "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" + } + } + } + }, + "@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.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "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.0.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "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.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "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.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "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.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "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-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.4.tgz", + "integrity": "sha512-GwMMsuAnDtULyOtuxHhzzuSRxFeP0aR/LNzrHRzP8y6AgDNgqnrfCCBm/1cRdTU75tRs28Eh76poHLcg9VF0LA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.4", + "@babel/helper-compilation-targets": "^7.14.4", + "@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.14.2", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.14.3", + "@babel/plugin-proposal-dynamic-import": "^7.14.2", + "@babel/plugin-proposal-export-namespace-from": "^7.14.2", + "@babel/plugin-proposal-json-strings": "^7.14.2", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.2", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.2", + "@babel/plugin-proposal-numeric-separator": "^7.14.2", + "@babel/plugin-proposal-object-rest-spread": "^7.14.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.2", + "@babel/plugin-proposal-optional-chaining": "^7.14.2", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.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-class-static-block": "^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-private-property-in-object": "^7.14.0", + "@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.14.4", + "@babel/plugin-transform-classes": "^7.14.4", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.14.4", + "@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.14.2", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.14.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.14.2", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@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.14.4", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" }, "dependencies": { - "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } } } }, - "@babel/preset-env": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz", - "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==", + "@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-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.4.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.4.4", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.4.4", - "@babel/plugin-transform-classes": "^7.4.4", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.4.4", "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-modules-systemjs": "^7.4.4", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", "@babel/types": "^7.4.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" - }, - "dependencies": { - "browserslist": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.3.tgz", - "integrity": "sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000975", - "electron-to-chromium": "^1.3.164", - "node-releases": "^1.1.23" - } - }, - "caniuse-lite": { - "version": "1.0.30000975", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000975.tgz", - "integrity": "sha512-ZsXA9YWQX6ATu5MNg+Vx/cMQ+hM6vBBSqDeJs8ruk9z0ky4yIHML15MoxcFt088ST2uyjgqyUGRJButkptWf0w==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.165", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.165.tgz", - "integrity": "sha512-iIS8axR524EAnvUtWUNnREnYjQrS0zUvutIKYgTVuN3MzcjrV31EuJYKw7DGOtFO9DQw+JiXeaVDPQWMskG1wQ==", - "dev": true - } + "esutils": "^2.0.2" } }, "@babel/register": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.4.4.tgz", - "integrity": "sha512-sn51H88GRa00+ZoMqCVgOphmswG4b7mhf9VOB0LUBAieykq2GnRFerlN+JQkO/ntT7wz4jaHNSRPg9IdMPEUkA==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.16.tgz", + "integrity": "sha512-dh2t11ysujTwByQjXNgJ48QZ2zcXKQVdV8s0TbeMI0flmtGWCdTwK9tJiACHXPLmncm5+ktNn/diojA45JE4jg==", "dev": true, "requires": { - "core-js": "^3.0.0", + "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", - "lodash": "^4.17.11", - "mkdirp": "^0.5.1", + "make-dir": "^2.1.0", "pirates": "^4.0.0", - "source-map-support": "^0.5.9" + "source-map-support": "^0.5.16" + } + }, + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" }, "dependencies": { - "core-js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.1.3.tgz", - "integrity": "sha512-PWZ+ZfuaKf178BIAg+CRsljwjIMRV8MY00CbZczkR6Zk5LfkSkjGoaab3+bqRQWVITNZxQB7TFYz+CFcyuamvA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "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 - }, - "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } } } }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "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.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/traverse": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", - "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", + "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/types": "^7.4.4", + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.2", + "@babel/types": "^7.14.2", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" + "globals": "^11.1.0" }, "dependencies": { "debug": { @@ -1015,13 +1282,12 @@ } }, "@babel/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", - "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.4.tgz", + "integrity": "sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", + "@babel/helper-validator-identifier": "^7.14.0", "to-fast-properties": "^2.0.0" }, "dependencies": { @@ -1068,7 +1334,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.4.0.tgz", "integrity": "sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw==", - "dev": true, "requires": { "type-detect": "4.0.8" } @@ -1077,7 +1342,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.1.tgz", "integrity": "sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==", - "dev": true, "requires": { "@sinonjs/commons": "^1", "@sinonjs/samsam": "^3.1.0" @@ -1087,7 +1351,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.1.tgz", "integrity": "sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw==", - "dev": true, "requires": { "@sinonjs/commons": "^1.0.2", "array-from": "^2.1.1", @@ -1097,8 +1360,7 @@ "@sinonjs/text-encoding": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==" }, "JSONStream": { "version": "1.3.3", @@ -1130,30 +1392,29 @@ "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } - }, "acorn-node": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.5.2.tgz", - "integrity": "sha512-krFKvw/d1F17AN3XZbybIUzEY4YEPNiGo05AfP3dBlfVKrMHETKpgjpuZkSF8qDNt9UkQcqj7am8yJLseklCMg==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", "dev": true, "requires": { - "acorn": "^5.7.1", - "acorn-dynamic-import": "^3.0.0", - "xtend": "^4.0.1" + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } } }, "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, "after": { @@ -1225,7 +1486,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz", "integrity": "sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==", - "dev": true, "requires": { "array-back": "^3.0.1" } @@ -1308,7 +1568,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -1352,8 +1611,7 @@ "array-back": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" }, "array-each": { "version": "1.0.1", @@ -1375,8 +1633,7 @@ "array-from": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=" }, "array-initial": { "version": "1.1.0", @@ -1706,6 +1963,53 @@ "babel-runtime": "^6.22.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.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "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.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz", + "integrity": "sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.9.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + } + }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", @@ -2269,10 +2573,9 @@ "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", - "dev": true + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { "version": "4.11.8", @@ -2433,40 +2736,43 @@ } }, "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", "dev": true, "requires": { - "resolve": "1.1.7" + "resolve": "^1.17.0" }, "dependencies": { "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true + "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" + } } } }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "browserify": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.2.3.tgz", - "integrity": "sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ==", + "version": "16.5.2", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz", + "integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==", "dev": true, "requires": { "JSONStream": "^1.0.3", "assert": "^1.4.0", "browser-pack": "^6.0.1", - "browser-resolve": "^1.11.0", + "browser-resolve": "^2.0.0", "browserify-zlib": "~0.2.0", - "buffer": "^5.0.2", + "buffer": "~5.2.1", "cached-path-relative": "^1.0.0", "concat-stream": "^1.6.0", "console-browserify": "^1.1.0", @@ -2484,8 +2790,8 @@ "inherits": "~2.0.1", "insert-module-globals": "^7.0.0", "labeled-stream-splicer": "^2.0.0", - "mkdirp": "^0.5.0", - "module-deps": "^6.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", "os-browserify": "~0.3.0", "parents": "^1.0.1", "path-browserify": "~0.0.0", @@ -2498,7 +2804,7 @@ "shasum": "^1.0.0", "shell-quote": "^1.6.1", "stream-browserify": "^2.0.0", - "stream-http": "^2.0.0", + "stream-http": "^3.0.0", "string_decoder": "^1.1.1", "subarg": "^1.0.0", "syntax-error": "^1.1.1", @@ -2511,30 +2817,6 @@ "xtend": "^4.0.0" }, "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true - }, - "acorn-node": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.7.0.tgz", - "integrity": "sha512-XhahLSsCB6X6CJbe+uNu3Mn9sJBNFxtBN9NLgAOQovfS6Kh0lDUtmlclhjn9CvEK7A7YyRU13PXlNcpSiLI9Yw==", - "dev": true, - "requires": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-walk": "^6.1.1", - "xtend": "^4.0.1" - } - }, "assert": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", @@ -2587,29 +2869,6 @@ "ieee754": "^1.1.4" } }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "dev": true, - "requires": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" - } - }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -2642,29 +2901,6 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, - "module-deps": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.1.tgz", - "integrity": "sha512-UnEn6Ah36Tu4jFiBbJVUtt0h+iXqxpLqDvPS8nllbw5RZFmNJ1+Mz5BjYnM9ieH80zyxHkARGLnMIHlPK5bu6A==", - "dev": true, - "requires": { - "JSONStream": "^1.0.3", - "browser-resolve": "^1.7.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.0.2", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - } - }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -2873,9 +3109,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000856", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000856.tgz", - "integrity": "sha512-x3mYcApHMQemyaHuH/RyqtKCGIYTgEA63fdi+VBvDz8xUSmRiVWTLeyKcoGQCGG6UPR9/+4qG4OKrTa6aSQRKg==", + "version": "1.0.30001230", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", + "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", "dev": true }, "canvas2svg": { @@ -2895,25 +3131,24 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "catharsis": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.10.tgz", - "integrity": "sha512-l2OUaz/3PU3MZylspVFJvwHCVfWyvcduPq4lv3AzZ2pJzZCo7kNKFNyatwujD7XgvGkNAE/Jhhbh2uARNwNkfw==", - "dev": true, + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.15" } }, "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", "dev": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", - "pathval": "^1.1.0", + "pathval": "^1.1.1", "type-detect": "^4.0.5" } }, @@ -3029,6 +3264,17 @@ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", "dev": true }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, "clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", @@ -3052,10 +3298,9 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "collect-all": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.3.tgz", - "integrity": "sha512-0y0rBgoX8IzIjBAUnO73SEtSb4Mhk3IoceWJq5zZSxb9mWORhWH8xLYo4EDSOE1jRBk1LhmfjqWFFt10h/+MEA==", - "dev": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz", + "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==", "requires": { "stream-connect": "^1.0.2", "stream-via": "^1.0.4" @@ -3097,7 +3342,6 @@ "version": "1.9.2", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, "requires": { "color-name": "1.1.1" } @@ -3105,8 +3349,7 @@ "color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=" }, "color-support": { "version": "1.1.3", @@ -3114,6 +3357,12 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "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 + }, "combine-source-map": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", @@ -3138,7 +3387,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", - "dev": true, "requires": { "array-back": "^3.0.1", "find-replace": "^3.0.0", @@ -3149,8 +3397,7 @@ "typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" } } }, @@ -3158,7 +3405,6 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/command-line-tool/-/command-line-tool-0.8.0.tgz", "integrity": "sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==", - "dev": true, "requires": { "ansi-escape-sequences": "^4.0.0", "array-back": "^2.0.0", @@ -3171,7 +3417,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, "requires": { "typical": "^2.6.1" } @@ -3182,7 +3427,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz", "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==", - "dev": true, "requires": { "ansi-escape-sequences": "^4.0.0", "array-back": "^2.0.0", @@ -3194,7 +3438,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, "requires": { "typical": "^2.6.1" } @@ -3205,7 +3448,6 @@ "version": "2.20.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true, "optional": true }, "common-sequence": { @@ -3240,6 +3482,18 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "concat-with-sourcemaps": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", @@ -3261,7 +3515,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz", "integrity": "sha1-ZnZjWQUFooO/JqSE1oSJ10xUhdo=", - "dev": true, "requires": { "walk-back": "^2.0.1" }, @@ -3269,8 +3522,7 @@ "walk-back": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-2.0.1.tgz", - "integrity": "sha1-VU4qnYdPrEeoywBr9EwvDEmYoKQ=", - "dev": true + "integrity": "sha1-VU4qnYdPrEeoywBr9EwvDEmYoKQ=" } } }, @@ -3380,53 +3632,36 @@ "dev": true }, "core-js-compat": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.4.tgz", - "integrity": "sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.13.0.tgz", + "integrity": "sha512-jhbI2zpVskgfDC9mGRaDo1gagd0E0i/kYW0+WvibL/rafEHKAHO653hEXIxJHqRlRLITluXtRH3AGTL5qJmifQ==", "dev": true, "requires": { - "browserslist": "^4.6.2", - "core-js-pure": "3.1.4", - "semver": "^6.1.1" + "browserslist": "^4.16.6", + "semver": "7.0.0" }, "dependencies": { "browserslist": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.3.tgz", - "integrity": "sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000975", - "electron-to-chromium": "^1.3.164", - "node-releases": "^1.1.23" + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" } }, - "caniuse-lite": { - "version": "1.0.30000975", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000975.tgz", - "integrity": "sha512-ZsXA9YWQX6ATu5MNg+Vx/cMQ+hM6vBBSqDeJs8ruk9z0ky4yIHML15MoxcFt088ST2uyjgqyUGRJButkptWf0w==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.165", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.165.tgz", - "integrity": "sha512-iIS8axR524EAnvUtWUNnREnYjQrS0zUvutIKYgTVuN3MzcjrV31EuJYKw7DGOtFO9DQw+JiXeaVDPQWMskG1wQ==", - "dev": true - }, "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true } } }, - "core-js-pure": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz", - "integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -3759,6 +3994,17 @@ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", "dev": true }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dev": true, + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, "dicer": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", @@ -3784,8 +4030,7 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" }, "diffie-hellman": { "version": "5.0.3", @@ -3818,29 +4063,11 @@ "walk-back": "^3.0.1" }, "dependencies": { - "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } - }, "reduce-flatten": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true - }, - "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 } } }, @@ -3921,9 +4148,9 @@ "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==" }, "electron-to-chromium": { - "version": "1.3.48", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", - "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=", + "version": "1.3.741", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.741.tgz", + "integrity": "sha512-4i3T0cwnHo1O4Mnp9JniEco8bZiXoqbm3PhW5hv7uu8YLg35iajYrRnNyKFaN8/8SSTskU2hYqVTeYVPceSpUA==", "dev": true }, "elliptic": { @@ -4025,10 +4252,9 @@ } }, "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" }, "error-ex": { "version": "1.3.2", @@ -4108,6 +4334,12 @@ "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -4116,8 +4348,7 @@ "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 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "esprima": { "version": "4.0.0", @@ -4128,8 +4359,7 @@ "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "etag": { "version": "1.8.1", @@ -4611,7 +4841,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, "requires": { "array-back": "^3.0.1" } @@ -4735,8 +4964,7 @@ "fs-then-native": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", - "integrity": "sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=", - "dev": true + "integrity": "sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=" }, "fs.realpath": { "version": "1.0.0", @@ -5312,6 +5540,12 @@ "wide-align": "^1.1.0" } }, + "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-assigned-identifiers": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", @@ -5512,14 +5746,12 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" }, "gulp": { "version": "4.0.2", @@ -5539,18 +5771,6 @@ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -5914,6 +6134,25 @@ "pify": "^3.0.0" } }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.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==" + } + } + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -5960,8 +6199,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.0", @@ -6175,20 +6413,6 @@ "through2": "^2.0.0", "undeclared-identifiers": "^1.1.2", "xtend": "^4.0.0" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - } } }, "interpret": { @@ -6201,7 +6425,6 @@ "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" } @@ -6283,6 +6506,15 @@ "ci-info": "^1.5.0" } }, + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -6548,8 +6780,7 @@ "istanbul-lib-coverage": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" }, "istanbul-lib-instrument": { "version": "3.3.0", @@ -6579,25 +6810,17 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==" }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "js2xmlparser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.0.tgz", - "integrity": "sha512-WuNgdZOXVmBk5kUPMcTcVUpbGRzLfNkv7+7APq7WiDihpXVKrgxo6wwRpRl9OQeEBgKCVk9mR7RbzrnNWC8oBw==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", + "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", "requires": { - "xmlcreate": "^2.0.0" + "xmlcreate": "^2.0.3" } }, "jsbn": { @@ -6607,38 +6830,45 @@ "optional": true }, "jsdoc": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.2.tgz", - "integrity": "sha512-S2vzg99C5+gb7FWlrK4TVdyzVPGGkdvpDkCEJH1JABi2PKzPeLu5/zZffcJUifgWUJqXWl41Hoc+MmuM2GukIg==", - "dev": true, + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.7.tgz", + "integrity": "sha512-sxKt7h0vzCd+3Y81Ey2qinupL6DpRSZJclS04ugHDNmRUXGzqicMJ6iwayhSA0S0DwwX30c5ozyUthr1QKF6uw==", "requires": { - "@babel/parser": "^7.4.4", - "bluebird": "^3.5.4", - "catharsis": "^0.8.10", + "@babel/parser": "^7.9.4", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.0", + "js2xmlparser": "^4.0.1", "klaw": "^3.0.0", - "markdown-it": "^8.4.2", - "markdown-it-anchor": "^5.0.2", - "marked": "^0.6.2", - "mkdirp": "^0.5.1", - "requizzle": "^0.2.2", - "strip-json-comments": "^3.0.1", + "markdown-it": "^10.0.0", + "markdown-it-anchor": "^5.2.7", + "marked": "^2.0.3", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", "taffydb": "2.6.2", - "underscore": "~1.9.1" + "underscore": "~1.13.1" }, "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 + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "marked": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.6.tgz", + "integrity": "sha512-S2mYj0FzTQa0dLddssqwRVW4EOJOVJ355Xm2Vcbm+LU7GQRGWvwbO5K87OaPSOux2AwTSgtPPaXmc8sDPrhn2A==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true + "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==" } } }, @@ -6700,10 +6930,9 @@ } }, "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-schema": { "version": "0.2.3", @@ -6730,6 +6959,15 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, + "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" + } + }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -6762,8 +7000,7 @@ "just-extend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz", - "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==", - "dev": true + "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==" }, "kind-of": { "version": "6.0.2", @@ -6775,7 +7012,6 @@ "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" } @@ -6862,10 +7098,9 @@ } }, "linkify-it": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz", - "integrity": "sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg==", - "dev": true, + "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==", "requires": { "uc.micro": "^1.0.1" } @@ -6873,13 +7108,17 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "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.memoize": { @@ -6891,20 +7130,17 @@ "lodash.omit": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=", - "dev": true + "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=" }, "lodash.padend": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", - "dev": true + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=" }, "lodash.pick": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", - "dev": true + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" }, "log-symbols": { "version": "2.2.0", @@ -6956,7 +7192,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, "requires": { "js-tokens": "^3.0.0" } @@ -7052,23 +7287,21 @@ } }, "markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "dev": true, + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", "requires": { "argparse": "^1.0.7", - "entities": "~1.1.1", + "entities": "~2.0.0", "linkify-it": "^2.0.0", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" } }, "markdown-it-anchor": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.2.4.tgz", - "integrity": "sha512-n8zCGjxA3T+Mx1pG8HEgbJbkB8JFUuRkeTZQuIM8iPY6oQ8sWOPRZJDFC9a/pNg2QkHEjjGkhBEl/RSyzaDZ3A==", - "dev": true + "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==" }, "marked": { "version": "0.6.2", @@ -7124,8 +7357,7 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" }, "media-typer": { "version": "0.3.0", @@ -7240,9 +7472,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==" }, "minipass": { "version": "2.3.5", @@ -7297,11 +7529,16 @@ } } }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "mkdirp2": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.4.tgz", - "integrity": "sha512-Q2PKB4ZR4UPtjLl76JfzlgSCUZhSV1AXQgAZa1qt5RiaALFjP/CDrGvFBrOz7Ck6McPcwMAxTsJvWOUjOU8XMw==", - "dev": true + "integrity": "sha512-Q2PKB4ZR4UPtjLl76JfzlgSCUZhSV1AXQgAZa1qt5RiaALFjP/CDrGvFBrOz7Ck6McPcwMAxTsJvWOUjOU8XMw==" }, "mocha": { "version": "6.1.4", @@ -7575,6 +7812,29 @@ } } }, + "module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, "moment": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", @@ -7663,8 +7923,7 @@ "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, "next-tick": { "version": "1.0.0", @@ -7682,7 +7941,6 @@ "version": "1.4.10", "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.10.tgz", "integrity": "sha512-sa0RRbj53dovjc7wombHmVli9ZihXbXCQ2uH3TNm03DyvOSIQbxg+pbqDKrk2oxMK1rtLGVlKxcB9rrc6X5YjA==", - "dev": true, "requires": { "@sinonjs/formatio": "^3.1.0", "@sinonjs/text-encoding": "^0.7.1", @@ -7694,14 +7952,12 @@ "lolex": { "version": "2.7.5", "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true + "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==" }, "path-to-regexp": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, "requires": { "isarray": "0.0.1" } @@ -7766,13 +8022,10 @@ } }, "node-releases": { - "version": "1.1.23", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.23.tgz", - "integrity": "sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==", - "dev": true, - "requires": { - "semver": "^5.3.0" - } + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "dev": true }, "nodemon": { "version": "1.19.1", @@ -8331,157 +8584,2577 @@ "dev": true, "optional": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "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 + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "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" + } + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "resolve": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "notatrix": { + "version": "file:notatrix", + "requires": { + "minimist": "^1.2.5", + "underscore": "^1.13.1", + "uuid": "^3.4.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", + "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", + "requires": { + "@babel/highlight": "7.0.0-beta.51" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", + "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", + "requires": { + "@babel/types": "7.0.0-beta.51", + "jsesc": "^2.5.1", + "lodash": "^4.17.5", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", + "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", + "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", + "requires": { + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", + "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", + "requires": { + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", + "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "@babel/parser": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", + "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=" + }, + "@babel/template": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", + "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", + "requires": { + "@babel/code-frame": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "lodash": "^4.17.5" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", + "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", + "requires": { + "@babel/code-frame": "7.0.0-beta.51", + "@babel/generator": "7.0.0-beta.51", + "@babel/helper-function-name": "7.0.0-beta.51", + "@babel/helper-split-export-declaration": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.17.5" + } + }, + "@babel/types": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", + "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.5", + "to-fast-properties": "^2.0.0" + } + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==" + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-back": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz", + "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==" + }, + "cache-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz", + "integrity": "sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==", + "requires": { + "array-back": "^4.0.1", + "fs-then-native": "^2.0.0", + "mkdirp2": "^1.0.4" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" + } + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "common-sequence": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz", + "integrity": "sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "dmd": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.0.0.tgz", + "integrity": "sha512-PwWZlqZnJPETwqZZ70haRa+UDZcD5jeBD3ywW1Kf+jYYv0MHu/S7Ri9jsSoeTMwkcMVW9hXOMA1IZUMEufBhOg==", + "requires": { + "array-back": "^5.0.0", + "cache-point": "^2.0.0", + "common-sequence": "^2.0.0", + "file-set": "^4.0.1", + "handlebars": "^4.7.7", + "marked": "^2.0.0", + "object-get": "^2.1.1", + "reduce-flatten": "^3.0.0", + "reduce-unique": "^2.0.1", + "reduce-without": "^1.0.1", + "test-value": "^3.0.0", + "walk-back": "^5.0.0" + } + }, + "file-set": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz", + "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==", + "requires": { + "array-back": "^5.0.0", + "glob": "^7.1.6" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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==" + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + }, + "istanbul-lib-instrument": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", + "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", + "requires": { + "@babel/generator": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/traverse": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "istanbul-lib-coverage": "^2.0.1", + "semver": "^5.5.0" + } + }, + "jsdoc-api": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-7.0.1.tgz", + "integrity": "sha512-SttT7mAvl/L9liIoOoa647ksFlD+fyNP2Vy80MBRi6akOmJQ4ryQjMBOPfg1veKfwVp/8f3My8Bb2JnVGL9wVg==", + "requires": { + "array-back": "^5.0.0", + "cache-point": "^2.0.0", + "collect-all": "^1.0.4", + "file-set": "^4.0.2", + "fs-then-native": "^2.0.0", + "jsdoc": "^3.6.6", + "object-to-spawn-args": "^2.0.1", + "temp-path": "^1.0.0", + "walk-back": "^5.0.0" + } + }, + "jsdoc-parse": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-6.0.0.tgz", + "integrity": "sha512-35DhfCHL1bq5r0TvolhyyGhhoem700IfEvviL8I1t99Qxa3aSmWbBEpnvvouA7TyXlwxcQfSg75ryXW8Ppq7FA==", + "requires": { + "array-back": "^5.0.0", + "lodash.omit": "^4.5.0", + "lodash.pick": "^4.4.0", + "reduce-extract": "^1.0.0", + "sort-array": "^4.1.3", + "test-value": "^3.0.0" + } + }, + "jsdoc-to-markdown": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-7.0.1.tgz", + "integrity": "sha512-wN6WAHAPiCyAU7m/+F3FbEEV40CGVWMae49SBPIvfy7kDq/2fBrOw86vdbnLdmjt6u/tHnoxHNrHWYbYFN+4UA==", + "requires": { + "array-back": "^5.0.0", + "command-line-tool": "^0.8.0", + "config-master": "^3.1.0", + "dmd": "^6.0.0", + "jsdoc-api": "^7.0.0", + "jsdoc-parse": "^6.0.0", + "walk-back": "^5.0.0" + } + }, + "lolex": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", + "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==" + }, + "marked": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.6.tgz", + "integrity": "sha512-S2mYj0FzTQa0dLddssqwRVW4EOJOVJ355Xm2Vcbm+LU7GQRGWvwbO5K87OaPSOux2AwTSgtPPaXmc8sDPrhn2A==" + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "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" + } + } + } + }, + "nyc": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", + "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", + "requires": { + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.5.1", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^2.1.0", + "istanbul-lib-report": "^1.1.3", + "istanbul-lib-source-maps": "^1.2.5", + "istanbul-reports": "^1.4.1", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.1.0", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.2.0", + "yargs": "11.1.0", + "yargs-parser": "^8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "optional": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "optional": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "requires": { + "strip-bom": "^2.0.0" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + } + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "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" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "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=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "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=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha1-dkZiRnH9fqVYzNmieVGC8pWPGyQ=", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=" + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha1-99jy5CuX43/nlhFMsPnWi146Q0E=" + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha1-hTjZcDcss3FtU+VVI91UtVeo2Js=", + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha1-LfEhiMD6d5kMDSF20tC6M5QYglk=", + "requires": { + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", + "integrity": "sha1-/+a+Tnq4bTYD5CkNVJkLFFBvybE=", + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + } + }, + "istanbul-reports": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.4.1.tgz", + "integrity": "sha1-Ty6OkoqnoF0dpsQn1AmLJlXsczQ=", + "requires": { + "handlebars": "^4.0.3" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "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=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.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=" + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "optional": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha1-h59xUMstq3pHElkGbBBO7m4Pp8I=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "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=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha1-DpK2vty1nwIsE9DxlJ3ILRWQnxw=", + "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=", + "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=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "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=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "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=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "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=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "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=" + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", + "requires": { + "glob": "^7.0.5" + } + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spawn-wrap": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha1-z/WOc6giRhe2Vhq9wyWG6gyCJIw=", + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "test-exclude": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha1-36Ii8DSAvKaSB8pyizfXS0X3JPo=", + "requires": { + "arrify": "^1.0.1", + "micromatch": "^3.1.8", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha1-FHFr8D/f79AwQK71jYtLhfOnxUQ=", + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + } + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "requires": { + "isexe": "^2.0.0" } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "optional": true }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "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=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "wrappy": { "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha1-kLhpk07W6HERXqL/WLA/RyTtLXc=", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha1-8TdqM7Ziml0GN4KUTacyYx6WaVA=", + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } } } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "object-to-spawn-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.1.tgz", + "integrity": "sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==" }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true + "reduce-flatten": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.1.tgz", + "integrity": "sha512-bYo+97BmUUOzg09XwfkwALt4PQH1M5L0wzKerBt6WLm3Fhdd43mMS89HiT1B9pJIqko/6lWx3OnV4J9f2Kqp5Q==" }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, + "sinon": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.1.1.tgz", + "integrity": "sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==", "requires": { - "abbrev": "1" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.5.0", + "lolex": "^2.4.2", + "nise": "^1.3.3", + "supports-color": "^5.4.0", + "type-detect": "^4.0.8" } }, - "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 - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, + "sort-array": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.4.tgz", + "integrity": "sha512-GVFN6Y1sHKrWaSYOJTk9093ZnrBMc9sP3nuhANU44S4xg3rE6W5Z5WyamuT8VpMBbssnetx5faKCua0LEmUnSw==", "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "array-back": "^5.0.0", + "typical": "^6.0.1" } }, "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, + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "requires": { "has-flag": "^3.0.0" } }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - } + "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=" }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "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 + "typical": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-6.0.1.tgz", + "integrity": "sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==" }, - "resolve": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", - "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } + "underscore": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + }, + "walk-back": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.0.0.tgz", + "integrity": "sha512-ASerU3aOj9ok+uMNiW0A6/SEwNOxhPmiprbHmPFw1faz7Qmoy9wD3sbmL5HYG+IBxT5c/4cX9O2kSpNv8OAM9A==" } } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "notatrix": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/notatrix/-/notatrix-2.3.2.tgz", - "integrity": "sha512-sL8BRsKtIDO7b8mDWIvKdusXoooJ4aII6UknwHVANRFIk+uQEezjgITg4zIOUwRkEArnMbK+5OAimWw9uaoCJw==", - "requires": { - "minimist": "^1.2.0", - "underscore": "^1.9.1", - "uuid": "^3.3.2" - } - }, "now-and-later": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", @@ -8977,6 +11650,11 @@ "path-exists": "^3.0.0" } }, + "lodash": { + "version": "4.17.11", + "bundled": true, + "dev": true + }, "lodash.flattendeep": { "version": "4.4.0", "bundled": true, @@ -9601,10 +12279,9 @@ } }, "object-get": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.0.tgz", - "integrity": "sha1-ciu9tgA576R8rTxtws5RqFwCxa4=", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz", + "integrity": "sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==" }, "object-keys": { "version": "1.1.1", @@ -9744,30 +12421,6 @@ "wrappy": "1" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", @@ -9960,9 +12613,9 @@ "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=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-platform": { @@ -9992,9 +12645,9 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, "pbkdf2": { @@ -10328,7 +12981,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz", "integrity": "sha1-Z/I4W+2mUGG19fQxJmLosIDKFSU=", - "dev": true, "requires": { "test-value": "^1.0.1" }, @@ -10337,7 +12989,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", - "dev": true, "requires": { "typical": "^2.6.0" } @@ -10346,7 +12997,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-1.1.0.tgz", "integrity": "sha1-oJE29y7AQ9J8iTcHwrFZv6196T8=", - "dev": true, "requires": { "array-back": "^1.0.2", "typical": "^2.4.2" @@ -10357,20 +13007,17 @@ "reduce-flatten": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", - "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=", - "dev": true + "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=" }, "reduce-unique": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/reduce-unique/-/reduce-unique-2.0.1.tgz", - "integrity": "sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==", - "dev": true + "integrity": "sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==" }, "reduce-without": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/reduce-without/-/reduce-without-1.0.1.tgz", "integrity": "sha1-aK0OrRGFXJo31OglbBW7+Hly/Iw=", - "dev": true, "requires": { "test-value": "^2.0.0" }, @@ -10379,7 +13026,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", - "dev": true, "requires": { "typical": "^2.6.0" } @@ -10388,7 +13034,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", - "dev": true, "requires": { "array-back": "^1.0.3", "typical": "^2.6.0" @@ -10403,9 +13048,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "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" @@ -10438,12 +13083,6 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz", - "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==", - "dev": true - }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", @@ -10662,12 +13301,11 @@ "dev": true }, "requizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.2.tgz", - "integrity": "sha512-oJ6y7JcUJkblRGhMByGNcszeLgU0qDxNKFCiUZR1XyzHyVsev+Mxb1tyygxLd1ORsKee1SA5BInFdUwY64GE/A==", - "dev": true, + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.14" } }, "resolve": { @@ -10839,6 +13477,15 @@ "safe-buffer": "^5.0.1" } }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, "shasum": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", @@ -11142,8 +13789,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { "version": "0.5.2", @@ -11159,9 +13805,9 @@ } }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "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", @@ -11232,8 +13878,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sqlite3": { "version": "4.0.8", @@ -11324,7 +13969,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz", "integrity": "sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=", - "dev": true, "requires": { "array-back": "^1.0.2" }, @@ -11333,7 +13977,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", - "dev": true, "requires": { "typical": "^2.6.0" } @@ -11353,16 +13996,49 @@ "dev": true }, "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } } }, "stream-shift": { @@ -11384,8 +14060,7 @@ "stream-via": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz", - "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==", - "dev": true + "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==" }, "streamsearch": { "version": "0.1.2", @@ -11470,7 +14145,6 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.4.tgz", "integrity": "sha512-uNaR3SRMJwfdp9OUr36eyEi6LLsbcTqTO/hfTsNviKsNeyMBPICJCC7QXRF3+07bAP6FRwA8rczJPBqXDc0CkQ==", - "dev": true, "requires": { "array-back": "^2.0.0", "deep-extend": "~0.6.0", @@ -11483,7 +14157,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, "requires": { "typical": "^2.6.1" } @@ -11493,8 +14166,7 @@ "taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" }, "tar": { "version": "4.4.8", @@ -11513,8 +14185,7 @@ "temp-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz", - "integrity": "sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=", - "dev": true + "integrity": "sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=" }, "term-size": { "version": "1.2.0", @@ -11563,7 +14234,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==", - "dev": true, "requires": { "array-back": "^2.0.0", "typical": "^2.6.1" @@ -11573,7 +14243,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, "requires": { "typical": "^2.6.1" } @@ -11652,12 +14321,6 @@ "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", @@ -11720,12 +14383,6 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, "tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", @@ -11749,8 +14406,7 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, "type-is": { "version": "1.6.18", @@ -11785,20 +14441,17 @@ "typical": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", - "dev": true + "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=" }, "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 + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, "uglify-js": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", - "dev": true, "optional": true, "requires": { "commander": "~2.20.0", @@ -11809,7 +14462,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "optional": true } } @@ -11856,9 +14508,9 @@ } }, "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" }, "undertaker": { "version": "1.2.1", @@ -11900,15 +14552,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "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.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "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 }, "union-value": { @@ -12154,9 +14806,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8flags": { "version": "3.1.3", @@ -12397,11 +15049,15 @@ } } }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, "wordwrapjs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", - "dev": true, "requires": { "reduce-flatten": "^1.0.1", "typical": "^2.6.1" @@ -12448,10 +15104,9 @@ "dev": true }, "xmlcreate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.1.tgz", - "integrity": "sha512-MjGsXhKG8YjTKrDCXseFo3ClbMGvUD4en29H2Cev1dv4P/chlpw6KdYmlCWDkhosBVKRDjM836+3e3pm1cBNJA==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", + "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==" }, "xmlhttprequest-ssl": { "version": "1.5.5", @@ -12459,9 +15114,9 @@ "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { diff --git a/server/public/js/bundle.js b/server/public/js/bundle.js index 97df9ca1..3c37fb87 100644 --- a/server/public/js/bundle.js +++ b/server/public/js/bundle.js @@ -35,9 +35,7 @@ var UndoManager = require("./undo-manager"); */ -var App = -/*#__PURE__*/ -function () { +var App = /*#__PURE__*/function () { function App(args) { var _this = this; @@ -175,7 +173,7 @@ function () { module.exports = App; -},{"./collaboration":2,"./config":4,"./corpus":5,"./graph":7,"./gui":14,"./server":26,"./socket":27,"./undo-manager":28,"./utils":31,"notatrix":460,"underscore":499}],2:[function(require,module,exports){ +},{"./collaboration":2,"./config":4,"./corpus":5,"./graph":7,"./gui":14,"./server":26,"./socket":27,"./undo-manager":28,"./utils":31,"notatrix":483,"underscore":412}],2:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -200,9 +198,7 @@ var User = require("./user"); */ -var CollaborationInterface = -/*#__PURE__*/ -function () { +var CollaborationInterface = /*#__PURE__*/function () { function CollaborationInterface(app) { _classCallCheck(this, CollaborationInterface); @@ -222,14 +218,19 @@ function () { _createClass(CollaborationInterface, [{ - key: "setSelf", - + key: "size", + get: function get() { + return Object.keys(this._users).length; + } /** * Save data about the current user. This method is called after we establish * a connection with our socket server. * * @param {Object} data */ + + }, { + key: "setSelf", value: function setSelf(data) { var _this = this; @@ -344,11 +345,6 @@ function () { }; // filter out things that didn't match our condition }).filter(utils.thin); } - }, { - key: "size", - get: function get() { - return Object.keys(this._users).length; - } }]); return CollaborationInterface; @@ -356,7 +352,7 @@ function () { module.exports = CollaborationInterface; -},{"../utils":31,"./user":3,"underscore":499}],3:[function(require,module,exports){ +},{"../utils":31,"./user":3,"underscore":412}],3:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -388,9 +384,7 @@ var nx = require("notatrix"); */ -var User = -/*#__PURE__*/ -function () { +var User = /*#__PURE__*/function () { function User(data) { _classCallCheck(this, User); @@ -411,13 +405,28 @@ function () { _createClass(User, [{ - key: "setMouse", - + key: "viewing", + get: function get() { + return this._viewing === null ? "" : " (".concat(this._viewing + 1, ") "); + } + /** + * Wrapper for setting the corpus index of the user. Sanitizes input. + * + * @param {Number} index + */ + , + set: function set(index) { + index = parseInt(index); + this._viewing = isNaN(index) ? null : index; + } /** * Wrapper for setting the mosue position of the user. Sanitizes input. * * @param {Object} pos { x: Number, y: Number } */ + + }, { + key: "setMouse", value: function setMouse(pos) { // if x and y not both given, don't save it this.mouse = pos.x == null && pos.y == null ? null : pos; @@ -444,21 +453,6 @@ function () { value: function dom() { return $("").addClass("message-sender-info").attr("name", this.id).append($("").addClass("message-color-blob fa fa-circle").css("color", "#" + this.color)).append($("").addClass("message-sender-name").text(this.name).attr("title", "IP Address: " + this.ip)).append($("").addClass("message-sender-viewing").text(this.viewing).attr("title", "Currently viewing")); } - }, { - key: "viewing", - get: function get() { - return this._viewing === null ? "" : " (".concat(this._viewing + 1, ") "); - } - /** - * Wrapper for setting the corpus index of the user. Sanitizes input. - * - * @param {Number} index - */ - , - set: function set(index) { - index = parseInt(index); - this._viewing = isNaN(index) ? null : index; - } }]); return User; @@ -466,7 +460,7 @@ function () { module.exports = User; -},{"../utils":31,"jquery":392,"notatrix":460,"underscore":499}],4:[function(require,module,exports){ +},{"../utils":31,"jquery":392,"notatrix":483,"underscore":412}],4:[function(require,module,exports){ "use strict"; var _ = require("underscore"); @@ -482,7 +476,7 @@ var _config = { var prefs = utils.storage.getPrefs(); module.exports = _config; -},{"./graph/config":6,"./gui/config":12,"./utils":31,"underscore":499}],5:[function(require,module,exports){ +},{"./graph/config":6,"./gui/config":12,"./utils":31,"underscore":412}],5:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -535,9 +529,7 @@ function detectFormat(serial) { */ -var Corpus = -/*#__PURE__*/ -function () { +var Corpus = /*#__PURE__*/function () { function Corpus(app) { var serial = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; @@ -579,14 +571,114 @@ function () { _createClass(Corpus, [{ - key: "getIndices", + key: "format", + get: function get() { + // if not parsed, format is always null + return this.isParsed ? this.current._meta.format === "notatrix serial" ? "plain text" : this.current._meta.format : null; + } + /** + * Set the format of the current sentence (internal, not sanitized). + * + * @param {String} format + */ + , + set: function set(format) { + this.current._meta.format = format; + } + /** + * Get whether the corpus orientation is Left-to-Right (important for the Graph). + * + * @return {Boolean} + */ + }, { + key: "is_ltr", + get: function get() { + return this._corpus._meta.is_ltr; + } + /** + * Set whether the corpus orientation is Left-to-Right (important for the Graph). + * + * @param {Boolean} bool + */ + , + set: function set(bool) { + this._corpus._meta.is_ltr = bool; + } + /** + * Get whether the corpus orientation is Top-to-Bottom (important for the Graph). + * + * @return {Boolean} + */ + + }, { + key: "is_vertical", + get: function get() { + return this._corpus._meta.is_vertical; + } + /** + * Set whether the corpus orientation is Top-to-Bottom (important for the Graph). + * + * @param {Boolean} bool + */ + , + set: function set(bool) { + this._corpus._meta.is_vertical = bool; + } + /** + * Get whether the corpus is in 'enhanced' mode (i.e. should display and allow + * us to add multiple heads for each token). + * + * @return {Boolean} + */ + + }, { + key: "is_enhanced", + get: function get() { + return this.current.options.enhanced; + } + /** + * Get the filename associated with the corpus. + * + * @return {String} + */ + + }, { + key: "filename", + get: function get() { + return this._corpus._meta.filename; + } + /** + * Set the filename associated with the corpus. + * + * @param {String} filename + */ + , + set: function set(filename) { + this._corpus._meta.filename = filename; + } // --------------------------------------------------------------------------- + // Helper functions for the GUI sentence navigation + + /** + * Returns the string that we should set as the val() of #text-data + * + * @return {String} + */ + + }, { + key: "textdata", + get: function get() { + return this.isParsed ? this.convertTo(this.format) : this.current.input.replace(/\\n/g, "\n").replace(/\\t/g, "\t"); + } /** * Returns the two values that we should set to tell the user what our current * index is. (current -> #current-sentence, total -> #total-sentences). * * @return {Object} { current: Number, total: String } */ + + }, { + key: "getIndices", value: function getIndices() { // the label filter var filtered = this._corpus.filtered; @@ -616,8 +708,21 @@ function () { */ }, { - key: "convertTo", + key: "isParsed", + get: function get() { + return this.current ? this.current.isParsed : false; + } + /** + * Returns the unparsed content of the current sentence + * + * @return {(String|null)} + */ + }, { + key: "unparsed", + get: function get() { + return this.isParsed ? null : this.current.input; + } /** * Get a representation of the current sentence in , ignoring lossiness. * NB: this function *should* not throw errors because we already check if a @@ -626,6 +731,9 @@ function () { * @param {String} format * @return {String} */ + + }, { + key: "convertTo", value: function convertTo(format) { return this.current.to(format).output; } @@ -662,11 +770,51 @@ function () { */ }, { - key: "first", + key: "length", + get: function get() { + return this._corpus.length; + } + /** + * Returns the currently-focused sentence. This is useful if another method + * wants to access the internals of the nx.Sentence at this.index. If there + * are no sentences, it returns null. + * + * @return {(nx.Sentence|null)} + */ + + }, { + key: "current", + get: function get() { + return this.getSentence(this.index); + } + /** + * Returns the index of the current sentence in the nx.Corpus. If there are + * no sentences, it returns null. + * + * @return {(Number|null)} + */ + }, { + key: "index", + get: function get() { + return this._corpus.index; + } + /** + * Modify the current index to . + * + * @param {Number} index + */ + , + set: function set(index) { + this._corpus.index = index; + this.afterModifyIndex(); + } /** * Navigate to the first sentence. */ + + }, { + key: "first", value: function first() { this._corpus.first(); @@ -826,7 +974,8 @@ function () { // split under the hood var splitted = nx.split(text, this._corpus.options); // get the index to start at - var index = this.index || 0; // iterate over all the pieces, get a list of affected indices + var index = this.index || 0; + console.log('parse() INDEX', index); // iterate over all the pieces, get a list of affected indices var sents = splitted.map(function (split, i) { if (i) { @@ -851,162 +1000,6 @@ function () { return sents; } - }, { - key: "format", - get: function get() { - // if not parsed, format is always null - return this.isParsed ? this.current._meta.format === "notatrix serial" ? "plain text" : this.current._meta.format : null; - } - /** - * Set the format of the current sentence (internal, not sanitized). - * - * @param {String} format - */ - , - set: function set(format) { - this.current._meta.format = format; - } - /** - * Get whether the corpus orientation is Left-to-Right (important for the Graph). - * - * @return {Boolean} - */ - - }, { - key: "is_ltr", - get: function get() { - return this._corpus._meta.is_ltr; - } - /** - * Set whether the corpus orientation is Left-to-Right (important for the Graph). - * - * @param {Boolean} bool - */ - , - set: function set(bool) { - this._corpus._meta.is_ltr = bool; - } - /** - * Get whether the corpus orientation is Top-to-Bottom (important for the Graph). - * - * @return {Boolean} - */ - - }, { - key: "is_vertical", - get: function get() { - return this._corpus._meta.is_vertical; - } - /** - * Set whether the corpus orientation is Top-to-Bottom (important for the Graph). - * - * @param {Boolean} bool - */ - , - set: function set(bool) { - this._corpus._meta.is_vertical = bool; - } - /** - * Get whether the corpus is in 'enhanced' mode (i.e. should display and allow - * us to add multiple heads for each token). - * - * @return {Boolean} - */ - - }, { - key: "is_enhanced", - get: function get() { - return this.current.options.enhanced; - } - /** - * Get the filename associated with the corpus. - * - * @return {String} - */ - - }, { - key: "filename", - get: function get() { - return this._corpus._meta.filename; - } - /** - * Set the filename associated with the corpus. - * - * @param {String} filename - */ - , - set: function set(filename) { - this._corpus._meta.filename = filename; - } // --------------------------------------------------------------------------- - // Helper functions for the GUI sentence navigation - - /** - * Returns the string that we should set as the val() of #text-data - * - * @return {String} - */ - - }, { - key: "textdata", - get: function get() { - return this.isParsed ? this.convertTo(this.format) : this.current.input.replace(/\\n/g, "\n").replace(/\\t/g, "\t"); - } - }, { - key: "isParsed", - get: function get() { - return this.current ? this.current.isParsed : false; - } - /** - * Returns the unparsed content of the current sentence - * - * @return {(String|null)} - */ - - }, { - key: "unparsed", - get: function get() { - return this.isParsed ? null : this.current.input; - } - }, { - key: "length", - get: function get() { - return this._corpus.length; - } - /** - * Returns the currently-focused sentence. This is useful if another method - * wants to access the internals of the nx.Sentence at this.index. If there - * are no sentences, it returns null. - * - * @return {(nx.Sentence|null)} - */ - - }, { - key: "current", - get: function get() { - return this.getSentence(this.index); - } - /** - * Returns the index of the current sentence in the nx.Corpus. If there are - * no sentences, it returns null. - * - * @return {(Number|null)} - */ - - }, { - key: "index", - get: function get() { - return this._corpus.index; - } - /** - * Modify the current index to . - * - * @param {Number} index - */ - , - set: function set(index) { - this._corpus.index = index; - this.afterModifyIndex(); - } }]); return Corpus; @@ -1014,7 +1007,7 @@ function () { module.exports = Corpus; -},{"./utils":31,"notatrix":460,"underscore":499}],6:[function(require,module,exports){ +},{"./utils":31,"notatrix":483,"underscore":412}],6:[function(require,module,exports){ "use strict"; var _ = require("underscore"); @@ -1046,7 +1039,7 @@ var _graph = { }; module.exports = _graph; -},{"../utils":31,"underscore":499}],7:[function(require,module,exports){ +},{"../utils":31,"underscore":412}],7:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -1077,9 +1070,7 @@ var tree = require("./tree.js"); */ -var Graph = -/*#__PURE__*/ -function () { +var Graph = /*#__PURE__*/function () { function Graph(app) { _classCallCheck(this, Graph); @@ -1147,14 +1138,189 @@ function () { _createClass(Graph, [{ - key: "draw", + key: "eles", + get: function get() { + var _this = this; + + // reset variables + this.presentationId = {}; + this.connections = {}; + this.numTokens = 0; // helper function to get subscripted index numbers for superTokens + + function toSubscript(str) { + var subscripts = { + 0: "₀", + 1: "₁", + 2: "₂", + 3: "₃", + 4: "₄", + 5: "₅", + 6: "₆", + 7: "₇", + 8: "₈", + 9: "₉", + "-": "₋", + "(": "₍", + ")": "₎" + }; + if (str == "null") return ""; + return str.split("").map(function (_char) { + return subscripts[_char] || _char; + }).join(""); + } // helper function to get index numbers for a particular format + + + function getIndex(token, format) { + return format === "CoNLL-U" ? token.indices.conllu : format === "CG3" ? token.indices.cg3 : token.indices.absolute; + } // reset our progress tracker + + + this.progress.done = 0; + this.progress.total = 0; // reset tree blocked + this.treeBlocked = false; // cache these + + var sent = this.app.corpus.current, + format = this.app.corpus.format; // num is like clump except not including superTokens, eles in the list + + var num = 0, + eles = []; // tokenNum counts just normal tokens (no supertokens and dependencies) + + var tokenNum = 0; // Counts just supertokens + + var mwTokenNum = 0; + var rootFound = false; // walk over all the tokens + + sent.index().iterate(function (token) { + // don't draw other analyses + if (token.indices.cytoscape == null && !token.isSuperToken) return; // cache some values + + var id = getIndex(token, format); + var clump = token.indices.cytoscape; + var pos = format === "CG3" ? token.xpostag || token.upostag : token.upostag || token.xpostag; + var isRoot = sent.root.dependents.has(token); + + if (isRoot) { + rootFound = true; + } // after iteration, this will just be the max + + + _this.clumps = clump; + + if (token.isSuperToken) { + eles.push({ + // multiword node + id: "multiword-".concat(id), + clump: clump, + name: "multiword", + label: "".concat(token.form, " ").concat(toSubscript("".concat(id))), + token: token, + conlluId: token.indices.conllu, + absoluteId: token.indices.absolute, + cg3Id: token.indices.cg3, + len: token._analyses[0]._subTokens.length, + subId: mwTokenNum, + classes: 'multiword' + }); + _this.mwTokens[mwTokenNum] = token; + } else { + _this.progress.total += 2; + if (pos && pos !== "_") _this.progress.done += 1; + if (token.heads.length) _this.progress.done += 1; + var parent = token.name === "SubToken" ? "multiword-" + getIndex(sent.getSuperToken(token), format) : undefined; + _this.tokens[tokenNum] = token; + _this.presentationId[id] = tokenNum; + eles.push({ + // "form" node, including pos data + id: "form-".concat(tokenNum), + subId: tokenNum, + conlluId: id, + num: ++num, + clump: clump, + name: 'form', + attr: 'form', + form: token.form, + label: token.form || '_', + type: parent ? 'subToken' : 'token', + state: "normal", + parent: "num-".concat(tokenNum), + token: token, + classes: isRoot ? 'form root' : 'form', + posClasses: utils.validate.posNodeClasses(pos), + posAttr: format === 'CG3' ? "xpostag" : "upostag", + posLabel: pos || '' + }); + tokenNum++; + _this.numTokens++; + } + }); + + if (!rootFound) { + this.treeBlocked = true; + } + + sent.index().iterate(function (token) { + // iterate over the token's heads to get edges + token.mapHeads(function (head, i) { + // if not enhanced or is_vertical + // only draw the first dependency + if (i && (!sent.options.enhanced || _this.app.corpus.is_vertical)) return; + _this.progress.total += 1; + if (head.deprel && head.deprel !== "_") _this.progress.done += 1; // roots don't get edges drawn (just bolded) + + if (head.token.name === "RootToken") return; + var deprel = head.deprel || ""; + var id = getIndex(token, format), + headId = getIndex(head.token, format), + label = _this.app.corpus.is_ltr ? token.indices.absolute > head.token.indices.absolute ? "".concat(deprel, "\u22B3") : "\u22B2".concat(deprel) : token.indices.absolute > head.token.indices.absolute ? "\u22B2".concat(deprel) : "".concat(deprel, "\u22B3"); + var presentId = _this.presentationId[id]; + var presentHeadId = _this.presentationId[headId]; + var depClasses = utils.validate.depEdgeClasses(sent, token, head); + + if (!(presentHeadId in _this.connections)) { + _this.connections[presentHeadId] = []; + } + + _this.connections[presentHeadId].push(presentId); + + if (depClasses.includes("cycle")) { + _this.treeBlocked = true; + } + + if (String(id).includes('.') || String(headId).includes('.')) { + depClasses += " dotted"; + } + + eles.push({ + id: "dep_".concat(presentId, "_").concat(presentHeadId), + name: "dependency", + num: ++num, + attr: "deprel", + deprel: deprel, + source: "token-".concat(presentHeadId), + sourceNum: parseInt(presentHeadId), + sourceToken: head.token, + target: "token-".concat(presentId), + targetNum: parseInt(presentId), + targetToken: token, + label: label, + enhanced: i ? true : false, + classes: depClasses + }); + }); + }); + this.length = num; + return eles; + } /** * Create the cytoscape instance and populate it with the nodes and edges we * generate in `this.eles`. * * @return {Graph} (chaining) */ + + }, { + key: "draw", value: function draw() { if (this.app.corpus.is_vertical) { this.grapher = tree; @@ -1928,10 +2094,10 @@ function () { }, { key: "drawMice", value: function drawMice() { - var _this = this; + var _this2 = this; this.app.collab.getMouseNodes().forEach(function (mouse) { - _this.grapher.drawMouse(mouse); + _this2.grapher.drawMouse(mouse); }); } /** @@ -1987,181 +2153,6 @@ function () { this.app.socket.broadcast("unlock graph"); } } - }, { - key: "eles", - get: function get() { - var _this2 = this; - - // reset variables - this.presentationId = {}; - this.connections = {}; - this.numTokens = 0; // helper function to get subscripted index numbers for superTokens - - function toSubscript(str) { - var subscripts = { - 0: "₀", - 1: "₁", - 2: "₂", - 3: "₃", - 4: "₄", - 5: "₅", - 6: "₆", - 7: "₇", - 8: "₈", - 9: "₉", - "-": "₋", - "(": "₍", - ")": "₎" - }; - if (str == "null") return ""; - return str.split("").map(function (_char) { - return subscripts[_char] || _char; - }).join(""); - } // helper function to get index numbers for a particular format - - - function getIndex(token, format) { - return format === "CoNLL-U" ? token.indices.conllu : format === "CG3" ? token.indices.cg3 : token.indices.absolute; - } // reset our progress tracker - - - this.progress.done = 0; - this.progress.total = 0; // reset tree blocked - - this.treeBlocked = false; // cache these - - var sent = this.app.corpus.current, - format = this.app.corpus.format; // num is like clump except not including superTokens, eles in the list - - var num = 0, - eles = []; // tokenNum counts just normal tokens (no supertokens and dependencies) - - var tokenNum = 0; // Counts just supertokens - - var mwTokenNum = 0; - var rootFound = false; // walk over all the tokens - - sent.index().iterate(function (token) { - // don't draw other analyses - if (token.indices.cytoscape == null && !token.isSuperToken) return; // cache some values - - var id = getIndex(token, format); - var clump = token.indices.cytoscape; - var pos = format === "CG3" ? token.xpostag || token.upostag : token.upostag || token.xpostag; - var isRoot = sent.root.dependents.has(token); - - if (isRoot) { - rootFound = true; - } // after iteration, this will just be the max - - - _this2.clumps = clump; - - if (token.isSuperToken) { - eles.push({ - // multiword node - id: "multiword-".concat(id), - clump: clump, - name: "multiword", - label: "".concat(token.form, " ").concat(toSubscript("".concat(id))), - token: token, - conlluId: token.indices.conllu, - absoluteId: token.indices.absolute, - cg3Id: token.indices.cg3, - len: token._analyses[0]._subTokens.length, - subId: mwTokenNum, - classes: 'multiword' - }); - _this2.mwTokens[mwTokenNum] = token; - } else { - _this2.progress.total += 2; - if (pos && pos !== "_") _this2.progress.done += 1; - if (token.heads.length) _this2.progress.done += 1; - var parent = token.name === "SubToken" ? "multiword-" + getIndex(sent.getSuperToken(token), format) : undefined; - _this2.tokens[tokenNum] = token; - _this2.presentationId[id] = tokenNum; - eles.push({ - // "form" node, including pos data - id: "form-".concat(tokenNum), - subId: tokenNum, - conlluId: id, - num: ++num, - clump: clump, - name: 'form', - attr: 'form', - form: token.form, - label: token.form || '_', - type: parent ? 'subToken' : 'token', - state: "normal", - parent: "num-".concat(tokenNum), - token: token, - classes: isRoot ? 'form root' : 'form', - posClasses: utils.validate.posNodeClasses(pos), - posAttr: format === 'CG3' ? "xpostag" : "upostag", - posLabel: pos || '' - }); - tokenNum++; - _this2.numTokens++; - } - }); - - if (!rootFound) { - this.treeBlocked = true; - } - - sent.index().iterate(function (token) { - // iterate over the token's heads to get edges - token.mapHeads(function (head, i) { - // if not enhanced or is_vertical - // only draw the first dependency - if (i && (!sent.options.enhanced || _this2.app.corpus.is_vertical)) return; - _this2.progress.total += 1; - if (head.deprel && head.deprel !== "_") _this2.progress.done += 1; // roots don't get edges drawn (just bolded) - - if (head.token.name === "RootToken") return; - var deprel = head.deprel || ""; - var id = getIndex(token, format), - headId = getIndex(head.token, format), - label = _this2.app.corpus.is_ltr ? token.indices.absolute > head.token.indices.absolute ? "".concat(deprel, "\u22B3") : "\u22B2".concat(deprel) : token.indices.absolute > head.token.indices.absolute ? "\u22B2".concat(deprel) : "".concat(deprel, "\u22B3"); - var presentId = _this2.presentationId[id]; - var presentHeadId = _this2.presentationId[headId]; - var depClasses = utils.validate.depEdgeClasses(sent, token, head); - - if (!(presentHeadId in _this2.connections)) { - _this2.connections[presentHeadId] = []; - } - - _this2.connections[presentHeadId].push(presentId); - - if (depClasses.includes("cycle")) { - _this2.treeBlocked = true; - } - - if (String(id).includes('.') || String(headId).includes('.')) { - depClasses += " dotted"; - } - - eles.push({ - id: "dep_".concat(presentId, "_").concat(presentHeadId), - name: "dependency", - num: ++num, - attr: "deprel", - deprel: deprel, - source: "token-".concat(presentHeadId), - sourceNum: parseInt(presentHeadId), - sourceToken: head.token, - target: "token-".concat(presentId), - targetNum: parseInt(presentId), - targetToken: token, - label: label, - enhanced: i ? true : false, - classes: depClasses - }); - }); - }); - this.length = num; - return eles; - } }]); return Graph; @@ -2169,7 +2160,7 @@ function () { module.exports = Graph; -},{"../utils":31,"./config":6,"./tree.js":8,"./visualiser.js":10,"jquery":392,"notatrix":460,"underscore":499}],8:[function(require,module,exports){ +},{"../utils":31,"./config":6,"./tree.js":8,"./visualiser.js":10,"jquery":392,"notatrix":483,"underscore":412}],8:[function(require,module,exports){ "use strict"; var utils = require("./utils.js"); @@ -2477,7 +2468,9 @@ module.exports = { },{}],10:[function(require,module,exports){ 'use strict'; -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } @@ -2586,7 +2579,7 @@ function drawDeprels() { var heights1 = getHeights(nonEnhDeprels); var heights2 = getHeights(enhancedDeprels); - var heights = _objectSpread({}, heights1, heights2); + var heights = _objectSpread(_objectSpread({}, heights1), heights2); var highest = 1; Object.values(heights1).forEach(function (v) { @@ -2961,9 +2954,7 @@ var utils = require("../utils"); */ -var Chat = -/*#__PURE__*/ -function () { +var Chat = /*#__PURE__*/function () { function Chat(gui) { _classCallCheck(this, Chat); @@ -3094,7 +3085,7 @@ function () { module.exports = Chat; -},{"../utils":31,"jquery":392,"underscore":499}],12:[function(require,module,exports){ +},{"../utils":31,"jquery":392,"underscore":412}],12:[function(require,module,exports){ "use strict"; var _ = require("underscore"); @@ -3120,7 +3111,7 @@ var _gui = { }; module.exports = _gui; -},{"../utils":31,"underscore":499}],13:[function(require,module,exports){ +},{"../utils":31,"underscore":412}],13:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -3133,9 +3124,7 @@ var _ = require("underscore"); var $ = require("jquery"); -var GraphMenu = -/*#__PURE__*/ -function () { +var GraphMenu = /*#__PURE__*/function () { function GraphMenu(gui) { _classCallCheck(this, GraphMenu); @@ -3195,7 +3184,7 @@ function () { module.exports = GraphMenu; -},{"jquery":392,"underscore":499}],14:[function(require,module,exports){ +},{"jquery":392,"underscore":412}],14:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -3241,9 +3230,7 @@ var nx = require("notatrix"); */ -var GUI = -/*#__PURE__*/ -function () { +var GUI = /*#__PURE__*/function () { function GUI(app) { _classCallCheck(this, GUI); @@ -3397,7 +3384,7 @@ function () { module.exports = GUI; -},{"../corpus":5,"../utils":31,"./chat":11,"./config":12,"./graph-menu":13,"./keyboard":15,"./labeler":16,"./menu":17,"./modals":18,"./selfcomplete":21,"./status":22,"./table":23,"./textarea":24,"jquery":392,"notatrix":460,"underscore":499}],15:[function(require,module,exports){ +},{"../corpus":5,"../utils":31,"./chat":11,"./config":12,"./graph-menu":13,"./keyboard":15,"./labeler":16,"./menu":17,"./modals":18,"./selfcomplete":21,"./status":22,"./table":23,"./textarea":24,"jquery":392,"notatrix":483,"underscore":412}],15:[function(require,module,exports){ "use strict"; var _ = require("underscore"); @@ -3983,7 +3970,7 @@ gui.refresh(); */ -},{"jquery":392,"underscore":499}],16:[function(require,module,exports){ +},{"jquery":392,"underscore":412}],16:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -3996,9 +3983,7 @@ var _ = require("underscore"); var $ = require("jquery"); -var Labeler = -/*#__PURE__*/ -function () { +var Labeler = /*#__PURE__*/function () { function Labeler(gui) { _classCallCheck(this, Labeler); @@ -4006,6 +3991,16 @@ function () { } _createClass(Labeler, [{ + key: "current", + get: function get() { + return this.gui.app.corpus.current; + } + }, { + key: "labeler", + get: function get() { + return this.gui.app.corpus._corpus._labeler; + } + }, { key: "bind", value: function bind() { var self = this; @@ -4124,16 +4119,6 @@ function () { this.bind(); } - }, { - key: "current", - get: function get() { - return this.gui.app.corpus.current; - } - }, { - key: "labeler", - get: function get() { - return this.gui.app.corpus._corpus._labeler; - } }]); return Labeler; @@ -4141,7 +4126,7 @@ function () { module.exports = Labeler; -},{"jquery":392,"underscore":499}],17:[function(require,module,exports){ +},{"jquery":392,"underscore":412}],17:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -4156,9 +4141,7 @@ var $ = require("jquery"); var utils = require("../utils"); -var Menu = -/*#__PURE__*/ -function () { +var Menu = /*#__PURE__*/function () { function Menu(gui) { _classCallCheck(this, Menu); @@ -4385,7 +4368,7 @@ function () { module.exports = Menu; -},{"../utils":31,"jquery":392,"underscore":499}],18:[function(require,module,exports){ +},{"../utils":31,"jquery":392,"underscore":412}],18:[function(require,module,exports){ "use strict"; module.exports = function (gui) { @@ -4479,7 +4462,7 @@ module.exports = function (gui) { },{"jquery":392}],21:[function(require,module,exports){ "use strict"; -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } // Note: I had to change the name from [Aa]utocomplete to [Ss]elfcomplete // in order to get this to work at the same time as JQuery-UI @@ -5448,9 +5431,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d var $ = require("jquery"); -var Status = -/*#__PURE__*/ -function () { +var Status = /*#__PURE__*/function () { function Status(gui) { _classCallCheck(this, Status); @@ -5548,9 +5529,7 @@ var _ = require("underscore"); var utils = require("../utils"); -var Table = -/*#__PURE__*/ -function () { +var Table = /*#__PURE__*/function () { function Table(gui) { _classCallCheck(this, Table); @@ -5562,6 +5541,11 @@ function () { } _createClass(Table, [{ + key: "editing", + get: function get() { + return $("#table-data .editing").length; + } + }, { key: "toConllu", value: function toConllu() { var rows = []; @@ -5735,11 +5719,6 @@ function () { this.refresh(); this.bind(); } - }, { - key: "editing", - get: function get() { - return $("#table-data .editing").length; - } }]); return Table; @@ -5747,7 +5726,7 @@ function () { module.exports = Table; -},{"../utils":31,"jquery":392,"underscore":499}],24:[function(require,module,exports){ +},{"../utils":31,"jquery":392,"underscore":412}],24:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -5766,9 +5745,7 @@ var nx = require("notatrix"); var utils = require("../utils"); -var Textarea = -/*#__PURE__*/ -function () { +var Textarea = /*#__PURE__*/function () { function Textarea(gui) { _classCallCheck(this, Textarea); @@ -5834,7 +5811,7 @@ function () { module.exports = Textarea; -},{"../utils":31,"./config":12,"jquery":392,"notatrix":460,"underscore":499}],25:[function(require,module,exports){ +},{"../utils":31,"./config":12,"jquery":392,"notatrix":483,"underscore":412}],25:[function(require,module,exports){ "use strict"; require("babel-polyfill"); @@ -5871,9 +5848,7 @@ var utils = require("./utils"); */ -var Server = -/*#__PURE__*/ -function () { +var Server = /*#__PURE__*/function () { function Server(app) { _classCallCheck(this, Server); @@ -6017,7 +5992,7 @@ function () { module.exports = Server; -},{"./utils":31,"jquery":392,"underscore":499}],27:[function(require,module,exports){ +},{"./utils":31,"jquery":392,"underscore":412}],27:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -6042,9 +6017,7 @@ var _Socket = require("socket.io-client"); */ -var Socket = -/*#__PURE__*/ -function () { +var Socket = /*#__PURE__*/function () { function Socket(app) { _classCallCheck(this, Socket); @@ -6190,7 +6163,7 @@ function () { module.exports = Socket; -},{"./utils":31,"socket.io-client":485,"underscore":499}],28:[function(require,module,exports){ +},{"./utils":31,"socket.io-client":398,"underscore":412}],28:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -6203,9 +6176,7 @@ var Corpus = require("./corpus"); var utils = require("./utils"); -var Stack = -/*#__PURE__*/ -function () { +var Stack = /*#__PURE__*/function () { function Stack() { _classCallCheck(this, Stack); @@ -6213,6 +6184,11 @@ function () { } _createClass(Stack, [{ + key: "length", + get: function get() { + return this._items.length; + } + }, { key: "push", value: function push(item) { this._items.push(item); @@ -6232,19 +6208,12 @@ function () { value: function clear() { this._items = []; } - }, { - key: "length", - get: function get() { - return this._items.length; - } }]); return Stack; }(); -var UndoManager = -/*#__PURE__*/ -function () { +var UndoManager = /*#__PURE__*/function () { function UndoManager(app) { _classCallCheck(this, UndoManager); @@ -6542,7 +6511,7 @@ module.exports = { svg: svg }; -},{"./funcs":30,"canvas2svg":45,"jquery":392,"underscore":499}],30:[function(require,module,exports){ +},{"./funcs":30,"canvas2svg":45,"jquery":392,"underscore":412}],30:[function(require,module,exports){ "use strict"; var _ = require("underscore"); @@ -6606,7 +6575,7 @@ module.exports = { } }; -},{"jquery":392,"underscore":499,"uuid/v4":502}],31:[function(require,module,exports){ +},{"jquery":392,"underscore":412,"uuid/v4":415}],31:[function(require,module,exports){ "use strict"; var _ = require("underscore"); @@ -6619,7 +6588,7 @@ module.exports = _.extend(funcs, { validate: require("./validate") }); -},{"./export":29,"./funcs":30,"./local-storage":32,"./validate":33,"underscore":499}],32:[function(require,module,exports){ +},{"./export":29,"./funcs":30,"./local-storage":32,"./validate":33,"underscore":412}],32:[function(require,module,exports){ "use strict"; var funcs = require("./funcs"); @@ -7058,7 +7027,7 @@ module.exports = { attrValue: attrValue }; -},{"jquery":392,"underscore":499}],34:[function(require,module,exports){ +},{"jquery":392,"underscore":412}],34:[function(require,module,exports){ module.exports = after; function after(count, callback, err_cb) { @@ -16194,7 +16163,7 @@ var Base = $Number; var proto = $Number.prototype; // Opera ~12 has broken Object#toString var BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER; -var TRIM = 'trim' in String.prototype; // 7.1.3 ToNumber(argument) +var TRIM = ('trim' in String.prototype); // 7.1.3 ToNumber(argument) var toNumber = function (argument) { var it = toPrimitive(argument, false); @@ -20746,7 +20715,7 @@ Socket.prototype.filterUpgrades = function (upgrades) { return filteredUpgrades; }; -},{"./transport":375,"./transports/index":376,"component-emitter":47,"debug":382,"engine.io-parser":384,"indexof":391,"parseqs":481,"parseuri":482}],375:[function(require,module,exports){ +},{"./transport":375,"./transports/index":376,"component-emitter":47,"debug":382,"engine.io-parser":384,"indexof":391,"parseqs":394,"parseuri":395}],375:[function(require,module,exports){ /** * Module dependencies. */ @@ -21867,7 +21836,7 @@ Polling.prototype.uri = function () { return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query; }; -},{"../transport":375,"component-inherit":48,"debug":382,"engine.io-parser":384,"parseqs":481,"xmlhttprequest-ssl":381,"yeast":503}],380:[function(require,module,exports){ +},{"../transport":375,"component-inherit":48,"debug":382,"engine.io-parser":384,"parseqs":394,"xmlhttprequest-ssl":381,"yeast":416}],380:[function(require,module,exports){ (function (Buffer){ /** * Module dependencies. @@ -22165,7 +22134,7 @@ WS.prototype.check = function () { }).call(this,require("buffer").Buffer) -},{"../transport":375,"buffer":44,"component-inherit":48,"debug":382,"engine.io-parser":384,"parseqs":481,"ws":41,"yeast":503}],381:[function(require,module,exports){ +},{"../transport":375,"buffer":44,"component-inherit":48,"debug":382,"engine.io-parser":384,"parseqs":394,"ws":41,"yeast":416}],381:[function(require,module,exports){ // browser shim for xmlhttprequest module var hasCORS = require('has-cors'); @@ -22367,7 +22336,7 @@ function localstorage() { }).call(this,require('_process')) -},{"./debug":383,"_process":484}],383:[function(require,module,exports){ +},{"./debug":383,"_process":397}],383:[function(require,module,exports){ /** * This is the common logic for both the Node.js and web browser * implementations of `debug()`. @@ -33308,10064 +33277,12503 @@ function plural(ms, n, name) { } },{}],394:[function(require,module,exports){ -module.exports = {}; +/** + * Compiles a querystring + * Returns string representation of the object + * + * @param {Object} + * @api private + */ +exports.encode = function (obj) { + var str = ''; + + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + if (str.length) str += '&'; + str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]); + } + } + + return str; +}; +/** + * Parses a simple querystring into an object + * + * @param {String} qs + * @api private + */ + + +exports.decode = function (qs) { + var qry = {}; + var pairs = qs.split('&'); + + for (var i = 0, l = pairs.length; i < l; i++) { + var pair = pairs[i].split('='); + qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); + } + + return qry; +}; },{}],395:[function(require,module,exports){ -module.exports = { - 0: `[root [nsubj I] have [obj [amod [advmod too] many] commitments] [advmod right now] [punct .]]` +/** + * Parses an URI + * + * @author Steven Levithan (MIT license) + * @api private + */ +var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; +var parts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor']; + +module.exports = function parseuri(str) { + var src = str, + b = str.indexOf('['), + e = str.indexOf(']'); + + if (b != -1 && e != -1) { + str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length); + } + + var m = re.exec(str || ''), + uri = {}, + i = 14; + + while (i--) { + uri[parts[i]] = m[i] || ''; + } + + if (b != -1 && e != -1) { + uri.source = src; + uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':'); + uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':'); + uri.ipv6uri = true; + } + + return uri; }; },{}],396:[function(require,module,exports){ -module.exports = { - equals: `# sent_id = mst-0001 -# text = Peşreve başlamalı. -"" - "peşrev" Noun @obl #1->2 -"" - "başla" Verb SpaceAfter=No @root #2->0 -"<.>" - "." Punc @punct #3->2`, - x_and_u_postag: `# text = Ñe'ẽnguéra iñe'ẽrapoambuéva (lenguas de flexión), umi ñe'ẽte indoeuropeo-icha. -# text[spa] = Las lenguas de flexión, aquellas lenguas como indoeuropeas. -# labels = -"<Ñeʼẽnguéra>" - "ñeʼẽ" n @nsubj #1-> - "kuéra" det pl @det #2->1 -"" - "iñeʼẽrapoambuéva" adj @amod #3->1 -"<(>" - "(" lpar @punct #4->5 -"" - "lenguas" barb @appos #5->1 -"" - "de" barb @foreign #6->7 -"" - "flexión" barb @foreign #7->5 -"<)>" - ")" rpar @punct #8->5 -"<,>" - "," cm @punct #9-> -"" - "umi" adj dem pl @amod #10->11 -"<ñeʼẽte>" - "ñeʼẽ" n @obl #11-> - "te" post @case #12->11 -"" - "indoeuropeo" barb @amod #13->11 - "icha" comp @dep #14->13 -"<.>" - "." sent @punct #15->`, - nested: `# sent_id = wikipedia:Poyvi_Paraguái:11 -# text = Poyvi peteĩha ñane retãmegua niko ojepuru’ypýkuri 15 jasypo guive 16 jasypoteĩ meve ary 1811-pe. -# text[spa] = Bandera uno nosotros de-de _ él-se-utilizó-_ 15 maio desde 16 junio hasta año 1811-en. -"" - "poyvi" n -"" - "pete" n incp - "ĩ" v tv pres - "ha" subs - "peteĩha" num -"<ñane>" - "ñandé" prn pers p1 incl pl -"" - "*retãmegua" -"" - "*niko" -"" - "*ojepuruʼypýkuri" -"<15>" - "15" num @amod -"" - "ja" n incp - "sy" n incp - "po" n - "ja" n incp - "sy" n incp - "po" v iv pres - "ja" n incp - "sy" n incp - "po" v tv pres - "ja" prn p1 pl - "sy" n incp - "po" n - "ja" prn p1 pl - "sy" n incp - "po" v iv pres - "ja" prn p1 pl - "sy" n incp - "po" v tv pres - "jasy" n incp - "po" n - "jasy" n incp - "po" v iv pres - "jasy" n incp - "po" v tv pres - "jasypo" n -"" - "guive" post @case -"<16>" - "16" num @amod -"" - "jasypoteĩ" n -"" - "peve" post @case -"" - "ary" n -"<1811-pe>" - "1811" num - "pe" post @case`, +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; - /*nested_2: `"" - "A" #1-> - "B" #2-> - "" - "C" #3-> - "D" #4-> - "E" #5-> - "" - "F" #6-> - "" - "H" #7->`,*/ - kdt_tagged_1: `# https://github.com/apertium/apertium-kaz/blob/master/texts/kdt.tagged.txt -"<Өскеменнің>" - "Өскемен" np top gen @nmod:poss #1->3 -"<ар>" - "ар" adj @amod #2->3 -"<жағында>" - "жақ" n px3sp loc @conj #3->7 -"<,>" - "," cm @punct #4->7 -"<Бұқтырманың>" - "Бұқтырма" np top gen @nmod:poss #5->7 -"<оң>" - "оң" adj @amod #6->7 -"<жағында>" - "жақ" n px3sp loc @nmod #7->11 -"<әлемге>" - "әлем" n dat @nmod #8->9 -"<аян>" - "аян" adj @acl #9->10 -"<Алтай>" - "Алтай" np top nom @nsubj #10->11 -"<бар>" - "бар" adj @root #11->0 - "е" cop aor p3 sg @cop #12->11 -"<.>" - "." sent @punct #13->11`, - kdt_tagged_2: `# https://github.com/apertium/apertium-kaz/blob/master/texts/kdt.tagged.txt -"<Аттан>" - "аттан" v iv imp p2 sg @root #1->0 -"" - "!" sent @punct #2->1`, - kdt_tagged_3: `# https://github.com/apertium/apertium-kaz/blob/master/texts/kdt.tagged.txt -"<Манағы>" - "манағы" det dem @det #1->3 -"<ала>" - "ала" adj @amod #2->3 -"<атты>" - "атты" adj subst nom @nsubj #3->4 -"<кім>" - "кім" prn itg nom @root #4->0 - "е" cop aor p3 sg @cop #5->4 -"" - "?" sent @punct #6->4`, - 0: `"<Патшамен>" - "патша" n ins @nmod #1->3 -"<соғыс>" - "соғыс" n nom @obj #2->3 -"<ашқанда>" - "аш" v tv ger_past loc @advcl #3->12 -"<,>" - "," cm @punct #4->12 -"<ел-жұрт>" - "ел-жұрт" n nom @conj #5->7 -"<,>" - "," cm @punct #6->7 -"<отанымды>" - "отан" n px1sg acc @obj #7->8 -"<қорғауға>" - "қорға" v tv ger dat @advcl #8->12 -"<,>" - "," cm @punct #9->12 -"<біз>" - "біз" prn pers p1 pl nom @nsubj #10->12 -"<соғысқа>" - "соғыс" n dat @nmod #11->12 -"<бардық>" - "бар" v iv ifi p1 pl @root #12->0 -"<.>" - "." sent @punct #13->12`, - 1: `# text = He boued e tebr Mona er gegin. -# text[eng] = Mona eats her food here in the kitchen. -# labels = press_1986 ch_syntax p_197 to_check -"" - "he" det pos f sp @det #1->2 -"" - "boued" n m sg @obj #2->4 -"" - "e" vpart obj @aux #3->4 -"" - "debriñ" vblex pri p3 sg @root #4->0 -"" - "Mona" np ant f sg @nsubj #5->4 -"" - "e" pr @case #6->8 - "an" det def sp @det #7->8 -"" - "kegin" n f sg @obl #8->4 -"<.>" - "." sent @punct #9->4`, - 2: `# text = He boued e tebr Mona er gegin. -# text[eng] = Mona eats her food here in the kitchen. -# labels = press_1986 ch_syntax p_197 to_check -"" - "he" det pos f sp @det #1->2 -"" - "boued" n m sg @obj #2->4 -"" - "e" vpart obj @aux #3->4 -"" - "debriñ" vblex pri p3 sg @root #4->0 -"" - "Mona" np ant f sg @nsubj #5->4 -"" - "e" pr @case #6->8 - "an" det def sp @det #7->8 -"" - "kegin" n f sg @obl #8->4 - "kegin" n f pl @obl #9-> -"<.>" - "." sent @punct #10->4`, - // note: changed line `"kegin" n f pl @obl #8->4` - with_semicolumn: ` -"" - "siedzieć" vblex impf past p1 m pl -"" - "w" pr -"" -; "mój" prn pos mi sg loc -"" - "pokój" n mi sg loc -"<,>" - "," cm -"" - "palić" vblex impf pprs adv -"" - "i" cnjcoo -"" - "rozmawiać" vblex impf pprs adv -"" - "o" pr -"" - "to" prn dem mi sg loc -"<,>" - "," cm -"" - "jak" rel adv -"" - "marny" adj sint mp pl nom -"" - "być" vbser pres p1 pl -"<,>" - "," cm -"" - "marny" adj sint mp pl nom -"" - "z" pr -"" - "lekarski" adj mi sg gen -"" - "punkt" n mi sg gen -"" -; "widzieć" vblex impf ger nt sg gen -"" - "chcieć" vblex impf pres p1 sg -"" - "powiedzieć" vblex perf inf -"<,>" - "," cm -"" - "naturalnie" adv sint -"<.>" - "." sent`, - simple: `"<Патшамен>" - "патша" n ins @nmod #1->3 -"<соғыс>" - "соғыс" n nom @obj #2->3 -"<ашқанда>" - "аш" v tv ger_past loc @advcl #3->12 -"<,>" - "," cm @punct #4->12 -"<ел-жұрт>" - "ел-жұрт" n nom @conj #5->7 -"<,>" - "," cm @punct #6->7 -"<отанымды>" - "отан" n px1sg acc @obj #7->8 -"<қорғауға>" - "қорға" v tv ger dat @advcl #8->12 -"<,>" - "," cm @punct #9->12 -"<біз>" - "біз" prn pers p1 pl nom @nsubj #10->12 -"<соғысқа>" - "соғыс" n dat @nmod #11->12 -"<бардық>" - "бар" v iv ifi p1 pl @root #12->0 -"<.>" - "." sent @punct #13->12`, - simple_with_comments: `# comment #1 -# comment #2 -"<Патшамен>" - "патша" n ins @nmod #1->3 -"<соғыс>" - "соғыс" n nom @obj #2->3 -"<ашқанда>" - "аш" v tv ger_past loc @advcl #3->12 -"<,>" - "," cm @punct #4->12 -"<ел-жұрт>" - "ел-жұрт" n nom @conj #5->7 -"<,>" - "," cm @punct #6->7 -"<отанымды>" - "отан" n px1sg acc @obj #7->8 -"<қорғауға>" - "қорға" v tv ger dat @advcl #8->12 -"<,>" - "," cm @punct #9->12 -"<біз>" - "біз" prn pers p1 pl nom @nsubj #10->12 -"<соғысқа>" - "соғыс" n dat @nmod #11->12 -"<бардық>" - "бар" v iv ifi p1 pl @root #12->0 -"<.>" - "." sent @punct #13->12`, - with_spans: `# text = He boued e tebr Mona er gegin. -# text[eng] = Mona eats her food here in the kitchen. -# labels = press_1986 ch_syntax p_197 to_check -"" - "he" det pos f sp @det #1->2 -"" - "boued" n m sg @obj #2->4 -"" - "e" vpart obj @aux #3->4 -"" - "debriñ" vblex pri p3 sg @root #4->0 -"" - "Mona" np ant f sg @nsubj #5->4 -"" - "e" pr @case #6->8 - "an" det def sp @det #7->8 -"" - "kegin" n f sg @obl #8->4 -"<.>" - "." sent @punct #9->4`, - apertium_kaz_1: `# https://bpaste.net/show/be7c03e6213e -"<Чау>" - "*Чау" -"<->" - "х" guio - "-" guio -"<чау>" - "*чау" -"<шығу>" - "шығу" n attr - "шық" v tv ger nom - "шық" v iv ger nom - "шығу" n nom -; "шығу" n nom -; "е" cop aor p3 pl REMOVE:294 -; "шығу" n nom -; "е" cop aor p3 sg REMOVE:294 -; "шық" vaux ger nom REMOVE:766 -"<тегінен>" - "тек" n px3sp abl -; "тек" n px3sp abl -; "е" cop aor p3 pl REMOVE:294 -; "тек" n px3sp abl -; "е" cop aor p3 sg REMOVE:294 -"<шпицтер>" - "*шпицтер" -"<тобына>" - "топ" n px3sp dat -"<жатады>" - "жат" v iv aor p3 sg -; "жат" vaux aor p3 pl REMOVE:766 -; "жат" vaux aor p3 sg REMOVE:766 -; "жат" v iv aor p3 pl REMOVE:846 -"<.>" - "." sent`, - apertium_kaz_2: `# https://bpaste.net/show/be7c03e6213e -"<Қанында>" - "қан" n px3sp loc -; "қан" n px3sp loc -; "е" cop aor p3 pl REMOVE:294 -; "қан" n px3sp loc -; "е" cop aor p3 sg REMOVE:294 -"<тибет>" - "*тибет" -"<итінің>" - "ит" n px3sp gen -"<(>" - "(" lpar -"<мастиф>" - "*мастиф" -"<)>" - ")" rpar -"<қаны>" - "қан" n px3sp nom -; "қан" n px3sp nom -; "е" cop aor p3 pl REMOVE:294 -; "қан" n px3sp nom -; "е" cop aor p3 sg REMOVE:294 -"<бар>" - "бар" adj SELECT:1118 - "бар" adj subst nom SELECT:1118 - "е" cop aor p3 sg - "бар" adj subst nom SELECT:1118 - "бар" adj SELECT:1118 - "е" cop aor p3 sg -; "бар" n attr REMOVE:567 -; "бар" adj -; "е" cop aor p3 pl REMOVE:853 -; "бар" n nom -; "е" cop aor p3 pl REMOVE:853 -; "бар" adj subst nom -; "е" cop aor p3 pl REMOVE:853 -; "бар" n nom SELECT:1118 -; "бар" det qnt SELECT:1118 -; "бар" v iv imp p2 sg SELECT:1118 -; "бар" n nom SELECT:1118 -; "е" cop aor p3 sg -"<деген>" - "де" v tv gpr_past SELECT:813 - "де" v tv gpr_past subst nom SELECT:813 -; "де" v tv ger_past nom SELECT:813 -; "де" v tv past p3 pl SELECT:813 -; "де" v tv past p3 sg SELECT:813 -"<тұжырым>" - "тұжырым" n nom - "тұжырым" n attr -; "тұжырым" n nom -; "е" cop aor p3 pl REMOVE:294 -; "тұжырым" n nom -; "е" cop aor p3 sg REMOVE:294 -"<бар>" - "бар" adj - "бар" n nom - "бар" adj - "е" cop aor p3 sg - "бар" adj subst nom - "е" cop aor p3 sg - "бар" adj subst nom - "бар" v iv imp p2 sg - "бар" n nom - "е" cop aor p3 sg -; "бар" det qnt REMOVE:551 -; "бар" n attr REMOVE:567 -; "бар" adj subst nom -; "е" cop aor p3 pl REMOVE:853 -; "бар" adj -; "е" cop aor p3 pl REMOVE:853 -; "бар" n nom -; "е" cop aor p3 pl REMOVE:853 -"<.>" - "." sent`, - ud_annotatrix_issue_397: `# sent_id = Not_eating_larvae:2 -# text = Гым нэмыӄэй нрзб это ны нырычваԓыӈыттыӄэнат нэмыӄэй гым нывинрэтигым нырычвантойгым. -# text[phon] = ɣəm neməqej нрзб это nə nərəswaɬəŋəttəqenat neməqej ɣəm nəwinretiɣəm nərəswantojɣəm -# text[rus] = Собирали личинок, я тоже помогала, доставала личинок. -# text[eng] = We were gathering the grubs, I also helped, I was extracting the grubs. -# labels = incomplete -"<Гым>" - "гым" PRON Number=Sing Person=1 PronType=Pers Gloss=я @nsubj #1->6 -"<нэмыӄэй>" - "нэмыӄэй" ADV Gloss=тоже #2-> -"<нрзб>" - "нрзб" X Gloss= @discourse #3->6 -"<это>" - "это" PART Gloss= @discourse #4->6 -"<ны>" - "ны" X Gloss=FST @reparandum #5->6 -"<нырычваԓыӈыттыӄэнат>" - "нырычваԓыӈыттыӄэнат" VERB Gloss=ST-личинка-CATCH-ST.3SG-PL @root #6->0 -"<нэмыӄэй>" - "нэмыӄэй" ADV Gloss=тоже @advmod #7->9 -"<гым>" - "гым" PRON Number=Sing Person=1 PronType=Pers Gloss=я @nsubj #8->9 -"<нывинрэтигым>" - "винрэтык" VERB Gloss=ST-помогать-NP.1SG @parataxis #9->6 -"<нырычвантойгым>" - "нырычвантойгым" VERB Gloss=ST-личинка-вынимать-NP.1SG @parataxis #10->6 -"<рычва>" - "рычва" NOUN Gloss=личинка @obj #11->10 -"<.>" - "." PUNCT @punct #12->6` + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } // if the path is allowed to go above the root, restore leading ..s + + + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} // Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. + + +var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + +var splitPath = function (filename) { + return splitPathRe.exec(filename).slice(1); +}; // path.resolve([from ...], to) +// posix version + + +exports.resolve = function () { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : process.cwd(); // Skip empty and invalid entries + + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + + + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) { + return !!p; + }), !resolvedAbsolute).join('/'); + return (resolvedAbsolute ? '/' : '') + resolvedPath || '.'; +}; // path.normalize(path) +// posix version + + +exports.normalize = function (path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; // Normalize the path + + path = normalizeArray(filter(path.split('/'), function (p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; // posix version + + +exports.isAbsolute = function (path) { + return path.charAt(0) === '/'; +}; // posix version + + +exports.join = function () { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function (p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + + return p; + }).join('/')); +}; // path.relative(from, to) +// posix version + + +exports.relative = function (from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join('/'); }; -},{}],397:[function(require,module,exports){ -module.exports = { - turkic: `# sent_id = mst-0008 -# text = Ercan Tezer, iç pazarda bu yıl seksen bin otomobil ve toplam yuzotuz bin araç satılmasının beklendiğini kaydederek, " onalti yıl geriden gidiyoruz " dedi. -1 Ercan Ercan PROPN Prop Case=Nom|Number=Sing|Person=3 26 nsubj _ _ -2 Tezer Tezer PROPN Prop Case=Nom|Number=Sing|Person=3 1 flat _ SpaceAfter=No -3 , , PUNCT Punc _ 26 punct _ _ -4 iç iç ADJ Adj _ 16 amod _ _ -5 pazarda pazar NOUN Noun Case=Loc|Number=Sing|Person=3 4 compound _ _ -6 bu bu DET Det _ 7 det _ _ -7 yıl yıl NOUN Noun Case=Nom|Number=Sing|Person=3 16 obl _ _ -8 seksen seksen NUM ANum NumType=Card 10 nummod _ _ -9 bin bin NUM ANum NumType=Card 8 flat _ _ -10 otomobil otomobil NOUN Noun Case=Nom|Number=Sing|Person=3 16 nsubj _ _ -11 ve ve CCONJ Conj _ 15 cc _ _ -12 toplam toplam NOUN Noun Case=Nom|Number=Sing|Person=3 13 obl _ _ -13 yuzotuz yuzotuz NUM ANum NumType=Card 15 nummod _ _ -14 bin bin NUM ANum NumType=Card 13 flat _ _ -15 araç araç NOUN Noun Case=Nom|Number=Sing|Person=3 10 conj _ _ -16 satılmasının sat VERB Verb Aspect=Perf|Case=Gen|Mood=Ind|Number[psor]=Sing|Person[psor]=3|Polarity=Pos|Tense=Pres|VerbForm=Vnoun|Voice=Pass 17 nmod:poss _ _ -17 beklendiğini bekle VERB Verb Aspect=Perf|Case=Acc|Mood=Ind|Number[psor]=Sing|Person[psor]=3|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Pass 18 obj _ _ -18 kaydederek kaydet VERB Verb Aspect=Perf|Mood=Ind|Polarity=Pos|Tense=Pres|VerbForm=Conv 26 nmod _ SpaceAfter=No -19 , , PUNCT Punc _ 18 punct _ _ -20 " " PUNCT Punc _ 24 punct _ _ -21 onalti onalti NUM ANum NumType=Card 22 nummod _ _ -22 yıl yıl NOUN Noun Case=Nom|Number=Sing|Person=3 23 nmod _ _ -23 geriden geri ADJ NAdj Case=Abl|Number=Sing|Person=3 24 amod _ _ -24 gidiyoruz git VERB Verb Aspect=Prog|Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Polite=Infm|Tense=Pres 26 obj _ _ -25 " " PUNCT Punc _ 24 punct _ _ -26 dedi de VERB Verb Aspect=Perf|Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Tense=Past 0 root _ SpaceAfter=No -27 . . PUNCT Punc _ 26 punct _ _`, - labels_1: `# text = "This is a simple sentence." -# labels = label1 another_label a-third-label -1 This This _ _ _ _ _ _ _ -2 is is _ _ _ _ _ _ _ -3 a a _ _ _ _ _ _ _ -4 simple simple _ _ _ _ _ _ _ -5 sentence sentence _ _ _ _ _ _ _ -6 . . PUNCT PUNCT _ _ _ _ _`, - labels_2: `# labels = one_label second third-label -# labels = row_2 again:here this, that -1 This This _ _ _ _ _ _ _`, - labels_3: `# tags = this-is-a-tag test testing test -1 This This _ _ _ _ _ _ _`, - labels_4: `# labels = new label1 one_label this-is-a-tag -1 Hullo hello _ _ _ _ _ _ _`, - nested_2: `# text = ab cde f h -1-2 ab _ _ _ _ _ _ _ _ -1 a A _ _ _ _ _ _ _ -2 b B _ _ _ _ _ _ _ -3-5 cde _ _ _ _ _ _ _ _ -3 c C _ _ _ _ _ _ _ -4 d D _ _ _ _ _ _ _ -5 e E _ _ _ _ _ _ _ -6 f F _ _ _ _ _ _ _ -6.1 silent_g G _ _ _ _ _ _ _ -7 h H _ _ _ _ _ _ _`, - t: `# testing :) -1-3 He _ _ _ _ _ _ _ _ -1 boued boued n _ m|sg 4 obj _ _ -2 e e vpart _ obj 4 aux _ _ -3 tebr debriñ vblex _ pri|p3|sg 0 root _ _ -4 doob doobie np _ _ 3 _ _ _ -5 Mona Mona np _ ant|f|sg 4 nsubj _ _`, - empty: `1 Sue Sue _ _ _ _ _ _ _ -2 likes like _ _ _ _ _ _ _ -3 coffee coffee _ _ _ _ _ _ _ -4 and and _ _ _ _ _ _ _ -5 Bill Bill _ _ _ _ _ _ _ -5.1 likes like _ _ _ _ _ _ _ -6 tea tea _ _ _ _ _ _ _`, - 0: `# sent_id = _ -# text = this is a test -1 this _ _ _ _ _ _ _ _ -2 is _ _ _ _ _ _ _ _ -3 a _ _ _ _ _ _ _ _ -4 test _ _ _ _ _ _ _ _`, - 1: `1 this _ _ _ _ _ _ _ _ -2 is _ _ _ _ _ _ _ _ -3 a _ _ _ _ _ _ _ _ -4 test _ _ _ _ _ _ _ _`, - cat_ancora: `# url = https://raw.githubusercontent.com/UniversalDependencies/UD_Catalan-AnCora/dev/ca_ancora-ud-test.conllu -# sent_id = test-s1 -# text = El darrer número de l'Observatori del Mercat de Treball d'Osona inclou un informe especial sobre la contractació a través de les empreses de treball temporal, les ETT. -# orig_file_sentence 001#1 -1 El el DET DET Definite=Def|Gender=Masc|Number=Sing|PronType=Art 3 det _ _ -2 darrer darrer ADJ ADJ Gender=Masc|Number=Sing|NumType=Ord 3 amod _ _ -3 número número NOUN NOUN Gender=Masc|Number=Sing 13 nsubj _ _ -4 de de ADP ADP AdpType=Prep 6 case _ _ -5 l' el DET DET Definite=Def|Number=Sing|PronType=Art 6 det _ SpaceAfter=No -6 Observatori Observatori PROPN PROPN _ 3 nmod _ MWE=Observatori_del_Mercat_de_Treball_d'_Osona|MWEPOS=PROPN -7 del del ADP ADP AdpType=Preppron|Gender=Masc|Number=Sing 8 case _ _ -8 Mercat Mercat PROPN PROPN _ 6 flat _ _ -9 de de ADP ADP AdpType=Prep 10 case _ _ -10 Treball Treball PROPN PROPN _ 6 flat _ _ -11 d' d' ADP ADP AdpType=Prep 12 case _ SpaceAfter=No -12 Osona Osona PROPN PROPN _ 6 flat _ _ -13 inclou incloure VERB VERB Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 0 root _ _ -14 un un NUM NUM Gender=Masc|Number=Sing|NumType=Card 15 nummod _ _ -15 informe informe NOUN NOUN Gender=Masc|Number=Sing 13 obj _ _ -16 especial especial ADJ ADJ Number=Sing 15 amod _ _ -17 sobre sobre ADP ADP AdpType=Prep 19 case _ _ -18 la el DET DET Definite=Def|Gender=Fem|Number=Sing|PronType=Art 19 det _ _ -19 contractació contractació NOUN NOUN Gender=Fem|Number=Sing 15 nmod _ _ -20 a a ADP ADP AdpType=Prep 24 case _ MWE=a_través_de|MWEPOS=ADP -21 través través NOUN NOUN _ 20 fixed _ _ -22 de de ADP ADP AdpType=Prep 20 fixed _ _ -23 les el DET DET Definite=Def|Gender=Fem|Number=Plur|PronType=Art 24 det _ _ -24 empreses empresa NOUN NOUN Gender=Fem|Number=Plur 19 nmod _ _ -25 de de ADP ADP AdpType=Prep 26 case _ _ -26 treball treball NOUN NOUN Gender=Masc|Number=Sing 24 nmod _ _ -27 temporal temporal ADJ ADJ Number=Sing 26 amod _ SpaceAfter=No -28 , , PUNCT PUNCT PunctType=Comm 30 punct _ _ -29 les el DET DET Definite=Def|Gender=Fem|Number=Plur|PronType=Art 30 det _ _ -30 ETT ETT PROPN PROPN _ 24 appos _ SpaceAfter=No -31 . . PUNCT PUNCT PunctType=Peri 13 punct _ _`, - with_tabs: `# sent_id = chapID01:paragID1:sentID1 -# text = Кечаень сыргозтизь налкставтыця карвот . -# text[eng] = Kechai was awoken by annoying flies. -1 Кечаень Кечай N N Sem/Ant_Mal|Prop|SP|Gen|Indef 2 obj _ Кечаень -2 сыргозтизь сыргозтемс V V TV|Ind|Prt1|ScPl3|OcSg3 0 root _ сыргозтизь -3 налкставтыця налкставтомс PRC Prc V|TV|PrcPrsL|Sg|Nom|Indef 4 amod _ налкставтыця -4 карвот карво N N Sem/Ani|N|Pl|Nom|Indef 2 nsubj _ карвот -5 . . CLB CLB CLB 2 punct _ .`, - without_tabs: `# sent_id = chapID01:paragID1:sentID1 -# text = Кечаень сыргозтизь налкставтыця карвот . -# text[eng] = Kechai was awoken by annoying flies. -1 Кечаень Кечай N N Sem/Ant_Mal|Prop|SP|Gen|Indef 2 obj _ Кечаень -2 сыргозтизь сыргозтемс V V TV|Ind|Prt1|ScPl3|OcSg3 0 root _ сыргозтизь -3 налкставтыця налкставтомс PRC Prc V|TV|PrcPrsL|Sg|Nom|Indef 4 amod _ налкставтыця -4 карвот карво N N Sem/Ani|N|Pl|Nom|Indef 2 nsubj _ карвот -5 . . CLB CLB CLB 2 punct _ .`, - from_cg3_with_semicolumn: `1 Siedzieliśmy siedzieć vblex _ impf|past|p1|m|pl _ _ _ _ -2 w w pr _ _ _ _ _ _ -3 moim mój prn _ pos|mi|sg|loc _ _ _ _ -4 pokoju pokój n _ mi|sg|loc _ _ _ _ -5 , , cm _ _ _ _ _ _ -6 paląc palić vblex _ impf|pprs|adv _ _ _ _ -7 i i cnjcoo _ _ _ _ _ _ -8 rozmawiając rozmawiać vblex _ impf|pprs|adv _ _ _ _ -9 o o pr _ _ _ _ _ _ -10 tem to prn _ dem|mi|sg|loc _ _ _ _ -11 , , cm _ _ _ _ _ _ -12 jak jak rel _ adv _ _ _ _ -13 marni marny adj _ sint|mp|pl|nom _ _ _ _ -14 jesteśmy być vbser _ pres|p1|pl _ _ _ _ -15 , , cm _ _ _ _ _ _ -16 marni marny adj _ sint|mp|pl|nom _ _ _ _ -17 z z pr _ _ _ _ _ _ -18 lekarskiego lekarski adj _ mi|sg|gen _ _ _ _ -19 punktu punkt n _ mi|sg|gen _ _ _ _ -20 widzenia widzieć vblex _ impf|ger|nt|sg|gen _ _ _ _ -21 chcę chcieć vblex _ impf|pres|p1|sg _ _ _ _ -22 powiedzieć powiedzieć vblex _ perf|inf _ _ _ _ -23 , , cm _ _ _ _ _ _ -24 naturalnie naturalnie adv _ sint _ _ _ _ -25 . . sent _ _ _ _ _ _`, - from_cg3_simple: `1 Патшамен патша n _ ins 3 nmod _ _ -2 соғыс соғыс n _ nom 3 obj _ _ -3 ашқанда аш v _ tv|ger_past|loc 12 advcl _ _ -4 , , cm _ _ 12 punct _ _ -5 ел-жұрт ел-жұрт n _ nom 7 conj _ _ -6 , , cm _ _ 7 punct _ _ -7 отанымды отан n _ px1sg|acc 8 obj _ _ -8 қорғауға қорға v _ tv|ger|dat 12 advcl _ _ -9 , , cm _ _ 12 punct _ _ -10 біз біз prn _ pers|p1|pl|nom 12 nsubj _ _ -11 соғысқа соғыс n _ dat 12 nmod _ _ -12 бардық бар v _ iv|ifi|p1|pl 0 root _ _ -13 . . sent _ _ 12 punct _ _ -`, - from_cg3_with_spans: `# text = He boued e tebr Mona er gegin. -# text[eng] = Mona eats her food here in the kitchen. -# labels = press_1986 ch_syntax p_197 to_check -1 He he det _ pos|f|sp 2 det _ _ -2 boued boued n _ m|sg 4 obj _ _ -3 e e vpart _ obj 4 aux _ _ -4 tebr debriñ vblex _ pri|p3|sg 0 root _ _ -5 Mona Mona np _ ant|f|sg 4 nsubj _ _ -6-7 er _ _ _ _ _ _ _ _ -6 _ e pr _ _ 8 case _ _ -7 _ an det _ def|sp 8 det _ _ -8 gegin kegin n _ f|sg 4 obl _ _ -9 . . sent _ _ 4 punct _ _ -`, - rueter_long: `# sent_id = BryzhinskijMixail_Kirdazht_manu:3859 -# text = Но зярс валгсь , зярс панжтнесь ды мекев парсте пекстнесь веле кенкшенть , кужо кенкшенть , куро кенкшенть ды эсест юртс совамо кенкшенть эрьва лисицянтень совицянтень те свал тейнема , кенкштне свал пекстазь улезт ; панжтнесызь келес ансяк валске марто ды чопоньбелев — ракшань ливтема совавтома шкане , куймесь таго стакалгадсь . -# text_en = But by the time he got down the hill, opened and closed the village gate, the lane gate, the cluster gate and the one to their own home (something everyone coming or going had to do, so the gates would always be closed; they were only opened in the morning and at dusk for taking out and letting in the cattle), the wicker of clay had grown heavy again. -# text_fi = Kun Ketšai tuli mäeltä alas, avasi ja sulki huolellisesti kyläveräjänsä, ??aukio/kenttäveräjän, kujaveräjän ja oman kotiveräjän, savikontti ehti taas alkaa painaa hänen selkäänsä. (Kaikkien kävijöiden tulee tehdä näin, jotta veräjät olisivat aina kiinni, veräjäthän pidetään selkosen selällään vain aamulla ja illansuussa, kun karjaa ajetaan laitumelle tai kotiin.) -1 Но но CCONJ CC _ 3 cc _ _ -2 зярс зярс ADV Adv|Der/Ill|Adv|Sem/Time Derivation=Ill|AdvType=Tim 3 mark _ _ -3 валгсь валгомс VERB V|Ind|Prt1|ScSg3 Mood=Ind|Number[subj]=Sing|Person[subj]=3|Tense=Prt1 51 advcl _ SpaceAfter=No -4 , , PUNCT CLB _ 6 punct _ _ -5 зярс зярс ADV Adv|Der/Ill|Adv|Sem/Time Derivation=Ill|AdvType=Tim 6 mark _ _ -6 панжтнесь панжтнемс VERB V|Ind|Prt1|ScSg3 Mood=Ind|Number[subj]=Sing|Person[subj]=3|Tense=Prt1 3 conj _ _ -7 ды ды CCONJ CC _ 10 cc _ _ -8 мекев мекев ADV Adv|Lat|Sg|Nom|Indef Case=Lat|Case=Nom|Definite=Ind|Number=Sing 10 advmod _ _ -9 парсте парсте ADV Adv|Manner AdvType=Man 10 advmod _ _ -10 пекстнесь пекстнемс VERB V|Ind|Prt1|ScSg3 Mood=Ind|Number[subj]=Sing|Person[subj]=3|Tense=Prt1 3 conj _ _ -11 веле веле NOUN N|Sem/Inanim_Cnt|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 10 obj _ _ -12 кенкшенть кенкш NOUN N|Sem/Inanim_Cnt|Sg|Gen|Def Case=Gen|Definite=Def|Number=Sing 11 goeswith _ SpaceAfter=No -13 , , PUNCT CLB _ 15 punct _ _ -14 кужо кужо NOUN N|Sem/Inanim_Cnt|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 12 conj _ _ -15 кенкшенть кенкш NOUN N|Sem/Inanim_Cnt|Sg|Gen|Def Case=Gen|Definite=Def|Number=Sing 14 goeswith _ SpaceAfter=No -16 , , PUNCT CLB _ 18 punct _ _ -17 куро куро NOUN N|Sem/Inanim_Cnt|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 12 conj _ _ -18 кенкшенть кенкш NOUN N|Sem/Inanim_Cnt|Sg|Gen|Def Case=Gen|Definite=Def|Number=Sing 17 goeswith _ _ -19 ды ды CCONJ CC _ 23 cc _ _ -20 эсест эсь PRON Pron|Refl|Pl3|Gen|Variant=Short Case=Gen|Number=Plur|Person=3|PronType=Refl|Variant=Short 22 nmod _ _ -21 юртс юрт NOUN N|Sem/Inanim_Cnt|SP|Ill|Indef Case=Ill|Definite=Ind|Number=Plur,Sing 20 case _ _ -22 совамо совамо NOUN N|IV|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing|Valency=1 23 compound _ _ -23 кенкшенть кенкш NOUN N|Sem/Inanim_Cnt|Sg|Gen|Def Case=Gen|Definite=Def|Number=Sing 12 conj _ _ -24 ( ( PUNCT PUNCT _ 29 punct _ SpaceAfter=No -25 эрьва эрьва DET Det|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 26 det _ _ -26 лисицянтень-совицянтень лисицят-совицят NOUN N|V|NomAg|Sg|Dat|Def Case=Dat|Definite=Def|Derivation=NomAg|Number=Sing 29 obl _ _ -27 те те PRON Pron|Dem|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing|PronType=Dem 29 nsubj _ _ -28 свал свал ADV Adv|Tot|Sem/Time_dur PronType=Tot|PronType=Tot 29 advmod _ _ -29 тейнема тейнемc VERB V|TV|Oblig|Clitic=Cop|Prs|ScSg3 Valency=2|VerbForm=Oblig|Clitic=Cop|Number[subj]=Sing|Person[subj]=3|Tense=Pres 3 parataxis _ SpaceAfter=No -30 , , PUNCT CLB _ 33 punct _ _ -31 кенкштне кенкш NOUN N|Sem/Inanim_Cnt|Pl|Nom|Def Case=Nom|Definite=Def|Number=Plur 34 nsubj _ _ -32 свал свал ADV Adv|Tot|Sem/Time_dur PronType=Tot|PronType=Tot 33 advmod _ _ -33 пекстазь пекстамс VERB V|Der/Озь|Ger Derivation=Ozj|VerbForm=Conv 29 ccomp _ _ -34 улезт улемс AUX V|IV|Opt|ScPl3 Mood=Opt|Number[subj]=Plur|Person[subj]=3|Valency=1 33 cop _ SpaceAfter=No -35 ; ; PUNCT CLB _ 29 punct _ _ -36 панжтнесызь панжтнемс VERB V|Ind|Prs|ScPl3|Obj3 Mood=Ind|Number[subj]=Plur|Person[subj]=3|Tense=Pres|Obj3 29 conj _ _ -37 келес келес ADV Adv Adv 36 advmod _ _ -38 ансяк ансяк ADV Adv Adv 39 advmod _ _ -39 валске валске NOUN N|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 36 obl _ _ -40 марто марто ADP Adp|Po AdpType=Post 39 case _ _ -41 ды ды CCONJ CC _ 42 cc _ _ -42 чопоньбелев чопоньбелев ADV Adv|Lat Case=Lat 39 conj _ _ -43 — — PUNCT CLB _ 46 punct _ _ -44 ракшань ракша NOUN N|Sem/Anim_Cnt|SP|Gen|Indef Case=Gen|Definite=Ind|Number=Plur,Sing 45 nmod:gobj _ _ -45 ливтема-совавтома ливтема-совавтома NOUN N|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 36 nmod _ _ -46 шкане шка NOUN N|Sem/Time|SP|Temp|Indef Case=Temp|Definite=Ind|Number=Plur,Sing 39 conj _ SpaceAfter=No -47 ) ) PUNCT PUNCT _ 29 punct _ SpaceAfter=No -48 , , PUNCT CLB _ 29 punct _ _ -49 куймесь куйме NOUN N|Sem/Inanim_Cnt|Sg|Nom|Def Case=Nom|Definite=Def|Number=Sing 51 nsubj _ _ -50 таго таго ADV Adv|Sem/Time AdvType=Tim 51 advmod _ _ -51 стакалгадсь стакалгадомс VERB V|Ind|Prt1|ScSg3 Mood=Ind|Number[subj]=Sing|Person[subj]=3|Tense=Prt1 0 root _ SpaceAfter=No -52 . . PUNCT CLB _ 51 punct _ _`, - katya_aplonova_large_arrows: `# sent_id = html/meyer_gorog-contes_bambara_10amadu_tara.dis.html:16 -# text = ko ni i sera ka jiri nin bulu sòrò ka na ni a ye, ko cèkòròba bè se ka furakè o la. -1 ko kó PART cop _ 4 discourse _ Gloss=QUOT -2 ni ní SCONJ conj _ 4 mark _ Gloss=si -3 i í PRON pers PronType=Prs 4 nsubj _ Gloss=2.SG -4 sera sera VERB v Aspect=Perf|Valency=1|Polarity=Pos 19 advcl _ Gloss=arriver|Morf=arriver,PFV.INTR -5 ka kà AUX pm _ 9 aux _ Gloss=INF -6 jiri jíri NOUN n _ 8 nmod:poss _ Gloss=arbre -7 nin nìn DET prn/dtm PronType=Dem|Definite-Def 6 det _ Gloss=DEM -8 bulu búlu NOUN n _ 9 obj _ Gloss=feuille -9 sòrò sɔ̀rɔ VERB v _ 4 xcomp _ Gloss=obtenir -10 ka kà AUX pm _ 11 aux _ Gloss=INF -11 na nà VERB v _ 9 xcomp _ Gloss=venir -12 ni ní ADP conj/prep _ 13 case _ Gloss=et -13 a à PRON pers PronType=Prs|Number=Sing|Person=3 11 obl _ Gloss=3SG -14 ye yé ADP pp _ 13 case _ Gloss=PP -15 , , PUNCT _ _ 4 punct _ Gloss=, -16 ko kó PART cop _ 19 discourse _ Gloss=QUOT -17 cèkòròba cɛ̀.kɔrɔ.ba NOUN n _ 19 nsubj _ Gloss=vieillard|Morf=vieillard,mâle,vieux,AUGM -18 bè bɛ́ AUX pm Polarity=Pos|Aspect=Imp 19 aux _ Gloss=IPFV.AFF -19 se sé VERB v _ 0 root _ Gloss=arriver -20 ka kà AUX pm _ 21 aux _ Gloss=INF -21 furakè fúra.kɛ VERB v _ 19 xcomp _ Gloss=soigner|Morf=soigner,feuille,faire -22 o ò PRON prn _ 21 obl _ Gloss=ce -23 la lá ADP pp _ 22 case _ Gloss=dans -24 . . PUNCT _ _ 19 punct _ Gloss=. -`, - katya_aplonova_long: `# sent_id = html/meyer_gorog-contes_bambara_10amadu_tara.dis.html:19 -# text = ko u ye mògò nyini a ye, min bè a furakè sisan ko cè ye furakèli cogoya bèè fò, ko fura nin sòrò ka gèlèn ko epi ko ni o ye a sòrò u ye ale den de ye, ni min bè sa de furanyini fè a ka sa nin min bè balo o ka balo ko u kònòntò bèè ka taga fura nin nyini, ko u kònòntò bèè ka taga ko nin min seginna ka a sòrò fura ma na, ko a bè o den nin haramuya ka o gèn, ka a bè a ba fana gèn ko u ka a filè u yèrè ni min ma sòn fana ko a bè o gèn, o ni a ba bèè. -# label = too_long_to_cut -1 ko kó PART cop _ 5 discourse _ Gloss=QUOT -2 u ù PRON pers PronType=Prs|Number=Plur|Person=3 5 nsubj _ Gloss=3PL -3 ye yé AUX pm Aspect=Perf|Valency=2|Polarity=Pos 5 aux _ Gloss=PFV.TR -4 mògò mɔ̀gɔ NOUN n _ 5 obj _ Gloss=homme -5 nyini ɲíni VERB v _ 0 root _ Gloss=chercher -6 a à PRON pers PronType=Prs|Number=Sing|Person=3 5 obl _ Gloss=3SG -7 ye yé ADP pp _ 6 case _ Gloss=PP -8 , , PUNCT _ _ 5 punct _ Gloss=, -9 min mín PRON prn PronType=Rel _ _ _ Gloss=REL -10 bè bɛ́ AUX pm Polarity=Pos|Aspect=Imp _ _ _ Gloss=IPFV.AFF -11 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG -12 furakè fúra.kɛ VERB v _ _ _ _ Gloss=soigner|Morf=soigner,feuille,faire -13 sisan sísan ADV adv/n _ _ _ _ Gloss=maintenant -14 ko kó PART cop _ _ _ _ Gloss=QUOT -15 cè cɛ̀ NOUN n _ _ _ _ Gloss=mâle -16 ye ye AUX pm Aspect=Perf|Valency=2|Polarity=Pos _ _ _ Gloss=PFV.TR -17 furakèli fúrakɛli NOUN n VerbalForm=Vnoun _ _ _ Gloss=traitement|Morf=traitement,feuille,faire,NMLZ -18 cogoya cógoya NOUN n _ _ _ _ Gloss=manière|Morf=manière,manière,ABSTR -19 bèè bɛ́ɛ DET dtm _ _ _ _ Gloss=tout -20 fò fɔ́ VERB v _ _ _ _ Gloss=dire -21 , , PUNCT _ _ _ _ _ Gloss=, -22 ko kó PART cop _ 27 discourse _ Gloss=QUOT -23 fura fúra NOUN n _ 25 nmod:poss _ Gloss=feuille -24 nin nìn DET dtm PronType=Dem|Definite-Def 23 det _ Gloss=DEM -25 sòrò sɔ̀rɔ NOUN v _ 27 nsubj _ Gloss=obtenir -26 ka ka AUX pm Polarity=Pos 27 aux _ Gloss=QUAL.AFF -27 gèlèn gɛ̀lɛn VERB vq _ _ _ _ Gloss=dur -28 ko kó PART cop _ 29 discourse _ Gloss=QUOT -29 epi epi CCONJ conj _ 27 cc _ Gloss=ETRG.FRA -30 ko kó VERB cop _ 37 discourse _ Gloss=QUOT -31 ni ní SCONJ conj _ 35 mark _ Gloss=si -32 o ò PRON prn _ 35 nsubj _ Gloss=ce -33 ye ye AUX pm Aspect=Perf|Valency=2|Polarity=Pos 35 aux _ Gloss=PFV.TR -34 a à PRON pers PronType=Prs|Number=Sing|Person=3 35 obj _ Gloss=3SG -35 sòrò sɔ̀rɔ VERB v _ 37 advcl _ Gloss=obtenir -36 u ù PRON pers PronType=Prs|Number=Plur|Person=3 37 nsubj _ Gloss=3PL -37 ye yé VERB cop Polarity=Pos 27 parataxis _ Gloss=EQU -38 ale àlê PRON pers PronType=Prs|Number=Sing|Person=3|PronType=Emp 39 nmod:poss _ Gloss=3SG.EMPH -39 den dén NOUN n _ 37 obl _ Gloss=enfant -40 de dè PART prt _ 39 discourse _ Gloss=FOC -41 ye yé ADP pp _ 39 case _ Gloss=PP -42 , , PUNCT _ _ 37 punct _ Gloss=, -43 ni ní SCONJ conj _ 46 mark _ Gloss=si -44 min mîn PRON prn PronType=Rel 46 _ _ Gloss=REL -45 bè bɛ AUX pm Polarity=Pos|Aspect=Imp 46 _ _ Gloss=IPFV.AFF -46 sa sà VERB v _ 52 _ _ Gloss=mourir -47 de dè PART prt _ 46 _ _ Gloss=FOC -48 furanyini furaɲini NOUN n _ 46 _ _ Gloss=feuille|Morf=feuille,chercher -49 fè fɛ̀ ADP pp _ 48 _ _ Gloss=par -50 a à PRON pers PronType=Prs|Number=Sing|Person=3 52 _ _ Gloss=3SG -51 ka ka AUX pm Mood=Subj|Polarity=Aff 52 _ _ Gloss=SBJV -52 sa sà VERB v _ 37 _ _ Gloss=mourir -53 nin ní SCONJ conj _ 56 mark _ Gloss=quand -54 min mîn PRON prn PronType=Rel 56 _ _ Gloss=REL -55 bè bɛ AUX pm Polarity=Pos|Aspect=Imp 56 _ _ Gloss=IPFV.AFF -56 balo bálo VERB v _ 59 _ _ Gloss=vivre -57 o ò PRON prn _ 59 _ _ Gloss=ce -58 ka ka AUX pm Mood=Subj|Polarity=Aff 59 _ _ Gloss=SBJV -59 balo bálo VERB v _ 52 _ _ Gloss=vivre -60 ko kó PART cop _ _ _ _ Gloss=QUOT -61 u ù PRON pers PronType=Prs|Number=Plur|Person=3 _ _ _ Gloss=3PL -62 kònòntò kɔ̀nɔntɔn NUM num _ _ _ _ Gloss=neuf -63 bèè bɛ́ɛ DET dtm _ _ _ _ Gloss=tout -64 ka ka AUX pm Mood=Subj|Polarity=Aff _ _ _ Gloss=SBJV -65 taga tága VERB v _ 59 _ _ Gloss=aller -66 fura fúra NOUN n _ _ _ _ Gloss=feuille -67 nin nìn DET dtm PronType=Dem|Definite-Def _ _ _ Gloss=DEM -68 nyini ɲíni VERB v _ _ _ _ Gloss=chercher -69 , , PUNCT _ _ _ _ _ Gloss=, -70 ko kó PART cop _ _ _ _ Gloss=QUOT -71 u ù PRON pers PronType=Prs|Number=Plur|Person=3 _ _ _ Gloss=3PL -72 kònòntò kɔ̀nɔntɔn NUM num _ _ _ _ Gloss=neuf -73 bèè bɛ́ɛ DET dtm _ _ _ _ Gloss=tout -74 ka ka AUX pm Mood=Subj|Polarity=Aff _ _ _ Gloss=SBJV -75 taga tága VERB v _ 65 _ _ Gloss=aller -76 ko kó PART cop _ _ _ _ Gloss=QUOT -77 nin ní SCONJ conj _ _ _ _ Gloss=quand -78 min mîn PRON prn PronType=Rel _ _ _ Gloss=REL -79 seginna seginna VERB v Aspect=Perf|Valency=1|Polarity=Pos 85 _ _ Gloss=revenir|Morf=revenir,PFV.INTR -80 ka kà AUX pm _ _ _ _ Gloss=INF -81 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG -82 sòrò sɔ̀rɔ VERB v _ _ _ _ Gloss=obtenir -83 fura fúra NOUN n _ _ _ _ Gloss=feuille -84 ma ma AUX pm Polarity=Neg|Aspect=Perf _ _ _ Gloss=PFV.NEG -85 na nà VERB v _ 75 _ _ Gloss=venir -86 , , PUNCT _ _ _ _ _ Gloss=, -87 ko kó PART cop _ _ _ _ Gloss=QUOT -88 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG -89 bè bɛ AUX pm Polarity=Pos|Aspect=Imp _ _ _ Gloss=IPFV.AFF -90 o ò PRON prn _ _ _ _ Gloss=ce -91 den dén NOUN n _ _ _ _ Gloss=enfant -92 nin nìn DET dtm PronType=Dem|Definite-Def _ _ _ Gloss=DEM -93 haramuya hàramuya VERB v _ 85 _ _ Gloss=interdire|Morf=interdire,interdire,ABSTR -94 ka kà AUX pm _ _ _ _ Gloss=INF -95 o ò PRON prn _ _ _ _ Gloss=ce -96 gèn gɛ́n VERB v _ _ _ _ Gloss=chasser -97 , , PUNCT _ _ _ _ _ Gloss=, -98 ka kà AUX pm _ _ _ _ Gloss=INF -99 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG -100 bè bɛ AUX pm Polarity=Pos|Aspect=Imp _ _ _ Gloss=IPFV.AFF -101 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG -102 ba bá NOUN n _ _ _ _ Gloss=mère -103 fana fána PART prt _ _ _ _ Gloss=aussi -104 gèn gɛ́n VERB v _ _ _ _ Gloss=chasser -105 ko kó PART cop _ _ _ _ Gloss=QUOT -106 u ù PRON pers PronType=Prs|Number=Plur|Person=3 _ _ _ Gloss=3PL -107 ka ka AUX pm Mood=Subj|Polarity=Aff _ _ _ Gloss=SBJV -108 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG -109 filè fílɛ VERB v _ _ _ _ Gloss=regarder -110 u ù PRON pers PronType=Prs|Number=Plur|Person=3 _ _ _ Gloss=3PL -111 yèrè yɛ̀rɛ̂ DET dtm _ _ _ _ Gloss=même -112 ni ní SCONJ conj _ _ _ _ Gloss=si -113 min mîn PRON prn PronType=Rel _ _ _ Gloss=REL -114 ma ma AUX pm Polarity=Neg|Aspect=Perf _ _ _ Gloss=PFV.NEG -115 sòn sɔ̀n VERB v _ _ _ _ Gloss=accepter -116 fana fána PART prt _ _ _ _ Gloss=aussi -117 ko kó PART cop _ _ _ _ Gloss=QUOT -118 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG -119 bè bɛ AUX pm Polarity=Pos|Aspect=Imp _ _ _ Gloss=IPFV.AFF -120 o ò PRON prn _ _ _ _ Gloss=ce -121 gèn gɛ́n VERB v _ _ _ _ Gloss=chasser -122 , , PUNCT _ _ _ _ _ Gloss=, -123 o ò PRON prn _ _ _ _ Gloss=ce -124 ni ni CCONJ conj _ _ _ _ Gloss=et -125 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG -126 ba bá NOUN n _ _ _ _ Gloss=mère -127 bèè bɛ́ɛ DET dtm _ _ _ _ Gloss=tout -128 . . PUNCT _ _ _ _ _ Gloss=.`, - ud_example_tabs: `1 They they PRON PRP Case=Nom|Number=Plur 2 nsubj 2:nsubj|4:nsubj _ -2 buy buy VERB VBP Number=Plur|Person=3|Tense=Pres 0 root 0:root _ -3 and and CONJ CC _ 4 cc 4:cc _ -4 sell sell VERB VBP Number=Plur|Person=3|Tense=Pres 2 conj 2:conj _ -5 books book NOUN NNS Number=Plur 2 obj 2:obj|4:obj _ -6 . . PUNCT . _ 2 punct 2:punct _`, - ud_example_spaces: `1 They they PRON PRP Case=Nom|Number=Plur 2 nsubj 2:nsubj|4:nsubj _ -2 buy buy VERB VBP Number=Plur|Person=3|Tense=Pres 0 root 0:root _ -3 and and CONJ CC _ 4 cc 4:cc _ -4 sell sell VERB VBP Number=Plur|Person=3|Tense=Pres 2 conj 2:conj _ -5 books book NOUN NNS Number=Plur 2 obj 2:obj|4:obj _ -6 . . PUNCT . _ 2 punct 2:punct _`, - ud_example_modified: `1 They they PRON PRP Case=Nom|Number=Plur 2 nsubj 2:nsubj|4:nsubj _ -2 buy buy VERB VBP Number=Plur|Person=3|Tense=Presroot 0 root 0:root _ -3 and and CONJ CC _ 4 cc 4:cc _ -4 sell sell VERB VBP Number=Plur|Person=3|Tense=Presconj 2 _ 2 _ -5 books book NOUN NNS Number=Plur 2 obj 2:obj|4:obj _ -6 . . PUNCT . _ 2 punct 2:punct _`, - ud_annotatrix_issue_397: `# sent_id = Not_eating_larvae:2 -# text = Гым нэмыӄэй нрзб это ны нырычваԓыӈыттыӄэнат нэмыӄэй гым нывинрэтигым нырычвантойгым. -# text[phon] = ɣəm neməqej нрзб это nə nərəswaɬəŋəttəqenat neməqej ɣəm nəwinretiɣəm nərəswantojɣəm -# text[rus] = Собирали личинок, я тоже помогала, доставала личинок. -# text[eng] = We were gathering the grubs, I also helped, I was extracting the grubs. -# labels = incomplete -1 Гым гым PRON _ Number=Sing|Person=1|PronType=Pers 6 nsubj 6:nsubj Gloss=я -2 нэмыӄэй нэмыӄэй ADV _ _ _ _ _ Gloss=тоже -3 нрзб _ X _ _ 6 discourse 6:discourse Gloss= -4 это _ PART _ _ 6 discourse 6:discourse Gloss= -5 ны ны X _ _ 6 reparandum 6:reparandum Gloss=FST -6 нырычваԓыӈыттыӄэнат _ VERB _ _ 0 root 0:root Gloss=ST-личинка-CATCH-ST.3SG-PL -7 нэмыӄэй нэмыӄэй ADV _ _ 9 advmod 9:advmod Gloss=тоже -8 гым гым PRON _ Number=Sing|Person=1|PronType=Pers 9 nsubj 9:nsubj Gloss=я -9 нывинрэтигым винрэтык VERB _ _ 6 parataxis 6:parataxis Gloss=ST-помогать-NP.1SG -10 нырычвантойгым _ VERB _ _ 6 parataxis 6:parataxis Gloss=ST-личинка-вынимать-NP.1SG -10.1 рычва рычва NOUN _ _ _ _ 10:obj Gloss=личинка -11 . . PUNCT _ _ 6 punct 6:punct _ `, - notatrix_issue_17: `# sent_id = Money:12 -# text = Ну ӄэԓюӄъым ытԓыгэ нэнаманэԓпынрыӄэнатэ амъянра наӄам. -# text[phon] = ну qeɬuqʔəm ətɬəɣe nenamaneɬpənrəqenate amjanra naqam -# text[rus] = Ну конечно, отец дал денег, причём каждому отдельно. -# text[eng] = Well, of course, their father gave them money, and each of them separately. -# labels = complete-dep anno-fran -1 Ну _ X _ Foreign=Yes 5 discourse 5:discourse Gloss= -2-3 ӄэԓюӄъым _ _ _ _ _ _ _ _ -2 ӄэԓюӄ ӄэԓюӄъым ADV _ _ 5 advmod 5:advmod Gloss=конечно-=EMPH -3 ъым ъм PART _ _ 2 discourse 2:discourse _ -4 ытԓыгэ ытԓыгын NOUN _ Animacy=Anim|Case=Ins 5 nsubj 5:nsubj Gloss=отец-INS -5-6 нэнаманэԓпынрыӄэнатэ _ _ _ _ _ _ _ _ -5 нэнаманэԓпынрыӄэнат _ VERB _ Incorporated[obj]=Yes 0 root 0:root Gloss=ST-INV-деньги-давать-ST.3SG-PL-=PTCL -5.1 манэ манэман NOUN _ Incorporated=Yes _ _ 5:obj Gloss=деньги -6 э а PART _ _ 5 discourse 5:discourse _ -7 амъянра _ ADV _ _ 5 advmod 5:advmod Gloss=RESTR-отдельно -8 наӄам наӄам ADV _ _ 5 advmod 5:advmod Gloss=однако -9 . . PUNCT _ _ 5 punct 5:punct _` +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function (path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +}; + +exports.basename = function (path, ext) { + var f = splitPath(path)[2]; // TODO: make this comparison case-insensitive on windows? + + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + + return f; +}; + +exports.extname = function (path) { + return splitPath(path)[3]; +}; + +function filter(xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + + return res; +} // String.prototype.substr - negative index don't work in IE8 + + +var substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) { + return str.substr(start, len); +} : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); +}; + +}).call(this,require('_process')) + +},{"_process":397}],397:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} + +function defaultClearTimeout() { + throw new Error('clearTimeout has not been defined'); +} + +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +})(); + +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } // if setTimeout wasn't available but was latter defined + + + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch (e) { + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch (e) { + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } +} + +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } // if clearTimeout wasn't available but was latter defined + + + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e) { + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e) { + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } +} + +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + + draining = false; + + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + + var timeout = runTimeout(cleanUpNextTick); + draining = true; + var len = queue.length; + + while (len) { + currentQueue = queue; + queue = []; + + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + + queueIndex = -1; + len = queue.length; + } + + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + + queue.push(new Item(fun, args)); + + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; // v8 likes predictible objects + + +function Item(fun, array) { + this.fun = fun; + this.array = array; +} + +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; + +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues + +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { + return []; +}; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { + return '/'; +}; + +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; + +process.umask = function () { + return 0; +}; + +},{}],398:[function(require,module,exports){ +/** + * Module dependencies. + */ +var url = require('./url'); + +var parser = require('socket.io-parser'); + +var Manager = require('./manager'); + +var debug = require('debug')('socket.io-client'); +/** + * Module exports. + */ + + +module.exports = exports = lookup; +/** + * Managers cache. + */ + +var cache = exports.managers = {}; +/** + * Looks up an existing `Manager` for multiplexing. + * If the user summons: + * + * `io('http://localhost/a');` + * `io('http://localhost/b');` + * + * We reuse the existing instance based on same scheme/port/host, + * and we initialize sockets for each namespace. + * + * @api public + */ + +function lookup(uri, opts) { + if (typeof uri === 'object') { + opts = uri; + uri = undefined; + } + + opts = opts || {}; + var parsed = url(uri); + var source = parsed.source; + var id = parsed.id; + var path = parsed.path; + var sameNamespace = cache[id] && path in cache[id].nsps; + var newConnection = opts.forceNew || opts['force new connection'] || false === opts.multiplex || sameNamespace; + var io; + + if (newConnection) { + debug('ignoring socket cache for %s', source); + io = Manager(source, opts); + } else { + if (!cache[id]) { + debug('new io instance for %s', source); + cache[id] = Manager(source, opts); + } + + io = cache[id]; + } + + if (parsed.query && !opts.query) { + opts.query = parsed.query; + } + + return io.socket(parsed.path, opts); +} +/** + * Protocol version. + * + * @api public + */ + + +exports.protocol = parser.protocol; +/** + * `connect`. + * + * @param {String} uri + * @api public + */ + +exports.connect = lookup; +/** + * Expose constructors for standalone build. + * + * @api public + */ + +exports.Manager = require('./manager'); +exports.Socket = require('./socket'); + +},{"./manager":399,"./socket":401,"./url":402,"debug":403,"socket.io-parser":406}],399:[function(require,module,exports){ +/** + * Module dependencies. + */ +var eio = require('engine.io-client'); + +var Socket = require('./socket'); + +var Emitter = require('component-emitter'); + +var parser = require('socket.io-parser'); + +var on = require('./on'); + +var bind = require('component-bind'); + +var debug = require('debug')('socket.io-client:manager'); + +var indexOf = require('indexof'); + +var Backoff = require('backo2'); +/** + * IE6+ hasOwnProperty + */ + + +var has = Object.prototype.hasOwnProperty; +/** + * Module exports + */ + +module.exports = Manager; +/** + * `Manager` constructor. + * + * @param {String} engine instance or engine uri/opts + * @param {Object} options + * @api public + */ + +function Manager(uri, opts) { + if (!(this instanceof Manager)) return new Manager(uri, opts); + + if (uri && 'object' === typeof uri) { + opts = uri; + uri = undefined; + } + + opts = opts || {}; + opts.path = opts.path || '/socket.io'; + this.nsps = {}; + this.subs = []; + this.opts = opts; + this.reconnection(opts.reconnection !== false); + this.reconnectionAttempts(opts.reconnectionAttempts || Infinity); + this.reconnectionDelay(opts.reconnectionDelay || 1000); + this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000); + this.randomizationFactor(opts.randomizationFactor || 0.5); + this.backoff = new Backoff({ + min: this.reconnectionDelay(), + max: this.reconnectionDelayMax(), + jitter: this.randomizationFactor() + }); + this.timeout(null == opts.timeout ? 20000 : opts.timeout); + this.readyState = 'closed'; + this.uri = uri; + this.connecting = []; + this.lastPing = null; + this.encoding = false; + this.packetBuffer = []; + + var _parser = opts.parser || parser; + + this.encoder = new _parser.Encoder(); + this.decoder = new _parser.Decoder(); + this.autoConnect = opts.autoConnect !== false; + if (this.autoConnect) this.open(); +} +/** + * Propagate given event to sockets and emit on `this` + * + * @api private + */ + + +Manager.prototype.emitAll = function () { + this.emit.apply(this, arguments); + + for (var nsp in this.nsps) { + if (has.call(this.nsps, nsp)) { + this.nsps[nsp].emit.apply(this.nsps[nsp], arguments); + } + } +}; +/** + * Update `socket.id` of all sockets + * + * @api private + */ + + +Manager.prototype.updateSocketIds = function () { + for (var nsp in this.nsps) { + if (has.call(this.nsps, nsp)) { + this.nsps[nsp].id = this.generateId(nsp); + } + } +}; +/** + * generate `socket.id` for the given `nsp` + * + * @param {String} nsp + * @return {String} + * @api private + */ + + +Manager.prototype.generateId = function (nsp) { + return (nsp === '/' ? '' : nsp + '#') + this.engine.id; +}; +/** + * Mix in `Emitter`. + */ + + +Emitter(Manager.prototype); +/** + * Sets the `reconnection` config. + * + * @param {Boolean} true/false if it should automatically reconnect + * @return {Manager} self or value + * @api public + */ + +Manager.prototype.reconnection = function (v) { + if (!arguments.length) return this._reconnection; + this._reconnection = !!v; + return this; +}; +/** + * Sets the reconnection attempts config. + * + * @param {Number} max reconnection attempts before giving up + * @return {Manager} self or value + * @api public + */ + + +Manager.prototype.reconnectionAttempts = function (v) { + if (!arguments.length) return this._reconnectionAttempts; + this._reconnectionAttempts = v; + return this; +}; +/** + * Sets the delay between reconnections. + * + * @param {Number} delay + * @return {Manager} self or value + * @api public + */ + + +Manager.prototype.reconnectionDelay = function (v) { + if (!arguments.length) return this._reconnectionDelay; + this._reconnectionDelay = v; + this.backoff && this.backoff.setMin(v); + return this; +}; + +Manager.prototype.randomizationFactor = function (v) { + if (!arguments.length) return this._randomizationFactor; + this._randomizationFactor = v; + this.backoff && this.backoff.setJitter(v); + return this; +}; +/** + * Sets the maximum delay between reconnections. + * + * @param {Number} delay + * @return {Manager} self or value + * @api public + */ + + +Manager.prototype.reconnectionDelayMax = function (v) { + if (!arguments.length) return this._reconnectionDelayMax; + this._reconnectionDelayMax = v; + this.backoff && this.backoff.setMax(v); + return this; +}; +/** + * Sets the connection timeout. `false` to disable + * + * @return {Manager} self or value + * @api public + */ + + +Manager.prototype.timeout = function (v) { + if (!arguments.length) return this._timeout; + this._timeout = v; + return this; +}; +/** + * Starts trying to reconnect if reconnection is enabled and we have not + * started reconnecting yet + * + * @api private + */ + + +Manager.prototype.maybeReconnectOnOpen = function () { + // Only try to reconnect if it's the first time we're connecting + if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) { + // keeps reconnection from firing twice for the same reconnection loop + this.reconnect(); + } +}; +/** + * Sets the current transport `socket`. + * + * @param {Function} optional, callback + * @return {Manager} self + * @api public + */ + + +Manager.prototype.open = Manager.prototype.connect = function (fn, opts) { + debug('readyState %s', this.readyState); + if (~this.readyState.indexOf('open')) return this; + debug('opening %s', this.uri); + this.engine = eio(this.uri, this.opts); + var socket = this.engine; + var self = this; + this.readyState = 'opening'; + this.skipReconnect = false; // emit `open` + + var openSub = on(socket, 'open', function () { + self.onopen(); + fn && fn(); + }); // emit `connect_error` + + var errorSub = on(socket, 'error', function (data) { + debug('connect_error'); + self.cleanup(); + self.readyState = 'closed'; + self.emitAll('connect_error', data); + + if (fn) { + var err = new Error('Connection error'); + err.data = data; + fn(err); + } else { + // Only do this if there is no fn to handle the error + self.maybeReconnectOnOpen(); + } + }); // emit `connect_timeout` + + if (false !== this._timeout) { + var timeout = this._timeout; + debug('connect attempt will timeout after %d', timeout); // set timer + + var timer = setTimeout(function () { + debug('connect attempt timed out after %d', timeout); + openSub.destroy(); + socket.close(); + socket.emit('error', 'timeout'); + self.emitAll('connect_timeout', timeout); + }, timeout); + this.subs.push({ + destroy: function () { + clearTimeout(timer); + } + }); + } + + this.subs.push(openSub); + this.subs.push(errorSub); + return this; +}; +/** + * Called upon transport open. + * + * @api private + */ + + +Manager.prototype.onopen = function () { + debug('open'); // clear old subs + + this.cleanup(); // mark as open + + this.readyState = 'open'; + this.emit('open'); // add new subs + + var socket = this.engine; + this.subs.push(on(socket, 'data', bind(this, 'ondata'))); + this.subs.push(on(socket, 'ping', bind(this, 'onping'))); + this.subs.push(on(socket, 'pong', bind(this, 'onpong'))); + this.subs.push(on(socket, 'error', bind(this, 'onerror'))); + this.subs.push(on(socket, 'close', bind(this, 'onclose'))); + this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded'))); +}; +/** + * Called upon a ping. + * + * @api private + */ + + +Manager.prototype.onping = function () { + this.lastPing = new Date(); + this.emitAll('ping'); +}; +/** + * Called upon a packet. + * + * @api private + */ + + +Manager.prototype.onpong = function () { + this.emitAll('pong', new Date() - this.lastPing); +}; +/** + * Called with data. + * + * @api private + */ + + +Manager.prototype.ondata = function (data) { + this.decoder.add(data); +}; +/** + * Called when parser fully decodes a packet. + * + * @api private + */ + + +Manager.prototype.ondecoded = function (packet) { + this.emit('packet', packet); +}; +/** + * Called upon socket error. + * + * @api private + */ + + +Manager.prototype.onerror = function (err) { + debug('error', err); + this.emitAll('error', err); +}; +/** + * Creates a new socket for the given `nsp`. + * + * @return {Socket} + * @api public + */ + + +Manager.prototype.socket = function (nsp, opts) { + var socket = this.nsps[nsp]; + + if (!socket) { + socket = new Socket(this, nsp, opts); + this.nsps[nsp] = socket; + var self = this; + socket.on('connecting', onConnecting); + socket.on('connect', function () { + socket.id = self.generateId(nsp); + }); + + if (this.autoConnect) { + // manually call here since connecting event is fired before listening + onConnecting(); + } + } + + function onConnecting() { + if (!~indexOf(self.connecting, socket)) { + self.connecting.push(socket); + } + } + + return socket; +}; +/** + * Called upon a socket close. + * + * @param {Socket} socket + */ + + +Manager.prototype.destroy = function (socket) { + var index = indexOf(this.connecting, socket); + if (~index) this.connecting.splice(index, 1); + if (this.connecting.length) return; + this.close(); +}; +/** + * Writes a packet. + * + * @param {Object} packet + * @api private + */ + + +Manager.prototype.packet = function (packet) { + debug('writing packet %j', packet); + var self = this; + if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query; + + if (!self.encoding) { + // encode, then write to engine with result + self.encoding = true; + this.encoder.encode(packet, function (encodedPackets) { + for (var i = 0; i < encodedPackets.length; i++) { + self.engine.write(encodedPackets[i], packet.options); + } + + self.encoding = false; + self.processPacketQueue(); + }); + } else { + // add packet to the queue + self.packetBuffer.push(packet); + } +}; +/** + * If packet buffer is non-empty, begins encoding the + * next packet in line. + * + * @api private + */ + + +Manager.prototype.processPacketQueue = function () { + if (this.packetBuffer.length > 0 && !this.encoding) { + var pack = this.packetBuffer.shift(); + this.packet(pack); + } +}; +/** + * Clean up transport subscriptions and packet buffer. + * + * @api private + */ + + +Manager.prototype.cleanup = function () { + debug('cleanup'); + var subsLength = this.subs.length; + + for (var i = 0; i < subsLength; i++) { + var sub = this.subs.shift(); + sub.destroy(); + } + + this.packetBuffer = []; + this.encoding = false; + this.lastPing = null; + this.decoder.destroy(); +}; +/** + * Close the current socket. + * + * @api private + */ + + +Manager.prototype.close = Manager.prototype.disconnect = function () { + debug('disconnect'); + this.skipReconnect = true; + this.reconnecting = false; + + if ('opening' === this.readyState) { + // `onclose` will not fire because + // an open event never happened + this.cleanup(); + } + + this.backoff.reset(); + this.readyState = 'closed'; + if (this.engine) this.engine.close(); +}; +/** + * Called upon engine close. + * + * @api private + */ + + +Manager.prototype.onclose = function (reason) { + debug('onclose'); + this.cleanup(); + this.backoff.reset(); + this.readyState = 'closed'; + this.emit('close', reason); + + if (this._reconnection && !this.skipReconnect) { + this.reconnect(); + } +}; +/** + * Attempt a reconnection. + * + * @api private + */ + + +Manager.prototype.reconnect = function () { + if (this.reconnecting || this.skipReconnect) return this; + var self = this; + + if (this.backoff.attempts >= this._reconnectionAttempts) { + debug('reconnect failed'); + this.backoff.reset(); + this.emitAll('reconnect_failed'); + this.reconnecting = false; + } else { + var delay = this.backoff.duration(); + debug('will wait %dms before reconnect attempt', delay); + this.reconnecting = true; + var timer = setTimeout(function () { + if (self.skipReconnect) return; + debug('attempting reconnect'); + self.emitAll('reconnect_attempt', self.backoff.attempts); + self.emitAll('reconnecting', self.backoff.attempts); // check again for the case socket closed in above events + + if (self.skipReconnect) return; + self.open(function (err) { + if (err) { + debug('reconnect attempt error'); + self.reconnecting = false; + self.reconnect(); + self.emitAll('reconnect_error', err.data); + } else { + debug('reconnect success'); + self.onreconnect(); + } + }); + }, delay); + this.subs.push({ + destroy: function () { + clearTimeout(timer); + } + }); + } +}; +/** + * Called upon successful reconnect. + * + * @api private + */ + + +Manager.prototype.onreconnect = function () { + var attempt = this.backoff.attempts; + this.reconnecting = false; + this.backoff.reset(); + this.updateSocketIds(); + this.emitAll('reconnect', attempt); +}; + +},{"./on":400,"./socket":401,"backo2":38,"component-bind":46,"component-emitter":47,"debug":403,"engine.io-client":373,"indexof":391,"socket.io-parser":406}],400:[function(require,module,exports){ +/** + * Module exports. + */ +module.exports = on; +/** + * Helper for subscriptions. + * + * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter` + * @param {String} event name + * @param {Function} callback + * @api public + */ + +function on(obj, ev, fn) { + obj.on(ev, fn); + return { + destroy: function () { + obj.removeListener(ev, fn); + } + }; +} + +},{}],401:[function(require,module,exports){ +/** + * Module dependencies. + */ +var parser = require('socket.io-parser'); + +var Emitter = require('component-emitter'); + +var toArray = require('to-array'); + +var on = require('./on'); + +var bind = require('component-bind'); + +var debug = require('debug')('socket.io-client:socket'); + +var parseqs = require('parseqs'); + +var hasBin = require('has-binary2'); +/** + * Module exports. + */ + + +module.exports = exports = Socket; +/** + * Internal events (blacklisted). + * These events can't be emitted by the user. + * + * @api private + */ + +var events = { + connect: 1, + connect_error: 1, + connect_timeout: 1, + connecting: 1, + disconnect: 1, + error: 1, + reconnect: 1, + reconnect_attempt: 1, + reconnect_failed: 1, + reconnect_error: 1, + reconnecting: 1, + ping: 1, + pong: 1 +}; +/** + * Shortcut to `Emitter#emit`. + */ + +var emit = Emitter.prototype.emit; +/** + * `Socket` constructor. + * + * @api public + */ + +function Socket(io, nsp, opts) { + this.io = io; + this.nsp = nsp; + this.json = this; // compat + + this.ids = 0; + this.acks = {}; + this.receiveBuffer = []; + this.sendBuffer = []; + this.connected = false; + this.disconnected = true; + this.flags = {}; + + if (opts && opts.query) { + this.query = opts.query; + } + + if (this.io.autoConnect) this.open(); +} +/** + * Mix in `Emitter`. + */ + + +Emitter(Socket.prototype); +/** + * Subscribe to open, close and packet events + * + * @api private + */ + +Socket.prototype.subEvents = function () { + if (this.subs) return; + var io = this.io; + this.subs = [on(io, 'open', bind(this, 'onopen')), on(io, 'packet', bind(this, 'onpacket')), on(io, 'close', bind(this, 'onclose'))]; +}; +/** + * "Opens" the socket. + * + * @api public + */ + + +Socket.prototype.open = Socket.prototype.connect = function () { + if (this.connected) return this; + this.subEvents(); + this.io.open(); // ensure open + + if ('open' === this.io.readyState) this.onopen(); + this.emit('connecting'); + return this; +}; +/** + * Sends a `message` event. + * + * @return {Socket} self + * @api public + */ + + +Socket.prototype.send = function () { + var args = toArray(arguments); + args.unshift('message'); + this.emit.apply(this, args); + return this; +}; +/** + * Override `emit`. + * If the event is in `events`, it's emitted normally. + * + * @param {String} event name + * @return {Socket} self + * @api public + */ + + +Socket.prototype.emit = function (ev) { + if (events.hasOwnProperty(ev)) { + emit.apply(this, arguments); + return this; + } + + var args = toArray(arguments); + var packet = { + type: (this.flags.binary !== undefined ? this.flags.binary : hasBin(args)) ? parser.BINARY_EVENT : parser.EVENT, + data: args + }; + packet.options = {}; + packet.options.compress = !this.flags || false !== this.flags.compress; // event ack callback + + if ('function' === typeof args[args.length - 1]) { + debug('emitting packet with ack id %d', this.ids); + this.acks[this.ids] = args.pop(); + packet.id = this.ids++; + } + + if (this.connected) { + this.packet(packet); + } else { + this.sendBuffer.push(packet); + } + + this.flags = {}; + return this; +}; +/** + * Sends a packet. + * + * @param {Object} packet + * @api private + */ + + +Socket.prototype.packet = function (packet) { + packet.nsp = this.nsp; + this.io.packet(packet); +}; +/** + * Called upon engine `open`. + * + * @api private + */ + + +Socket.prototype.onopen = function () { + debug('transport is open - connecting'); // write connect packet if necessary + + if ('/' !== this.nsp) { + if (this.query) { + var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query; + debug('sending connect packet with query %s', query); + this.packet({ + type: parser.CONNECT, + query: query + }); + } else { + this.packet({ + type: parser.CONNECT + }); + } + } +}; +/** + * Called upon engine `close`. + * + * @param {String} reason + * @api private + */ + + +Socket.prototype.onclose = function (reason) { + debug('close (%s)', reason); + this.connected = false; + this.disconnected = true; + delete this.id; + this.emit('disconnect', reason); +}; +/** + * Called with socket packet. + * + * @param {Object} packet + * @api private + */ + + +Socket.prototype.onpacket = function (packet) { + var sameNamespace = packet.nsp === this.nsp; + var rootNamespaceError = packet.type === parser.ERROR && packet.nsp === '/'; + if (!sameNamespace && !rootNamespaceError) return; + + switch (packet.type) { + case parser.CONNECT: + this.onconnect(); + break; + + case parser.EVENT: + this.onevent(packet); + break; + + case parser.BINARY_EVENT: + this.onevent(packet); + break; + + case parser.ACK: + this.onack(packet); + break; + + case parser.BINARY_ACK: + this.onack(packet); + break; + + case parser.DISCONNECT: + this.ondisconnect(); + break; + + case parser.ERROR: + this.emit('error', packet.data); + break; + } +}; +/** + * Called upon a server event. + * + * @param {Object} packet + * @api private + */ + + +Socket.prototype.onevent = function (packet) { + var args = packet.data || []; + debug('emitting event %j', args); + + if (null != packet.id) { + debug('attaching ack callback to event'); + args.push(this.ack(packet.id)); + } + + if (this.connected) { + emit.apply(this, args); + } else { + this.receiveBuffer.push(args); + } +}; +/** + * Produces an ack callback to emit with an event. + * + * @api private + */ + + +Socket.prototype.ack = function (id) { + var self = this; + var sent = false; + return function () { + // prevent double callbacks + if (sent) return; + sent = true; + var args = toArray(arguments); + debug('sending ack %j', args); + self.packet({ + type: hasBin(args) ? parser.BINARY_ACK : parser.ACK, + id: id, + data: args + }); + }; +}; +/** + * Called upon a server acknowlegement. + * + * @param {Object} packet + * @api private + */ + + +Socket.prototype.onack = function (packet) { + var ack = this.acks[packet.id]; + + if ('function' === typeof ack) { + debug('calling ack %s with %j', packet.id, packet.data); + ack.apply(this, packet.data); + delete this.acks[packet.id]; + } else { + debug('bad ack %s', packet.id); + } +}; +/** + * Called upon server connect. + * + * @api private + */ + + +Socket.prototype.onconnect = function () { + this.connected = true; + this.disconnected = false; + this.emit('connect'); + this.emitBuffered(); +}; +/** + * Emit buffered events (received and emitted). + * + * @api private + */ + + +Socket.prototype.emitBuffered = function () { + var i; + + for (i = 0; i < this.receiveBuffer.length; i++) { + emit.apply(this, this.receiveBuffer[i]); + } + + this.receiveBuffer = []; + + for (i = 0; i < this.sendBuffer.length; i++) { + this.packet(this.sendBuffer[i]); + } + + this.sendBuffer = []; +}; +/** + * Called upon server disconnect. + * + * @api private + */ + + +Socket.prototype.ondisconnect = function () { + debug('server disconnect (%s)', this.nsp); + this.destroy(); + this.onclose('io server disconnect'); +}; +/** + * Called upon forced client/server side disconnections, + * this method ensures the manager stops tracking us and + * that reconnections don't get triggered for this. + * + * @api private. + */ + + +Socket.prototype.destroy = function () { + if (this.subs) { + // clean subscriptions to avoid reconnections + for (var i = 0; i < this.subs.length; i++) { + this.subs[i].destroy(); + } + + this.subs = null; + } + + this.io.destroy(this); +}; +/** + * Disconnects the socket manually. + * + * @return {Socket} self + * @api public + */ + + +Socket.prototype.close = Socket.prototype.disconnect = function () { + if (this.connected) { + debug('performing disconnect (%s)', this.nsp); + this.packet({ + type: parser.DISCONNECT + }); + } // remove socket from pool + + + this.destroy(); + + if (this.connected) { + // fire events + this.onclose('io client disconnect'); + } + + return this; +}; +/** + * Sets the compress flag. + * + * @param {Boolean} if `true`, compresses the sending data + * @return {Socket} self + * @api public + */ + + +Socket.prototype.compress = function (compress) { + this.flags.compress = compress; + return this; +}; +/** + * Sets the binary flag + * + * @param {Boolean} whether the emitted data contains binary + * @return {Socket} self + * @api public + */ + + +Socket.prototype.binary = function (binary) { + this.flags.binary = binary; + return this; +}; + +},{"./on":400,"component-bind":46,"component-emitter":47,"debug":403,"has-binary2":387,"parseqs":394,"socket.io-parser":406,"to-array":411}],402:[function(require,module,exports){ +/** + * Module dependencies. + */ +var parseuri = require('parseuri'); + +var debug = require('debug')('socket.io-client:url'); +/** + * Module exports. + */ + + +module.exports = url; +/** + * URL parser. + * + * @param {String} url + * @param {Object} An object meant to mimic window.location. + * Defaults to window.location. + * @api public + */ + +function url(uri, loc) { + var obj = uri; // default to window.location + + loc = loc || typeof location !== 'undefined' && location; + if (null == uri) uri = loc.protocol + '//' + loc.host; // relative path support + + if ('string' === typeof uri) { + if ('/' === uri.charAt(0)) { + if ('/' === uri.charAt(1)) { + uri = loc.protocol + uri; + } else { + uri = loc.host + uri; + } + } + + if (!/^(https?|wss?):\/\//.test(uri)) { + debug('protocol-less url %s', uri); + + if ('undefined' !== typeof loc) { + uri = loc.protocol + '//' + uri; + } else { + uri = 'https://' + uri; + } + } // parse + + + debug('parse %s', uri); + obj = parseuri(uri); + } // make sure we treat `localhost:80` and `localhost` equally + + + if (!obj.port) { + if (/^(http|ws)$/.test(obj.protocol)) { + obj.port = '80'; + } else if (/^(http|ws)s$/.test(obj.protocol)) { + obj.port = '443'; + } + } + + obj.path = obj.path || '/'; + var ipv6 = obj.host.indexOf(':') !== -1; + var host = ipv6 ? '[' + obj.host + ']' : obj.host; // define unique id + + obj.id = obj.protocol + '://' + host + ':' + obj.port; // define href + + obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : ':' + obj.port); + return obj; +} + +},{"debug":403,"parseuri":395}],403:[function(require,module,exports){ +(function (process){ +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ +exports = module.exports = require('./debug'); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage(); +/** + * Colors. + */ + +exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33']; +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } // Internet Explorer and Edge do not support colors. + + + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + + + return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); +} +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + + +exports.formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; +/** + * Colorize log arguments if enabled. + * + * @api public + */ + + +function formatArgs(args) { + var useColors = this.useColors; + args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff); + if (!useColors) return; + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function (match) { + if ('%%' === match) return; + index++; + + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + args.splice(lastC, 0, c); +} +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments); +} +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch (e) {} +} +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + + +function load() { + var r; + + try { + r = exports.storage.debug; + } catch (e) {} // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + + + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + + +exports.enable(load()); +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} + +}).call(this,require('_process')) + +},{"./debug":404,"_process":397}],404:[function(require,module,exports){ +arguments[4][383][0].apply(exports,arguments) +},{"dup":383,"ms":393}],405:[function(require,module,exports){ +/*global Blob,File*/ + +/** + * Module requirements + */ +var isArray = require('isarray'); + +var isBuf = require('./is-buffer'); + +var toString = Object.prototype.toString; +var withNativeBlob = typeof Blob === 'function' || typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]'; +var withNativeFile = typeof File === 'function' || typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]'; +/** + * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder. + * Anything with blobs or files should be fed through removeBlobs before coming + * here. + * + * @param {Object} packet - socket.io event packet + * @return {Object} with deconstructed packet and list of buffers + * @api public + */ + +exports.deconstructPacket = function (packet) { + var buffers = []; + var packetData = packet.data; + var pack = packet; + pack.data = _deconstructPacket(packetData, buffers); + pack.attachments = buffers.length; // number of binary 'attachments' + + return { + packet: pack, + buffers: buffers + }; +}; + +function _deconstructPacket(data, buffers) { + if (!data) return data; + + if (isBuf(data)) { + var placeholder = { + _placeholder: true, + num: buffers.length + }; + buffers.push(data); + return placeholder; + } else if (isArray(data)) { + var newData = new Array(data.length); + + for (var i = 0; i < data.length; i++) { + newData[i] = _deconstructPacket(data[i], buffers); + } + + return newData; + } else if (typeof data === 'object' && !(data instanceof Date)) { + var newData = {}; + + for (var key in data) { + newData[key] = _deconstructPacket(data[key], buffers); + } + + return newData; + } + + return data; +} +/** + * Reconstructs a binary packet from its placeholder packet and buffers + * + * @param {Object} packet - event packet with placeholders + * @param {Array} buffers - binary buffers to put in placeholder positions + * @return {Object} reconstructed packet + * @api public + */ + + +exports.reconstructPacket = function (packet, buffers) { + packet.data = _reconstructPacket(packet.data, buffers); + packet.attachments = undefined; // no longer useful + + return packet; +}; + +function _reconstructPacket(data, buffers) { + if (!data) return data; + + if (data && data._placeholder) { + return buffers[data.num]; // appropriate buffer (should be natural order anyway) + } else if (isArray(data)) { + for (var i = 0; i < data.length; i++) { + data[i] = _reconstructPacket(data[i], buffers); + } + } else if (typeof data === 'object') { + for (var key in data) { + data[key] = _reconstructPacket(data[key], buffers); + } + } + + return data; +} +/** + * Asynchronously removes Blobs or Files from data via + * FileReader's readAsArrayBuffer method. Used before encoding + * data as msgpack. Calls callback with the blobless data. + * + * @param {Object} data + * @param {Function} callback + * @api private + */ + + +exports.removeBlobs = function (data, callback) { + function _removeBlobs(obj, curKey, containingObject) { + if (!obj) return obj; // convert any blob + + if (withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File) { + pendingBlobs++; // async filereader + + var fileReader = new FileReader(); + + fileReader.onload = function () { + // this.result == arraybuffer + if (containingObject) { + containingObject[curKey] = this.result; + } else { + bloblessData = this.result; + } // if nothing pending its callback time + + + if (! --pendingBlobs) { + callback(bloblessData); + } + }; + + fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer + } else if (isArray(obj)) { + // handle array + for (var i = 0; i < obj.length; i++) { + _removeBlobs(obj[i], i, obj); + } + } else if (typeof obj === 'object' && !isBuf(obj)) { + // and object + for (var key in obj) { + _removeBlobs(obj[key], key, obj); + } + } + } + + var pendingBlobs = 0; + var bloblessData = data; + + _removeBlobs(bloblessData); + + if (!pendingBlobs) { + callback(bloblessData); + } +}; + +},{"./is-buffer":407,"isarray":410}],406:[function(require,module,exports){ +/** + * Module dependencies. + */ +var debug = require('debug')('socket.io-parser'); + +var Emitter = require('component-emitter'); + +var binary = require('./binary'); + +var isArray = require('isarray'); + +var isBuf = require('./is-buffer'); +/** + * Protocol version. + * + * @api public + */ + + +exports.protocol = 4; +/** + * Packet types. + * + * @api public + */ + +exports.types = ['CONNECT', 'DISCONNECT', 'EVENT', 'ACK', 'ERROR', 'BINARY_EVENT', 'BINARY_ACK']; +/** + * Packet type `connect`. + * + * @api public + */ + +exports.CONNECT = 0; +/** + * Packet type `disconnect`. + * + * @api public + */ + +exports.DISCONNECT = 1; +/** + * Packet type `event`. + * + * @api public + */ + +exports.EVENT = 2; +/** + * Packet type `ack`. + * + * @api public + */ + +exports.ACK = 3; +/** + * Packet type `error`. + * + * @api public + */ + +exports.ERROR = 4; +/** + * Packet type 'binary event' + * + * @api public + */ + +exports.BINARY_EVENT = 5; +/** + * Packet type `binary ack`. For acks with binary arguments. + * + * @api public + */ + +exports.BINARY_ACK = 6; +/** + * Encoder constructor. + * + * @api public + */ + +exports.Encoder = Encoder; +/** + * Decoder constructor. + * + * @api public + */ + +exports.Decoder = Decoder; +/** + * A socket.io Encoder instance + * + * @api public + */ + +function Encoder() {} + +var ERROR_PACKET = exports.ERROR + '"encode error"'; +/** + * Encode a packet as a single string if non-binary, or as a + * buffer sequence, depending on packet type. + * + * @param {Object} obj - packet object + * @param {Function} callback - function to handle encodings (likely engine.write) + * @return Calls callback with Array of encodings + * @api public + */ + +Encoder.prototype.encode = function (obj, callback) { + debug('encoding packet %j', obj); + + if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) { + encodeAsBinary(obj, callback); + } else { + var encoding = encodeAsString(obj); + callback([encoding]); + } +}; +/** + * Encode packet as string. + * + * @param {Object} packet + * @return {String} encoded + * @api private + */ + + +function encodeAsString(obj) { + // first is type + var str = '' + obj.type; // attachments if we have them + + if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) { + str += obj.attachments + '-'; + } // if we have a namespace other than `/` + // we append it followed by a comma `,` + + + if (obj.nsp && '/' !== obj.nsp) { + str += obj.nsp + ','; + } // immediately followed by the id + + + if (null != obj.id) { + str += obj.id; + } // json data + + + if (null != obj.data) { + var payload = tryStringify(obj.data); + + if (payload !== false) { + str += payload; + } else { + return ERROR_PACKET; + } + } + + debug('encoded %j as %s', obj, str); + return str; +} + +function tryStringify(str) { + try { + return JSON.stringify(str); + } catch (e) { + return false; + } +} +/** + * Encode packet as 'buffer sequence' by removing blobs, and + * deconstructing packet into object with placeholders and + * a list of buffers. + * + * @param {Object} packet + * @return {Buffer} encoded + * @api private + */ + + +function encodeAsBinary(obj, callback) { + function writeEncoding(bloblessData) { + var deconstruction = binary.deconstructPacket(bloblessData); + var pack = encodeAsString(deconstruction.packet); + var buffers = deconstruction.buffers; + buffers.unshift(pack); // add packet info to beginning of data list + + callback(buffers); // write all the buffers + } + + binary.removeBlobs(obj, writeEncoding); +} +/** + * A socket.io Decoder instance + * + * @return {Object} decoder + * @api public + */ + + +function Decoder() { + this.reconstructor = null; +} +/** + * Mix in `Emitter` with Decoder. + */ + + +Emitter(Decoder.prototype); +/** + * Decodes an encoded packet string into packet JSON. + * + * @param {String} obj - encoded packet + * @return {Object} packet + * @api public + */ + +Decoder.prototype.add = function (obj) { + var packet; + + if (typeof obj === 'string') { + packet = decodeString(obj); + + if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { + // binary packet's json + this.reconstructor = new BinaryReconstructor(packet); // no attachments, labeled binary but no binary data to follow + + if (this.reconstructor.reconPack.attachments === 0) { + this.emit('decoded', packet); + } + } else { + // non-binary full packet + this.emit('decoded', packet); + } + } else if (isBuf(obj) || obj.base64) { + // raw binary data + if (!this.reconstructor) { + throw new Error('got binary data when not reconstructing a packet'); + } else { + packet = this.reconstructor.takeBinaryData(obj); + + if (packet) { + // received final buffer + this.reconstructor = null; + this.emit('decoded', packet); + } + } + } else { + throw new Error('Unknown type: ' + obj); + } }; +/** + * Decode a packet String (JSON data) + * + * @param {String} str + * @return {Object} packet + * @api private + */ -},{}],398:[function(require,module,exports){ -(function (__dirname){ -const path = require("path"); -module.exports = { - assorted: path.join(__dirname, "assorted.conllu"), - czech_train: path.join(__dirname, "cs_cac-ud-train.conllu"), - turkish_train: path.join(__dirname, "tr_imst-ud-test.conllu") +function decodeString(str) { + var i = 0; // look up type + + var p = { + type: Number(str.charAt(0)) + }; + + if (null == exports.types[p.type]) { + return error('unknown packet type ' + p.type); + } // look up attachments if type binary + + + if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) { + var buf = ''; + + while (str.charAt(++i) !== '-') { + buf += str.charAt(i); + if (i == str.length) break; + } + + if (buf != Number(buf) || str.charAt(i) !== '-') { + throw new Error('Illegal attachments'); + } + + p.attachments = Number(buf); + } // look up namespace (if any) + + + if ('/' === str.charAt(i + 1)) { + p.nsp = ''; + + while (++i) { + var c = str.charAt(i); + if (',' === c) break; + p.nsp += c; + if (i === str.length) break; + } + } else { + p.nsp = '/'; + } // look up id + + + var next = str.charAt(i + 1); + + if ('' !== next && Number(next) == next) { + p.id = ''; + + while (++i) { + var c = str.charAt(i); + + if (null == c || Number(c) != c) { + --i; + break; + } + + p.id += str.charAt(i); + if (i === str.length) break; + } + + p.id = Number(p.id); + } // look up json data + + + if (str.charAt(++i)) { + var payload = tryParse(str.substr(i)); + var isPayloadValid = payload !== false && (p.type === exports.ERROR || isArray(payload)); + + if (isPayloadValid) { + p.data = payload; + } else { + return error('invalid payload'); + } + } + + debug('decoded %s as %j', str, p); + return p; +} + +function tryParse(str) { + try { + return JSON.parse(str); + } catch (e) { + return false; + } +} +/** + * Deallocates a parser's resources + * + * @api public + */ + + +Decoder.prototype.destroy = function () { + if (this.reconstructor) { + this.reconstructor.finishedReconstruction(); + } }; +/** + * A manager of a binary event's 'buffer sequence'. Should + * be constructed whenever a packet of type BINARY_EVENT is + * decoded. + * + * @param {Object} packet + * @return {BinaryReconstructor} initialized reconstructor + * @api private + */ -}).call(this,"/node_modules/notatrix/data/corpora") -},{"path":483}],399:[function(require,module,exports){ -module.exports = { - "apertium stream": require("./apertium-stream"), - apertiumStream: require("./apertium-stream"), - Brackets: require("./brackets"), - brackets: require("./brackets"), - CG3: require("./cg3"), - cg3: require("./cg3"), - "CoNLL-U": require("./conllu"), - conllu: require("./conllu"), - "notatrix serial": require("./notatrix-serial"), - notatrixSerial: require("./notatrix-serial"), - Params: require("./params"), - params: require("./params"), - "plain text": require("./plain-text"), - plainText: require("./plain-text"), - SD: require("./sd"), - sd: require("./sd"), - corpora: require("./corpora") +function BinaryReconstructor(packet) { + this.reconPack = packet; + this.buffers = []; +} +/** + * Method to be called when binary data received from connection + * after a BINARY_EVENT packet. + * + * @param {Buffer | ArrayBuffer} binData - the raw binary data received + * @return {null | Object} returns null if more binary data is expected or + * a reconstructed packet object if all buffers have been received. + * @api private + */ + + +BinaryReconstructor.prototype.takeBinaryData = function (binData) { + this.buffers.push(binData); + + if (this.buffers.length === this.reconPack.attachments) { + // done with buffer list + var packet = binary.reconstructPacket(this.reconPack, this.buffers); + this.finishedReconstruction(); + return packet; + } + + return null; }; +/** + * Cleans up binary packet reconstruction variables. + * + * @api private + */ -},{"./apertium-stream":394,"./brackets":395,"./cg3":396,"./conllu":397,"./corpora":398,"./notatrix-serial":400,"./params":401,"./plain-text":402,"./sd":403}],400:[function(require,module,exports){ -module.exports = {}; -},{}],401:[function(require,module,exports){ -module.exports = { - 0: [{ - form: "hello" - }, { - form: "world" - }] +BinaryReconstructor.prototype.finishedReconstruction = function () { + this.reconPack = null; + this.buffers = []; }; -},{}],402:[function(require,module,exports){ -module.exports = { - 0: "this is a test", - 1: "this is a test.", - 2: "this is a test...", - 3: "this is a test?", - 4: "\tthis is a test", - 5: "More sentences = more data; ipso facto, yes.", - parens_and_numbers: `Дәүләтләрнең, шул исәптән Русиянең дә, диңгез чикләре ярдан 12 миль (яки 22,2 км) ераклыкта узуы килешенгән` +function error(msg) { + return { + type: exports.ERROR, + data: 'parser error: ' + msg + }; +} + +},{"./binary":405,"./is-buffer":407,"component-emitter":47,"debug":408,"isarray":410}],407:[function(require,module,exports){ +(function (Buffer){ +module.exports = isBuf; +var withNativeBuffer = typeof Buffer === 'function' && typeof Buffer.isBuffer === 'function'; +var withNativeArrayBuffer = typeof ArrayBuffer === 'function'; + +var isView = function (obj) { + return typeof ArrayBuffer.isView === 'function' ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer; }; +/** + * Returns true if obj is a buffer or an arraybuffer. + * + * @api private + */ -},{}],403:[function(require,module,exports){ -module.exports = { - 0: `And Robert the fourth place . -cc(Robert, And) -orphan(Robert, place) -punct(Robert, .) -amod(place, fourth) -det(place, the)`, - 1: `ROOT And Robert the fourth place . -root(ROOT, Robert) -cc(Robert, And) -orphan(Robert, place) -punct(Robert, .) -amod(place, fourth) -det(place, the)`, - 2: `ROOT I love French fries . -root(ROOT, love)`, - // https://github.com/UniversalDependencies/docs/blob/pages-source/_u-dep/ccomp.md - ccomp_1: `He says that you like to swim -ccomp(says, like) -mark(like, that)`, - ccomp_2: `He says you like to swim -ccomp(says, like)`, - ccomp_3: `The boss said to start digging -ccomp(said, start) -mark(start, to)`, - ccomp_4: `We started digging -xcomp(started, digging)`, - ccomp_5: `The important thing is to keep calm. -ccomp(is, keep) -nsubj(is, thing)`, - ccomp_6: `The problem is that this has never been tried . -ccomp(is, tried) -nsubj(is, problem)` + +function isBuf(obj) { + return withNativeBuffer && Buffer.isBuffer(obj) || withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)); +} + +}).call(this,require("buffer").Buffer) + +},{"buffer":44}],408:[function(require,module,exports){ +(function (process){ +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ +exports = module.exports = require('./debug'); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage(); +/** + * Colors. + */ + +exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33']; +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } // Internet Explorer and Edge do not support colors. + + + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + + + return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); +} +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + + +exports.formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } }; +/** + * Colorize log arguments if enabled. + * + * @api public + */ -},{}],404:[function(require,module,exports){ -"use strict"; -const _ = require("underscore"); +function formatArgs(args) { + var useColors = this.useColors; + args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff); + if (!useColors) return; + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into -const utils = require("./utils"); + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function (match) { + if ('%%' === match) return; + index++; -const ConverterError = utils.ConverterError; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + args.splice(lastC, 0, c); +} +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ -const nx = require("./nx"); -module.exports = (input, options) => { +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments); +} +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + + +function save(namespaces) { try { - var sent = new nx.Sentence(input, options); + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch (e) {} +} +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ - sent.from = format => convert(sent.input, _.extend({ - interpretAs: format - }, options)); - return sent; - } catch (e) { - if (e instanceof utils.ToolError || e instanceof utils.NxError) throw new ConverterError("FATAL: unable to convert: " + e.message); - throw e; +function load() { + var r; + + try { + r = exports.storage.debug; + } catch (e) {} // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + + + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; } -}; -},{"./nx":466,"./utils":479,"underscore":499}],405:[function(require,module,exports){ -"use strict"; + return r; +} +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ -const _ = require("underscore"); -const utils = require("./utils"); +exports.enable(load()); +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ -const DetectorError = utils.DetectorError; -let as = { - "apertium stream": require("./formats/apertium-stream").detect, - apertiumStream: require("./formats/apertium-stream").detect, - Brackets: require("./formats/brackets").detect, - brackets: require("./formats/brackets").detect, - CG3: require("./formats/cg3").detect, - cg3: require("./formats/cg3").detect, - "CoNLL-U": require("./formats/conllu").detect, - conllu: require("./formats/conllu").detect, - "notatrix serial": require("./formats/notatrix-serial").detect, - notatrixSerial: require("./formats/notatrix-serial").detect, - Params: require("./formats/params").detect, - params: require("./formats/params").detect, - "plain text": require("./formats/plain-text").detect, - plainText: require("./formats/plain-text").detect, - SD: require("./formats/sd").detect, - sd: require("./formats/sd").detect -}; +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} + +}).call(this,require('_process')) + +},{"./debug":409,"_process":397}],409:[function(require,module,exports){ +arguments[4][383][0].apply(exports,arguments) +},{"dup":383,"ms":393}],410:[function(require,module,exports){ +arguments[4][388][0].apply(exports,arguments) +},{"dup":388}],411:[function(require,module,exports){ +module.exports = toArray; + +function toArray(list, index) { + var array = []; + index = index || 0; + + for (var i = index || 0; i < list.length; i++) { + array[i - index] = list[i]; + } + + return array; +} + +},{}],412:[function(require,module,exports){ +(function (global){ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define('underscore', factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, function () { + var current = global._; + var exports = global._ = factory(); + + exports.noConflict = function () { + global._ = current; + return exports; + }; + }()); +})(this, function () { + // Underscore.js 1.13.1 + // https://underscorejs.org + // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors + // Underscore may be freely distributed under the MIT license. + // Current version. + var VERSION = '1.13.1'; // Establish the root object, `window` (`self`) in the browser, `global` + // on the server, or `this` in some virtual machines. We use `self` + // instead of `window` for `WebWorker` support. + + var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global && global || Function('return this')() || {}; // Save bytes in the minified (but not gzipped) version: + + var ArrayProto = Array.prototype, + ObjProto = Object.prototype; + var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; // Create quick reference variables for speed access to core prototypes. + + var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; // Modern feature detection. + + var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; // All **ECMAScript 5+** native function implementations that we hope to use + // are declared here. + + var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; // Create references to these builtin functions because we override them. -module.exports = (text, options) => { - options = _.defaults(options, { - suppressDetectorErrors: true, - returnAllMatches: true, - requireOneMatch: false - }); - const matches = utils.formats.map(format => { - try { - return as[format](text, options); - } catch (e) { - if (e instanceof DetectorError) return; - throw e; - } - }).filter(utils.thin); - if (!matches.length && !options.suppressDetectorErrors) throw new DetectorError("Unable to detect format", text, options); - if (matches.length > 1 && !options.suppressDetectorErrors && options.requireOneMatch) throw new DetectorError("Detected multiple formats", text, options); - return options.returnAllMatches ? matches : matches[0]; -}; + var _isNaN = isNaN, + _isFinite = isFinite; // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -module.exports.as = as; + var hasEnumBug = !{ + toString: null + }.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // The largest integer that can be represented exactly. -},{"./formats/apertium-stream":409,"./formats/brackets":416,"./formats/cg3":422,"./formats/conllu":428,"./formats/notatrix-serial":436,"./formats/params":443,"./formats/plain-text":450,"./formats/sd":457,"./utils":479,"underscore":499}],406:[function(require,module,exports){ -"use strict"; + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; // Some functions take a variable number of arguments, or a few expected + // arguments at the beginning and then a variable number of values to operate + // on. This helper accumulates all remaining arguments past the function’s + // argument length (or an explicit `startIndex`), into an array that becomes + // the last argument. Similar to ES6’s "rest parameter". -const utils = require("../../utils"); + function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function () { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; -const DetectorError = utils.DetectorError; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } -module.exports = (text, options) => { - throw new DetectorError("not implemented"); -}; + switch (startIndex) { + case 0: + return func.call(this, rest); -},{"../../utils":479}],407:[function(require,module,exports){ -module.exports = null; + case 1: + return func.call(this, arguments[0], rest); -},{}],408:[function(require,module,exports){ -"use strict"; + case 2: + return func.call(this, arguments[0], arguments[1], rest); + } -const utils = require("../../utils"); + var args = Array(startIndex + 1); -const GeneratorError = utils.GeneratorError; + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } -module.exports = (text, options) => {// throw new GeneratorError('not implemented'); -}; + args[startIndex] = rest; + return func.apply(this, args); + }; + } // Is a given variable an object? -},{"../../utils":479}],409:[function(require,module,exports){ -"use strict"; -module.exports = { - name: "apertium stream", - fields: require("./fields"), - split: require("./splitter"), - detect: require("./detector"), - parse: require("./parser"), - generate: require("./generator") -}; + function isObject(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + } // Is a given value equal to null? -},{"./detector":406,"./fields":407,"./generator":408,"./parser":410,"./splitter":411}],410:[function(require,module,exports){ -"use strict"; -const utils = require("../../utils"); + function isNull(obj) { + return obj === null; + } // Is a given variable undefined? -const ParserError = utils.ParserError; -module.exports = (text, options) => {// throw new ParserError('not implemented'); -}; + function isUndefined(obj) { + return obj === void 0; + } // Is a given value a boolean? -},{"../../utils":479}],411:[function(require,module,exports){ -"use strict"; -const utils = require("../../utils"); + function isBoolean(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + } // Is a given value a DOM element? -const SplitterError = utils.SplitterError; -module.exports = (text, options) => {// throw new SplitterError('not implemented', text, options); -}; + function isElement(obj) { + return !!(obj && obj.nodeType === 1); + } // Internal function for creating a `toString`-based type tester. -},{"../../utils":479}],412:[function(require,module,exports){ -"use strict"; -const _ = require("underscore"); + function tagTester(name) { + var tag = '[object ' + name + ']'; + return function (obj) { + return toString.call(obj) === tag; + }; + } -const utils = require("../../utils"); + var isString = tagTester('String'); + var isNumber = tagTester('Number'); + var isDate = tagTester('Date'); + var isRegExp = tagTester('RegExp'); + var isError = tagTester('Error'); + var isSymbol = tagTester('Symbol'); + var isArrayBuffer = tagTester('ArrayBuffer'); + var isFunction = tagTester('Function'); // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old + // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -const DetectorError = utils.DetectorError; + var nodelist = root.document && root.document.childNodes; -module.exports = (text, options) => { - options = _.defaults(options, { - allowEmptyString: false, - allowTrailingWhitespace: true, - allowLeadingWhitespace: true, - allowNoDependencies: false, - allowNewlines: false - }); - if (!text && !options.allowEmptyString) throw new DetectorError("Illegal Brackets: empty string", text, options); - if (utils.isJSONSerializable(text)) throw new DetectorError("Illegal Brackets: JSON object", text, options); - if (/\n/.test(text) && !options.allowNewlines) throw new DetectorError("Illegal Brackets: contains newlines", text, options); // internal stuff + if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function (obj) { + return typeof obj == 'function' || false; + }; + } - let parsing = null; - let depth = 0; - let sawBracket = false; - text.split("").forEach((char, i) => { - switch (char) { - case "[": - if (parsing === "]") throw new DetectorError("Illegal Brackets: invalid sequence \"][\"", text, options); - sawBracket = true; - depth += 1; - break; + var isFunction$1 = isFunction; + var hasObjectTag = tagTester('Object'); // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. + // In IE 11, the most common among them, this problem also applies to + // `Map`, `WeakMap` and `Set`. - case "]": - if (parsing === "[") throw new DetectorError("Illegal Brackets: invalid sequence \"[]\"", text, options); - sawBracket = true; - depth -= 1; - break; + var hasStringTagBug = supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))), + isIE11 = typeof Map !== 'undefined' && hasObjectTag(new Map()); + var isDataView = tagTester('DataView'); // In IE 10 - Edge 13, we need a different heuristic + // to determine whether an object is a `DataView`. - case " ": - case "\t": - case "\n": - if (!options.allowLeadingWhitespace) { - if (parsing !== null && !utils.re.whitespace.test(parsing)) throw new DetectorError("Illegal Brackets: contains leading whitespace", text, options); - } + function ie10IsDataView(obj) { + return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); + } - break; + var isDataView$1 = hasStringTagBug ? ie10IsDataView : isDataView; // Is a given value an array? + // Delegates to ECMA5's native `Array.isArray`. + + var isArray = nativeIsArray || tagTester('Array'); // Internal function to check whether `key` is an own property name of `obj`. + + function has$1(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + } + + var isArguments = tagTester('Arguments'); // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + + (function () { + if (!isArguments(arguments)) { + isArguments = function (obj) { + return has$1(obj, 'callee'); + }; } + })(); - parsing = char; - }); - if (!sawBracket && !options.allowNoDependencies) throw new DetectorError("Illegal Brackets: contains no dependencies", text, options); - if (depth !== 0) throw new DetectorError("Illegal Brackets: bracket mismatch", text, options); - if (utils.re.whitespace.test(parsing) && !options.allowTrailingWhitespace) throw new DetectorError("Illegal Brackets: contains trailing whitespace", text, options); - return "Brackets"; -}; + var isArguments$1 = isArguments; // Is a given object a finite number? -},{"../../utils":479,"underscore":499}],413:[function(require,module,exports){ -module.exports = ["form", "heads"]; -module.exports.hasComments = false; + function isFinite$1(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); + } // Is the given value `NaN`? -},{}],414:[function(require,module,exports){ -"use strict"; -const _ = require("underscore"); + function isNaN$1(obj) { + return isNumber(obj) && _isNaN(obj); + } // Predicate-generating function. Often useful outside of Underscore. -const utils = require("../../utils"); -const GeneratorError = utils.GeneratorError; + function constant(value) { + return function () { + return value; + }; + } // Common internal logic for `isArrayLike` and `isBufferLike`. -const getLoss = require("./get-loss"); -module.exports = (sent, options) => { - if (!sent.isParsed) return { - output: null, - loss: undefined - }; - if (!sent || sent.name !== "Sentence") throw new GeneratorError(`Unable to generate, input not a Sentence`, sent, options); - options = _.defaults(options, sent.options, {}); - sent.index(); - if (!sent.root) throw new GeneratorError("Unable to generate, could not find root"); // build the tree structure + function createSizePropertyCheck(getSizeProperty) { + return function (collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; + }; + } // Internal helper to generate a function to obtain property `key` from `obj`. - let seen = new Set([sent.root]); - let root = { - token: sent.root, - deprel: null, - deps: [] - }; - const visit = node => { - node.token.mapDependents(dep => { - if (seen.has(dep.token)) throw new GeneratorError("Unable to generate, dependency structure non-linear"); - dep.deps = []; - node.deps.push(dep); - seen.add(dep.token); - visit(dep); - }); - }; + function shallowProperty(key) { + return function (obj) { + return obj == null ? void 0 : obj[key]; + }; + } // Internal helper to obtain the `byteLength` property of an object. - visit(root); // console.log(root); - if (seen.size < sent.size + 1) throw new GeneratorError("Unable to generate, sentence not fully connected"); // parse the tree into a string + var getByteLength = shallowProperty('byteLength'); // Internal helper to determine whether we should spend extensive checks against + // `ArrayBuffer` et al. - let output = ""; + var isBufferLike = createSizePropertyCheck(getByteLength); // Is a given value a typed array? - const walk = node => { - output += "[" + (node.deprel || "_") + " "; - node.deps.forEach(dep => { - if (dep.token.indices.absolute < node.token.indices.absolute) walk(dep); - }); - output += " " + node.token.form + " "; - node.deps.forEach(dep => { - if (dep.token.indices.absolute > node.token.indices.absolute) walk(dep); - }); - output += " ] "; - }; + var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; - root.deps.forEach(dep => walk(dep)); // clean up the output + function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? nativeIsView(obj) && !isDataView$1(obj) : isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); + } - output = output.replace(/\s+/g, " ").replace(/ \]/g, "]").replace(/\[ /g, "[").replace(/(\w)_(\w)/, "$1 $2").trim(); // console.log(output); + var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); // Internal helper to obtain the `length` property of an object. - return { - output: output, - loss: getLoss(sent) - }; -}; + var getLength = shallowProperty('length'); // Internal helper to create a simple lookup structure. + // `collectNonEnumProps` used to depend on `_.contains`, but this led to + // circular imports. `emulatedSet` is a one-off solution that only works for + // arrays of strings. -},{"../../utils":479,"./get-loss":415,"underscore":499}],415:[function(require,module,exports){ -"use strict"; + function emulatedSet(keys) { + var hash = {}; -const _ = require("underscore"); + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; -const utils = require("../../utils"); + return { + contains: function (key) { + return hash[key]; + }, + push: function (key) { + hash[key] = true; + return keys.push(key); + } + }; + } // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't + // be iterated by `for key in ...` and thus missed. Extends `keys` in place if + // needed. -const fields = require("./fields"); -module.exports = sent => { - const serial = sent.serialize(); - let losses = new Set(); - if (serial.comments.length) losses.add("comments"); - serial.tokens.forEach(token => { - Object.keys(_.omit(token, fields)).forEach(field => { - switch (field) { - case "uuid": - case "index": - case "deps": - break; + function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = isFunction$1(constructor) && constructor.prototype || ObjProto; // Constructor is a special case. - case "heads": - if (token.heads.length > 1) losses.add(field); - break; + var prop = 'constructor'; + if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - case "feats": - case "misc": - if (token[field] && token[field].length) losses.add(field); - break; + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; - default: - if (token[field]) losses.add(field); + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); } - }); - }); - return Array.from(losses); -}; + } + } // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys`. -},{"../../utils":479,"./fields":413,"underscore":499}],416:[function(require,module,exports){ -"use strict"; -module.exports = { - name: "Brackets", - fields: require("./fields"), - split: require("../default-splitter"), - detect: require("./detector"), - parse: require("./parser"), - generate: require("./generator") -}; + function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; -},{"../default-splitter":430,"./detector":412,"./fields":413,"./generator":414,"./parser":417}],417:[function(require,module,exports){ -"use strict"; + for (var key in obj) if (has$1(obj, key)) keys.push(key); // Ahem, IE < 9. -const _ = require("underscore"); -const utils = require("../../utils"); + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + } // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. -const ParserError = utils.ParserError; -const detect = require("./detector"); + function isEmpty(obj) { + if (obj == null) return true; // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. -module.exports = (text, options) => { - // console.log(); - // console.log(text); - options = _.defaults(options, { - allowEmptyString: false - }); + var length = getLength(obj); + if (typeof length == 'number' && (isArray(obj) || isString(obj) || isArguments$1(obj))) return length === 0; + return getLength(keys(obj)) === 0; + } // Returns whether an object has a given set of `key:value` pairs. - try { - detect(text, options); - } catch (e) { - if (e instanceof utils.DetectorError) throw new ParserError(e.message); - throw e; - } - class Sentence { - constructor(text, options) { - this.input = text; - this.options = options; - this.parent = null; - this.root = []; - this.comments = []; - } + function isMatch(object, attrs) { + var _keys = keys(attrs), + length = _keys.length; - serialize() { - this.root.index(0); - return { - input: this.input, - options: this.options, - comments: this.comments, - tokens: this.root.serialize([]) - }; - } + if (object == null) return !length; + var obj = Object(object); - push(token) { - this.root = token; + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; } - } + return true; + } // If Underscore is called as a function, it returns a wrapped object that can + // be used OO-style. This wrapper holds altered versions of all functions added + // through `_.mixin`. Wrapped objects may be chained. - class Token { - constructor(parent) { - this.parent = parent; - this.deprel = null; - this.before = []; - this.words = []; - this.after = []; - } - eachBefore(callback) { - for (let i = 0; i < this.before.length; i++) { - callback(this.before[i], i); - } - } + function _$1(obj) { + if (obj instanceof _$1) return obj; + if (!(this instanceof _$1)) return new _$1(obj); + this._wrapped = obj; + } - eachAfter(callback) { - for (let i = 0; i < this.after.length; i++) { - callback(this.after[i], i); - } - } + _$1.VERSION = VERSION; // Extracts the result from a wrapped and chained object. - index(num) { - this.eachBefore(before => { - num = before.index(num); - }); - this.num = ++num; - this.eachAfter(after => { - num = after.index(num); - }); - return num; - } + _$1.prototype.value = function () { + return this._wrapped; + }; // Provide unwrapping proxies for some methods used in engine operations + // such as arithmetic and JSON stringification. - serialize(tokens) { - this.eachBefore(before => { - before.serialize(tokens); - }); - tokens.push({ - form: this.form, - heads: [{ - index: this.parent.num || 0, - deprel: this.deprel - }], - index: this.num - }); - this.eachAfter(after => { - after.serialize(tokens); - }); - return tokens; - } - get form() { - return this.words.join("_"); - } + _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; - push(token) { - if (this.words.length) { - this.after.push(token); - } else { - this.before.push(token); - } - } + _$1.prototype.toString = function () { + return String(this._wrapped); + }; // Internal function to wrap or shallow-copy an ArrayBuffer, + // typed array or DataView to a new view, reusing the buffer. - addWord(word) { - if (!word) return; - if (this.deprel) { - this.words.push(word); - } else { - this.deprel = word; - } - } + function toBufferView(bufferSource) { + return new Uint8Array(bufferSource.buffer || bufferSource, bufferSource.byteOffset || 0, getByteLength(bufferSource)); + } // We use this string twice, so give it a name for minification. - } - let sent = new Sentence(text, options), - parsing = sent, - parent = null, - word = ""; + var tagDataView = '[object DataView]'; // Internal recursive comparison function for `_.isEqual`. - _.each(text, char => { - switch (char) { - case "[": - parent = parsing; - parsing = new Token(parent); - if (parent && parent.push) parent.push(parsing); - word = ""; - break; + function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; // `null` or `undefined` only equal to itself (strict comparison). - case "]": - if (parsing.addWord) parsing.addWord(word); - parsing = parsing.parent; - parent = parsing.parent; - word = ""; - break; + if (a == null || b == null) return false; // `NaN`s are equivalent, but non-reflexive. - case " ": - if (parsing.addWord) parsing.addWord(word); - word = ""; - break; + if (a !== a) return b !== b; // Exhaust primitive checks - default: - word += char; - break; - } - }); // console.log(sent.serialize()) + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); + } // Internal recursive comparison function for `_.isEqual`. - return sent.serialize(); -}; + function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _$1) a = a._wrapped; + if (b instanceof _$1) b = b._wrapped; // Compare `[[Class]]` names. -},{"../../utils":479,"./detector":412,"underscore":499}],418:[function(require,module,exports){ -"use strict"; + var className = toString.call(a); + if (className !== toString.call(b)) return false; // Work around a bug in IE 10 - Edge 13. -const _ = require("underscore"); + if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { + if (!isDataView$1(b)) return false; + className = tagDataView; + } -const utils = require("../../utils"); + switch (className) { + // These types are compared by value. + case '[object RegExp]': // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') -const DetectorError = utils.DetectorError; + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; -module.exports = (text, options) => { - options = _.defaults(options, { - allowEmptyString: false, - allowTrailingWhitespace: true, - allowLeadingWhitespace: true - }); - if (!text && !options.allowEmptyString) throw new DetectorError("Illegal CG3: empty string", text, options); - if (utils.isJSONSerializable(text)) throw new DetectorError("Illegal CG3: JSON object", text, options); // internal stuff + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; // An `egal` comparison is performed for other numeric values. - let parsing = null; // iterate over the lines and check each one + return +a === 0 ? 1 / +a === 1 / b : +a === +b; - text.split(/\n/).forEach(line => { - if (utils.re.whiteline.test(line)) { - if (parsing === null) { - if (!options.allowLeadingWhitespace) throw new DetectorError("Illegal CG3: contains leading whitespace", text, options); - } else { - if (parsing !== "token-body" || !options.allowTrailingWhitespace) throw new DetectorError("Illegal CG3: contains trailing whitespace", text, options); - } + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; - parsing = "whitespace"; - } else if (utils.re.comment.test(line)) { - if (parsing === "token-start" || parsing === "token-body") throw new DetectorError(`Illegal CG3: invalid sequence ${parsing}=>comment`, text, options); - parsing = "comment"; - } else if (utils.re.cg3TokenStart.test(line)) { - if (parsing === "token-start") throw new DetectorError(`Illegal CG3: invalid sequence ${parsing}=>token-start`, text, options); - parsing = "token-start"; - } else if (utils.re.cg3TokenContent.test(line)) { - if (parsing === "comment" || parsing === "whitespace") throw new DetectorError(`Illegal CG3: invalid sequence ${parsing}=>token-body`, text, options); - parsing = "token-body"; - } else { - throw new DetectorError(`Illegal CG3: unmatched line`, text, options); + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); } - }); - return "CG3"; -}; -},{"../../utils":479,"underscore":499}],419:[function(require,module,exports){ -module.exports = ["semicolon", "index", "form", "lemma", "heads", "xpostag", "other", "analyses"]; -module.exports.hasComments = true; + var areArrays = className === '[object Array]'; -},{}],420:[function(require,module,exports){ -"use strict"; + if (!areArrays && isTypedArray$1(a)) { + var byteLength = getByteLength(a); + if (byteLength !== getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } -const _ = require("underscore"); + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. -const utils = require("../../utils"); + var aCtor = a.constructor, + bCtor = b.constructor; -const GeneratorError = utils.GeneratorError; + if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && isFunction$1(bCtor) && bCtor instanceof bCtor) && 'constructor' in a && 'constructor' in b) { + return false; + } + } // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. -const getLoss = require("./get-loss"); -module.exports = (sent, options) => { - if (!sent.isParsed) return { - output: null, - loss: undefined - }; - if (!sent || sent.name !== "Sentence") throw new GeneratorError(`Unable to generate, input not a Sentence`, sent, options); - options = _.defaults(options, sent.options, { - omitIndices: false, - allowMissingLemma: true - }); - sent.index(); - let lines = []; - sent.comments.forEach(comment => lines.push("# " + comment.body)); - sent.tokens.forEach(token => { - const isSet = field => { - return field && field !== utils.fallback ? field : null; - }; + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } // Add the first object to the stack of traversed objects. - const push = (token, indent) => { - if (!token.lemma && !options.allowMissingLemma) throw new GeneratorError(`Unable to generate, token has no lemma`, sent, options); - indent = (token.semicolon ? ";" : "") + "\t".repeat(indent); - const head = token.heads.first; - const dependency = options.omitIndices ? null : "#" + token.indices.cg3 + "->" + (head == undefined ? "" : head.token.indices.cg3); - let line = [`"${isSet(token.lemma) || isSet(token.form) || utils.fallback}"`].concat(isSet(token.xpostag) || isSet(token.upostag)).concat((token._feats || []).join(" ")).concat((token._misc || []).join(" ")).concat(head && isSet(head.deprel) ? "@" + head.deprel : null).concat(dependency); - line = indent + line.filter(utils.thin).join(" "); - lines.push(line); - }; - lines.push(`"<${token.form || utils.fallback}>"`); + aStack.push(a); + bStack.push(b); // Recursively compare objects and arrays. - if (token._analyses && token._analyses.length) { - token._analyses.forEach(analysis => { - analysis.subTokens.forEach((subToken, i) => { - push(subToken, i + 1); - }); - }); + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; // Deep compare the contents, ignoring non-numeric properties. + + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } } else { - push(token, 1); - } - }); - return { - output: lines.join("\n"), - loss: getLoss(sent) - }; -}; + // Deep compare objects. + var _keys = keys(a), + key; -},{"../../utils":479,"./get-loss":421,"underscore":499}],421:[function(require,module,exports){ -"use strict"; + length = _keys.length; // Ensure that both objects contain the same number of properties before comparing deep equality. -const _ = require("underscore"); + if (keys(b).length !== length) return false; -const utils = require("../../utils"); + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } // Remove the first object from the stack of traversed objects. -const fields = require("./fields"); -module.exports = sent => { - const serial = sent.serialize(); - let losses = new Set(); + aStack.pop(); + bStack.pop(); + return true; + } // Perform a deep comparison to check if two objects are equal. - const tokenCalcLoss = token => { - if (token.heads && token.heads.length > 1) losses.add("enhanced dependencies"); - Object.keys(_.omit(token, fields)).forEach(field => { - switch (field) { - case "uuid": - case "index": - case "deps": - case "feats": - case "misc": - break; - case "upostag": - if (token.xpostag && token.upostag) losses.add(field); - break; + function isEqual(a, b) { + return eq(a, b); + } // Retrieve all the enumerable property names of an object. - case "isEmpty": - if (token.isEmpty) losses.add(field); - break; - default: - losses.add(field); - } - }); - }; + function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; - serial.tokens.map(token => { - tokenCalcLoss(token); - (token.analyses || []).forEach(analysis => { - const analysisKeys = Object.keys(analysis); + for (var key in obj) keys.push(key); // Ahem, IE < 9. - if (analysisKeys.length > 1 || analysisKeys[0] !== "subTokens") { - losses.add("analyses"); - } else { - analysis.subTokens.map(subToken => { - tokenCalcLoss(subToken); - if (subToken.form != undefined) losses.add("form"); - }); - } - }); - }); - return Array.from(losses); -}; -},{"../../utils":479,"./fields":419,"underscore":499}],422:[function(require,module,exports){ -"use strict"; + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + } // Since the regular `Object.prototype.toString` type tests don't work for + // some types in IE 11, we use a fingerprinting heuristic instead, based + // on the methods. It's not great, but it's the best we got. + // The fingerprint method lists are defined below. -module.exports = { - name: "CG3", - fields: require("./fields"), - split: require("../default-splitter"), - detect: require("./detector"), - parse: require("./parser"), - generate: require("./generator") -}; -},{"../default-splitter":430,"./detector":418,"./fields":419,"./generator":420,"./parser":423}],423:[function(require,module,exports){ -"use strict"; + function ie11fingerprint(methods) { + var length = getLength(methods); + return function (obj) { + if (obj == null) return false; // `Map`, `WeakMap` and `Set` have no enumerable keys. -const _ = require("underscore"); + var keys = allKeys(obj); + if (getLength(keys)) return false; -const utils = require("../../utils"); + for (var i = 0; i < length; i++) { + if (!isFunction$1(obj[methods[i]])) return false; + } // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. -const ParserError = utils.ParserError; -const detect = require("./detector"); + return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); + }; + } // In the interest of compact minification, we write + // each string in the fingerprints only once. -module.exports = (text, options) => { - function getIndentNum(str, options) { - const count = (str, reg) => str.match(reg).length; - if (options.indentString) { - const regex = options.indentString instanceof RegExp ? options.indentString : new RegExp(options.indentString, "g"); - return count(str, regex); - } else if (options.useTabIndent) { - return count(str, /\t/g); - } else if (options.spacesPerTab) { - const regex = new RegExp(` {${options.spacesPerTab}}`, "g"); - return count(str, regex); - } else if (options.equalizeWhitespace) { - return count(str, /\s/g); - } else { - throw new ParserError("can't get the indent number, insufficient options set", text, options); - } - } + var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; // `Map`, `WeakMap` and `Set` each have slightly different + // combinations of the above sublists. - options = _.defaults(options, { - allowEmptyString: false, - indentString: null, - useTabIndent: false, - spacesPerTab: null, - equalizeWhitespace: true, - coerceMultipleSpacesAfterSemicolonToTab: true, - allowMissingIndices: true - }); + var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); + var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); + var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); + var isWeakSet = tagTester('WeakSet'); // Retrieve the values of an object's properties. - try { - detect(text, options); - } catch (e) { - if (e instanceof utils.DetectorError) throw new ParserError(e.message); - throw e; - } // console.log(); - // console.log(text); - // "tokenize" into chunks + function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); - let i = 0, - chunks = []; + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; + } - while (i < text.length) { - const remains = text.slice(i), - whiteline = remains.match(utils.re.whiteline), - comment = remains.match(utils.re.comment), - tokenStart = remains.match(utils.re.cg3TokenStart), - tokenContent = remains.match(utils.re.cg3TokenContent); + return values; + } // Convert an object into a list of `[key, value]` pairs. + // The opposite of `_.object` with one argument. - if (whiteline) { - i += whiteline[0].length; - } else if (comment) { - chunks.push({ - type: "comment", - body: comment[2] - }); - i += comment[1].length; - } else if (tokenStart) { - chunks.push({ - type: "form", - form: tokenStart[1] - }); - i += tokenStart[0].length; - while (utils.re.whitespace.test(text[i]) && text[i] !== "\n") i++; + function pairs(obj) { + var _keys = keys(obj); - i++; - } else if (tokenContent) { - // some real BS right here, overfitting my data hard - const indent = options.coerceMultipleSpacesAfterSemicolonToTab ? !!tokenContent[1] ? tokenContent[2].replace(/ +/, "\t") : tokenContent[2] : tokenContent[2]; - let chunk = { - type: "content", - semicolon: !!tokenContent[1], - indent: getIndentNum(indent, options), - lemma: tokenContent[3], - misc: [] - }; - const deprel = tokenContent[5].match(utils.re.cg3Deprel); - tokenContent[5].split(/\s+/).filter(utils.thin).forEach(subChunk => { - let dependency = subChunk.match(utils.re.cg3Dependency), - head = subChunk.match(utils.re.cg3Head), - index = subChunk.match(utils.re.cg3Index), - misc = subChunk.match(utils.re.cg3Other); + var length = _keys.length; + var pairs = Array(length); - if (dependency && (head || index)) { - if (head) { - if (chunk.heads) throw new ParserError("unexpected subChunk, heads already set", text, options); - head = parseInt(head[1]); - if (!isNaN(head)) chunk.heads = [{ - index: head, - deprel: deprel && deprel[1] ? deprel[1] : null - }]; - } else if (index) { - if (chunk.index) throw new ParserError("unexpected subChunk, index already set", text, options); - chunk.index = parseInt(index[1]); - } - } else if (misc) { - if (!misc[0].startsWith("@")) chunk.misc.push(misc[0]); - } - }); - if (deprel && deprel[1] && !chunk.heads) chunk.misc.push("@" + deprel[1]); - chunks.push(chunk); - i += tokenContent[0].length; - } else { - throw new ParserError(`unable to match remains: ${remains}`, text, options); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; } - } // console.log(chunks); - // turn the chunks into tokens and comments + return pairs; + } // Invert the keys and values of an object. The values must be serializable. - let tokens = []; - let comments = []; - let expecting = ["comment", "form"]; - let token = null; - let analysis = null; - let missingIndices = false; - chunks.forEach(chunk => { - if (expecting.indexOf(chunk.type) === -1) throw new ParserError(`expecting ${expecting.join("|")}, got ${chunk.type}`, text, options); - if (chunk.type === "comment") { - comments.push(chunk.body); - expecting = ["comment", "form"]; - token = null; - analysis = null; - } else if (chunk.type === "form") { - if (analysis) token.analyses.push(analysis); + function invert(obj) { + var result = {}; - if (token) { - if (token.analyses.length === 1 && token.analyses[0].subTokens.length === 1) token = _.omit(_.extend(token, token.analyses[0].subTokens[0]), "analyses"); - tokens.push(_.omit(token, "currentIndent")); - } + var _keys = keys(obj); - token = { - form: chunk.form, - currentIndent: 0, - analyses: [] - }; - analysis = null; - expecting = ["content"]; - } else if (chunk.type === "content") { - if (!token) throw new ParserError("cannot parse content chunk without a token", text, options); - if (chunk.indent > token.currentIndent + 1) throw new ParserError(`invalid indent change (${token.currentIndent}=>${chunk.indent})`, text, options); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } - if (chunk.indent === 1) { - if (analysis) token.analyses.push(analysis); + return result; + } // Return a sorted list of the function names available on the object. - if (chunk.index === undefined) { - if (!options.allowMissingIndices) throw new ParserError("cannot parse token without index", text, options); - missingIndices = true; - } else { - if (missingIndices) throw new ParserError("cannot parse partially indexed CG3", text, options); - } - analysis = { - subTokens: [{ - semicolon: chunk.semicolon, - lemma: chunk.lemma || null, - heads: chunk.heads || null, - index: chunk.index || null, - xpostag: chunk.misc.shift() || null, - misc: chunk.misc || null - }] - }; - } else { - if (!analysis) throw new ParserError("cannot parse content chunk without an analysis", text, options); - if (chunk.index === undefined && !options.allowMissingIndices) throw new ParserError("cannot parse token without index", text, options); - analysis.subTokens.push({ - semicolon: chunk.semicolon, - lemma: chunk.lemma || null, - heads: chunk.heads || null, - index: chunk.index || null, - xpostag: chunk.misc.shift() || null, - misc: chunk.misc || null - }); - } + function functions(obj) { + var names = []; - token.currentIndent = chunk.indent; - expecting = ["content", "form"]; - } else { - throw new ParserError(`unrecognized chunk type: ${chunk.type}`, text, options); + for (var key in obj) { + if (isFunction$1(obj[key])) names.push(key); } - }); - if (analysis) token.analyses.push(analysis); - if (token) { - if (token.analyses.length === 1 && token.analyses[0].subTokens.length === 1) token = _.omit(_.extend(token, token.analyses[0].subTokens[0]), "analyses"); - tokens.push(_.omit(token, "currentIndent")); - } + return names.sort(); + } // An internal function for creating assigner functions. - if (missingIndices) { - let index = 0; - tokens.forEach(token => { - if (token.analyses) { - token.analyses.forEach(analysis => { - analysis.subTokens.forEach(subToken => { - subToken.index = ++index; - }); - }); - } else { - token.index = ++index; - } - }); - } // console.log(comments); - // console.log(tokens); + function createAssigner(keysFunc, defaults) { + return function (obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; - return { - input: text, - options: options, - comments: comments, - tokens: tokens - }; -}; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; -},{"../../utils":479,"./detector":418,"underscore":499}],424:[function(require,module,exports){ -"use strict"; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } + } -const _ = require("underscore"); + return obj; + }; + } // Extend a given object with all the properties in passed-in object(s). -const utils = require("../../utils"); -const DetectorError = utils.DetectorError; + var extend = createAssigner(allKeys); // Assigns a given object with all the own properties in the passed-in + // object(s). + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -module.exports = (text, options) => { - options = _.defaults(options, { - allowEmptyString: false, - requireTenParams: false, - allowTrailingWhitespace: true - }); - if (!text && !options.allowEmptyString) throw new DetectorError(`Illegal CoNLL-U: empty string`, text, options); - if (utils.isJSONSerializable(text)) throw new DetectorError(`Illegal CoNLL-U: JSON object`, text, options); // be more or less strict about the fields we require being set + var extendOwn = createAssigner(keys); // Fill in a given object with default properties. - const tokenLine = options.requireTenParams ? utils.re.conlluTokenLineTenParams : utils.re.conlluTokenLine; // internal stuff + var defaults = createAssigner(allKeys, true); // Create a naked function reference for surrogate-prototype-swapping. - let doneComments = false; - let doneContent = false; // iterate over the lines and check each one + function ctor() { + return function () {}; + } // An internal function for creating a new object that inherits from another. - const lines = text.split(/\n/); - lines.forEach((line, i) => { - if (utils.re.comment.test(line)) { - // can only have comments at the beginning - if (doneComments) throw new DetectorError(`Illegal CoNLL-U: misplaced comment`, text, options); - } else { - // done parsing comments - doneComments = true; - if (line) { - if (!tokenLine.test(line)) throw new DetectorError(`Illegal CoNLL-U: unmatched line`, text, options); - if (doneContent) throw new DetectorError(`Illegal CoNLL-U: misplaced whitespace`, text, options); - } else { - // only allow empty lines after we've looked at all the content - if (!options.allowTrailingWhitespace) throw new DetectorError(`Illegal CoNLL-U: contains trailing whitespace`, text, options); - doneContent = true; - } - } - }); - return "CoNLL-U"; -}; + function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor(); + Ctor.prototype = null; + return result; + } // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. -},{"../../utils":479,"underscore":499}],425:[function(require,module,exports){ -module.exports = ["isEmpty", "index", "form", "lemma", "upostag", "xpostag", "feats", "heads", "misc", "subTokens"]; -module.exports.hasComments = true; -},{}],426:[function(require,module,exports){ -"use strict"; + function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; + } // Create a (shallow-cloned) duplicate of an object. -const _ = require("underscore"); -const utils = require("../../utils"); + function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); + } // Invokes `interceptor` with the `obj` and then returns `obj`. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. -const GeneratorError = utils.GeneratorError; -const getLoss = require("./get-loss"); + function tap(obj, interceptor) { + interceptor(obj); + return obj; + } // Normalize a (deep) property `path` to array. + // Like `_.iteratee`, this function can be customized. -module.exports = (sent, options) => { - if (!sent.isParsed) return { - output: null, - loss: undefined - }; - if (!sent || sent.name !== "Sentence") throw new GeneratorError(`Unable to generate, input not a Sentence`, sent, options); - options = _.defaults(options, sent.options, {}); - sent.index(); - let lines = []; - sent.comments.forEach(comment => { - lines.push("# " + comment.body); - }); - sent.tokens.forEach(token => { - const toString = token => { - const head = !token.isEmpty && token.heads.first; - return [token.indices.conllu, token.form || utils.fallback, token.lemma || utils.fallback, token.upostag || utils.fallback, token.xpostag || utils.fallback, token.feats || utils.fallback, head ? head.token.indices.conllu : utils.fallback, head && head.deprel ? head.deprel : utils.fallback, token._getDeps("CoNLL-U").join("|") || utils.fallback, token.misc || utils.fallback].join("\t"); - }; - lines.push(toString(token)); - token.subTokens.forEach(subToken => { - lines.push(toString(subToken)); - }); - }); - return { - output: lines.join("\n"), - loss: getLoss(sent) - }; -}; + function toPath$1(path) { + return isArray(path) ? path : [path]; + } -},{"../../utils":479,"./get-loss":427,"underscore":499}],427:[function(require,module,exports){ -"use strict"; + _$1.toPath = toPath$1; // Internal wrapper for `_.toPath` to enable minification. + // Similar to `cb` for `_.iteratee`. -const _ = require("underscore"); + function toPath(path) { + return _$1.toPath(path); + } // Internal function to obtain a nested property in `obj` along `path`. -const utils = require("../../utils"); -const fields = require("./fields"); + function deepGet(obj, path) { + var length = path.length; -module.exports = sent => { - const serial = sent.serialize(); - let losses = new Set(); + for (var i = 0; i < length; i++) { + if (obj == null) return void 0; + obj = obj[path[i]]; + } - const tokenCalcLoss = token => { - if (token.heads.length > 1 && !sent.options.enhanced) losses.add("enhanced dependencies"); - Object.keys(_.omit(token, fields)).forEach(field => { - switch (field) { - case "uuid": - case "index": - case "other": - break; + return length ? obj : void 0; + } // Get the value of the (deep) property on `path` from `object`. + // If any property in `path` does not exist or if the value is + // `undefined`, return `defaultValue` instead. + // The `path` is normalized through `_.toPath`. - case "analyses": - if (token.analyses.length > 1) { - losses.add("analyses"); - } else { - const analysis = token.analyses[0], - analysisKeys = Object.keys(analysis); - if (analysisKeys.length > 1 || analysisKeys[0] !== "subTokens") { - losses.add("analyses"); - } else { - analysis.subTokens.map(tokenCalcLoss); - } - } + function get(object, path, defaultValue) { + var value = deepGet(object, toPath(path)); + return isUndefined(value) ? defaultValue : value; + } // Shortcut function for checking if an object has a given property directly on + // itself (in other words, not on a prototype). Unlike the internal `has` + // function, this public version can also traverse nested properties. - break; - default: - losses.add(field); - } - }); - }; + function has(obj, path) { + path = toPath(path); + var length = path.length; - serial.tokens.map(tokenCalcLoss); - return Array.from(losses); -}; + for (var i = 0; i < length; i++) { + var key = path[i]; + if (!has$1(obj, key)) return false; + obj = obj[key]; + } -},{"../../utils":479,"./fields":425,"underscore":499}],428:[function(require,module,exports){ -"use strict"; + return !!length; + } // Keep the identity function around for default iteratees. -module.exports = { - name: "CoNLL-U", - fields: require("./fields"), - split: require("../default-splitter"), - detect: require("./detector"), - parse: require("./parser"), - generate: require("./generator") -}; -/* -{ - semicolon: Boolean || undefined, - isEmpty: Boolean || undefined, - index: String || undefined, - form: String || null || undefined, - lemma: String || null || undefined, - upostag: String || null || undefined, - xpostag: String || null || undefined, - feats: String || null || undefined, - head: String || null || undefined, - deprel: String || null || undefined, - deps: String || null || undefined, - other: Array || undefined, - analyses: [ - subTokens: [ - semicolon: Boolean || undefined, - isEmpty: Boolean || undefined, - index: String || undefined, - form: String || null || undefined, - lemma: String || null || undefined, - upostag: String || null || undefined, - xpostag: String || null || undefined, - feats: String || null || undefined, - head: String || null || undefined, - deprel: String || null || undefined, - deps: String || null || undefined, - other: Array || undefined, - ] - ] -} -*/ -},{"../default-splitter":430,"./detector":424,"./fields":425,"./generator":426,"./parser":429}],429:[function(require,module,exports){ -"use strict"; + function identity(value) { + return value; + } // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + + + function matcher(attrs) { + attrs = extendOwn({}, attrs); + return function (obj) { + return isMatch(obj, attrs); + }; + } // Creates a function that, when passed an object, will traverse that object’s + // properties down the given `path`, specified as an array of keys or indices. -const _ = require("underscore"); -const utils = require("../../utils"); + function property(path) { + path = toPath(path); + return function (obj) { + return deepGet(obj, path); + }; + } // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. -const ParserError = utils.ParserError; -const detect = require("./detector"); + function optimizeCb(func, context, argCount) { + if (context === void 0) return func; -module.exports = (text, options) => { - function assertNext(supStr, subStr) { - function parseIndex(str) { - const match = (str || "").match(utils.re.conlluEmptyIndex); - if (!match) return null; - return match[2] ? { - major: parseInt(match[1]), - minor: parseInt(match[2].slice(1)) - } : { - major: parseInt(match[1]), - minor: null - }; - } + switch (argCount == null ? 3 : argCount) { + case 1: + return function (value) { + return func.call(context, value); + }; + // The 2-argument case is omitted because we’re not using it. - if (supStr === null) return; - const sup = parseIndex(supStr), - sub = parseIndex(subStr); + case 3: + return function (value, index, collection) { + return func.call(context, value, index, collection); + }; - if (sub.minor === null) { - if (sub.major - sup.major !== 1) throw new ParserError(`unexpected token index (at: ${sup.major}${sup.minor === null ? "" : "." + sup.minor}, got: ${sup.major}${sup.minor === null ? "" : "." + sup.minor})`); - } else if (sup.minor === null) { - if (sub.minor !== 1) throw new ParserError(`unexpected token index (at: ${sup.major}${sup.minor === null ? "" : "." + sup.minor}, got: ${sup.major}${sup.minor === null ? "" : "." + sup.minor})`); - } else { - if (sub.minor - sup.minor !== 1) throw new ParserError(`unexpected token index (at: ${sup.major}${sup.minor === null ? "" : "." + sup.minor}, got: ${sup.major}${sup.minor === null ? "" : "." + sup.minor})`); + case 4: + return function (accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; } - } - options = _.defaults(options, { - allowEmptyString: false, - requireTenParams: false, - allowWhiteLines: true, - enhanced: false - }); + return function () { + return func.apply(context, arguments); + }; + } // An internal function to generate callbacks that can be applied to each + // element in a collection, returning the desired result — either `_.identity`, + // an arbitrary callback, a property matcher, or a property accessor. - try { - detect(text, options); - } catch (e) { - if (e instanceof utils.DetectorError) throw new ParserError(e.message); - throw e; - } // console.log(); - // console.log(text); - // "tokenize" into chunks + function baseIteratee(value, context, argCount) { + if (value == null) return identity; + if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (isObject(value) && !isArray(value)) return matcher(value); + return property(value); + } // External wrapper for our callback generator. Users may customize + // `_.iteratee` if they want additional predicate/iteratee shorthand styles. + // This abstraction hides the internal-only `argCount` argument. - let i = 0, - chunks = []; - const lines = text.split("\n"); - const tokenRegex = options.requireTenParams ? utils.re.conlluTokenLineTenParams : utils.re.conlluTokenLine; - lines.forEach(line => { - const whiteline = line.match(utils.re.whiteline), - comment = line.match(utils.re.comment), - tokenLine = line.match(tokenRegex); - if (whiteline) {} else if (comment) { - chunks.push({ - type: "comment", - body: comment[2] - }); - } else if (tokenLine) { - let token; - let fields = tokenLine[7]; + function iteratee(value, context) { + return baseIteratee(value, context, Infinity); + } - if (/(\t|[ ]{2,})/g.test(fields)) { - fields = fields.replace(/[ ]{2,}/g, "\t").split(/\t/g).filter(utils.thin); - } else { - fields = fields.split(/[\t ]+/g).filter(utils.thin); - } + _$1.iteratee = iteratee; // The function we call internally to generate a callback. It invokes + // `_.iteratee` if overridden, otherwise `baseIteratee`. - if (tokenLine[4]) { - token = { - type: "super-token", - index: tokenLine[1], - startIndex: tokenLine[2], - stopIndex: tokenLine[5], - form: utils.re.fallback.test(fields[0]) ? null : fields[0], - misc: utils.re.fallback.test(fields[8]) ? null : fields[8].split("|") - }; - } else { - function getHeads(isEmpty, head, deprel, deps) { - head = utils.re.fallback.test(head) ? null : head; - deprel = utils.re.fallback.test(deprel) ? null : deprel; - deps = utils.re.fallback.test(deps) ? null : deps; - let heads = []; - let seen = new Set(); + function cb(value, context, argCount) { + if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + return baseIteratee(value, context, argCount); + } // Returns the results of applying the `iteratee` to each element of `obj`. + // In contrast to `_.map` it returns an object. - if (head && !isEmpty) { - heads.push({ - index: head, - deprel: deprel || null - }); - seen.add(head); - } - if (deps) { - deps.split("|").forEach(dep => { - dep = dep.split(":"); - if (!seen.has(dep[0])) heads.push({ - index: dep[0], - deprel: dep[1] || null - }); - seen.add(dep[0]); - }); - } else if (isEmpty) {// FIXME: Add this as a "strict mode" requirement? - // throw new ParserError(`Missing "deps" for empty node: - // ${line}`, text, options); - } + function mapObject(obj, iteratee, context) { + iteratee = cb(iteratee, context); - return heads.length ? heads : null; - } + var _keys = keys(obj), + length = _keys.length, + results = {}; - const isEmpty = !!tokenLine[3]; + for (var index = 0; index < length; index++) { + var currentKey = _keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } - if (isEmpty) { - options.enhanced = true; - } + return results; + } // Predicate-generating function. Often useful outside of Underscore. - token = { - type: "token", - index: tokenLine[1], - isEmpty: isEmpty, - form: !fields[0] || utils.re.fallback.test(fields[0]) ? null : fields[0], - lemma: !fields[1] || utils.re.fallback.test(fields[1]) ? null : fields[1], - upostag: !fields[2] || utils.re.fallback.test(fields[2]) ? null : fields[2], - xpostag: !fields[3] || utils.re.fallback.test(fields[3]) ? null : fields[3], - feats: !fields[4] || utils.re.fallback.test(fields[4]) ? null : fields[4].split("|"), - heads: getHeads(isEmpty, fields[5], fields[6], fields[7]), - misc: !fields[8] || utils.re.fallback.test(fields[8]) ? null : fields[8].split("|") - }; - } - chunks.push(token); - } else { - throw new ParserError(`unable to match line: ${line}`, text, options); - } - }); // console.log(chunks); + function noop() {} // Generates a function for a given object that returns a given property. - let tokens = []; - let comments = []; - let expecting = ["comment", "super-token", "token"]; - let superToken = null; - chunks.filter(utils.thin).forEach(chunk => { - if (expecting.indexOf(chunk.type) === -1) throw new ParserError(`expecting ${expecting.join("|")}, got ${chunk.type}`, text, options); - if (chunk.type === "comment") { - comments.push(chunk.body); - expecting = ["comment", "super-token", "token"]; - } else if (chunk.type === "super-token") { - superToken = { - form: chunk.form, - misc: chunk.misc, - analyses: [{ - subTokens: [] - }], - index: chunk.index, - currentIndex: null, - stopIndex: chunk.stopIndex - }; - expecting = ["token"]; - } else if (chunk.type === "token") { - if (superToken) { - assertNext(superToken.currentIndex, chunk.index); - superToken.currentIndex = chunk.index; - superToken.analyses[0].subTokens.push(_.omit(chunk, ["type"])); + function propertyOf(obj) { + if (obj == null) return noop; + return function (path) { + return get(obj, path); + }; + } // Run a function **n** times. - if (superToken.currentIndex === superToken.stopIndex) { - tokens.push(_.omit(superToken, ["currentIndex", "stopIndex"])); - superToken = null; - expecting = ["super-token", "token"]; - } else { - expecting = ["token"]; - } - } else { - tokens.push(_.omit(chunk, ["type"])); - expecting = ["super-token", "token"]; - } - } else { - throw new ParserError(`unrecognized chunk type: ${chunk.type}`, text, options); - } - }); // console.log(comments); - // console.log(tokens); - return { - input: text, - options: options, - comments: comments, - tokens: tokens - }; -}; + function times(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); -},{"../../utils":479,"./detector":424,"underscore":499}],430:[function(require,module,exports){ -"use strict"; + for (var i = 0; i < n; i++) accum[i] = iteratee(i); -const _ = require("underscore"); + return accum; + } // Return a random integer between `min` and `max` (inclusive). -const utils = require("../utils"); -module.exports = (text, options = {}) => { - options = _.defaults(options, { - trimChunks: true - }); - return text.split(utils.re.multiNewlines).map(chunk => { - if (options.trimChunks) { - return chunk.trim(); - } else { - return chunk; + function random(min, max) { + if (max == null) { + max = min; + min = 0; } - }).filter(utils.thin); -}; - -},{"../utils":479,"underscore":499}],431:[function(require,module,exports){ -/** - * Supported output formats: - * * ApertiumStream (coming soon!) - * * Brackets - * * CG3 - * * CoNLL-U - * * NotatrixSerial - * * Params - * * Plain text - * * SDParse - */ -module.exports = { - "apertium stream": require("./apertium-stream"), - apertiumStream: require("./apertium-stream"), - Brackets: require("./brackets"), - brackets: require("./brackets"), - CG3: require("./cg3"), - cg3: require("./cg3"), - "CoNLL-U": require("./conllu"), - conllu: require("./conllu"), - "notatrix serial": require("./notatrix-serial"), - notatrixSerial: require("./notatrix-serial"), - Params: require("./params"), - params: require("./params"), - "plain text": require("./plain-text"), - plainText: require("./plain-text"), - SD: require("./sd"), - sd: require("./sd") -}; -},{"./apertium-stream":409,"./brackets":416,"./cg3":422,"./conllu":428,"./notatrix-serial":436,"./params":443,"./plain-text":450,"./sd":457}],432:[function(require,module,exports){ -"use strict"; + return min + Math.floor(Math.random() * (max - min + 1)); + } // A (possibly faster) way to get the current timestamp as an integer. -const _ = require("underscore"); -const utils = require("../../utils"); + var now = Date.now || function () { + return new Date().getTime(); + }; // Internal helper to generate functions for escaping and unescaping strings + // to/from HTML interpolation. -const DetectorError = utils.DetectorError; -module.exports = (obj, options) => { - function restrict(obj, fields, allowUndefined = false) { - if (obj === undefined) throw new DetectorError(`Illegal notatrix serial: missing field`, obj, options); - if (_.omit(obj, Object.keys(fields)).length) throw new DetectorError(`Illegal notatrix serial: unexpected field`, obj, options); + function createEscaper(map) { + var escaper = function (match) { + return map[match]; + }; // Regexes for identifying a key that needs to be escaped. - _.each(fields, (fieldType, fieldName) => { - const value = obj[fieldName]; - switch (fieldType) { - case "number": - if (value !== undefined || !allowUndefined) if (isNaN(parseFloat(value))) throw new DetectorError(`Illegal notatrix serial: could not parse ${value} as float`, obj, options); - break; + var source = '(?:' + keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function (string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + } // Internal list of HTML entities for escaping. - case "string": - if (value !== undefined || !allowUndefined) if (typeof value !== "string") throw new DetectorError(`Illegal notatrix serial: expected 'string', got ${typeof value}`, obj, options); - break; - case "string*": - if (value !== undefined || !allowUndefined) if (value !== null && typeof value !== "string") throw new DetectorError(`Illegal notatrix serial: expected 'string', got ${typeof value}`, obj, options); - break; + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; // Function for escaping strings to HTML interpolation. - case "object": - // pass - break; + var _escape = createEscaper(escapeMap); // Internal list of HTML entities for unescaping. - case "array": - if (value != undefined || !allowUndefined) if (!Array.isArray(value)) throw new DetectorError(`Illegal notatrix serial: expected Array, got ${typeof value}`, obj, options); - break; - } - }); - } - options = _.defaults(options, { - allowZeroTokens: true, - allowZeroFields: true - }); - if (!utils.isJSONSerializable(obj)) throw new DetectorError(`Illegal notatrix serial: not JSON object`, obj, options); - obj = typeof obj === "string" ? JSON.parse(obj) : obj; - restrict(obj, utils.nxSentenceFields); + var unescapeMap = invert(escapeMap); // Function for unescaping strings from HTML interpolation. - _.each(obj.comments, comment => { - if (typeof comment !== "string") throw new DetectorError(`Illegal notatrix serial: comments should be strings`, obj, options); - }); + var _unescape = createEscaper(unescapeMap); // By default, Underscore uses ERB-style template delimiters. Change the + // following template settings to use alternative delimiters. - _.each(obj.tokens, token => { - restrict(token, utils.nxSentenceTokensFields, true); - }); - if (obj.tokens.length === 0 && !options.allowZeroTokens) throw new DetectorError(`Illegal notatrix serial: cannot have empty token list`, obj, options); + var templateSettings = _$1.templateSettings = { + evaluate: /<%([\s\S]+?)%>/g, + interpolate: /<%=([\s\S]+?)%>/g, + escape: /<%-([\s\S]+?)%>/g + }; // When customizing `_.templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. - _.each(obj.tokens, token => { - if (Object.keys(token).length === 0 && !options.allowZeroFields) throw new DetectorError(`Illegal notatrix serial: cannot have token without fields`, obj, options); - if (token.analyses) _.each(token.analyses, analysis => { - const analysisKeys = Object.keys(analysis); - if (analysisKeys.length !== 1 || analysisKeys[0] !== "subTokens") throw new DetectorError(`Illegal notatrix serial: got unexpected analyses field`, obj, options); + var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a + // string literal. - _.each(analysis.subTokens, subToken => { - restrict(subToken, utils.nxSentenceTokensFields, true); - if (subToken.analyses !== undefined) throw new DetectorError(`Illegal notatrix serial: subTokens can only have one analysis`, obj, options); - }); - }); - }); + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; - return "notatrix serial"; -}; + function escapeChar(match) { + return '\\' + escapes[match]; + } // In order to prevent third-party code injection through + // `_.templateSettings.variable`, we test it against the following regular + // expression. It is intentionally a bit more liberal than just matching valid + // identifiers, but still prevents possible loopholes through defaults or + // destructuring assignment. -},{"../../utils":479,"underscore":499}],433:[function(require,module,exports){ -module.exports = []; -module.exports.hasComments = true; -},{}],434:[function(require,module,exports){ -"use strict"; + var bareIdentifier = /^\s*(\w|\$)+\s*$/; // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. -const _ = require("underscore"); + function template(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = defaults({}, settings, _$1.templateSettings); // Combine delimiters into one regular expression via alternation. -const utils = require("../../utils"); + var matcher = RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g'); // Compile the template source, escaping string literals appropriately. -const GeneratorError = utils.GeneratorError; + var index = 0; + var source = "__p+='"; + text.replace(matcher, function (match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escapeRegExp, escapeChar); + index = offset + match.length; -const getLoss = require("./get-loss"); + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } // Adobe VMs need the match returned to produce the correct offset. -module.exports = (sent, options) => { - if (!sent.isParsed) return { - output: null, - loss: undefined - }; - if (!sent || sent.name !== "Sentence") throw new GeneratorError(`Unable to generate, input not a Sentence`, sent, options); - options = _.defaults(options, sent.options, {}); - sent.index(); - return { - output: sent.serialize(), - loss: getLoss(sent) - }; -}; -},{"../../utils":479,"./get-loss":435,"underscore":499}],435:[function(require,module,exports){ -"use strict"; + return match; + }); + source += "';\n"; + var argument = settings.variable; -const _ = require("underscore"); + if (argument) { + // Insure against third-party code injection. (CVE-2021-23358) + if (!bareIdentifier.test(argument)) throw new Error('variable is not a bare identifier: ' + argument); + } else { + // If a variable is not specified, place data values in local scope. + source = 'with(obj||{}){\n' + source + '}\n'; + argument = 'obj'; + } -const utils = require("../../utils"); + source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n'; + var render; -const Loss = utils.Loss; + try { + render = new Function(argument, '_', source); + } catch (e) { + e.source = source; + throw e; + } -const fields = require("./fields"); + var template = function (data) { + return render.call(this, data, _$1); + }; // Provide the compiled source as a convenience for precompilation. -module.exports = sent => { - // do nothing, can't lose info on this one - return []; -}; -},{"../../utils":479,"./fields":433,"underscore":499}],436:[function(require,module,exports){ -"use strict"; + template.source = 'function(' + argument + '){\n' + source + '}'; + return template; + } // Traverses the children of `obj` along `path`. If a child is a function, it + // is invoked with its parent as context. Returns the value of the final + // child, or `fallback` if any child is undefined. -module.exports = { - name: "notatrix serial", - fields: require("./fields"), - split: require("./splitter"), - detect: require("./detector"), - parse: require("./parser"), - generate: require("./generator") -}; -/* -INPUT: -{ - input: String, - options: Object, - comments: [ - String - ], - tokens: [ - ( - // #1 (default) - { - isEmpty: Boolean || undefined, - index: String || undefined, - form: String || null || undefined, - lemma: String || null || undefined, - upostag: String || null || undefined, - xpostag: String || null || undefined, - feats: String || null || undefined, - head: ( - String - || - null - || - undefined - || - { - index: String, - type: String || null, - } - ), - deprel: String || null || undefined, - deps: ( - String - || - null - || - undefined - || - { - index: String, - type: String || null, - } - ), - misc: String || null || undefined, - } - || - // #2 (CoNLL-U superToken) - { - index: String, - form: String || null, - misc: String || null, - subTokens: [ - <#1> - ] - } - || - // #3 (CG3) - { - form: String || null, - analyses: [ - [ - semicolon: Boolean, - lemma: String || null, - head: String || null, - index: String || null, - deprel: String || null, - xpostag: String || null, - other: [ - String - ] - ] - ] - } - || - // #4 (notatrix serial) - { - } - ) - ] -} + function result(obj, path, fallback) { + path = toPath(path); + var length = path.length; + if (!length) { + return isFunction$1(fallback) ? fallback.call(obj) : fallback; + } -OUTPUT: -{ - input: String, - options: 'plain object', - comments: [ - { - type: String, - body: String, - value: + for (var i = 0; i < length; i++) { + var prop = obj == null ? void 0 : obj[path[i]]; + + if (prop === void 0) { + prop = fallback; + i = length; // Ensure we don't continue iterating. + } + + obj = isFunction$1(prop) ? prop.call(obj) : prop; } - ], -*/ -},{"./detector":432,"./fields":433,"./generator":434,"./parser":437,"./splitter":438}],437:[function(require,module,exports){ -"use strict"; + return obj; + } // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. -const _ = require("underscore"); -const utils = require("../../utils"); + var idCounter = 0; -const ParserError = utils.ParserError; + function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + } // Start chaining a wrapped Underscore object. -const detect = require("./detector"); -module.exports = (obj, options) => { - try { - detect(obj, options); - } catch (e) { - if (e instanceof utils.DetectorError) throw new ParserError(e.message); - throw e; - } + function chain(obj) { + var instance = _$1(obj); - return obj; -}; + instance._chain = true; + return instance; + } // Internal function to execute `sourceFunc` bound to `context` with optional + // `args`. Determines whether to execute a function as a constructor or as a + // normal function. -},{"../../utils":479,"./detector":432,"underscore":499}],438:[function(require,module,exports){ -"use strict"; -const utils = require("../../utils"); + function executeBound(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (isObject(result)) return result; + return self; + } // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. `_` acts + // as a placeholder by default, allowing any combination of arguments to be + // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. -const SplitterError = utils.SplitterError; -module.exports = (text, options) => { - throw new SplitterError("Can't split notatrix serial", text, options); -}; + var partial = restArguments(function (func, boundArgs) { + var placeholder = partial.placeholder; -},{"../../utils":479}],439:[function(require,module,exports){ -"use strict"; + var bound = function () { + var position = 0, + length = boundArgs.length; + var args = Array(length); -const _ = require("underscore"); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + } -const utils = require("../../utils"); + while (position < arguments.length) args.push(arguments[position++]); -const DetectorError = utils.DetectorError; + return executeBound(func, bound, this, this, args); + }; -module.exports = (obj, options) => { - options = _.defaults(options, { - allowEmptyList: false, - allowTrailingWhitespace: true, - allowLeadingWhitespace: true + return bound; }); - if (!utils.isJSONSerializable(obj)) throw new DetectorError(`Illegal Params: not JSON object`, obj, options); - obj = typeof obj === "string" ? JSON.parse(obj) : obj; + partial.placeholder = _$1; // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). - if (Array.isArray(obj)) { - if (!obj.length && !options.allowEmptyList) throw new DetectorError(`Illegal Params: contains no tokens`, obj, options); - obj.forEach(obj => { - const omitted = Object.keys(_.omit(obj, utils.fields)); - if (omitted.length) throw new DetectorError(`Illegal Params: contains illegal keys (${omitted.join(", ")})`, obj, options); - const picked = Object.keys(_.pick(obj, utils.fields)); - if (!picked.length) throw new DetectorError(`Illegal Params: missing required keys`, obj, options); + var bind = restArguments(function (func, context, args) { + if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); + var bound = restArguments(function (callArgs) { + return executeBound(func, bound, context, this, args.concat(callArgs)); }); - } else { - throw new DetectorError(`Illegal Params: expected array of parameters, got ${typeof obj}`, obj, options); - } + return bound; + }); // Internal helper for collection methods to determine whether a collection + // should be iterated as an array or as an object. + // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 - return "Params"; -}; + var isArrayLike = createSizePropertyCheck(getLength); // Internal implementation of a recursive `flatten` function. -},{"../../utils":479,"underscore":499}],440:[function(require,module,exports){ -module.exports = ["isEmpty", "index", "form", "lemma", "upostag", "xpostag", "feats", "head", "deprel", "deps", "misc"]; -module.exports.hasComments = false; + function flatten$1(input, depth, strict, output) { + output = output || []; -},{}],441:[function(require,module,exports){ -"use strict"; + if (!depth && depth !== 0) { + depth = Infinity; + } else if (depth <= 0) { + return output.concat(input); + } -const _ = require("underscore"); + var idx = output.length; -const utils = require("../../utils"); + for (var i = 0, length = getLength(input); i < length; i++) { + var value = input[i]; -const GeneratorError = utils.GeneratorError; + if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + // Flatten current level of array or arguments object. + if (depth > 1) { + flatten$1(value, depth - 1, strict, output); + idx = output.length; + } else { + var j = 0, + len = value.length; -const getLoss = require("./get-loss"); + while (j < len) output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } -module.exports = (sent, options) => { - if (!sent.isParsed) return { - output: null, - loss: undefined - }; - if (!sent || sent.name !== "Sentence") throw new GeneratorError(`Unable to generate, input not a Sentence`, sent, options); - options = _.defaults(options, sent.options, {}); - sent.index(); - const output = sent.tokens.map(token => { - if (token.analysis) throw new GeneratorError("Unable to generate, contains ambiguous analyses or multiword tokens"); + return output; + } // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. - let params = _.pick(token, utils.fields); - params.head = token.getHead(); - return _.pick(params, value => value != undefined); - }); - return { - output: output, - loss: getLoss(sent) - }; -}; + var bindAll = restArguments(function (obj, keys) { + keys = flatten$1(keys, false, false); + var index = keys.length; + if (index < 1) throw new Error('bindAll must be passed function names'); -},{"../../utils":479,"./get-loss":442,"underscore":499}],442:[function(require,module,exports){ -"use strict"; + while (index--) { + var key = keys[index]; + obj[key] = bind(obj[key], obj); + } -const _ = require("underscore"); + return obj; + }); // Memoize an expensive function by storing its results. -const utils = require("../../utils"); + function memoize(func, hasher) { + var memoize = function (key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; -const fields = require("./fields"); + memoize.cache = {}; + return memoize; + } // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. -module.exports = sent => { - const serial = sent.serialize(); - let losses = new Set(); - if (serial.comments.length) losses.add("comments"); - serial.tokens.forEach(token => { - Object.keys(_.omit(token, fields)).forEach(field => { - switch (field) { - case "uuid": - case "index": - break; - case "heads": - if (token.heads.length > 1) losses.add("enhanced dependencies"); - break; + var delay = restArguments(function (func, wait, args) { + return setTimeout(function () { + return func.apply(null, args); + }, wait); + }); // Defers a function, scheduling it to run after the current call stack has + // cleared. - default: - losses.add(field); - } - }); - }); - return Array.from(losses); -}; + var defer = partial(delay, _$1, 1); // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. -},{"../../utils":479,"./fields":440,"underscore":499}],443:[function(require,module,exports){ -"use strict"; + function throttle(func, wait, options) { + var timeout, context, args, result; + var previous = 0; + if (!options) options = {}; -module.exports = { - name: "Params", - fields: require("./fields"), - split: require("./splitter"), - detect: require("./detector"), - parse: require("./parser"), - generate: require("./generator") -}; + var later = function () { + previous = options.leading === false ? 0 : now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; -},{"./detector":439,"./fields":440,"./generator":441,"./parser":444,"./splitter":445}],444:[function(require,module,exports){ -"use strict"; + var throttled = function () { + var _now = now(); -const _ = require("underscore"); + if (!previous && options.leading === false) previous = _now; + var remaining = wait - (_now - previous); + context = this; + args = arguments; -const utils = require("../../utils"); + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } -const ParserError = utils.ParserError; + previous = _now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } -const detect = require("./detector"); + return result; + }; -module.exports = (obj, options) => { - try { - detect(obj, options); - } catch (e) { - if (e instanceof utils.DetectorError) throw new ParserError(e.message); - throw e; - } + throttled.cancel = function () { + clearTimeout(timeout); + previous = 0; + timeout = context = args = null; + }; - return { - input: JSON.stringify(obj), - options: options, - comments: [], - tokens: obj.map((token, i) => { - token.index = `${i}`; - return token; - }) - }; -}; + return throttled; + } // When a sequence of calls of the returned function ends, the argument + // function is triggered. The end of a sequence is defined by the `wait` + // parameter. If `immediate` is passed, the argument function will be + // triggered at the beginning of the sequence instead of at the end. -},{"../../utils":479,"./detector":439,"underscore":499}],445:[function(require,module,exports){ -"use strict"; -const utils = require("../../utils"); + function debounce(func, wait, immediate) { + var timeout, previous, args, result, context; -const SplitterError = utils.SplitterError; + var later = function () { + var passed = now() - previous; -module.exports = (text, options) => { - throw new SplitterError("Can't split Params", text, options); -}; + if (wait > passed) { + timeout = setTimeout(later, wait - passed); + } else { + timeout = null; + if (!immediate) result = func.apply(context, args); // This check is needed because `func` can recursively invoke `debounced`. -},{"../../utils":479}],446:[function(require,module,exports){ -"use strict"; + if (!timeout) args = context = null; + } + }; -const _ = require("underscore"); + var debounced = restArguments(function (_args) { + context = this; + args = _args; + previous = now(); -const utils = require("../../utils"); + if (!timeout) { + timeout = setTimeout(later, wait); + if (immediate) result = func.apply(context, args); + } -const DetectorError = utils.DetectorError; + return result; + }); -module.exports = (text, options) => { - options = _.defaults(options, { - allowEmptyString: true, - allowNewlines: false, - bracketsAllowanceTreshold: 0.2 // set to <0 or >1 to avoid + debounced.cancel = function () { + clearTimeout(timeout); + timeout = args = context = null; + }; - }); - /* - if (!text && !options.allowEmptyString) - throw new DetectorError(`Illegal plain text: empty string`, text, - options); - */ + return debounced; + } // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. - if (utils.isJSONSerializable(text)) throw new DetectorError(`Illegal plain text: JSON object`, text, options); - if (/\n/.test(text) && !options.allowNewlines) throw new DetectorError(`Illegal plain text: contains newlines`, text, options); - if (options.bracketsAllowanceTreshold >= 0) { - const numWords = text.split(utils.re.whitespace).length; - const numBrackets = (text.match(/[\[\]]/g) || []).length; - const ratio = numBrackets / numWords; - if (ratio > options.bracketsAllowanceTreshold) throw new DetectorError(`Illegal plain text: contains too many brackets (${ratio})`, text, options); - } + function wrap(func, wrapper) { + return partial(wrapper, func); + } // Returns a negated version of the passed-in predicate. - return "plain text"; -}; -},{"../../utils":479,"underscore":499}],447:[function(require,module,exports){ -module.exports = ["form"]; -module.exports.hasComments = false; + function negate(predicate) { + return function () { + return !predicate.apply(this, arguments); + }; + } // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. -},{}],448:[function(require,module,exports){ -"use strict"; -const _ = require("underscore"); + function compose() { + var args = arguments; + var start = args.length - 1; + return function () { + var i = start; + var result = args[start].apply(this, arguments); -const utils = require("../../utils"); + while (i--) result = args[i].call(this, result); -const GeneratorError = utils.GeneratorError; + return result; + }; + } // Returns a function that will only be executed on and after the Nth call. -const getLoss = require("./get-loss"); -module.exports = (sent, options) => { - if (!sent.isParsed) return { - output: null, - loss: undefined - }; - if (!sent || sent.name !== "Sentence") throw new GeneratorError(`Unable to generate, input not a Sentence`, sent, options); - options = _.defaults(options, sent.options, {}); - sent.index(); - const output = sent.tokens.map(token => { - return token.isSuperToken ? token.subTokens.map(subToken => subToken.value).join(" ") : token.form; - }).join(" ").replace(utils.re.spaceBeforePunctuation, "$1"); - return { - output: output, - loss: getLoss(sent) - }; -}; + function after(times, func) { + return function () { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + } // Returns a function that will only be executed up to (but not including) the + // Nth call. -},{"../../utils":479,"./get-loss":449,"underscore":499}],449:[function(require,module,exports){ -"use strict"; -const _ = require("underscore"); + function before(times, func) { + var memo; + return function () { + if (--times > 0) { + memo = func.apply(this, arguments); + } -const utils = require("../../utils"); + if (times <= 1) func = null; + return memo; + }; + } // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. -const fields = require("./fields"); -module.exports = sent => { - const serial = sent.serialize(); - let losses = new Set(); - if (serial.comments.length) losses.add("comments"); - serial.tokens.forEach(token => { - Object.keys(_.omit(token, fields)).forEach(field => { - switch (field) { - case "uuid": - case "index": - break; + var once = partial(before, 2); // Returns the first key on an object that passes a truth test. - case "feats": - case "misc": - if (token[field] && token[field].length) losses.add(field); - break; + function findKey(obj, predicate, context) { + predicate = cb(predicate, context); - case "heads": - if (token.heads.length) losses.add("heads"); - break; + var _keys = keys(obj), + key; - default: - if (token[field]) losses.add(field); + for (var i = 0, length = _keys.length; i < length; i++) { + key = _keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + } // Internal function to generate `_.findIndex` and `_.findLastIndex`. + + + function createPredicateIndexFinder(dir) { + return function (array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; } - }); - }); - return Array.from(losses); -}; -},{"../../utils":479,"./fields":447,"underscore":499}],450:[function(require,module,exports){ -"use strict"; + return -1; + }; + } // Returns the first index on an array-like that passes a truth test. -module.exports = { - name: "plain text", - fields: require("./fields"), - split: require("./splitter"), - detect: require("./detector"), - parse: require("./parser"), - generate: require("./generator") -}; -},{"./detector":446,"./fields":447,"./generator":448,"./parser":451,"./splitter":452}],451:[function(require,module,exports){ -"use strict"; + var findIndex = createPredicateIndexFinder(1); // Returns the last index on an array-like that passes a truth test. -const _ = require("underscore"); + var findLastIndex = createPredicateIndexFinder(-1); // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. -const utils = require("../../utils"); + function sortedIndex(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, + high = getLength(array); -const ParserError = utils.ParserError; + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1;else high = mid; + } -const detect = require("./detector"); + return low; + } // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. -module.exports = (text, options) => { - options = _.defaults(options, { - allowEmptyString: true - }); - text = text || ""; - try { - detect(text, options); - } catch (e) { - if (e instanceof utils.DetectorError) throw new ParserError(e.message); - throw e; - } // console.log(); - // console.log(text); + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function (array, item, idx) { + var i = 0, + length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } - let chunks = []; - let word = ""; + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), isNaN$1); + return idx >= 0 ? idx + i : -1; + } - _.each(text, (char, i) => { - if (utils.re.whitespace.test(char)) { - chunks.push(word); - word = ""; - } else if (utils.re.punctuation.test(char)) { - if (!utils.re.allPunctuation.test(word)) { - chunks.push(word); - word = ""; + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; } - word += char; + return -1; + }; + } // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + + + var indexOf = createIndexFinder(1, findIndex, sortedIndex); // Return the position of the last occurrence of an item in an array, + // or -1 if the item is not included in the array. + + var lastIndexOf = createIndexFinder(-1, findLastIndex); // Return the first value which passes a truth test. + + function find(obj, predicate, context) { + var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var key = keyFinder(obj, predicate, context); + if (key !== void 0 && key !== -1) return obj[key]; + } // Convenience version of a common use case of `_.find`: getting the first + // object containing specific `key:value` pairs. + + + function findWhere(obj, attrs) { + return find(obj, matcher(attrs)); + } // The cornerstone for collection functions, an `each` + // implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + + + function each(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } } else { - word += char; + var _keys = keys(obj); + + for (i = 0, length = _keys.length; i < length; i++) { + iteratee(obj[_keys[i]], _keys[i], obj); + } } - }); - chunks.push(word); // console.log(chunks); + return obj; + } // Return the results of applying the iteratee to each element. - let tokens = chunks.filter(utils.thin).map((chunk, i) => { - return { - form: chunk, - index: i + + function map(obj, iteratee, context) { + iteratee = cb(iteratee, context); + + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + results = Array(length); + + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + + return results; + } // Internal helper to create a reducing function, iterating left or right. + + + function createReduce(dir) { + // Wrap code that reassigns argument variables in a separate function than + // the one that accesses `arguments.length` to avoid a perf hit. (#1991) + var reducer = function (obj, iteratee, memo, initial) { + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + index = dir > 0 ? 0 : length - 1; + + if (!initial) { + memo = obj[_keys ? _keys[index] : index]; + index += dir; + } + + for (; index >= 0 && index < length; index += dir) { + var currentKey = _keys ? _keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + + return memo; }; - }); // console.log(comments); - // console.log(tokens); - return { - input: text, - options: options, - comments: [], - tokens: tokens - }; -}; + return function (obj, iteratee, memo, context) { + var initial = arguments.length >= 3; + return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); + }; + } // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + + + var reduce = createReduce(1); // The right-associative version of reduce, also known as `foldr`. + + var reduceRight = createReduce(-1); // Return all the elements that pass a truth test. + + function filter(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + each(obj, function (value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + } // Return all the elements for which a truth test fails. + -},{"../../utils":479,"./detector":446,"underscore":499}],452:[function(require,module,exports){ -"use strict"; + function reject(obj, predicate, context) { + return filter(obj, negate(cb(predicate)), context); + } // Determine whether all of the elements pass a truth test. -const _ = require("underscore"); -const utils = require("../../utils"); + function every(obj, predicate, context) { + predicate = cb(predicate, context); -module.exports = (text, options = {}) => { - options = _.defaults(options, { - trimChunks: true - }); - return text.split(utils.re.sentenceThenPunctuation).map(chunk => { - if (options.trimChunks) { - return chunk.trim(); - } else { - return chunk; + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; } - }).filter(utils.thin); -}; -},{"../../utils":479,"underscore":499}],453:[function(require,module,exports){ -"use strict"; + return true; + } // Determine if at least one element in the object passes a truth test. -const _ = require("underscore"); -const utils = require("../../utils"); + function some(obj, predicate, context) { + predicate = cb(predicate, context); -const DetectorError = utils.DetectorError; + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; -module.exports = (text, options) => { - options = _.defaults(options, { - allowEmptyString: false, - allowLeadingWhitespace: true, - allowBookendWhitespace: true, - allowTrailingWhitespace: true, - allowNoDependencies: false - }); - if (!text && !options.allowEmptyString) throw new DetectorError(`Illegal SD: empty string`, text, options); - if (utils.isJSONSerializable(text)) throw new DetectorError(`Illegal SD: JSON object`, text, options); // be more or less strict about whitespace + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } - const dependencyRegex = options.allowBookendWhitespace ? utils.re.sdDependency : utils.re.sdDependencyNoWhitespace; // internal stuff + return false; + } // Determine if the array or object contains a given item (using `===`). - let parsingDeps = false; - let parsingWhitespace = false; - let parsedDeps = 0; - const lines = text.split(/\n/); - lines.forEach((line, i) => { - if (utils.re.whiteline.test(line)) { - if (parsingDeps) { - if (!options.allowTrailingWhitespace) throw new DetectorError(`Illegal SD: contains trailing whitespace`, text, options); - } else { - if (!options.allowLeadingWhitespace) throw new DetectorError(`Illegal SD: contains leading whitespace`, text, options); - } - } - if (utils.re.comment.test(line)) {} else if (!parsingDeps) { - if (dependencyRegex.test(line)) throw new DetectorError(`Illegal SD: missing text line`, text, options); - parsingDeps = true; - } else if (!dependencyRegex.test(line)) { - throw new DetectorError(`Illegal SD: expected dependency line`, text, options); + function contains(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return indexOf(obj, item, fromIndex) >= 0; + } // Invoke a method (with arguments) on every item in a collection. + + + var invoke = restArguments(function (obj, path, args) { + var contextPath, func; + + if (isFunction$1(path)) { + func = path; } else { - parsedDeps += 1; + path = toPath(path); + contextPath = path.slice(0, -1); + path = path[path.length - 1]; } - }); - if (parsedDeps === 0 && !options.allowNoDependencies) throw new DetectorError(`Illegal SD: contains no dependencies`, text, options); - return "SD"; -}; -},{"../../utils":479,"underscore":499}],454:[function(require,module,exports){ -module.exports = ["form", "heads"]; -module.exports.hasComments = true; + return map(obj, function (context) { + var method = func; -},{}],455:[function(require,module,exports){ -"use strict"; + if (!method) { + if (contextPath && contextPath.length) { + context = deepGet(context, contextPath); + } -const _ = require("underscore"); + if (context == null) return void 0; + method = context[path]; + } -const utils = require("../../utils"); + return method == null ? method : method.apply(context, args); + }); + }); // Convenience version of a common use case of `_.map`: fetching a property. -const GeneratorError = utils.GeneratorError; + function pluck(obj, key) { + return map(obj, property(key)); + } // Convenience version of a common use case of `_.filter`: selecting only + // objects containing specific `key:value` pairs. -const generateText = require("../plain-text").generate; -const getLoss = require("./get-loss"); + function where(obj, attrs) { + return filter(obj, matcher(attrs)); + } // Return the maximum element (or element-based computation). -module.exports = (sent, options) => { - if (!sent.isParsed) return { - output: null, - loss: undefined - }; - if (!sent || sent.name !== "Sentence") throw new GeneratorError(`Unable to generate, input not a Sentence`, sent, options); - options = _.defaults(options, sent.options, {}); - sent.index(); - let lines = []; - sent.comments.forEach(comment => { - lines.push("# " + comment.body); - }); - lines.push(generateText(sent).output); - [sent.root].concat(sent.tokens).forEach(token => { - token.mapDependents(dependent => { - lines.push(`${dependent.deprel || "_"}(${token.form}, ${dependent.token.form})`); - }); - }); - /* - sent.root.mapDependents(dependent => lines.push(`${dependent.deprel}(${})`)) - if (sent.root) - lines.push(`root(ROOT, ${sent.root.form})`); - sent.tokens.forEach(token => { - if (token._head && token.deprel && token._head.name !== 'RootToken') - lines.push(`${token.deprel}(${token._head.form}, ${token.form})`); - }); - */ - return { - output: lines.join("\n"), - loss: getLoss(sent) - }; -}; + function max(obj, iteratee, context) { + var result = -Infinity, + lastComputed = -Infinity, + value, + computed; -},{"../../utils":479,"../plain-text":450,"./get-loss":456,"underscore":499}],456:[function(require,module,exports){ -"use strict"; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); -const _ = require("underscore"); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; -const utils = require("../../utils"); + if (value != null && value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function (v, index, list) { + computed = iteratee(v, index, list); -const fields = require("./fields"); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = v; + lastComputed = computed; + } + }); + } -module.exports = sent => { - const serial = sent.serialize(); - let losses = new Set(); - serial.tokens.forEach(token => { - if (token.heads && token.heads.length > 1) losses.add("enhanced dependencies"); - Object.keys(_.omit(token, fields)).forEach(field => { - switch (field) { - case "uuid": - case "index": - case "deps": - break; + return result; + } // Return the minimum element (or element-based computation). - case "heads": - if (token.heads.length > 1) losses.add(field); - break; - case "feats": - case "misc": - if (token[field] && token[field].length) losses.add(field); - break; + function min(obj, iteratee, context) { + var result = Infinity, + lastComputed = Infinity, + value, + computed; - default: - if (token[field]) losses.add(field); + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); + + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + + if (value != null && value < result) { + result = value; + } } - }); - }); - return Array.from(losses); -}; + } else { + iteratee = cb(iteratee, context); + each(obj, function (v, index, list) { + computed = iteratee(v, index, list); -},{"../../utils":479,"./fields":454,"underscore":499}],457:[function(require,module,exports){ -"use strict"; + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = v; + lastComputed = computed; + } + }); + } -module.exports = { - name: "SD", - fields: require("./fields"), - split: require("../default-splitter"), - detect: require("./detector"), - parse: require("./parser"), - generate: require("./generator") -}; + return result; + } // Sample **n** random values from a collection using the modern version of the + // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `_.map`. -},{"../default-splitter":430,"./detector":453,"./fields":454,"./generator":455,"./parser":458}],458:[function(require,module,exports){ -"use strict"; -const _ = require("underscore"); + function sample(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = values(obj); + return obj[random(obj.length - 1)]; + } -const utils = require("../../utils"); + var sample = isArrayLike(obj) ? clone(obj) : values(obj); + var length = getLength(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; -const ParserError = utils.ParserError; + for (var index = 0; index < n; index++) { + var rand = random(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } -const detect = require("./detector"); + return sample.slice(0, n); + } // Shuffle a collection. -const parseText = require("../plain-text").parse; -module.exports = (text, options) => { - function getTokenIndexFromString(tokens, token) { - for (let i = 0; i < tokens.length; i++) { - if (tokens[i].form.toLowerCase() === token.toLowerCase()) return i; - } + function shuffle(obj) { + return sample(obj, Infinity); + } // Sort the object's values by a criterion produced by an iteratee. - return null; - } // console.log(); - // console.log(text); + function sortBy(obj, iteratee, context) { + var index = 0; + iteratee = cb(iteratee, context); + return pluck(map(obj, function (value, key, list) { + return { + value: value, + index: index++, + criteria: iteratee(value, key, list) + }; + }).sort(function (left, right) { + var a = left.criteria; + var b = right.criteria; - options = _.defaults(options, { - allowEmptyString: false, - allowBookendWhitespace: true, - allowWhiteLines: true - }); + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } - try { - detect(text, options); - } catch (e) { - if (e instanceof utils.DetectorError) throw new ParserError(e.message); - throw e; - } + return left.index - right.index; + }), 'value'); + } // An internal function used for aggregate "group by" operations. - const lines = text.split("\n"); - const depRegex = options.allowBookendWhitespace ? utils.re.sdDependencyNoWhitespace : utils.re.sdDependency; - let chunks = []; - lines.forEach(line => { - const whiteline = line.match(utils.re.whiteline), - comment = line.match(utils.re.comment), - dep = line.match(depRegex); - if (whiteline) {} else if (comment) { - chunks.push({ - type: "comment", - body: comment[2] - }); - } else if (dep) { - chunks.push({ - type: "dependency", - deprel: dep[1], - head: dep[2], - dep: dep[3] - }); - } else { - chunks.push({ - type: "text", - body: line + function group(behavior, partition) { + return function (obj, iteratee, context) { + var result = partition ? [[], []] : {}; + iteratee = cb(iteratee, context); + each(obj, function (value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); }); - } - }); // console.log(chunks); + return result; + }; + } // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. - let tokens; - let comments = []; - let expecting = ["comment", "text"]; - chunks.forEach(chunk => { - if (expecting.indexOf(chunk.type) === -1) throw new ParserError(`expecting ${expecting.join("|")}, got ${chunk.type}`, text, options); - if (chunk.type === "comment") { - comments.push(chunk.body); - expecting = ["comment", "text"]; - } else if (chunk.type === "text") { - tokens = parseText(chunk.body).tokens; - expecting = ["dependency"]; - } else if (chunk.type === "dependency") { - let index = getTokenIndexFromString(tokens, chunk.dep); - if (index === null) throw new ParserError(`unable to find token with form ${chunk.dep}`, text, options); - tokens[index].heads = [{ - index: getTokenIndexFromString(tokens, chunk.head), - deprel: chunk.deprel - }]; - expecting = ["dependency"]; - } else { - throw new ParserError(`unrecognized chunk type: ${chunk.type}`, text, options); - } - }); // console.log(comments); - // console.log(tokens); + var groupBy = group(function (result, value, key) { + if (has$1(result, key)) result[key].push(value);else result[key] = [value]; + }); // Indexes the object's values by a criterion, similar to `_.groupBy`, but for + // when you know that your index values will be unique. - return { - input: text, - options: options, - comments: comments, - tokens: tokens - }; -}; + var indexBy = group(function (result, value, key) { + result[key] = value; + }); // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. -},{"../../utils":479,"../plain-text":450,"./detector":453,"underscore":499}],459:[function(require,module,exports){ -"use strict"; + var countBy = group(function (result, value, key) { + if (has$1(result, key)) result[key]++;else result[key] = 1; + }); // Split a collection into two arrays: one whose elements all pass the given + // truth test, and one whose elements all do not pass the truth test. -const _ = require("underscore"); + var partition = group(function (result, value, pass) { + result[pass ? 0 : 1].push(value); + }, true); // Safely create a real, live array from anything iterable. -const utils = require("./utils"); + var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; -const GeneratorError = utils.GeneratorError; -let as = { - "apertium stream": require("./formats/apertium-stream").generate, - apertiumStream: require("./formats/apertium-stream").generate, - Brackets: require("./formats/brackets").generate, - brackets: require("./formats/brackets").generate, - CG3: require("./formats/cg3").generate, - cg3: require("./formats/cg3").generate, - "CoNLL-U": require("./formats/conllu").generate, - conllu: require("./formats/conllu").generate, - "notatrix serial": require("./formats/notatrix-serial").generate, - notatrixSerial: require("./formats/notatrix-serial").generate, - Params: require("./formats/params").generate, - params: require("./formats/params").generate, - "plain text": require("./formats/plain-text").generate, - plainText: require("./formats/plain-text").generate, - SD: require("./formats/sd").generate, - sd: require("./formats/sd").generate -}; -module.exports = as; + function toArray(obj) { + if (!obj) return []; + if (isArray(obj)) return slice.call(obj); -},{"./formats/apertium-stream":409,"./formats/brackets":416,"./formats/cg3":422,"./formats/conllu":428,"./formats/notatrix-serial":436,"./formats/params":443,"./formats/plain-text":450,"./formats/sd":457,"./utils":479,"underscore":499}],460:[function(require,module,exports){ -"use strict"; + if (isString(obj)) { + // Keep surrogate pair characters together. + return obj.match(reStrSymbol); + } -const _ = require("underscore"); + if (isArrayLike(obj)) return map(obj, identity); + return values(obj); + } // Return the number of elements in a collection. -const nx = require("./nx"); -const errors = require("./utils/errors"); + function size(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : keys(obj).length; + } // Internal `_.pick` helper function to determine whether `key` is an enumerable + // property name of `obj`. -module.exports = _.extend({ - constants: require("./utils/constants"), - formats: require("./formats"), - funcs: require("./utils/funcs"), - regex: require("./utils/regex"), - data: require("../data"), - detect: require("./detector"), - generate: require("./generator"), - parse: require("./parser"), - split: require("./splitter"), - convert: require("./converter") -}, nx, errors); -},{"../data":399,"./converter":404,"./detector":405,"./formats":431,"./generator":459,"./nx":466,"./parser":474,"./splitter":475,"./utils/constants":476,"./utils/errors":477,"./utils/funcs":478,"./utils/regex":480,"underscore":499}],461:[function(require,module,exports){ -"use strict"; + function keyInObj(value, key, obj) { + return key in obj; + } // Return a copy of the object only containing the allowed properties. -const _ = require("underscore"); -const utils = require("../utils"); + var pick = restArguments(function (obj, keys) { + var result = {}, + iteratee = keys[0]; + if (obj == null) return result; -const NxError = utils.NxError; + if (isFunction$1(iteratee)) { + if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); + keys = allKeys(obj); + } else { + iteratee = keyInObj; + keys = flatten$1(keys, false, false); + obj = Object(obj); + } -const NxBaseClass = require("./base-class"); + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } -const SubToken = require("./sub-token"); -/** - * Abstraction over a CG3 analysis. Most sentences have just one of these for - * each token. - */ + return result; + }); // Return a copy of the object without the disallowed properties. + var omit = restArguments(function (obj, keys) { + var iteratee = keys[0], + context; -class Analysis extends NxBaseClass { - constructor(sent, serial) { - super(sent, "Analysis"); - this._subTokens = (serial.subTokens || []).map(sub => new SubToken(sent, sub)); - } + if (isFunction$1(iteratee)) { + iteratee = negate(iteratee); + if (keys.length > 1) context = keys[1]; + } else { + keys = map(flatten$1(keys, false, false), String); - get subTokens() { - return this._subTokens; - } + iteratee = function (value, key) { + return !contains(keys, key); + }; + } -} + return pick(obj, iteratee, context); + }); // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. -module.exports = Analysis; + function initial(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + } // Get the first element of an array. Passing **n** will return the first N + // values in the array. The **guard** check allows it to work with `_.map`. -},{"../utils":479,"./base-class":462,"./sub-token":472,"underscore":499}],462:[function(require,module,exports){ -class NxBaseClass { - constructor(name) { - this.name = name; - } -} + function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); + } // Returns everything but the first entry of the `array`. Especially useful on + // the `arguments` object. Passing an **n** will return the rest N values in the + // `array`. -; -module.exports = NxBaseClass; -},{}],463:[function(require,module,exports){ -"use strict"; + function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + } // Get the last element of an array. Passing **n** will return the last N + // values in the array. -const _ = require("underscore"); -const uuid = require("uuid/v4"); + function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); + } // Trim out all falsy values from an array. -const utils = require("../utils"); -const NxError = utils.NxError; + function compact(array) { + return filter(array, Boolean); + } // Flatten out an array, either recursively (by default), or up to `depth`. + // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -const NxBaseClass = require("./base-class"); -const RelationSet = require("./relation-set"); -/** - * Ancestor of Token, SubToken, SuperToken. Implements methods common - * to all three of them. - */ + function flatten(array, depth) { + return flatten$1(array, depth, false); + } // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. -class BaseToken extends NxBaseClass { - constructor(sent, name, serial = {}) { - super(name); - this.sent = sent; - this.uuid = uuid(); - this.uuid = serial.uuid || this.uuid; - this.semicolon = serial.semicolon; - this.isEmpty = serial.isEmpty; - this.form = serial.form; - this.lemma = serial.lemma; - this.upostag = serial.upostag; - this.xpostag = serial.xpostag; - this.feats = serial.feats; - this.misc = serial.misc; - this._heads = serial.heads; - this.heads = new RelationSet(this, "dependents"); - this.dependents = new RelationSet(this, "heads"); - this.indices = { - conllu: null, - cg3: null, - cytoscape: null, - serial: serial.index - }; - } - /** - * Add a head to a token with a dependency relation. - * - * @param {BaseToken} head - * @param {String} deprel - */ + var difference = restArguments(function (array, rest) { + rest = flatten$1(rest, true, true); + return filter(array, function (value) { + return !contains(rest, value); + }); + }); // Return a version of the array that does not contain the specified value(s). + var without = restArguments(function (array, otherArrays) { + return difference(array, otherArrays); + }); // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // The faster algorithm will not work with an iteratee if the iteratee + // is not a one-to-one function, so providing an iteratee will disable + // the faster algorithm. - addHead(head, deprel) { - if (!(head instanceof BaseToken)) throw new NxError("cannot add head unless it is a token"); - if (head === this) throw new NxError("token cannot be its own head"); - if (typeof deprel !== "string" && deprel != null) throw new NxError("deprel must be a string, null, or undefined"); // if we're not enhanced, only can have 1 head at a time + function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } - if (!this.sent.options.enhanced) this.heads.clear(); - return this.heads.add(head, deprel); - } - /** - * Change the dependency relation for a given head. - * - * @param {BaseToken} head - * @param {String} deprel - */ + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; + } // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. - modifyHead(head, deprel) { - if (!(head instanceof BaseToken)) throw new NxError("cannot add head unless it is a token"); - if (typeof deprel !== "string" && deprel != null) throw new NxError("deprel must be a string, null, or undefined"); - return this.heads.modify(head, deprel); - } - /** - * Remove a head and its dependency relation. - * - * @param {BaseToken} head - */ + var union = restArguments(function (arrays) { + return uniq(flatten$1(arrays, true, true)); + }); // Produce an array that contains every item shared between all the + // passed-in arrays. - removeHead(head) { - if (!(head instanceof BaseToken)) throw new NxError("cannot add head unless it is a token"); - return this.heads.remove(head); - } - /** - * Remove all heads - */ + function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; - removeAllHeads() { - return this.heads.clear(); - } - /** - * Apply a callback to each of a token's heads - */ + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } - mapHeads(callback) { - // if (this.sent.options.enhanced) { - return this.heads.map(callback); - /*} else { - return this.heads.first - ? [ this.heads.first ].map(callback) - : [].map(callback); - }*/ - } - /** - * Apply a callback to each of token's dependents - */ + return result; + } // Complement of zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices. - mapDependents(callback) { - return this.dependents.map(callback); - } - /** - * Get the head index for a given format - * - * @param {String} format - * @return {String} - */ + function unzip(array) { + var length = array && max(array, getLength).length || 0; + var result = Array(length); + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } - getHead(format) { - if (!this.heads.length) return null; - if (format === "CoNLL-U") return `${this.heads.first.token.indices.conllu}`; - if (format === "CG3") return `${this.heads.first.token.indices.cg3}`; - return `${this.heads.first.token.indices.absolute}`; - } + return result; + } // Zip together multiple lists into a single array -- elements that share + // an index go together. - _getDeprel() { - if (!this.heads.length) return null; - return this.heads.first.deprel; - } - _getDeps(format) { - function getIndex(token) { - if (format === "CoNLL-U") return token.indices.conllu; - if (format === "CG3") return token.indices.cg3; - return token.indices.absolute; + var zip = restArguments(unzip); // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. Passing by pairs is the reverse of `_.pairs`. + + function object(list, values) { + var result = {}; + + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } } - if (!this.heads.length || !this.sent.options.enhanced) return []; - return this.mapHeads(utils.noop).sort((x, y) => { - if (getIndex(x.token) < getIndex(y.token)) return -1; - if (getIndex(x.token) > getIndex(y.token)) return 1; - return 0; - }).map(head => { - return head.deprel ? `${getIndex(head.token)}:${head.deprel}` : `${getIndex(head.token)}`; - }); - } - /** - * Mark this token as "empty" (aka "null") - * - * @param {boolean} isEmpty - */ + return result; + } // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](https://docs.python.org/library/functions.html#range). - setEmpty(isEmpty) { - this.isEmpty = isEmpty; - } - /** - * Apply a callback to each of a token's analyses and subTokens - * - * @param {Function} callback - */ + function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } - walk(callback) { - let i = 0; - if (this._analyses) return this._analyses.map(analysis => { - return analysis._subTokens.map(subToken => { - return callback(subToken, ++i); - }); - }); - return null; - } - /** - * Hash a list of fields to a string - * - * @param {String[]} fields - * @return {String} - */ + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } - hashFields(...fields) { - fields = _.flatten(fields); + return range; + } // Chunk a single array into multiple arrays, each containing `count` or fewer + // items. - let hash = _.intersection(fields, ["form", "lemma", "upostag", "xpostag", "feats", "deprel", "misc", "isEmpty", "semicolon"]).map(field => `<${this[field] || field}>`).join("|"); - if (fields.indexOf("indices") > -1) hash += `|${_.map(this.indices, index => `{${index}}`).join("")}`; - if (fields.indexOf("head") > -1) hash += `|(h:${this.head.token.indices.absolute}:${h.deprel})`; - if (fields.indexOf("deps") > -1) hash += `|(d:${this.mapDeps(d => `${d.token.indices.absolute}:${d.deprel}`).join("|") || ""})`; - if (fields.indexOf("analyses") > -1 || fields.indexOf("subTokens") > -1) hash += `|[s:${this.walk(t => t.hashFields(fields)) || ""}]`; - return hash; - } - /** - * Serialize a token to JSON format - */ + function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, + length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } - serialize() { - let serial = { - uuid: this.uuid, - form: this.form, - index: this.indices.absolute, - semicolon: this.semicolon, - isEmpty: this.isEmpty, - lemma: this.lemma, - upostag: this.upostag, - xpostag: this.xpostag, - feats: this._feats, - misc: this._misc, - heads: this.mapHeads(head => { - return { - index: head.token.indices.absolute, - deprel: head.deprel - }; - }) - }; - if (this._analyses && this._analyses.length) serial.analyses = this._analyses.map(analysis => { - return { - subTokens: analysis._subTokens.map(subToken => subToken.serialize()) - }; - }); - serial = _.pick(serial, value => value !== undefined); - return serial; - } + return result; + } // Helper function to continue chaining intermediate results. - get isSuperToken() { - return !!(this._analyses || []).reduce((total, analysis) => { - return total += analysis._subTokens.length; - }, 0); - } - get value() { - return this.form || this.lemma; - } + function chainResult(instance, obj) { + return instance._chain ? _$1(obj).chain() : obj; + } // Add your own custom functions to the Underscore object. - get feats() { - return this._feats_init ? this._feats.length ? this._feats.join("|") : null : undefined; - } - set feats(feats) { - if (feats === undefined) return; - this._feats_init = true; - this._feats = feats || []; - } + function mixin(obj) { + each(functions(obj), function (name) { + var func = _$1[name] = obj[name]; - get misc() { - return this._misc_init ? this._misc.length ? this._misc.join("|") : null : undefined; - } + _$1.prototype[name] = function () { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_$1, args)); + }; + }); + return _$1; + } // Add all mutator `Array` functions to the wrapper. - set misc(misc) { - // [(serial.misc || ''), (serial.other || - // []).join('|')].join('|'); - if (misc === undefined) return; - this._misc_init = true; - this._misc = misc || []; - } - set other(other) { - if (other === undefined) return; - if (typeof other === "string") other = [other]; - this._misc_init = true; - this._misc = (other || []).filter(utils.thin); - } + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function (name) { + var method = ArrayProto[name]; -} + _$1.prototype[name] = function () { + var obj = this._wrapped; -module.exports = BaseToken; + if (obj != null) { + method.apply(obj, arguments); -},{"../utils":479,"./base-class":462,"./relation-set":469,"underscore":499,"uuid/v4":502}],464:[function(require,module,exports){ -"use strict"; + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } -const _ = require("underscore"); + return chainResult(this, obj); + }; + }); // Add all accessor `Array` functions to the wrapper. -const utils = require("../utils"); + each(['concat', 'join', 'slice'], function (name) { + var method = ArrayProto[name]; -const NxBaseClass = require("./base-class"); + _$1.prototype[name] = function () { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; + }); // Named Exports + + var allExports = { + __proto__: null, + VERSION: VERSION, + restArguments: restArguments, + isObject: isObject, + isNull: isNull, + isUndefined: isUndefined, + isBoolean: isBoolean, + isElement: isElement, + isString: isString, + isNumber: isNumber, + isDate: isDate, + isRegExp: isRegExp, + isError: isError, + isSymbol: isSymbol, + isArrayBuffer: isArrayBuffer, + isDataView: isDataView$1, + isArray: isArray, + isFunction: isFunction$1, + isArguments: isArguments$1, + isFinite: isFinite$1, + isNaN: isNaN$1, + isTypedArray: isTypedArray$1, + isEmpty: isEmpty, + isMatch: isMatch, + isEqual: isEqual, + isMap: isMap, + isWeakMap: isWeakMap, + isSet: isSet, + isWeakSet: isWeakSet, + keys: keys, + allKeys: allKeys, + values: values, + pairs: pairs, + invert: invert, + functions: functions, + methods: functions, + extend: extend, + extendOwn: extendOwn, + assign: extendOwn, + defaults: defaults, + create: create, + clone: clone, + tap: tap, + get: get, + has: has, + mapObject: mapObject, + identity: identity, + constant: constant, + noop: noop, + toPath: toPath$1, + property: property, + propertyOf: propertyOf, + matcher: matcher, + matches: matcher, + times: times, + random: random, + now: now, + escape: _escape, + unescape: _unescape, + templateSettings: templateSettings, + template: template, + result: result, + uniqueId: uniqueId, + chain: chain, + iteratee: iteratee, + partial: partial, + bind: bind, + bindAll: bindAll, + memoize: memoize, + delay: delay, + defer: defer, + throttle: throttle, + debounce: debounce, + wrap: wrap, + negate: negate, + compose: compose, + after: after, + before: before, + once: once, + findKey: findKey, + findIndex: findIndex, + findLastIndex: findLastIndex, + sortedIndex: sortedIndex, + indexOf: indexOf, + lastIndexOf: lastIndexOf, + find: find, + detect: find, + findWhere: findWhere, + each: each, + forEach: each, + map: map, + collect: map, + reduce: reduce, + foldl: reduce, + inject: reduce, + reduceRight: reduceRight, + foldr: reduceRight, + filter: filter, + select: filter, + reject: reject, + every: every, + all: every, + some: some, + any: some, + contains: contains, + includes: contains, + include: contains, + invoke: invoke, + pluck: pluck, + where: where, + max: max, + min: min, + shuffle: shuffle, + sample: sample, + sortBy: sortBy, + groupBy: groupBy, + indexBy: indexBy, + countBy: countBy, + partition: partition, + toArray: toArray, + size: size, + pick: pick, + omit: omit, + first: first, + head: first, + take: first, + initial: initial, + last: last, + rest: rest, + tail: rest, + drop: rest, + compact: compact, + flatten: flatten, + without: without, + uniq: uniq, + unique: uniq, + union: union, + intersection: intersection, + difference: difference, + unzip: unzip, + transpose: unzip, + zip: zip, + object: object, + range: range, + chunk: chunk, + mixin: mixin, + 'default': _$1 + }; // Default Export + // Add all of the Underscore functions to the wrapper object. + + var _ = mixin(allExports); // Legacy Node.js API. + + + _._ = _; + return _; +}); -const Label = require("./label"); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],413:[function(require,module,exports){ /** - * Abstraction over a CoNLL-U or CG3 comment, allows us to extract and then - * manipulate data in some useful ways across a Corpus. + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} -class Comment extends NxBaseClass { - constructor(sent, body) { - super(sent, "Comment"); - this.type = "normal"; - this.body = body; - const label = body.match(utils.re.commentLabel), - sentId = body.match(utils.re.commentSentId); - - if (label) { - let labels = []; - label[3].split(/\s/).forEach(label => { - if (label && labels.indexOf(label) === -1) labels.push(label); - }); - this.type = "label"; - this.labels = labels; - } else if (sentId) { - this.type = "sent-id"; - this.id = sentId[2]; - } - } - - serialize() { - return this.body; - } +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join(''); } -module.exports = Comment; +module.exports = bytesToUuid; -},{"../utils":479,"./base-class":462,"./label":467,"underscore":499}],465:[function(require,module,exports){ -"use strict"; +},{}],414:[function(require,module,exports){ +// Unique ID creation requires a high quality random # generator. In the +// browser this is a little complicated due to unknown quality of Math.random() +// and inconsistent support for the `crypto` API. We do the best we can via +// feature-detection +// getRandomValues needs to be invoked in a context where "this" is a Crypto +// implementation. Also, find the complete implementation of crypto on IE11. +var getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto); -const _ = require("underscore"); +if (getRandomValues) { + // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto + var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef -const fs = require("fs"); + module.exports = function whatwgRNG() { + getRandomValues(rnds8); + return rnds8; + }; +} else { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var rnds = new Array(16); -const path = require("path"); + module.exports = function mathRNG() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } -const uuid = require("uuid/v4"); + return rnds; + }; +} -const utils = require("../utils"); +},{}],415:[function(require,module,exports){ +var rng = require('./lib/rng'); -const NxError = utils.NxError; +var bytesToUuid = require('./lib/bytesToUuid'); -const split = require("../splitter"); +function v4(options, buf, offset) { + var i = buf && offset || 0; -const detect = require("../detector"); + if (typeof options == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } -const parse = require("../parser"); + options = options || {}; + var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` -const generate = require("../generator"); + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -const convert = require("../converter"); + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } -const NxBaseClass = require("./base-class"); + return buf || bytesToUuid(rnds); +} -const Labeler = require("./labeler"); +module.exports = v4; -const Sentence = require("./sentence"); +},{"./lib/bytesToUuid":413,"./lib/rng":414}],416:[function(require,module,exports){ +'use strict'; + +var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), + length = 64, + map = {}, + seed = 0, + i = 0, + prev; /** - * Abstraction over a collection of Sentences. NOTE: this class is - * out-of-date and will be replaced soon :) + * Return a string representing the specified number. + * + * @param {Number} num The number to convert. + * @returns {String} The string representation of the number. + * @api public */ +function encode(num) { + var encoded = ''; -class Corpus extends NxBaseClass { - constructor(options) { - super("Corpus"); - this.treebank_id = uuid(); - options = _.defaults(options, { - requireOne: true - }); - this.filename = null; - this.options = options; - this.sources = []; - this._labeler = new Labeler(this); - this._sentences = []; - this._index = -1; - this._meta = {}; - this._filterIndex = -1; - } - - get snapshot() { - return { - filename: this.filename, - sentences: this.length, - errors: this.errors.length, - labels: this._labeler.sort() - }; - } + do { + encoded = alphabet[num % length] + encoded; + num = Math.floor(num / length); + } while (num > 0); - get length() { - return this._sentences.length; - } + return encoded; +} +/** + * Return the integer value specified by the given string. + * + * @param {String} str The string to convert. + * @returns {Number} The integer value represented by the string. + * @api public + */ - get errors() { - return this._sentences.filter(sent => { - if (!sent.isParsed) return sent; - }); - } - get topLabels() { - return this._labeler.top; - } +function decode(str) { + var decoded = 0; - serialize() { - return { - filename: this.filename, - meta: this._meta, - options: this.options, - labeler: this._labeler.serialize(), - sentences: this._sentences.map(sent => sent.serialize(this.options)), - index: this._index - }; + for (i = 0; i < str.length; i++) { + decoded = decoded * length + map[str.charAt(i)]; } - static deserialize(serial) { - const corpus = new Corpus(serial.options); - corpus.filename = serial.filename || null; - corpus._meta = serial.meta; - corpus._labeler = Labeler.deserialize(corpus, serial.labeler); - corpus._sentences = serial.sentences.map(s => { - const sent = new Sentence(s, _.defaults(s.options, serial.options)); - sent._meta = s.meta; + return decoded; +} +/** + * Yeast: A tiny growing id generator. + * + * @returns {String} A unique id. + * @api public + */ - _.each(corpus._labeler._labels, (label, name) => { - if (corpus._labeler.sentenceHasLabel(sent, name)) label._sents.add(sent); - }); - return sent; - }); - corpus.index = serial.index; - return corpus; - } +function yeast() { + var now = encode(+new Date()); + if (now !== prev) return seed = 0, prev = now; + return now + '.' + encode(seed++); +} // +// Map each character to its index. +// - get sentence() { - return this.index < 0 ? null : this._sentences[this.index]; - } - get filtered() { - return this._labeler._filter.size ? this._sentences.filter(sent => this._labeler.sentenceInFilter(sent)) : []; - } +for (; i < length; i++) map[alphabet[i]] = i; // +// Expose the `yeast`, `encode` and `decode` functions. +// - get index() { - return this._index; - } - set index(index) { - const filtered = this.filtered, - total = filtered.length || this.length; - index = parseInt(index); +yeast.encode = encode; +yeast.decode = decode; +module.exports = yeast; - if (isNaN(index)) { - index = filtered.length ? this._filterIndex : this.index; - } else if (index < 0 && total) { - index = 0; - } else if (index > total - 1) { - index = total - 1; - } +},{}],417:[function(require,module,exports){ +module.exports = {}; - if (filtered.length) { - this._filterIndex = index; - this._index = filtered[index]._index; - } else { - this._filterIndex = -1; - this._index = index; - } +},{}],418:[function(require,module,exports){ +module.exports = { + 0: `[root [nsubj I] have [obj [amod [advmod too] many] commitments] [advmod right now] [punct .]]` +}; - return this.index; - } +},{}],419:[function(require,module,exports){ +module.exports = { + equals: `# sent_id = mst-0001 +# text = Peşreve başlamalı. +"" + "peşrev" Noun @obl #1->2 +"" + "başla" Verb SpaceAfter=No @root #2->0 +"<.>" + "." Punc @punct #3->2`, + x_and_u_postag: `# text = Ñe'ẽnguéra iñe'ẽrapoambuéva (lenguas de flexión), umi ñe'ẽte indoeuropeo-icha. +# text[spa] = Las lenguas de flexión, aquellas lenguas como indoeuropeas. +# labels = +"<Ñeʼẽnguéra>" + "ñeʼẽ" n @nsubj #1-> + "kuéra" det pl @det #2->1 +"" + "iñeʼẽrapoambuéva" adj @amod #3->1 +"<(>" + "(" lpar @punct #4->5 +"" + "lenguas" barb @appos #5->1 +"" + "de" barb @foreign #6->7 +"" + "flexión" barb @foreign #7->5 +"<)>" + ")" rpar @punct #8->5 +"<,>" + "," cm @punct #9-> +"" + "umi" adj dem pl @amod #10->11 +"<ñeʼẽte>" + "ñeʼẽ" n @obl #11-> + "te" post @case #12->11 +"" + "indoeuropeo" barb @amod #13->11 + "icha" comp @dep #14->13 +"<.>" + "." sent @punct #15->`, + nested: `# sent_id = wikipedia:Poyvi_Paraguái:11 +# text = Poyvi peteĩha ñane retãmegua niko ojepuru’ypýkuri 15 jasypo guive 16 jasypoteĩ meve ary 1811-pe. +# text[spa] = Bandera uno nosotros de-de _ él-se-utilizó-_ 15 maio desde 16 junio hasta año 1811-en. +"" + "poyvi" n +"" + "pete" n incp + "ĩ" v tv pres + "ha" subs + "peteĩha" num +"<ñane>" + "ñandé" prn pers p1 incl pl +"" + "*retãmegua" +"" + "*niko" +"" + "*ojepuruʼypýkuri" +"<15>" + "15" num @amod +"" + "ja" n incp + "sy" n incp + "po" n + "ja" n incp + "sy" n incp + "po" v iv pres + "ja" n incp + "sy" n incp + "po" v tv pres + "ja" prn p1 pl + "sy" n incp + "po" n + "ja" prn p1 pl + "sy" n incp + "po" v iv pres + "ja" prn p1 pl + "sy" n incp + "po" v tv pres + "jasy" n incp + "po" n + "jasy" n incp + "po" v iv pres + "jasy" n incp + "po" v tv pres + "jasypo" n +"" + "guive" post @case +"<16>" + "16" num @amod +"" + "jasypoteĩ" n +"" + "peve" post @case +"" + "ary" n +"<1811-pe>" + "1811" num + "pe" post @case`, - reindex() { - this._sentences.forEach((sent, i) => { - sent._index = i; - }); - } + /*nested_2: `"" + "A" #1-> + "B" #2-> + "" + "C" #3-> + "D" #4-> + "E" #5-> + "" + "F" #6-> + "" + "H" #7->`,*/ + kdt_tagged_1: `# https://github.com/apertium/apertium-kaz/blob/master/texts/kdt.tagged.txt +"<Өскеменнің>" + "Өскемен" np top gen @nmod:poss #1->3 +"<ар>" + "ар" adj @amod #2->3 +"<жағында>" + "жақ" n px3sp loc @conj #3->7 +"<,>" + "," cm @punct #4->7 +"<Бұқтырманың>" + "Бұқтырма" np top gen @nmod:poss #5->7 +"<оң>" + "оң" adj @amod #6->7 +"<жағында>" + "жақ" n px3sp loc @nmod #7->11 +"<әлемге>" + "әлем" n dat @nmod #8->9 +"<аян>" + "аян" adj @acl #9->10 +"<Алтай>" + "Алтай" np top nom @nsubj #10->11 +"<бар>" + "бар" adj @root #11->0 + "е" cop aor p3 sg @cop #12->11 +"<.>" + "." sent @punct #13->11`, + kdt_tagged_2: `# https://github.com/apertium/apertium-kaz/blob/master/texts/kdt.tagged.txt +"<Аттан>" + "аттан" v iv imp p2 sg @root #1->0 +"" + "!" sent @punct #2->1`, + kdt_tagged_3: `# https://github.com/apertium/apertium-kaz/blob/master/texts/kdt.tagged.txt +"<Манағы>" + "манағы" det dem @det #1->3 +"<ала>" + "ала" adj @amod #2->3 +"<атты>" + "атты" adj subst nom @nsubj #3->4 +"<кім>" + "кім" prn itg nom @root #4->0 + "е" cop aor p3 sg @cop #5->4 +"" + "?" sent @punct #6->4`, + 0: `"<Патшамен>" + "патша" n ins @nmod #1->3 +"<соғыс>" + "соғыс" n nom @obj #2->3 +"<ашқанда>" + "аш" v tv ger_past loc @advcl #3->12 +"<,>" + "," cm @punct #4->12 +"<ел-жұрт>" + "ел-жұрт" n nom @conj #5->7 +"<,>" + "," cm @punct #6->7 +"<отанымды>" + "отан" n px1sg acc @obj #7->8 +"<қорғауға>" + "қорға" v tv ger dat @advcl #8->12 +"<,>" + "," cm @punct #9->12 +"<біз>" + "біз" prn pers p1 pl nom @nsubj #10->12 +"<соғысқа>" + "соғыс" n dat @nmod #11->12 +"<бардық>" + "бар" v iv ifi p1 pl @root #12->0 +"<.>" + "." sent @punct #13->12`, + 1: `# text = He boued e tebr Mona er gegin. +# text[eng] = Mona eats her food here in the kitchen. +# labels = press_1986 ch_syntax p_197 to_check +"" + "he" det pos f sp @det #1->2 +"" + "boued" n m sg @obj #2->4 +"" + "e" vpart obj @aux #3->4 +"" + "debriñ" vblex pri p3 sg @root #4->0 +"" + "Mona" np ant f sg @nsubj #5->4 +"" + "e" pr @case #6->8 + "an" det def sp @det #7->8 +"" + "kegin" n f sg @obl #8->4 +"<.>" + "." sent @punct #9->4`, + 2: `# text = He boued e tebr Mona er gegin. +# text[eng] = Mona eats her food here in the kitchen. +# labels = press_1986 ch_syntax p_197 to_check +"" + "he" det pos f sp @det #1->2 +"" + "boued" n m sg @obj #2->4 +"" + "e" vpart obj @aux #3->4 +"" + "debriñ" vblex pri p3 sg @root #4->0 +"" + "Mona" np ant f sg @nsubj #5->4 +"" + "e" pr @case #6->8 + "an" det def sp @det #7->8 +"" + "kegin" n f sg @obl #8->4 + "kegin" n f pl @obl #9-> +"<.>" + "." sent @punct #10->4`, + // note: changed line `"kegin" n f pl @obl #8->4` + with_semicolumn: ` +"" + "siedzieć" vblex impf past p1 m pl +"" + "w" pr +"" +; "mój" prn pos mi sg loc +"" + "pokój" n mi sg loc +"<,>" + "," cm +"" + "palić" vblex impf pprs adv +"" + "i" cnjcoo +"" + "rozmawiać" vblex impf pprs adv +"" + "o" pr +"" + "to" prn dem mi sg loc +"<,>" + "," cm +"" + "jak" rel adv +"" + "marny" adj sint mp pl nom +"" + "być" vbser pres p1 pl +"<,>" + "," cm +"" + "marny" adj sint mp pl nom +"" + "z" pr +"" + "lekarski" adj mi sg gen +"" + "punkt" n mi sg gen +"" +; "widzieć" vblex impf ger nt sg gen +"" + "chcieć" vblex impf pres p1 sg +"" + "powiedzieć" vblex perf inf +"<,>" + "," cm +"" + "naturalnie" adv sint +"<.>" + "." sent`, + simple: `"<Патшамен>" + "патша" n ins @nmod #1->3 +"<соғыс>" + "соғыс" n nom @obj #2->3 +"<ашқанда>" + "аш" v tv ger_past loc @advcl #3->12 +"<,>" + "," cm @punct #4->12 +"<ел-жұрт>" + "ел-жұрт" n nom @conj #5->7 +"<,>" + "," cm @punct #6->7 +"<отанымды>" + "отан" n px1sg acc @obj #7->8 +"<қорғауға>" + "қорға" v tv ger dat @advcl #8->12 +"<,>" + "," cm @punct #9->12 +"<біз>" + "біз" prn pers p1 pl nom @nsubj #10->12 +"<соғысқа>" + "соғыс" n dat @nmod #11->12 +"<бардық>" + "бар" v iv ifi p1 pl @root #12->0 +"<.>" + "." sent @punct #13->12`, + simple_with_comments: `# comment #1 +# comment #2 +"<Патшамен>" + "патша" n ins @nmod #1->3 +"<соғыс>" + "соғыс" n nom @obj #2->3 +"<ашқанда>" + "аш" v tv ger_past loc @advcl #3->12 +"<,>" + "," cm @punct #4->12 +"<ел-жұрт>" + "ел-жұрт" n nom @conj #5->7 +"<,>" + "," cm @punct #6->7 +"<отанымды>" + "отан" n px1sg acc @obj #7->8 +"<қорғауға>" + "қорға" v tv ger dat @advcl #8->12 +"<,>" + "," cm @punct #9->12 +"<біз>" + "біз" prn pers p1 pl nom @nsubj #10->12 +"<соғысқа>" + "соғыс" n dat @nmod #11->12 +"<бардық>" + "бар" v iv ifi p1 pl @root #12->0 +"<.>" + "." sent @punct #13->12`, + with_spans: `# text = He boued e tebr Mona er gegin. +# text[eng] = Mona eats her food here in the kitchen. +# labels = press_1986 ch_syntax p_197 to_check +"" + "he" det pos f sp @det #1->2 +"" + "boued" n m sg @obj #2->4 +"" + "e" vpart obj @aux #3->4 +"" + "debriñ" vblex pri p3 sg @root #4->0 +"" + "Mona" np ant f sg @nsubj #5->4 +"" + "e" pr @case #6->8 + "an" det def sp @det #7->8 +"" + "kegin" n f sg @obl #8->4 +"<.>" + "." sent @punct #9->4`, + apertium_kaz_1: `# https://bpaste.net/show/be7c03e6213e +"<Чау>" + "*Чау" +"<->" + "х" guio + "-" guio +"<чау>" + "*чау" +"<шығу>" + "шығу" n attr + "шық" v tv ger nom + "шық" v iv ger nom + "шығу" n nom +; "шығу" n nom +; "е" cop aor p3 pl REMOVE:294 +; "шығу" n nom +; "е" cop aor p3 sg REMOVE:294 +; "шық" vaux ger nom REMOVE:766 +"<тегінен>" + "тек" n px3sp abl +; "тек" n px3sp abl +; "е" cop aor p3 pl REMOVE:294 +; "тек" n px3sp abl +; "е" cop aor p3 sg REMOVE:294 +"<шпицтер>" + "*шпицтер" +"<тобына>" + "топ" n px3sp dat +"<жатады>" + "жат" v iv aor p3 sg +; "жат" vaux aor p3 pl REMOVE:766 +; "жат" vaux aor p3 sg REMOVE:766 +; "жат" v iv aor p3 pl REMOVE:846 +"<.>" + "." sent`, + apertium_kaz_2: `# https://bpaste.net/show/be7c03e6213e +"<Қанында>" + "қан" n px3sp loc +; "қан" n px3sp loc +; "е" cop aor p3 pl REMOVE:294 +; "қан" n px3sp loc +; "е" cop aor p3 sg REMOVE:294 +"<тибет>" + "*тибет" +"<итінің>" + "ит" n px3sp gen +"<(>" + "(" lpar +"<мастиф>" + "*мастиф" +"<)>" + ")" rpar +"<қаны>" + "қан" n px3sp nom +; "қан" n px3sp nom +; "е" cop aor p3 pl REMOVE:294 +; "қан" n px3sp nom +; "е" cop aor p3 sg REMOVE:294 +"<бар>" + "бар" adj SELECT:1118 + "бар" adj subst nom SELECT:1118 + "е" cop aor p3 sg + "бар" adj subst nom SELECT:1118 + "бар" adj SELECT:1118 + "е" cop aor p3 sg +; "бар" n attr REMOVE:567 +; "бар" adj +; "е" cop aor p3 pl REMOVE:853 +; "бар" n nom +; "е" cop aor p3 pl REMOVE:853 +; "бар" adj subst nom +; "е" cop aor p3 pl REMOVE:853 +; "бар" n nom SELECT:1118 +; "бар" det qnt SELECT:1118 +; "бар" v iv imp p2 sg SELECT:1118 +; "бар" n nom SELECT:1118 +; "е" cop aor p3 sg +"<деген>" + "де" v tv gpr_past SELECT:813 + "де" v tv gpr_past subst nom SELECT:813 +; "де" v tv ger_past nom SELECT:813 +; "де" v tv past p3 pl SELECT:813 +; "де" v tv past p3 sg SELECT:813 +"<тұжырым>" + "тұжырым" n nom + "тұжырым" n attr +; "тұжырым" n nom +; "е" cop aor p3 pl REMOVE:294 +; "тұжырым" n nom +; "е" cop aor p3 sg REMOVE:294 +"<бар>" + "бар" adj + "бар" n nom + "бар" adj + "е" cop aor p3 sg + "бар" adj subst nom + "е" cop aor p3 sg + "бар" adj subst nom + "бар" v iv imp p2 sg + "бар" n nom + "е" cop aor p3 sg +; "бар" det qnt REMOVE:551 +; "бар" n attr REMOVE:567 +; "бар" adj subst nom +; "е" cop aor p3 pl REMOVE:853 +; "бар" adj +; "е" cop aor p3 pl REMOVE:853 +; "бар" n nom +; "е" cop aor p3 pl REMOVE:853 +"<.>" + "." sent`, + ud_annotatrix_issue_397: `# sent_id = Not_eating_larvae:2 +# text = Гым нэмыӄэй нрзб это ны нырычваԓыӈыттыӄэнат нэмыӄэй гым нывинрэтигым нырычвантойгым. +# text[phon] = ɣəm neməqej нрзб это nə nərəswaɬəŋəttəqenat neməqej ɣəm nəwinretiɣəm nərəswantojɣəm +# text[rus] = Собирали личинок, я тоже помогала, доставала личинок. +# text[eng] = We were gathering the grubs, I also helped, I was extracting the grubs. +# labels = incomplete +"<Гым>" + "гым" PRON Number=Sing Person=1 PronType=Pers Gloss=я @nsubj #1->6 +"<нэмыӄэй>" + "нэмыӄэй" ADV Gloss=тоже #2-> +"<нрзб>" + "нрзб" X Gloss= @discourse #3->6 +"<это>" + "это" PART Gloss= @discourse #4->6 +"<ны>" + "ны" X Gloss=FST @reparandum #5->6 +"<нырычваԓыӈыттыӄэнат>" + "нырычваԓыӈыттыӄэнат" VERB Gloss=ST-личинка-CATCH-ST.3SG-PL @root #6->0 +"<нэмыӄэй>" + "нэмыӄэй" ADV Gloss=тоже @advmod #7->9 +"<гым>" + "гым" PRON Number=Sing Person=1 PronType=Pers Gloss=я @nsubj #8->9 +"<нывинрэтигым>" + "винрэтык" VERB Gloss=ST-помогать-NP.1SG @parataxis #9->6 +"<нырычвантойгым>" + "нырычвантойгым" VERB Gloss=ST-личинка-вынимать-NP.1SG @parataxis #10->6 +"<рычва>" + "рычва" NOUN Gloss=личинка @obj #11->10 +"<.>" + "." PUNCT @punct #12->6` +}; - first() { - this.index = this.length ? 0 : -1; - return this; - } +},{}],420:[function(require,module,exports){ +module.exports = { + turkic: `# sent_id = mst-0008 +# text = Ercan Tezer, iç pazarda bu yıl seksen bin otomobil ve toplam yuzotuz bin araç satılmasının beklendiğini kaydederek, " onalti yıl geriden gidiyoruz " dedi. +1 Ercan Ercan PROPN Prop Case=Nom|Number=Sing|Person=3 26 nsubj _ _ +2 Tezer Tezer PROPN Prop Case=Nom|Number=Sing|Person=3 1 flat _ SpaceAfter=No +3 , , PUNCT Punc _ 26 punct _ _ +4 iç iç ADJ Adj _ 16 amod _ _ +5 pazarda pazar NOUN Noun Case=Loc|Number=Sing|Person=3 4 compound _ _ +6 bu bu DET Det _ 7 det _ _ +7 yıl yıl NOUN Noun Case=Nom|Number=Sing|Person=3 16 obl _ _ +8 seksen seksen NUM ANum NumType=Card 10 nummod _ _ +9 bin bin NUM ANum NumType=Card 8 flat _ _ +10 otomobil otomobil NOUN Noun Case=Nom|Number=Sing|Person=3 16 nsubj _ _ +11 ve ve CCONJ Conj _ 15 cc _ _ +12 toplam toplam NOUN Noun Case=Nom|Number=Sing|Person=3 13 obl _ _ +13 yuzotuz yuzotuz NUM ANum NumType=Card 15 nummod _ _ +14 bin bin NUM ANum NumType=Card 13 flat _ _ +15 araç araç NOUN Noun Case=Nom|Number=Sing|Person=3 10 conj _ _ +16 satılmasının sat VERB Verb Aspect=Perf|Case=Gen|Mood=Ind|Number[psor]=Sing|Person[psor]=3|Polarity=Pos|Tense=Pres|VerbForm=Vnoun|Voice=Pass 17 nmod:poss _ _ +17 beklendiğini bekle VERB Verb Aspect=Perf|Case=Acc|Mood=Ind|Number[psor]=Sing|Person[psor]=3|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Pass 18 obj _ _ +18 kaydederek kaydet VERB Verb Aspect=Perf|Mood=Ind|Polarity=Pos|Tense=Pres|VerbForm=Conv 26 nmod _ SpaceAfter=No +19 , , PUNCT Punc _ 18 punct _ _ +20 " " PUNCT Punc _ 24 punct _ _ +21 onalti onalti NUM ANum NumType=Card 22 nummod _ _ +22 yıl yıl NOUN Noun Case=Nom|Number=Sing|Person=3 23 nmod _ _ +23 geriden geri ADJ NAdj Case=Abl|Number=Sing|Person=3 24 amod _ _ +24 gidiyoruz git VERB Verb Aspect=Prog|Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Polite=Infm|Tense=Pres 26 obj _ _ +25 " " PUNCT Punc _ 24 punct _ _ +26 dedi de VERB Verb Aspect=Perf|Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Tense=Past 0 root _ SpaceAfter=No +27 . . PUNCT Punc _ 26 punct _ _`, + labels_1: `# text = "This is a simple sentence." +# labels = label1 another_label a-third-label +1 This This _ _ _ _ _ _ _ +2 is is _ _ _ _ _ _ _ +3 a a _ _ _ _ _ _ _ +4 simple simple _ _ _ _ _ _ _ +5 sentence sentence _ _ _ _ _ _ _ +6 . . PUNCT PUNCT _ _ _ _ _`, + labels_2: `# labels = one_label second third-label +# labels = row_2 again:here this, that +1 This This _ _ _ _ _ _ _`, + labels_3: `# tags = this-is-a-tag test testing test +1 This This _ _ _ _ _ _ _`, + labels_4: `# labels = new label1 one_label this-is-a-tag +1 Hullo hello _ _ _ _ _ _ _`, + nested_2: `# text = ab cde f h +1-2 ab _ _ _ _ _ _ _ _ +1 a A _ _ _ _ _ _ _ +2 b B _ _ _ _ _ _ _ +3-5 cde _ _ _ _ _ _ _ _ +3 c C _ _ _ _ _ _ _ +4 d D _ _ _ _ _ _ _ +5 e E _ _ _ _ _ _ _ +6 f F _ _ _ _ _ _ _ +6.1 silent_g G _ _ _ _ _ _ _ +7 h H _ _ _ _ _ _ _`, + t: `# testing :) +1-3 He _ _ _ _ _ _ _ _ +1 boued boued n _ m|sg 4 obj _ _ +2 e e vpart _ obj 4 aux _ _ +3 tebr debriñ vblex _ pri|p3|sg 0 root _ _ +4 doob doobie np _ _ 3 _ _ _ +5 Mona Mona np _ ant|f|sg 4 nsubj _ _`, + empty: `1 Sue Sue _ _ _ _ _ _ _ +2 likes like _ _ _ _ _ _ _ +3 coffee coffee _ _ _ _ _ _ _ +4 and and _ _ _ _ _ _ _ +5 Bill Bill _ _ _ _ _ _ _ +5.1 likes like _ _ _ _ _ _ _ +6 tea tea _ _ _ _ _ _ _`, + 0: `# sent_id = _ +# text = this is a test +1 this _ _ _ _ _ _ _ _ +2 is _ _ _ _ _ _ _ _ +3 a _ _ _ _ _ _ _ _ +4 test _ _ _ _ _ _ _ _`, + 1: `1 this _ _ _ _ _ _ _ _ +2 is _ _ _ _ _ _ _ _ +3 a _ _ _ _ _ _ _ _ +4 test _ _ _ _ _ _ _ _`, + cat_ancora: `# url = https://raw.githubusercontent.com/UniversalDependencies/UD_Catalan-AnCora/dev/ca_ancora-ud-test.conllu +# sent_id = test-s1 +# text = El darrer número de l'Observatori del Mercat de Treball d'Osona inclou un informe especial sobre la contractació a través de les empreses de treball temporal, les ETT. +# orig_file_sentence 001#1 +1 El el DET DET Definite=Def|Gender=Masc|Number=Sing|PronType=Art 3 det _ _ +2 darrer darrer ADJ ADJ Gender=Masc|Number=Sing|NumType=Ord 3 amod _ _ +3 número número NOUN NOUN Gender=Masc|Number=Sing 13 nsubj _ _ +4 de de ADP ADP AdpType=Prep 6 case _ _ +5 l' el DET DET Definite=Def|Number=Sing|PronType=Art 6 det _ SpaceAfter=No +6 Observatori Observatori PROPN PROPN _ 3 nmod _ MWE=Observatori_del_Mercat_de_Treball_d'_Osona|MWEPOS=PROPN +7 del del ADP ADP AdpType=Preppron|Gender=Masc|Number=Sing 8 case _ _ +8 Mercat Mercat PROPN PROPN _ 6 flat _ _ +9 de de ADP ADP AdpType=Prep 10 case _ _ +10 Treball Treball PROPN PROPN _ 6 flat _ _ +11 d' d' ADP ADP AdpType=Prep 12 case _ SpaceAfter=No +12 Osona Osona PROPN PROPN _ 6 flat _ _ +13 inclou incloure VERB VERB Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 0 root _ _ +14 un un NUM NUM Gender=Masc|Number=Sing|NumType=Card 15 nummod _ _ +15 informe informe NOUN NOUN Gender=Masc|Number=Sing 13 obj _ _ +16 especial especial ADJ ADJ Number=Sing 15 amod _ _ +17 sobre sobre ADP ADP AdpType=Prep 19 case _ _ +18 la el DET DET Definite=Def|Gender=Fem|Number=Sing|PronType=Art 19 det _ _ +19 contractació contractació NOUN NOUN Gender=Fem|Number=Sing 15 nmod _ _ +20 a a ADP ADP AdpType=Prep 24 case _ MWE=a_través_de|MWEPOS=ADP +21 través través NOUN NOUN _ 20 fixed _ _ +22 de de ADP ADP AdpType=Prep 20 fixed _ _ +23 les el DET DET Definite=Def|Gender=Fem|Number=Plur|PronType=Art 24 det _ _ +24 empreses empresa NOUN NOUN Gender=Fem|Number=Plur 19 nmod _ _ +25 de de ADP ADP AdpType=Prep 26 case _ _ +26 treball treball NOUN NOUN Gender=Masc|Number=Sing 24 nmod _ _ +27 temporal temporal ADJ ADJ Number=Sing 26 amod _ SpaceAfter=No +28 , , PUNCT PUNCT PunctType=Comm 30 punct _ _ +29 les el DET DET Definite=Def|Gender=Fem|Number=Plur|PronType=Art 30 det _ _ +30 ETT ETT PROPN PROPN _ 24 appos _ SpaceAfter=No +31 . . PUNCT PUNCT PunctType=Peri 13 punct _ _`, + with_tabs: `# sent_id = chapID01:paragID1:sentID1 +# text = Кечаень сыргозтизь налкставтыця карвот . +# text[eng] = Kechai was awoken by annoying flies. +1 Кечаень Кечай N N Sem/Ant_Mal|Prop|SP|Gen|Indef 2 obj _ Кечаень +2 сыргозтизь сыргозтемс V V TV|Ind|Prt1|ScPl3|OcSg3 0 root _ сыргозтизь +3 налкставтыця налкставтомс PRC Prc V|TV|PrcPrsL|Sg|Nom|Indef 4 amod _ налкставтыця +4 карвот карво N N Sem/Ani|N|Pl|Nom|Indef 2 nsubj _ карвот +5 . . CLB CLB CLB 2 punct _ .`, + without_tabs: `# sent_id = chapID01:paragID1:sentID1 +# text = Кечаень сыргозтизь налкставтыця карвот . +# text[eng] = Kechai was awoken by annoying flies. +1 Кечаень Кечай N N Sem/Ant_Mal|Prop|SP|Gen|Indef 2 obj _ Кечаень +2 сыргозтизь сыргозтемс V V TV|Ind|Prt1|ScPl3|OcSg3 0 root _ сыргозтизь +3 налкставтыця налкставтомс PRC Prc V|TV|PrcPrsL|Sg|Nom|Indef 4 amod _ налкставтыця +4 карвот карво N N Sem/Ani|N|Pl|Nom|Indef 2 nsubj _ карвот +5 . . CLB CLB CLB 2 punct _ .`, + from_cg3_with_semicolumn: `1 Siedzieliśmy siedzieć vblex _ impf|past|p1|m|pl _ _ _ _ +2 w w pr _ _ _ _ _ _ +3 moim mój prn _ pos|mi|sg|loc _ _ _ _ +4 pokoju pokój n _ mi|sg|loc _ _ _ _ +5 , , cm _ _ _ _ _ _ +6 paląc palić vblex _ impf|pprs|adv _ _ _ _ +7 i i cnjcoo _ _ _ _ _ _ +8 rozmawiając rozmawiać vblex _ impf|pprs|adv _ _ _ _ +9 o o pr _ _ _ _ _ _ +10 tem to prn _ dem|mi|sg|loc _ _ _ _ +11 , , cm _ _ _ _ _ _ +12 jak jak rel _ adv _ _ _ _ +13 marni marny adj _ sint|mp|pl|nom _ _ _ _ +14 jesteśmy być vbser _ pres|p1|pl _ _ _ _ +15 , , cm _ _ _ _ _ _ +16 marni marny adj _ sint|mp|pl|nom _ _ _ _ +17 z z pr _ _ _ _ _ _ +18 lekarskiego lekarski adj _ mi|sg|gen _ _ _ _ +19 punktu punkt n _ mi|sg|gen _ _ _ _ +20 widzenia widzieć vblex _ impf|ger|nt|sg|gen _ _ _ _ +21 chcę chcieć vblex _ impf|pres|p1|sg _ _ _ _ +22 powiedzieć powiedzieć vblex _ perf|inf _ _ _ _ +23 , , cm _ _ _ _ _ _ +24 naturalnie naturalnie adv _ sint _ _ _ _ +25 . . sent _ _ _ _ _ _`, + from_cg3_simple: `1 Патшамен патша n _ ins 3 nmod _ _ +2 соғыс соғыс n _ nom 3 obj _ _ +3 ашқанда аш v _ tv|ger_past|loc 12 advcl _ _ +4 , , cm _ _ 12 punct _ _ +5 ел-жұрт ел-жұрт n _ nom 7 conj _ _ +6 , , cm _ _ 7 punct _ _ +7 отанымды отан n _ px1sg|acc 8 obj _ _ +8 қорғауға қорға v _ tv|ger|dat 12 advcl _ _ +9 , , cm _ _ 12 punct _ _ +10 біз біз prn _ pers|p1|pl|nom 12 nsubj _ _ +11 соғысқа соғыс n _ dat 12 nmod _ _ +12 бардық бар v _ iv|ifi|p1|pl 0 root _ _ +13 . . sent _ _ 12 punct _ _ +`, + from_cg3_with_spans: `# text = He boued e tebr Mona er gegin. +# text[eng] = Mona eats her food here in the kitchen. +# labels = press_1986 ch_syntax p_197 to_check +1 He he det _ pos|f|sp 2 det _ _ +2 boued boued n _ m|sg 4 obj _ _ +3 e e vpart _ obj 4 aux _ _ +4 tebr debriñ vblex _ pri|p3|sg 0 root _ _ +5 Mona Mona np _ ant|f|sg 4 nsubj _ _ +6-7 er _ _ _ _ _ _ _ _ +6 _ e pr _ _ 8 case _ _ +7 _ an det _ def|sp 8 det _ _ +8 gegin kegin n _ f|sg 4 obl _ _ +9 . . sent _ _ 4 punct _ _ +`, + rueter_long: `# sent_id = BryzhinskijMixail_Kirdazht_manu:3859 +# text = Но зярс валгсь , зярс панжтнесь ды мекев парсте пекстнесь веле кенкшенть , кужо кенкшенть , куро кенкшенть ды эсест юртс совамо кенкшенть эрьва лисицянтень совицянтень те свал тейнема , кенкштне свал пекстазь улезт ; панжтнесызь келес ансяк валске марто ды чопоньбелев — ракшань ливтема совавтома шкане , куймесь таго стакалгадсь . +# text_en = But by the time he got down the hill, opened and closed the village gate, the lane gate, the cluster gate and the one to their own home (something everyone coming or going had to do, so the gates would always be closed; they were only opened in the morning and at dusk for taking out and letting in the cattle), the wicker of clay had grown heavy again. +# text_fi = Kun Ketšai tuli mäeltä alas, avasi ja sulki huolellisesti kyläveräjänsä, ??aukio/kenttäveräjän, kujaveräjän ja oman kotiveräjän, savikontti ehti taas alkaa painaa hänen selkäänsä. (Kaikkien kävijöiden tulee tehdä näin, jotta veräjät olisivat aina kiinni, veräjäthän pidetään selkosen selällään vain aamulla ja illansuussa, kun karjaa ajetaan laitumelle tai kotiin.) +1 Но но CCONJ CC _ 3 cc _ _ +2 зярс зярс ADV Adv|Der/Ill|Adv|Sem/Time Derivation=Ill|AdvType=Tim 3 mark _ _ +3 валгсь валгомс VERB V|Ind|Prt1|ScSg3 Mood=Ind|Number[subj]=Sing|Person[subj]=3|Tense=Prt1 51 advcl _ SpaceAfter=No +4 , , PUNCT CLB _ 6 punct _ _ +5 зярс зярс ADV Adv|Der/Ill|Adv|Sem/Time Derivation=Ill|AdvType=Tim 6 mark _ _ +6 панжтнесь панжтнемс VERB V|Ind|Prt1|ScSg3 Mood=Ind|Number[subj]=Sing|Person[subj]=3|Tense=Prt1 3 conj _ _ +7 ды ды CCONJ CC _ 10 cc _ _ +8 мекев мекев ADV Adv|Lat|Sg|Nom|Indef Case=Lat|Case=Nom|Definite=Ind|Number=Sing 10 advmod _ _ +9 парсте парсте ADV Adv|Manner AdvType=Man 10 advmod _ _ +10 пекстнесь пекстнемс VERB V|Ind|Prt1|ScSg3 Mood=Ind|Number[subj]=Sing|Person[subj]=3|Tense=Prt1 3 conj _ _ +11 веле веле NOUN N|Sem/Inanim_Cnt|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 10 obj _ _ +12 кенкшенть кенкш NOUN N|Sem/Inanim_Cnt|Sg|Gen|Def Case=Gen|Definite=Def|Number=Sing 11 goeswith _ SpaceAfter=No +13 , , PUNCT CLB _ 15 punct _ _ +14 кужо кужо NOUN N|Sem/Inanim_Cnt|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 12 conj _ _ +15 кенкшенть кенкш NOUN N|Sem/Inanim_Cnt|Sg|Gen|Def Case=Gen|Definite=Def|Number=Sing 14 goeswith _ SpaceAfter=No +16 , , PUNCT CLB _ 18 punct _ _ +17 куро куро NOUN N|Sem/Inanim_Cnt|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 12 conj _ _ +18 кенкшенть кенкш NOUN N|Sem/Inanim_Cnt|Sg|Gen|Def Case=Gen|Definite=Def|Number=Sing 17 goeswith _ _ +19 ды ды CCONJ CC _ 23 cc _ _ +20 эсест эсь PRON Pron|Refl|Pl3|Gen|Variant=Short Case=Gen|Number=Plur|Person=3|PronType=Refl|Variant=Short 22 nmod _ _ +21 юртс юрт NOUN N|Sem/Inanim_Cnt|SP|Ill|Indef Case=Ill|Definite=Ind|Number=Plur,Sing 20 case _ _ +22 совамо совамо NOUN N|IV|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing|Valency=1 23 compound _ _ +23 кенкшенть кенкш NOUN N|Sem/Inanim_Cnt|Sg|Gen|Def Case=Gen|Definite=Def|Number=Sing 12 conj _ _ +24 ( ( PUNCT PUNCT _ 29 punct _ SpaceAfter=No +25 эрьва эрьва DET Det|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 26 det _ _ +26 лисицянтень-совицянтень лисицят-совицят NOUN N|V|NomAg|Sg|Dat|Def Case=Dat|Definite=Def|Derivation=NomAg|Number=Sing 29 obl _ _ +27 те те PRON Pron|Dem|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing|PronType=Dem 29 nsubj _ _ +28 свал свал ADV Adv|Tot|Sem/Time_dur PronType=Tot|PronType=Tot 29 advmod _ _ +29 тейнема тейнемc VERB V|TV|Oblig|Clitic=Cop|Prs|ScSg3 Valency=2|VerbForm=Oblig|Clitic=Cop|Number[subj]=Sing|Person[subj]=3|Tense=Pres 3 parataxis _ SpaceAfter=No +30 , , PUNCT CLB _ 33 punct _ _ +31 кенкштне кенкш NOUN N|Sem/Inanim_Cnt|Pl|Nom|Def Case=Nom|Definite=Def|Number=Plur 34 nsubj _ _ +32 свал свал ADV Adv|Tot|Sem/Time_dur PronType=Tot|PronType=Tot 33 advmod _ _ +33 пекстазь пекстамс VERB V|Der/Озь|Ger Derivation=Ozj|VerbForm=Conv 29 ccomp _ _ +34 улезт улемс AUX V|IV|Opt|ScPl3 Mood=Opt|Number[subj]=Plur|Person[subj]=3|Valency=1 33 cop _ SpaceAfter=No +35 ; ; PUNCT CLB _ 29 punct _ _ +36 панжтнесызь панжтнемс VERB V|Ind|Prs|ScPl3|Obj3 Mood=Ind|Number[subj]=Plur|Person[subj]=3|Tense=Pres|Obj3 29 conj _ _ +37 келес келес ADV Adv Adv 36 advmod _ _ +38 ансяк ансяк ADV Adv Adv 39 advmod _ _ +39 валске валске NOUN N|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 36 obl _ _ +40 марто марто ADP Adp|Po AdpType=Post 39 case _ _ +41 ды ды CCONJ CC _ 42 cc _ _ +42 чопоньбелев чопоньбелев ADV Adv|Lat Case=Lat 39 conj _ _ +43 — — PUNCT CLB _ 46 punct _ _ +44 ракшань ракша NOUN N|Sem/Anim_Cnt|SP|Gen|Indef Case=Gen|Definite=Ind|Number=Plur,Sing 45 nmod:gobj _ _ +45 ливтема-совавтома ливтема-совавтома NOUN N|Sg|Nom|Indef Case=Nom|Definite=Ind|Number=Sing 36 nmod _ _ +46 шкане шка NOUN N|Sem/Time|SP|Temp|Indef Case=Temp|Definite=Ind|Number=Plur,Sing 39 conj _ SpaceAfter=No +47 ) ) PUNCT PUNCT _ 29 punct _ SpaceAfter=No +48 , , PUNCT CLB _ 29 punct _ _ +49 куймесь куйме NOUN N|Sem/Inanim_Cnt|Sg|Nom|Def Case=Nom|Definite=Def|Number=Sing 51 nsubj _ _ +50 таго таго ADV Adv|Sem/Time AdvType=Tim 51 advmod _ _ +51 стакалгадсь стакалгадомс VERB V|Ind|Prt1|ScSg3 Mood=Ind|Number[subj]=Sing|Person[subj]=3|Tense=Prt1 0 root _ SpaceAfter=No +52 . . PUNCT CLB _ 51 punct _ _`, + katya_aplonova_large_arrows: `# sent_id = html/meyer_gorog-contes_bambara_10amadu_tara.dis.html:16 +# text = ko ni i sera ka jiri nin bulu sòrò ka na ni a ye, ko cèkòròba bè se ka furakè o la. +1 ko kó PART cop _ 4 discourse _ Gloss=QUOT +2 ni ní SCONJ conj _ 4 mark _ Gloss=si +3 i í PRON pers PronType=Prs 4 nsubj _ Gloss=2.SG +4 sera sera VERB v Aspect=Perf|Valency=1|Polarity=Pos 19 advcl _ Gloss=arriver|Morf=arriver,PFV.INTR +5 ka kà AUX pm _ 9 aux _ Gloss=INF +6 jiri jíri NOUN n _ 8 nmod:poss _ Gloss=arbre +7 nin nìn DET prn/dtm PronType=Dem|Definite-Def 6 det _ Gloss=DEM +8 bulu búlu NOUN n _ 9 obj _ Gloss=feuille +9 sòrò sɔ̀rɔ VERB v _ 4 xcomp _ Gloss=obtenir +10 ka kà AUX pm _ 11 aux _ Gloss=INF +11 na nà VERB v _ 9 xcomp _ Gloss=venir +12 ni ní ADP conj/prep _ 13 case _ Gloss=et +13 a à PRON pers PronType=Prs|Number=Sing|Person=3 11 obl _ Gloss=3SG +14 ye yé ADP pp _ 13 case _ Gloss=PP +15 , , PUNCT _ _ 4 punct _ Gloss=, +16 ko kó PART cop _ 19 discourse _ Gloss=QUOT +17 cèkòròba cɛ̀.kɔrɔ.ba NOUN n _ 19 nsubj _ Gloss=vieillard|Morf=vieillard,mâle,vieux,AUGM +18 bè bɛ́ AUX pm Polarity=Pos|Aspect=Imp 19 aux _ Gloss=IPFV.AFF +19 se sé VERB v _ 0 root _ Gloss=arriver +20 ka kà AUX pm _ 21 aux _ Gloss=INF +21 furakè fúra.kɛ VERB v _ 19 xcomp _ Gloss=soigner|Morf=soigner,feuille,faire +22 o ò PRON prn _ 21 obl _ Gloss=ce +23 la lá ADP pp _ 22 case _ Gloss=dans +24 . . PUNCT _ _ 19 punct _ Gloss=. +`, + katya_aplonova_long: `# sent_id = html/meyer_gorog-contes_bambara_10amadu_tara.dis.html:19 +# text = ko u ye mògò nyini a ye, min bè a furakè sisan ko cè ye furakèli cogoya bèè fò, ko fura nin sòrò ka gèlèn ko epi ko ni o ye a sòrò u ye ale den de ye, ni min bè sa de furanyini fè a ka sa nin min bè balo o ka balo ko u kònòntò bèè ka taga fura nin nyini, ko u kònòntò bèè ka taga ko nin min seginna ka a sòrò fura ma na, ko a bè o den nin haramuya ka o gèn, ka a bè a ba fana gèn ko u ka a filè u yèrè ni min ma sòn fana ko a bè o gèn, o ni a ba bèè. +# label = too_long_to_cut +1 ko kó PART cop _ 5 discourse _ Gloss=QUOT +2 u ù PRON pers PronType=Prs|Number=Plur|Person=3 5 nsubj _ Gloss=3PL +3 ye yé AUX pm Aspect=Perf|Valency=2|Polarity=Pos 5 aux _ Gloss=PFV.TR +4 mògò mɔ̀gɔ NOUN n _ 5 obj _ Gloss=homme +5 nyini ɲíni VERB v _ 0 root _ Gloss=chercher +6 a à PRON pers PronType=Prs|Number=Sing|Person=3 5 obl _ Gloss=3SG +7 ye yé ADP pp _ 6 case _ Gloss=PP +8 , , PUNCT _ _ 5 punct _ Gloss=, +9 min mín PRON prn PronType=Rel _ _ _ Gloss=REL +10 bè bɛ́ AUX pm Polarity=Pos|Aspect=Imp _ _ _ Gloss=IPFV.AFF +11 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG +12 furakè fúra.kɛ VERB v _ _ _ _ Gloss=soigner|Morf=soigner,feuille,faire +13 sisan sísan ADV adv/n _ _ _ _ Gloss=maintenant +14 ko kó PART cop _ _ _ _ Gloss=QUOT +15 cè cɛ̀ NOUN n _ _ _ _ Gloss=mâle +16 ye ye AUX pm Aspect=Perf|Valency=2|Polarity=Pos _ _ _ Gloss=PFV.TR +17 furakèli fúrakɛli NOUN n VerbalForm=Vnoun _ _ _ Gloss=traitement|Morf=traitement,feuille,faire,NMLZ +18 cogoya cógoya NOUN n _ _ _ _ Gloss=manière|Morf=manière,manière,ABSTR +19 bèè bɛ́ɛ DET dtm _ _ _ _ Gloss=tout +20 fò fɔ́ VERB v _ _ _ _ Gloss=dire +21 , , PUNCT _ _ _ _ _ Gloss=, +22 ko kó PART cop _ 27 discourse _ Gloss=QUOT +23 fura fúra NOUN n _ 25 nmod:poss _ Gloss=feuille +24 nin nìn DET dtm PronType=Dem|Definite-Def 23 det _ Gloss=DEM +25 sòrò sɔ̀rɔ NOUN v _ 27 nsubj _ Gloss=obtenir +26 ka ka AUX pm Polarity=Pos 27 aux _ Gloss=QUAL.AFF +27 gèlèn gɛ̀lɛn VERB vq _ _ _ _ Gloss=dur +28 ko kó PART cop _ 29 discourse _ Gloss=QUOT +29 epi epi CCONJ conj _ 27 cc _ Gloss=ETRG.FRA +30 ko kó VERB cop _ 37 discourse _ Gloss=QUOT +31 ni ní SCONJ conj _ 35 mark _ Gloss=si +32 o ò PRON prn _ 35 nsubj _ Gloss=ce +33 ye ye AUX pm Aspect=Perf|Valency=2|Polarity=Pos 35 aux _ Gloss=PFV.TR +34 a à PRON pers PronType=Prs|Number=Sing|Person=3 35 obj _ Gloss=3SG +35 sòrò sɔ̀rɔ VERB v _ 37 advcl _ Gloss=obtenir +36 u ù PRON pers PronType=Prs|Number=Plur|Person=3 37 nsubj _ Gloss=3PL +37 ye yé VERB cop Polarity=Pos 27 parataxis _ Gloss=EQU +38 ale àlê PRON pers PronType=Prs|Number=Sing|Person=3|PronType=Emp 39 nmod:poss _ Gloss=3SG.EMPH +39 den dén NOUN n _ 37 obl _ Gloss=enfant +40 de dè PART prt _ 39 discourse _ Gloss=FOC +41 ye yé ADP pp _ 39 case _ Gloss=PP +42 , , PUNCT _ _ 37 punct _ Gloss=, +43 ni ní SCONJ conj _ 46 mark _ Gloss=si +44 min mîn PRON prn PronType=Rel 46 _ _ Gloss=REL +45 bè bɛ AUX pm Polarity=Pos|Aspect=Imp 46 _ _ Gloss=IPFV.AFF +46 sa sà VERB v _ 52 _ _ Gloss=mourir +47 de dè PART prt _ 46 _ _ Gloss=FOC +48 furanyini furaɲini NOUN n _ 46 _ _ Gloss=feuille|Morf=feuille,chercher +49 fè fɛ̀ ADP pp _ 48 _ _ Gloss=par +50 a à PRON pers PronType=Prs|Number=Sing|Person=3 52 _ _ Gloss=3SG +51 ka ka AUX pm Mood=Subj|Polarity=Aff 52 _ _ Gloss=SBJV +52 sa sà VERB v _ 37 _ _ Gloss=mourir +53 nin ní SCONJ conj _ 56 mark _ Gloss=quand +54 min mîn PRON prn PronType=Rel 56 _ _ Gloss=REL +55 bè bɛ AUX pm Polarity=Pos|Aspect=Imp 56 _ _ Gloss=IPFV.AFF +56 balo bálo VERB v _ 59 _ _ Gloss=vivre +57 o ò PRON prn _ 59 _ _ Gloss=ce +58 ka ka AUX pm Mood=Subj|Polarity=Aff 59 _ _ Gloss=SBJV +59 balo bálo VERB v _ 52 _ _ Gloss=vivre +60 ko kó PART cop _ _ _ _ Gloss=QUOT +61 u ù PRON pers PronType=Prs|Number=Plur|Person=3 _ _ _ Gloss=3PL +62 kònòntò kɔ̀nɔntɔn NUM num _ _ _ _ Gloss=neuf +63 bèè bɛ́ɛ DET dtm _ _ _ _ Gloss=tout +64 ka ka AUX pm Mood=Subj|Polarity=Aff _ _ _ Gloss=SBJV +65 taga tága VERB v _ 59 _ _ Gloss=aller +66 fura fúra NOUN n _ _ _ _ Gloss=feuille +67 nin nìn DET dtm PronType=Dem|Definite-Def _ _ _ Gloss=DEM +68 nyini ɲíni VERB v _ _ _ _ Gloss=chercher +69 , , PUNCT _ _ _ _ _ Gloss=, +70 ko kó PART cop _ _ _ _ Gloss=QUOT +71 u ù PRON pers PronType=Prs|Number=Plur|Person=3 _ _ _ Gloss=3PL +72 kònòntò kɔ̀nɔntɔn NUM num _ _ _ _ Gloss=neuf +73 bèè bɛ́ɛ DET dtm _ _ _ _ Gloss=tout +74 ka ka AUX pm Mood=Subj|Polarity=Aff _ _ _ Gloss=SBJV +75 taga tága VERB v _ 65 _ _ Gloss=aller +76 ko kó PART cop _ _ _ _ Gloss=QUOT +77 nin ní SCONJ conj _ _ _ _ Gloss=quand +78 min mîn PRON prn PronType=Rel _ _ _ Gloss=REL +79 seginna seginna VERB v Aspect=Perf|Valency=1|Polarity=Pos 85 _ _ Gloss=revenir|Morf=revenir,PFV.INTR +80 ka kà AUX pm _ _ _ _ Gloss=INF +81 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG +82 sòrò sɔ̀rɔ VERB v _ _ _ _ Gloss=obtenir +83 fura fúra NOUN n _ _ _ _ Gloss=feuille +84 ma ma AUX pm Polarity=Neg|Aspect=Perf _ _ _ Gloss=PFV.NEG +85 na nà VERB v _ 75 _ _ Gloss=venir +86 , , PUNCT _ _ _ _ _ Gloss=, +87 ko kó PART cop _ _ _ _ Gloss=QUOT +88 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG +89 bè bɛ AUX pm Polarity=Pos|Aspect=Imp _ _ _ Gloss=IPFV.AFF +90 o ò PRON prn _ _ _ _ Gloss=ce +91 den dén NOUN n _ _ _ _ Gloss=enfant +92 nin nìn DET dtm PronType=Dem|Definite-Def _ _ _ Gloss=DEM +93 haramuya hàramuya VERB v _ 85 _ _ Gloss=interdire|Morf=interdire,interdire,ABSTR +94 ka kà AUX pm _ _ _ _ Gloss=INF +95 o ò PRON prn _ _ _ _ Gloss=ce +96 gèn gɛ́n VERB v _ _ _ _ Gloss=chasser +97 , , PUNCT _ _ _ _ _ Gloss=, +98 ka kà AUX pm _ _ _ _ Gloss=INF +99 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG +100 bè bɛ AUX pm Polarity=Pos|Aspect=Imp _ _ _ Gloss=IPFV.AFF +101 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG +102 ba bá NOUN n _ _ _ _ Gloss=mère +103 fana fána PART prt _ _ _ _ Gloss=aussi +104 gèn gɛ́n VERB v _ _ _ _ Gloss=chasser +105 ko kó PART cop _ _ _ _ Gloss=QUOT +106 u ù PRON pers PronType=Prs|Number=Plur|Person=3 _ _ _ Gloss=3PL +107 ka ka AUX pm Mood=Subj|Polarity=Aff _ _ _ Gloss=SBJV +108 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG +109 filè fílɛ VERB v _ _ _ _ Gloss=regarder +110 u ù PRON pers PronType=Prs|Number=Plur|Person=3 _ _ _ Gloss=3PL +111 yèrè yɛ̀rɛ̂ DET dtm _ _ _ _ Gloss=même +112 ni ní SCONJ conj _ _ _ _ Gloss=si +113 min mîn PRON prn PronType=Rel _ _ _ Gloss=REL +114 ma ma AUX pm Polarity=Neg|Aspect=Perf _ _ _ Gloss=PFV.NEG +115 sòn sɔ̀n VERB v _ _ _ _ Gloss=accepter +116 fana fána PART prt _ _ _ _ Gloss=aussi +117 ko kó PART cop _ _ _ _ Gloss=QUOT +118 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG +119 bè bɛ AUX pm Polarity=Pos|Aspect=Imp _ _ _ Gloss=IPFV.AFF +120 o ò PRON prn _ _ _ _ Gloss=ce +121 gèn gɛ́n VERB v _ _ _ _ Gloss=chasser +122 , , PUNCT _ _ _ _ _ Gloss=, +123 o ò PRON prn _ _ _ _ Gloss=ce +124 ni ni CCONJ conj _ _ _ _ Gloss=et +125 a à PRON pers PronType=Prs|Number=Sing|Person=3 _ _ _ Gloss=3SG +126 ba bá NOUN n _ _ _ _ Gloss=mère +127 bèè bɛ́ɛ DET dtm _ _ _ _ Gloss=tout +128 . . PUNCT _ _ _ _ _ Gloss=.`, + ud_example_tabs: `1 They they PRON PRP Case=Nom|Number=Plur 2 nsubj 2:nsubj|4:nsubj _ +2 buy buy VERB VBP Number=Plur|Person=3|Tense=Pres 0 root 0:root _ +3 and and CONJ CC _ 4 cc 4:cc _ +4 sell sell VERB VBP Number=Plur|Person=3|Tense=Pres 2 conj 2:conj _ +5 books book NOUN NNS Number=Plur 2 obj 2:obj|4:obj _ +6 . . PUNCT . _ 2 punct 2:punct _`, + ud_example_spaces: `1 They they PRON PRP Case=Nom|Number=Plur 2 nsubj 2:nsubj|4:nsubj _ +2 buy buy VERB VBP Number=Plur|Person=3|Tense=Pres 0 root 0:root _ +3 and and CONJ CC _ 4 cc 4:cc _ +4 sell sell VERB VBP Number=Plur|Person=3|Tense=Pres 2 conj 2:conj _ +5 books book NOUN NNS Number=Plur 2 obj 2:obj|4:obj _ +6 . . PUNCT . _ 2 punct 2:punct _`, + ud_example_modified: `1 They they PRON PRP Case=Nom|Number=Plur 2 nsubj 2:nsubj|4:nsubj _ +2 buy buy VERB VBP Number=Plur|Person=3|Tense=Presroot 0 root 0:root _ +3 and and CONJ CC _ 4 cc 4:cc _ +4 sell sell VERB VBP Number=Plur|Person=3|Tense=Presconj 2 _ 2 _ +5 books book NOUN NNS Number=Plur 2 obj 2:obj|4:obj _ +6 . . PUNCT . _ 2 punct 2:punct _`, + ud_annotatrix_issue_397: `# sent_id = Not_eating_larvae:2 +# text = Гым нэмыӄэй нрзб это ны нырычваԓыӈыттыӄэнат нэмыӄэй гым нывинрэтигым нырычвантойгым. +# text[phon] = ɣəm neməqej нрзб это nə nərəswaɬəŋəttəqenat neməqej ɣəm nəwinretiɣəm nərəswantojɣəm +# text[rus] = Собирали личинок, я тоже помогала, доставала личинок. +# text[eng] = We were gathering the grubs, I also helped, I was extracting the grubs. +# labels = incomplete +1 Гым гым PRON _ Number=Sing|Person=1|PronType=Pers 6 nsubj 6:nsubj Gloss=я +2 нэмыӄэй нэмыӄэй ADV _ _ _ _ _ Gloss=тоже +3 нрзб _ X _ _ 6 discourse 6:discourse Gloss= +4 это _ PART _ _ 6 discourse 6:discourse Gloss= +5 ны ны X _ _ 6 reparandum 6:reparandum Gloss=FST +6 нырычваԓыӈыттыӄэнат _ VERB _ _ 0 root 0:root Gloss=ST-личинка-CATCH-ST.3SG-PL +7 нэмыӄэй нэмыӄэй ADV _ _ 9 advmod 9:advmod Gloss=тоже +8 гым гым PRON _ Number=Sing|Person=1|PronType=Pers 9 nsubj 9:nsubj Gloss=я +9 нывинрэтигым винрэтык VERB _ _ 6 parataxis 6:parataxis Gloss=ST-помогать-NP.1SG +10 нырычвантойгым _ VERB _ _ 6 parataxis 6:parataxis Gloss=ST-личинка-вынимать-NP.1SG +10.1 рычва рычва NOUN _ _ _ _ 10:obj Gloss=личинка +11 . . PUNCT _ _ 6 punct 6:punct _ `, + notatrix_issue_17: `# sent_id = Money:12 +# text = Ну ӄэԓюӄъым ытԓыгэ нэнаманэԓпынрыӄэнатэ амъянра наӄам. +# text[phon] = ну qeɬuqʔəm ətɬəɣe nenamaneɬpənrəqenate amjanra naqam +# text[rus] = Ну конечно, отец дал денег, причём каждому отдельно. +# text[eng] = Well, of course, their father gave them money, and each of them separately. +# labels = complete-dep anno-fran +1 Ну _ X _ Foreign=Yes 5 discourse 5:discourse Gloss= +2-3 ӄэԓюӄъым _ _ _ _ _ _ _ _ +2 ӄэԓюӄ ӄэԓюӄъым ADV _ _ 5 advmod 5:advmod Gloss=конечно-=EMPH +3 ъым ъм PART _ _ 2 discourse 2:discourse _ +4 ытԓыгэ ытԓыгын NOUN _ Animacy=Anim|Case=Ins 5 nsubj 5:nsubj Gloss=отец-INS +5-6 нэнаманэԓпынрыӄэнатэ _ _ _ _ _ _ _ _ +5 нэнаманэԓпынрыӄэнат _ VERB _ Incorporated[obj]=Yes 0 root 0:root Gloss=ST-INV-деньги-давать-ST.3SG-PL-=PTCL +5.1 манэ манэман NOUN _ Incorporated=Yes _ _ 5:obj Gloss=деньги +6 э а PART _ _ 5 discourse 5:discourse _ +7 амъянра _ ADV _ _ 5 advmod 5:advmod Gloss=RESTR-отдельно +8 наӄам наӄам ADV _ _ 5 advmod 5:advmod Gloss=однако +9 . . PUNCT _ _ 5 punct 5:punct _` +}; - prev() { - if (!this.length) return null; - const filtered = this.filtered; - let index = filtered.length ? this._filterIndex : this._index; - if (index === 0) return null; - this.index = --index; - return this; - } +},{}],421:[function(require,module,exports){ +module.exports = { + "apertium stream": require("./apertium-stream"), + apertiumStream: require("./apertium-stream"), + Brackets: require("./brackets"), + brackets: require("./brackets"), + CG3: require("./cg3"), + cg3: require("./cg3"), + "CoNLL-U": require("./conllu"), + conllu: require("./conllu"), + "notatrix serial": require("./notatrix-serial"), + notatrixSerial: require("./notatrix-serial"), + Params: require("./params"), + params: require("./params"), + "plain text": require("./plain-text"), + plainText: require("./plain-text"), + SD: require("./sd"), + sd: require("./sd") // corpora: require("./corpora"), - next() { - if (!this.length) return null; - const filtered = this.filtered; - let index = filtered.length ? this._filterIndex : this._index; - let total = filtered.length ? filtered.length - 1 : this._length - 1; - if (index === total) return null; - this.index = ++index; - return this; - } +}; - last() { - const filtered = this.filtered; - this.index = filtered.length ? filtered.length - 1 : this.length - 1; - return this; - } +},{"./apertium-stream":417,"./brackets":418,"./cg3":419,"./conllu":420,"./notatrix-serial":422,"./params":423,"./plain-text":424,"./sd":425}],422:[function(require,module,exports){ +module.exports = {}; - getSentence(index) { - if (index == undefined) index = this.index; - if (0 > index || index > this.length - 1) return null; - return this._sentences[index] || null; - } +},{}],423:[function(require,module,exports){ +module.exports = { + 0: [{ + form: "hello" + }, { + form: "world" + }] +}; - setSentence(index, text) { - if (text === null || text === undefined) { - // if only passed 1 arg - text = index || ""; - index = this.index; - } +},{}],424:[function(require,module,exports){ +module.exports = { + 0: "this is a test", + 1: "this is a test.", + 2: "this is a test...", + 3: "this is a test?", + 4: "\tthis is a test", + 5: "More sentences = more data; ipso facto, yes.", + parens_and_numbers: `Дәүләтләрнең, шул исәптән Русиянең дә, диңгез чикләре ярдан 12 миль (яки 22,2 км) ераклыкта узуы килешенгән` +}; - index = parseInt(index); - if (isNaN(index) || this.getSentence(index) === null) throw new NxError(`cannot set sentence at index ${index}`); +},{}],425:[function(require,module,exports){ +module.exports = { + 0: `And Robert the fourth place . +cc(Robert, And) +orphan(Robert, place) +punct(Robert, .) +amod(place, fourth) +det(place, the)`, + 1: `ROOT And Robert the fourth place . +root(ROOT, Robert) +cc(Robert, And) +orphan(Robert, place) +punct(Robert, .) +amod(place, fourth) +det(place, the)`, + 2: `ROOT I love French fries . +root(ROOT, love)`, + // https://github.com/UniversalDependencies/docs/blob/pages-source/_u-dep/ccomp.md + ccomp_1: `He says that you like to swim +ccomp(says, like) +mark(like, that)`, + ccomp_2: `He says you like to swim +ccomp(says, like)`, + ccomp_3: `The boss said to start digging +ccomp(said, start) +mark(start, to)`, + ccomp_4: `We started digging +xcomp(started, digging)`, + ccomp_5: `The important thing is to keep calm. +ccomp(is, keep) +nsubj(is, thing)`, + ccomp_6: `The problem is that this has never been tried . +ccomp(is, tried) +nsubj(is, problem)` +}; - this._labeler.onRemove(this.getSentence(index)); +},{}],426:[function(require,module,exports){ +(function (global){ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define('underscore', factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, function () { + var current = global._; + var exports = global._ = factory(); - const sent = new Sentence(text, this.options); - sent.corpus = this; - this._sentences[index] = sent; + exports.noConflict = function () { + global._ = current; + return exports; + }; + }()); +})(this, function () { + // Underscore.js 1.13.1 + // https://underscorejs.org + // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors + // Underscore may be freely distributed under the MIT license. + // Current version. + var VERSION = '1.13.1'; // Establish the root object, `window` (`self`) in the browser, `global` + // on the server, or `this` in some virtual machines. We use `self` + // instead of `window` for `WebWorker` support. - this._labeler.onAdd(sent); + var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global && global || Function('return this')() || {}; // Save bytes in the minified (but not gzipped) version: - this.reindex(); - return sent; - } + var ArrayProto = Array.prototype, + ObjProto = Object.prototype; + var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; // Create quick reference variables for speed access to core prototypes. - insertSentence(index, text) { - if (text === null || text === undefined) { - // if only passed 1 arg - text = index || ""; - index = this.index + 1; - } + var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; // Modern feature detection. - index = parseFloat(index); - if (isNaN(index)) throw new NxError(`cannot insert sentence at index ${index}`); - index = index < 0 ? 0 : index > this.length ? this.length : parseInt(index); - const sent = new Sentence(text, this.options); - sent.corpus = this; - this._sentences = this._sentences.slice(0, index).concat(sent).concat(this._sentences.slice(index)); + var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; // All **ECMAScript 5+** native function implementations that we hope to use + // are declared here. - this._labeler.onAdd(sent); + var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; // Create references to these builtin functions because we override them. - this.index = index; - this.reindex(); - return sent; - } + var _isNaN = isNaN, + _isFinite = isFinite; // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. - removeSentence(index) { - if (!this.length) return null; - if (index === undefined) // if not passed args - index = this.index; - index = parseFloat(index); - if (isNaN(index)) throw new NxError(`cannot remove sentence at index ${index}`); - index = index < 0 ? 0 : index > this.length - 1 ? this.length - 1 : parseInt(index); + var hasEnumBug = !{ + toString: null + }.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // The largest integer that can be represented exactly. - const removed = this._sentences.splice(index, 1)[0]; + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; // Some functions take a variable number of arguments, or a few expected + // arguments at the beginning and then a variable number of values to operate + // on. This helper accumulates all remaining arguments past the function’s + // argument length (or an explicit `startIndex`), into an array that becomes + // the last argument. Similar to ES6’s "rest parameter". - if (!this.length) this.insertSentence(); + function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function () { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; - this._labeler.onRemove(removed); + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } - if (index <= this.index) this.index--; - this.reindex(); - return removed; - } + switch (startIndex) { + case 0: + return func.call(this, rest); - pushSentence(text) { - return this.insertSentence(Infinity, text); - } + case 1: + return func.call(this, arguments[0], rest); - popSentence(text) { - return this.removeSentence(Infinity); - } + case 2: + return func.call(this, arguments[0], arguments[1], rest); + } - parse(string) { - const splitted = split(string, this.options); // might throw errors + var args = Array(startIndex + 1); - const index = this.index || 0; - splitted.forEach((split, i) => { - // console.log(i, split); - this.insertSentence(index + i, split, false); - }); - return this; - } + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } - static fromString(string, options) { - const corpus = new Corpus(options); - corpus.parse(string); - return corpus; - } + args[startIndex] = rest; + return func.apply(this, args); + }; + } // Is a given variable an object? - readFile(filepath, next) { - fs.exists(filepath, exists => { - if (!exists) throw new NxError(`cannot read file: cannot find path ${filepath}`); - fs.readFile(filepath, (err, data) => { - if (err) throw err; - data = data.toString(); - this.parse(data); - this.sources.push(filepath); - this.filename = path.basename(filepath); - if (next) next(this); - }); - }); - } - static fromFile(filepath, options, next) { - if (next === undefined) { - next = options; - options = {}; - } + function isObject(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + } // Is a given value equal to null? - const corpus = new Corpus(options); - corpus.readFile(filepath, next); - return this; - } - writeFile(format, filepath) { - filepath = this.getWritePath(filepath); - const contents = this.serialize(); - fs.writeFile(filepath, contents, err => { - if (err) throw err; - }); - return this; - } + function isNull(obj) { + return obj === null; + } // Is a given variable undefined? - getWritePath(filepath) { - if (filepath) return filepath; - const lastSource = this.sources.slice(-1)[0]; - return (lastSource || "export") + ".nxcorpus"; - } -} + function isUndefined(obj) { + return obj === void 0; + } // Is a given value a boolean? -module.exports = Corpus; -},{"../converter":404,"../detector":405,"../generator":459,"../parser":474,"../splitter":475,"../utils":479,"./base-class":462,"./labeler":468,"./sentence":471,"fs":42,"path":483,"underscore":499,"uuid/v4":502}],466:[function(require,module,exports){ -module.exports = { - NxBaseClass: require("./base-class"), - Corpus: require("./corpus"), - Labeler: require("./labeler"), - Sentence: require("./sentence"), - Comment: require("./comment"), - BaseToken: require("./base-token"), - RootToken: require("./root-token"), - Token: require("./token"), - Analysis: require("./analysis"), - SubToken: require("./sub-token"), - RelationSet: require("./relation-set") -}; + function isBoolean(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + } // Is a given value a DOM element? -},{"./analysis":461,"./base-class":462,"./base-token":463,"./comment":464,"./corpus":465,"./labeler":468,"./relation-set":469,"./root-token":470,"./sentence":471,"./sub-token":472,"./token":473}],467:[function(require,module,exports){ -"use strict"; -const _ = require("underscore"); + function isElement(obj) { + return !!(obj && obj.nodeType === 1); + } // Internal function for creating a `toString`-based type tester. -const utils = require("../utils"); -const NxBaseClass = require("./base-class"); -/** - * Allows us to extract labels from "field = value"-type comments, so that - * we can filter a corpus by Label and arbitrarily apply that label to - * multiple Sentences. - */ + function tagTester(name) { + var tag = '[object ' + name + ']'; + return function (obj) { + return toString.call(obj) === tag; + }; + } + var isString = tagTester('String'); + var isNumber = tagTester('Number'); + var isDate = tagTester('Date'); + var isRegExp = tagTester('RegExp'); + var isError = tagTester('Error'); + var isSymbol = tagTester('Symbol'); + var isArrayBuffer = tagTester('ArrayBuffer'); + var isFunction = tagTester('Function'); // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old + // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -class Label extends NxBaseClass { - constructor(name) { - super("Label"); - this.name = name; - this.bColor = utils.hashStringToHex(name); - this.tColor = utils.getContrastingColor(this.bColor); - this.desc = ""; - } + var nodelist = root.document && root.document.childNodes; - serialize() { - return { - name: this.name, - desc: this.desc, - bColor: this.bColor, - tColor: this.tColor + if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function (obj) { + return typeof obj == 'function' || false; }; } - static deserialize(serial) { - const label = new Label(serial.name); - label.desc = serial.desc; - label.bColor = serial.bColor; - label.tColor = serial.tColor; - return label; - } - /* - set state(state) { - if (!state.name) - throw new DeserializationError(`cannot set name to "${state.name}"`); - state.desc = state.desc || ''; - if (typeof state.desc !== 'string') - throw new DeserializationError(`cannot set description to non-string - value`); - this.name = state.name; - this.desc = state.desc; - if (!this.changeColor(state.bColor)) - throw new DeserializationError(`cannot set background color to - "${state.bColor}"`); - } - render(labeler) { - const inComments = labeler.has(this.name), - filtering = labeler._filter.has(this.name); - $(`#labels-horiz`).append($('
  • ') - .attr('name', this.name) - .addClass('label horiz') - .addClass(inComments ? 'in-comments' : 'not-in-comments') - .addClass(filtering ? 'filtering' : 'not-filtering') - .append($('
    ') - .addClass('label-text') - .text(this.name) - .css('background-color', this.bColor) - .css('color', this.tColor) - .click(e => labeler.handle.click.label(e)) - ) - .append($('
    ') - .addClass('label-hidden') - .append($('
    ') - .addClass('label-hidden-group') - .append($('
    ') - .addClass('label-hidden-item') - .append($('') - .text('Name') - ) - .append($('') - .attr('name', 'label-name') - .val(this.name) - .keyup(e => labeler.handle.keyup.name(e)) - )) - .append($('
    ') - .addClass('label-hidden-item') - .append($('') - .text('Description') - ) - .append($('') - .attr('name', 'label-desc') - .val(this.desc) - .keyup(e => labeler.handle.keyup.desc(e)) - )) - .append($('
    ') - .addClass('label-hidden-item') - .append($('') - .text('Color') - ) - .append($('
    ') - .addClass('label-hidden-item-inner') - .append($('') - .addClass('hex-color-group') - .text('#') - .append($('') - .attr('name', 'label-color') - .attr('pattern', '[A-Fa-f\\d]{6}') - .val(this.bColor.substr(1)) - .keyup(e => labeler.handle.keyup.color(e)) - ) - ) - .append($('