├── .eslintrc.js
├── .gitignore
├── LICENSE.md
├── README.md
├── highlight.html
├── highlight.js
├── index.html
├── main.js
├── package-lock.json
├── package.json
├── preload.js
├── renderer.js
└── styles.css
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "env": {
3 | "browser": true,
4 | "es6": true
5 | },
6 | "globals": {
7 | "Atomics": "readonly",
8 | "SharedArrayBuffer": "readonly"
9 | },
10 | "parserOptions": {
11 | "ecmaVersion": 2018
12 | },
13 | "rules": {
14 | }
15 | };
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | CC0 1.0 Universal
2 | ==================
3 |
4 | Statement of Purpose
5 | ---------------------
6 |
7 | The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
8 |
9 | Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
10 |
11 | For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
12 |
13 | 1. Copyright and Related Rights.
14 | --------------------------------
15 | A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
16 |
17 | i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
18 | ii. moral rights retained by the original author(s) and/or performer(s);
19 | iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
20 | iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
21 | v. rights protecting the extraction, dissemination, use and reuse of data in a Work;
22 | vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
23 | vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
24 |
25 | 2. Waiver.
26 | -----------
27 | To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
28 |
29 | 3. Public License Fallback.
30 | ----------------------------
31 | Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
32 |
33 | 4. Limitations and Disclaimers.
34 | --------------------------------
35 |
36 | a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
37 | b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
38 | c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
39 | d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
40 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Live Chat Window
2 |
3 | A simple transparent electron window to display latest messages from the [live-chat-manager server](https://github.com/CodingGarden/live-chat-manager/tree/master/server).
4 |
5 | ## Setup
6 |
7 | > index.html and renderer.js contain CodingGarden specific reward ids and bot userids, update accordingly
8 |
9 | ```sh
10 | npm install
11 | npm start
12 | ```
13 |
14 | 
15 |
--------------------------------------------------------------------------------
/highlight.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
16 | Highlight Chat
17 |
18 |
19 |
20 |
21 |
22 |
28 |
36 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | {{message.author.displayName}}
51 | ★
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
72 |
{{message.timesent}}
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/highlight.js:
--------------------------------------------------------------------------------
1 | /* eslint-env browser */
2 | (async () => {
3 | DOMPurify.addHook('afterSanitizeAttributes', (node) => {
4 | if (node.hasAttribute('src')) {
5 | node.setAttribute('src', `https://external-content.duckduckgo.com/iu/?u=${node.getAttribute('src')}`);
6 | }
7 | });
8 |
9 | function sanitize(message) {
10 | message.sanitized = DOMPurify
11 | .sanitize(marked(message.message), {
12 | FORBID_ATTR: [
13 | 'style',
14 | 'onerror',
15 | 'onload',
16 | 'class',
17 | ],
18 | FORBID_TAGS: [
19 | 'table',
20 | 'script',
21 | 'audio',
22 | 'video',
23 | 'style',
24 | 'iframe',
25 | 'object',
26 | 'embed',
27 | 'textarea',
28 | 'frame',
29 | 'frameset'
30 | ],
31 | });
32 | }
33 |
34 | function setTimesent(message) {
35 | message.timesent = timeago.format(message.publishedAt);
36 | }
37 |
38 | const rewardColors = {
39 | '19c49b5f-bf65-4b3f-b0e0-68d2666f0db8': '#454ADEEE',
40 | '87b6d20b-8c36-4bd1-8d4f-e005e29e1b9a': '#C52233EE',
41 | 'a34d5787-9270-4e93-9cc2-2594a22aa81f': '#191923EE'
42 | };
43 |
44 | function processMessage(message) {
45 | setTimesent(message);
46 | sanitize(message);
47 | if (message.reward) {
48 | message.bgColor = rewardColors[message.rewardId] || '#496A81EE';
49 | }
50 | message.showSource = false;
51 | message.isPotentiallyNaughty = message.message.match(/<|>/i);
52 | }
53 |
54 | new Vue({
55 | el: '#app',
56 | data: {
57 | messages: [],
58 | focus: false,
59 | botId: '519135902',
60 | broadcasterId: '413856795',
61 | },
62 | async created() {
63 | if (localStorage.highlightedMessage) {
64 | setTimeout(() => {
65 | this.messages = [JSON.parse(localStorage.highlightedMessage)];
66 | setTimeout(() => {
67 | window.resizeTo(window.innerWidth, this.$refs.app.clientHeight + 10);
68 | }, 700);
69 | }, 100);
70 | setInterval(() => {
71 | this.messages.forEach(setTimesent);
72 | }, 1000);
73 | } else {
74 | window.close();
75 | }
76 | window.addEventListener('storage', () => {
77 | if (localStorage.highlightedMessage) {
78 | this.messages = [JSON.parse(localStorage.highlightedMessage)];
79 | setTimeout(() => {
80 | window.resizeTo(window.innerWidth, this.$refs.app.clientHeight + 10);
81 | }, 700);
82 | }
83 | });
84 | },
85 | methods: {
86 | clearHighlight() {
87 | this.messages = [];
88 | setTimeout(() => {
89 | window.close();
90 | }, 700);
91 | }
92 | }
93 | });
94 | })();
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Live Chat
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
24 |
32 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | {{message.author.displayName}}
47 | ★
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
72 |
73 | {{message.author.country_name}}
74 |
75 |
{{message.timesent}}
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | // Modules to control application life and create native browser window
2 | const {app, BrowserWindow, ipcMain} = require('electron');
3 | const path = require('path');
4 |
5 | // Keep a global reference of the window object, if you don't, the window will
6 | // be closed automatically when the JavaScript object is garbage collected.
7 | let mainWindow;
8 | let highlightWindow;
9 |
10 | function createWindow () {
11 | // Create the browser window.
12 | mainWindow = new BrowserWindow({
13 | title: 'Live Chat',
14 | closable: true,
15 | width: 640,
16 | height: 1080,
17 | frame: false,
18 | x: 1920 - 640,
19 | y: 30,
20 | hasShadow: false,
21 | transparent: true,
22 | titleBarStyle: 'customButtonsOnHover',
23 | minimizable: false,
24 | maximizable: false,
25 | // alwaysOnTop: true,
26 | backgroundColor: '#00FFFFFF',
27 | // type: 'desktop',
28 | webPreferences: {
29 | preload: path.join(__dirname, 'preload.js')
30 | }
31 | });
32 |
33 | // and load the index.html of the app.
34 | mainWindow.loadFile('index.html');
35 |
36 | // Open the DevTools.
37 | // mainWindow.webContents.openDevTools()
38 |
39 | // Emitted when the window is closed.
40 | mainWindow.on('closed', function () {
41 | // Dereference the window object, usually you would store windows
42 | // in an array if your app supports multi windows, this is the time
43 | // when you should delete the corresponding element.
44 | mainWindow = null;
45 | });
46 | }
47 |
48 | function createHighlightWindow (message) {
49 | if (highlightWindow) {
50 | return;
51 | }
52 | // Create the browser window.
53 | highlightWindow = new BrowserWindow({
54 | title: 'Highlight Chat',
55 | closable: true,
56 | width: 1000,
57 | height: 320,
58 | frame: false,
59 | x: 10,
60 | y: 1080 - 300,
61 | hasShadow: false,
62 | transparent: true,
63 | titleBarStyle: 'customButtonsOnHover',
64 | minimizable: false,
65 | maximizable: false,
66 | alwaysOnTop: true,
67 | backgroundColor: '#00FFFFFF',
68 | webPreferences: {
69 | preload: path.join(__dirname, 'preload.js')
70 | }
71 | });
72 |
73 | // and load the index.html of the app.
74 | highlightWindow.loadFile('highlight.html');
75 |
76 | // Open the DevTools.
77 | // mainWindow.webContents.openDevTools()
78 |
79 | // Emitted when the window is closed.
80 | highlightWindow.on('closed', function () {
81 | // Dereference the window object, usually you would store windows
82 | // in an array if your app supports multi windows, this is the time
83 | // when you should delete the corresponding element.
84 | highlightWindow = null;
85 | });
86 | }
87 |
88 | // This method will be called when Electron has finished
89 | // initialization and is ready to create browser windows.
90 | // Some APIs can only be used after this event occurs.
91 | app.on('ready', createWindow);
92 |
93 | // Quit when all windows are closed.
94 | app.on('window-all-closed', function () {
95 | // On macOS it is common for applications and their menu bar
96 | // to stay active until the user quits explicitly with Cmd + Q
97 | if (process.platform !== 'darwin') app.quit();
98 | });
99 |
100 | app.on('web-contents-created', (e, contents) => {
101 | contents.on('will-navigate', (event, url) => {
102 | event.preventDefault();
103 | console.log('blocked navigate:', url);
104 | });
105 | contents.on('new-window', async (event, url) => {
106 | event.preventDefault();
107 | console.log('blocked window:', url);
108 | });
109 | });
110 |
111 | app.on('activate', function () {
112 | // On macOS it's common to re-create a window in the app when the
113 | // dock icon is clicked and there are no other windows open.
114 | if (mainWindow === null) createWindow();
115 | });
116 |
117 | // In this file you can include the rest of your app's specific main process
118 | // code. You can also put them in separate files and require them here.
119 |
120 | ipcMain.on('highlightMessage', (message) => {
121 | createHighlightWindow();
122 | });
123 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-quick-start",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.8.3",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
10 | "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.8.3"
14 | }
15 | },
16 | "@babel/helper-validator-identifier": {
17 | "version": "7.9.5",
18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
19 | "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==",
20 | "dev": true
21 | },
22 | "@babel/highlight": {
23 | "version": "7.9.0",
24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz",
25 | "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==",
26 | "dev": true,
27 | "requires": {
28 | "@babel/helper-validator-identifier": "^7.9.0",
29 | "chalk": "^2.0.0",
30 | "js-tokens": "^4.0.0"
31 | },
32 | "dependencies": {
33 | "chalk": {
34 | "version": "2.4.2",
35 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
36 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
37 | "dev": true,
38 | "requires": {
39 | "ansi-styles": "^3.2.1",
40 | "escape-string-regexp": "^1.0.5",
41 | "supports-color": "^5.3.0"
42 | }
43 | },
44 | "escape-string-regexp": {
45 | "version": "1.0.5",
46 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
47 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
48 | "dev": true
49 | }
50 | }
51 | },
52 | "@electron/get": {
53 | "version": "1.12.2",
54 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz",
55 | "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==",
56 | "dev": true,
57 | "requires": {
58 | "debug": "^4.1.1",
59 | "env-paths": "^2.2.0",
60 | "fs-extra": "^8.1.0",
61 | "global-agent": "^2.0.2",
62 | "global-tunnel-ng": "^2.7.1",
63 | "got": "^9.6.0",
64 | "progress": "^2.0.3",
65 | "sanitize-filename": "^1.6.2",
66 | "sumchecker": "^3.0.1"
67 | }
68 | },
69 | "@fortawesome/fontawesome-free": {
70 | "version": "5.13.0",
71 | "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.0.tgz",
72 | "integrity": "sha512-xKOeQEl5O47GPZYIMToj6uuA2syyFlq9EMSl2ui0uytjY9xbe8XS0pexNWmxrdcCyNGyDmLyYw5FtKsalBUeOg=="
73 | },
74 | "@sindresorhus/is": {
75 | "version": "0.14.0",
76 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
77 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
78 | "dev": true
79 | },
80 | "@szmarczak/http-timer": {
81 | "version": "1.1.2",
82 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
83 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
84 | "dev": true,
85 | "requires": {
86 | "defer-to-connect": "^1.0.1"
87 | }
88 | },
89 | "@types/color-name": {
90 | "version": "1.1.1",
91 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
92 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
93 | "dev": true
94 | },
95 | "@types/node": {
96 | "version": "12.12.42",
97 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.42.tgz",
98 | "integrity": "sha512-R/9QdYFLL9dE9l5cWWzWIZByVGFd7lk7JVOJ7KD+E1SJ4gni7XJRLz9QTjyYQiHIqEAgku9VgxdLjMlhhUaAFg==",
99 | "dev": true
100 | },
101 | "acorn": {
102 | "version": "7.2.0",
103 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
104 | "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==",
105 | "dev": true
106 | },
107 | "acorn-jsx": {
108 | "version": "5.2.0",
109 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
110 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
111 | "dev": true
112 | },
113 | "after": {
114 | "version": "0.8.2",
115 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
116 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
117 | },
118 | "ajv": {
119 | "version": "6.12.2",
120 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
121 | "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
122 | "dev": true,
123 | "requires": {
124 | "fast-deep-equal": "^3.1.1",
125 | "fast-json-stable-stringify": "^2.0.0",
126 | "json-schema-traverse": "^0.4.1",
127 | "uri-js": "^4.2.2"
128 | }
129 | },
130 | "ansi-escapes": {
131 | "version": "4.3.1",
132 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
133 | "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
134 | "dev": true,
135 | "requires": {
136 | "type-fest": "^0.11.0"
137 | },
138 | "dependencies": {
139 | "type-fest": {
140 | "version": "0.11.0",
141 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
142 | "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
143 | "dev": true
144 | }
145 | }
146 | },
147 | "ansi-regex": {
148 | "version": "5.0.0",
149 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
150 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
151 | "dev": true
152 | },
153 | "ansi-styles": {
154 | "version": "3.2.1",
155 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
156 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
157 | "dev": true,
158 | "requires": {
159 | "color-convert": "^1.9.0"
160 | }
161 | },
162 | "argparse": {
163 | "version": "1.0.10",
164 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
165 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
166 | "dev": true,
167 | "requires": {
168 | "sprintf-js": "~1.0.2"
169 | },
170 | "dependencies": {
171 | "sprintf-js": {
172 | "version": "1.0.3",
173 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
174 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
175 | "dev": true
176 | }
177 | }
178 | },
179 | "arraybuffer.slice": {
180 | "version": "0.0.7",
181 | "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
182 | "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
183 | },
184 | "astral-regex": {
185 | "version": "1.0.0",
186 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
187 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
188 | "dev": true
189 | },
190 | "async-limiter": {
191 | "version": "1.0.1",
192 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
193 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
194 | },
195 | "backo2": {
196 | "version": "1.0.2",
197 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
198 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
199 | },
200 | "balanced-match": {
201 | "version": "1.0.0",
202 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
203 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
204 | "dev": true
205 | },
206 | "base64-arraybuffer": {
207 | "version": "0.1.5",
208 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
209 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
210 | },
211 | "better-assert": {
212 | "version": "1.0.2",
213 | "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
214 | "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
215 | "requires": {
216 | "callsite": "1.0.0"
217 | }
218 | },
219 | "blob": {
220 | "version": "0.0.5",
221 | "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
222 | "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig=="
223 | },
224 | "boolean": {
225 | "version": "3.0.1",
226 | "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.1.tgz",
227 | "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==",
228 | "dev": true,
229 | "optional": true
230 | },
231 | "brace-expansion": {
232 | "version": "1.1.11",
233 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
234 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
235 | "dev": true,
236 | "requires": {
237 | "balanced-match": "^1.0.0",
238 | "concat-map": "0.0.1"
239 | }
240 | },
241 | "buffer-crc32": {
242 | "version": "0.2.13",
243 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
244 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
245 | "dev": true
246 | },
247 | "buffer-from": {
248 | "version": "1.1.1",
249 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
250 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
251 | "dev": true
252 | },
253 | "cacheable-request": {
254 | "version": "6.1.0",
255 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
256 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
257 | "dev": true,
258 | "requires": {
259 | "clone-response": "^1.0.2",
260 | "get-stream": "^5.1.0",
261 | "http-cache-semantics": "^4.0.0",
262 | "keyv": "^3.0.0",
263 | "lowercase-keys": "^2.0.0",
264 | "normalize-url": "^4.1.0",
265 | "responselike": "^1.0.2"
266 | },
267 | "dependencies": {
268 | "get-stream": {
269 | "version": "5.1.0",
270 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
271 | "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
272 | "dev": true,
273 | "requires": {
274 | "pump": "^3.0.0"
275 | }
276 | },
277 | "lowercase-keys": {
278 | "version": "2.0.0",
279 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
280 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
281 | "dev": true
282 | }
283 | }
284 | },
285 | "callsite": {
286 | "version": "1.0.0",
287 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
288 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
289 | },
290 | "callsites": {
291 | "version": "3.1.0",
292 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
293 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
294 | "dev": true
295 | },
296 | "chalk": {
297 | "version": "4.0.0",
298 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz",
299 | "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
300 | "dev": true,
301 | "requires": {
302 | "ansi-styles": "^4.1.0",
303 | "supports-color": "^7.1.0"
304 | },
305 | "dependencies": {
306 | "ansi-styles": {
307 | "version": "4.2.1",
308 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
309 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
310 | "dev": true,
311 | "requires": {
312 | "@types/color-name": "^1.1.1",
313 | "color-convert": "^2.0.1"
314 | }
315 | },
316 | "color-convert": {
317 | "version": "2.0.1",
318 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
319 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
320 | "dev": true,
321 | "requires": {
322 | "color-name": "~1.1.4"
323 | }
324 | },
325 | "color-name": {
326 | "version": "1.1.4",
327 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
328 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
329 | "dev": true
330 | },
331 | "has-flag": {
332 | "version": "4.0.0",
333 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
334 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
335 | "dev": true
336 | },
337 | "supports-color": {
338 | "version": "7.1.0",
339 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
340 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
341 | "dev": true,
342 | "requires": {
343 | "has-flag": "^4.0.0"
344 | }
345 | }
346 | }
347 | },
348 | "chardet": {
349 | "version": "0.7.0",
350 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
351 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
352 | "dev": true
353 | },
354 | "cli-cursor": {
355 | "version": "3.1.0",
356 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
357 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
358 | "dev": true,
359 | "requires": {
360 | "restore-cursor": "^3.1.0"
361 | }
362 | },
363 | "cli-width": {
364 | "version": "2.2.1",
365 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
366 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
367 | "dev": true
368 | },
369 | "clone-response": {
370 | "version": "1.0.2",
371 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
372 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
373 | "dev": true,
374 | "requires": {
375 | "mimic-response": "^1.0.0"
376 | }
377 | },
378 | "color-convert": {
379 | "version": "1.9.3",
380 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
381 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
382 | "dev": true,
383 | "requires": {
384 | "color-name": "1.1.3"
385 | }
386 | },
387 | "color-name": {
388 | "version": "1.1.3",
389 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
390 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
391 | "dev": true
392 | },
393 | "component-bind": {
394 | "version": "1.0.0",
395 | "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
396 | "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
397 | },
398 | "component-emitter": {
399 | "version": "1.2.1",
400 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
401 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
402 | },
403 | "component-inherit": {
404 | "version": "0.0.3",
405 | "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
406 | "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
407 | },
408 | "concat-map": {
409 | "version": "0.0.1",
410 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
411 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
412 | "dev": true
413 | },
414 | "concat-stream": {
415 | "version": "1.6.2",
416 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
417 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
418 | "dev": true,
419 | "requires": {
420 | "buffer-from": "^1.0.0",
421 | "inherits": "^2.0.3",
422 | "readable-stream": "^2.2.2",
423 | "typedarray": "^0.0.6"
424 | }
425 | },
426 | "config-chain": {
427 | "version": "1.1.12",
428 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
429 | "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
430 | "dev": true,
431 | "optional": true,
432 | "requires": {
433 | "ini": "^1.3.4",
434 | "proto-list": "~1.2.1"
435 | }
436 | },
437 | "core-js": {
438 | "version": "3.6.5",
439 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
440 | "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==",
441 | "dev": true,
442 | "optional": true
443 | },
444 | "core-util-is": {
445 | "version": "1.0.2",
446 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
447 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
448 | "dev": true
449 | },
450 | "cross-spawn": {
451 | "version": "7.0.2",
452 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz",
453 | "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==",
454 | "dev": true,
455 | "requires": {
456 | "path-key": "^3.1.0",
457 | "shebang-command": "^2.0.0",
458 | "which": "^2.0.1"
459 | }
460 | },
461 | "debug": {
462 | "version": "4.1.1",
463 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
464 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
465 | "requires": {
466 | "ms": "^2.1.1"
467 | }
468 | },
469 | "decompress-response": {
470 | "version": "3.3.0",
471 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
472 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
473 | "dev": true,
474 | "requires": {
475 | "mimic-response": "^1.0.0"
476 | }
477 | },
478 | "deep-is": {
479 | "version": "0.1.3",
480 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
481 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
482 | "dev": true
483 | },
484 | "defer-to-connect": {
485 | "version": "1.1.3",
486 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
487 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
488 | "dev": true
489 | },
490 | "define-properties": {
491 | "version": "1.1.3",
492 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
493 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
494 | "dev": true,
495 | "optional": true,
496 | "requires": {
497 | "object-keys": "^1.0.12"
498 | }
499 | },
500 | "detect-node": {
501 | "version": "2.0.4",
502 | "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
503 | "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
504 | "dev": true,
505 | "optional": true
506 | },
507 | "doctrine": {
508 | "version": "3.0.0",
509 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
510 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
511 | "dev": true,
512 | "requires": {
513 | "esutils": "^2.0.2"
514 | }
515 | },
516 | "dompurify": {
517 | "version": "2.0.11",
518 | "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.11.tgz",
519 | "integrity": "sha512-qVoGPjIW9IqxRij7klDQQ2j6nSe4UNWANBhZNLnsS7ScTtLb+3YdxkRY8brNTpkUiTtcXsCJO+jS0UCDfenLuA=="
520 | },
521 | "duplexer3": {
522 | "version": "0.1.4",
523 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
524 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
525 | "dev": true
526 | },
527 | "electron": {
528 | "version": "9.0.0",
529 | "resolved": "https://registry.npmjs.org/electron/-/electron-9.0.0.tgz",
530 | "integrity": "sha512-JsaSQNPh+XDYkLj8APtVKTtvpb86KIG57W5OOss4TNrn8L3isC9LsCITwfnVmGIXHhvX6oY/weCtN5hAAytjVg==",
531 | "dev": true,
532 | "requires": {
533 | "@electron/get": "^1.0.1",
534 | "@types/node": "^12.0.12",
535 | "extract-zip": "^1.0.3"
536 | }
537 | },
538 | "emoji-regex": {
539 | "version": "8.0.0",
540 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
541 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
542 | "dev": true
543 | },
544 | "encodeurl": {
545 | "version": "1.0.2",
546 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
547 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
548 | "dev": true,
549 | "optional": true
550 | },
551 | "end-of-stream": {
552 | "version": "1.4.4",
553 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
554 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
555 | "dev": true,
556 | "requires": {
557 | "once": "^1.4.0"
558 | }
559 | },
560 | "engine.io-client": {
561 | "version": "3.4.0",
562 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.0.tgz",
563 | "integrity": "sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA==",
564 | "requires": {
565 | "component-emitter": "1.2.1",
566 | "component-inherit": "0.0.3",
567 | "debug": "~4.1.0",
568 | "engine.io-parser": "~2.2.0",
569 | "has-cors": "1.1.0",
570 | "indexof": "0.0.1",
571 | "parseqs": "0.0.5",
572 | "parseuri": "0.0.5",
573 | "ws": "~6.1.0",
574 | "xmlhttprequest-ssl": "~1.5.4",
575 | "yeast": "0.1.2"
576 | }
577 | },
578 | "engine.io-parser": {
579 | "version": "2.2.0",
580 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz",
581 | "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==",
582 | "requires": {
583 | "after": "0.8.2",
584 | "arraybuffer.slice": "~0.0.7",
585 | "base64-arraybuffer": "0.1.5",
586 | "blob": "0.0.5",
587 | "has-binary2": "~1.0.2"
588 | }
589 | },
590 | "env-paths": {
591 | "version": "2.2.0",
592 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
593 | "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==",
594 | "dev": true
595 | },
596 | "es6-error": {
597 | "version": "4.1.1",
598 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
599 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
600 | "dev": true,
601 | "optional": true
602 | },
603 | "escape-string-regexp": {
604 | "version": "2.0.0",
605 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
606 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
607 | "dev": true,
608 | "optional": true
609 | },
610 | "eslint": {
611 | "version": "7.0.0",
612 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.0.0.tgz",
613 | "integrity": "sha512-qY1cwdOxMONHJfGqw52UOpZDeqXy8xmD0u8CT6jIstil72jkhURC704W8CFyTPDPllz4z4lu0Ql1+07PG/XdIg==",
614 | "dev": true,
615 | "requires": {
616 | "@babel/code-frame": "^7.0.0",
617 | "ajv": "^6.10.0",
618 | "chalk": "^4.0.0",
619 | "cross-spawn": "^7.0.2",
620 | "debug": "^4.0.1",
621 | "doctrine": "^3.0.0",
622 | "eslint-scope": "^5.0.0",
623 | "eslint-utils": "^2.0.0",
624 | "eslint-visitor-keys": "^1.1.0",
625 | "espree": "^7.0.0",
626 | "esquery": "^1.2.0",
627 | "esutils": "^2.0.2",
628 | "file-entry-cache": "^5.0.1",
629 | "functional-red-black-tree": "^1.0.1",
630 | "glob-parent": "^5.0.0",
631 | "globals": "^12.1.0",
632 | "ignore": "^4.0.6",
633 | "import-fresh": "^3.0.0",
634 | "imurmurhash": "^0.1.4",
635 | "inquirer": "^7.0.0",
636 | "is-glob": "^4.0.0",
637 | "js-yaml": "^3.13.1",
638 | "json-stable-stringify-without-jsonify": "^1.0.1",
639 | "levn": "^0.4.1",
640 | "lodash": "^4.17.14",
641 | "minimatch": "^3.0.4",
642 | "natural-compare": "^1.4.0",
643 | "optionator": "^0.9.1",
644 | "progress": "^2.0.0",
645 | "regexpp": "^3.1.0",
646 | "semver": "^7.2.1",
647 | "strip-ansi": "^6.0.0",
648 | "strip-json-comments": "^3.1.0",
649 | "table": "^5.2.3",
650 | "text-table": "^0.2.0",
651 | "v8-compile-cache": "^2.0.3"
652 | }
653 | },
654 | "eslint-scope": {
655 | "version": "5.0.0",
656 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
657 | "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
658 | "dev": true,
659 | "requires": {
660 | "esrecurse": "^4.1.0",
661 | "estraverse": "^4.1.1"
662 | }
663 | },
664 | "eslint-utils": {
665 | "version": "2.0.0",
666 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz",
667 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==",
668 | "dev": true,
669 | "requires": {
670 | "eslint-visitor-keys": "^1.1.0"
671 | }
672 | },
673 | "eslint-visitor-keys": {
674 | "version": "1.1.0",
675 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
676 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
677 | "dev": true
678 | },
679 | "espree": {
680 | "version": "7.0.0",
681 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.0.0.tgz",
682 | "integrity": "sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw==",
683 | "dev": true,
684 | "requires": {
685 | "acorn": "^7.1.1",
686 | "acorn-jsx": "^5.2.0",
687 | "eslint-visitor-keys": "^1.1.0"
688 | }
689 | },
690 | "esprima": {
691 | "version": "4.0.1",
692 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
693 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
694 | "dev": true
695 | },
696 | "esquery": {
697 | "version": "1.3.1",
698 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
699 | "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
700 | "dev": true,
701 | "requires": {
702 | "estraverse": "^5.1.0"
703 | },
704 | "dependencies": {
705 | "estraverse": {
706 | "version": "5.1.0",
707 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz",
708 | "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==",
709 | "dev": true
710 | }
711 | }
712 | },
713 | "esrecurse": {
714 | "version": "4.2.1",
715 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
716 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
717 | "dev": true,
718 | "requires": {
719 | "estraverse": "^4.1.0"
720 | }
721 | },
722 | "estraverse": {
723 | "version": "4.3.0",
724 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
725 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
726 | "dev": true
727 | },
728 | "esutils": {
729 | "version": "2.0.3",
730 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
731 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
732 | "dev": true
733 | },
734 | "external-editor": {
735 | "version": "3.1.0",
736 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
737 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
738 | "dev": true,
739 | "requires": {
740 | "chardet": "^0.7.0",
741 | "iconv-lite": "^0.4.24",
742 | "tmp": "^0.0.33"
743 | }
744 | },
745 | "extract-zip": {
746 | "version": "1.7.0",
747 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
748 | "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
749 | "dev": true,
750 | "requires": {
751 | "concat-stream": "^1.6.2",
752 | "debug": "^2.6.9",
753 | "mkdirp": "^0.5.4",
754 | "yauzl": "^2.10.0"
755 | },
756 | "dependencies": {
757 | "debug": {
758 | "version": "2.6.9",
759 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
760 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
761 | "dev": true,
762 | "requires": {
763 | "ms": "2.0.0"
764 | }
765 | },
766 | "ms": {
767 | "version": "2.0.0",
768 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
769 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
770 | "dev": true
771 | }
772 | }
773 | },
774 | "fast-deep-equal": {
775 | "version": "3.1.1",
776 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
777 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
778 | "dev": true
779 | },
780 | "fast-json-stable-stringify": {
781 | "version": "2.1.0",
782 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
783 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
784 | "dev": true
785 | },
786 | "fast-levenshtein": {
787 | "version": "2.0.6",
788 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
789 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
790 | "dev": true
791 | },
792 | "fd-slicer": {
793 | "version": "1.1.0",
794 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
795 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
796 | "dev": true,
797 | "requires": {
798 | "pend": "~1.2.0"
799 | }
800 | },
801 | "figures": {
802 | "version": "3.2.0",
803 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
804 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
805 | "dev": true,
806 | "requires": {
807 | "escape-string-regexp": "^1.0.5"
808 | },
809 | "dependencies": {
810 | "escape-string-regexp": {
811 | "version": "1.0.5",
812 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
813 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
814 | "dev": true
815 | }
816 | }
817 | },
818 | "file-entry-cache": {
819 | "version": "5.0.1",
820 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
821 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
822 | "dev": true,
823 | "requires": {
824 | "flat-cache": "^2.0.1"
825 | }
826 | },
827 | "flag-icon-css": {
828 | "version": "3.4.6",
829 | "resolved": "https://registry.npmjs.org/flag-icon-css/-/flag-icon-css-3.4.6.tgz",
830 | "integrity": "sha512-rF69rt19Hr63SRQTiPBzQABaYB20LAgZhDkr/AxqSdgmCIN+tC5PRMz56Y0gxehFXJmdRwv55+GMi7R1fCRTwg=="
831 | },
832 | "flat-cache": {
833 | "version": "2.0.1",
834 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
835 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
836 | "dev": true,
837 | "requires": {
838 | "flatted": "^2.0.0",
839 | "rimraf": "2.6.3",
840 | "write": "1.0.3"
841 | }
842 | },
843 | "flatted": {
844 | "version": "2.0.2",
845 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
846 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
847 | "dev": true
848 | },
849 | "fs-extra": {
850 | "version": "8.1.0",
851 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
852 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
853 | "dev": true,
854 | "requires": {
855 | "graceful-fs": "^4.2.0",
856 | "jsonfile": "^4.0.0",
857 | "universalify": "^0.1.0"
858 | }
859 | },
860 | "fs.realpath": {
861 | "version": "1.0.0",
862 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
863 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
864 | "dev": true
865 | },
866 | "functional-red-black-tree": {
867 | "version": "1.0.1",
868 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
869 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
870 | "dev": true
871 | },
872 | "get-stream": {
873 | "version": "4.1.0",
874 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
875 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
876 | "dev": true,
877 | "requires": {
878 | "pump": "^3.0.0"
879 | }
880 | },
881 | "glob": {
882 | "version": "7.1.6",
883 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
884 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
885 | "dev": true,
886 | "requires": {
887 | "fs.realpath": "^1.0.0",
888 | "inflight": "^1.0.4",
889 | "inherits": "2",
890 | "minimatch": "^3.0.4",
891 | "once": "^1.3.0",
892 | "path-is-absolute": "^1.0.0"
893 | }
894 | },
895 | "glob-parent": {
896 | "version": "5.1.1",
897 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
898 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
899 | "dev": true,
900 | "requires": {
901 | "is-glob": "^4.0.1"
902 | }
903 | },
904 | "global-agent": {
905 | "version": "2.1.8",
906 | "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.8.tgz",
907 | "integrity": "sha512-VpBe/rhY6Rw2VDOTszAMNambg+4Qv8j0yiTNDYEXXXxkUNGWLHp8A3ztK4YDBbFNcWF4rgsec6/5gPyryya/+A==",
908 | "dev": true,
909 | "optional": true,
910 | "requires": {
911 | "boolean": "^3.0.0",
912 | "core-js": "^3.6.4",
913 | "es6-error": "^4.1.1",
914 | "matcher": "^2.1.0",
915 | "roarr": "^2.15.2",
916 | "semver": "^7.1.2",
917 | "serialize-error": "^5.0.0"
918 | }
919 | },
920 | "global-tunnel-ng": {
921 | "version": "2.7.1",
922 | "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
923 | "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
924 | "dev": true,
925 | "optional": true,
926 | "requires": {
927 | "encodeurl": "^1.0.2",
928 | "lodash": "^4.17.10",
929 | "npm-conf": "^1.1.3",
930 | "tunnel": "^0.0.6"
931 | }
932 | },
933 | "globals": {
934 | "version": "12.4.0",
935 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
936 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
937 | "dev": true,
938 | "requires": {
939 | "type-fest": "^0.8.1"
940 | }
941 | },
942 | "globalthis": {
943 | "version": "1.0.1",
944 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz",
945 | "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==",
946 | "dev": true,
947 | "optional": true,
948 | "requires": {
949 | "define-properties": "^1.1.3"
950 | }
951 | },
952 | "got": {
953 | "version": "9.6.0",
954 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
955 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
956 | "dev": true,
957 | "requires": {
958 | "@sindresorhus/is": "^0.14.0",
959 | "@szmarczak/http-timer": "^1.1.2",
960 | "cacheable-request": "^6.0.0",
961 | "decompress-response": "^3.3.0",
962 | "duplexer3": "^0.1.4",
963 | "get-stream": "^4.1.0",
964 | "lowercase-keys": "^1.0.1",
965 | "mimic-response": "^1.0.1",
966 | "p-cancelable": "^1.0.0",
967 | "to-readable-stream": "^1.0.0",
968 | "url-parse-lax": "^3.0.0"
969 | }
970 | },
971 | "graceful-fs": {
972 | "version": "4.2.4",
973 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
974 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
975 | "dev": true
976 | },
977 | "has-binary2": {
978 | "version": "1.0.3",
979 | "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
980 | "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
981 | "requires": {
982 | "isarray": "2.0.1"
983 | },
984 | "dependencies": {
985 | "isarray": {
986 | "version": "2.0.1",
987 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
988 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
989 | }
990 | }
991 | },
992 | "has-cors": {
993 | "version": "1.1.0",
994 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
995 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
996 | },
997 | "has-flag": {
998 | "version": "3.0.0",
999 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1000 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1001 | "dev": true
1002 | },
1003 | "http-cache-semantics": {
1004 | "version": "4.1.0",
1005 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
1006 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
1007 | "dev": true
1008 | },
1009 | "iconv-lite": {
1010 | "version": "0.4.24",
1011 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1012 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1013 | "dev": true,
1014 | "requires": {
1015 | "safer-buffer": ">= 2.1.2 < 3"
1016 | }
1017 | },
1018 | "ignore": {
1019 | "version": "4.0.6",
1020 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1021 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1022 | "dev": true
1023 | },
1024 | "import-fresh": {
1025 | "version": "3.2.1",
1026 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
1027 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
1028 | "dev": true,
1029 | "requires": {
1030 | "parent-module": "^1.0.0",
1031 | "resolve-from": "^4.0.0"
1032 | }
1033 | },
1034 | "imurmurhash": {
1035 | "version": "0.1.4",
1036 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1037 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1038 | "dev": true
1039 | },
1040 | "indexof": {
1041 | "version": "0.0.1",
1042 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
1043 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
1044 | },
1045 | "inflight": {
1046 | "version": "1.0.6",
1047 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1048 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1049 | "dev": true,
1050 | "requires": {
1051 | "once": "^1.3.0",
1052 | "wrappy": "1"
1053 | }
1054 | },
1055 | "inherits": {
1056 | "version": "2.0.4",
1057 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1058 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1059 | "dev": true
1060 | },
1061 | "ini": {
1062 | "version": "1.3.5",
1063 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
1064 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
1065 | "dev": true,
1066 | "optional": true
1067 | },
1068 | "inquirer": {
1069 | "version": "7.1.0",
1070 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz",
1071 | "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==",
1072 | "dev": true,
1073 | "requires": {
1074 | "ansi-escapes": "^4.2.1",
1075 | "chalk": "^3.0.0",
1076 | "cli-cursor": "^3.1.0",
1077 | "cli-width": "^2.0.0",
1078 | "external-editor": "^3.0.3",
1079 | "figures": "^3.0.0",
1080 | "lodash": "^4.17.15",
1081 | "mute-stream": "0.0.8",
1082 | "run-async": "^2.4.0",
1083 | "rxjs": "^6.5.3",
1084 | "string-width": "^4.1.0",
1085 | "strip-ansi": "^6.0.0",
1086 | "through": "^2.3.6"
1087 | },
1088 | "dependencies": {
1089 | "ansi-styles": {
1090 | "version": "4.2.1",
1091 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
1092 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
1093 | "dev": true,
1094 | "requires": {
1095 | "@types/color-name": "^1.1.1",
1096 | "color-convert": "^2.0.1"
1097 | }
1098 | },
1099 | "chalk": {
1100 | "version": "3.0.0",
1101 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
1102 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
1103 | "dev": true,
1104 | "requires": {
1105 | "ansi-styles": "^4.1.0",
1106 | "supports-color": "^7.1.0"
1107 | }
1108 | },
1109 | "color-convert": {
1110 | "version": "2.0.1",
1111 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1112 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1113 | "dev": true,
1114 | "requires": {
1115 | "color-name": "~1.1.4"
1116 | }
1117 | },
1118 | "color-name": {
1119 | "version": "1.1.4",
1120 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1121 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1122 | "dev": true
1123 | },
1124 | "has-flag": {
1125 | "version": "4.0.0",
1126 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1127 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1128 | "dev": true
1129 | },
1130 | "supports-color": {
1131 | "version": "7.1.0",
1132 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
1133 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
1134 | "dev": true,
1135 | "requires": {
1136 | "has-flag": "^4.0.0"
1137 | }
1138 | }
1139 | }
1140 | },
1141 | "is-extglob": {
1142 | "version": "2.1.1",
1143 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1144 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1145 | "dev": true
1146 | },
1147 | "is-fullwidth-code-point": {
1148 | "version": "3.0.0",
1149 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1150 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1151 | "dev": true
1152 | },
1153 | "is-glob": {
1154 | "version": "4.0.1",
1155 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
1156 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
1157 | "dev": true,
1158 | "requires": {
1159 | "is-extglob": "^2.1.1"
1160 | }
1161 | },
1162 | "isarray": {
1163 | "version": "1.0.0",
1164 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1165 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1166 | "dev": true
1167 | },
1168 | "isexe": {
1169 | "version": "2.0.0",
1170 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1171 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1172 | "dev": true
1173 | },
1174 | "js-tokens": {
1175 | "version": "4.0.0",
1176 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1177 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1178 | "dev": true
1179 | },
1180 | "js-yaml": {
1181 | "version": "3.14.0",
1182 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
1183 | "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
1184 | "dev": true,
1185 | "requires": {
1186 | "argparse": "^1.0.7",
1187 | "esprima": "^4.0.0"
1188 | }
1189 | },
1190 | "json-buffer": {
1191 | "version": "3.0.0",
1192 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
1193 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
1194 | "dev": true
1195 | },
1196 | "json-schema-traverse": {
1197 | "version": "0.4.1",
1198 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1199 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1200 | "dev": true
1201 | },
1202 | "json-stable-stringify-without-jsonify": {
1203 | "version": "1.0.1",
1204 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1205 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1206 | "dev": true
1207 | },
1208 | "json-stringify-safe": {
1209 | "version": "5.0.1",
1210 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1211 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1212 | "dev": true,
1213 | "optional": true
1214 | },
1215 | "jsonfile": {
1216 | "version": "4.0.0",
1217 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
1218 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
1219 | "dev": true,
1220 | "requires": {
1221 | "graceful-fs": "^4.1.6"
1222 | }
1223 | },
1224 | "keyv": {
1225 | "version": "3.1.0",
1226 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
1227 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
1228 | "dev": true,
1229 | "requires": {
1230 | "json-buffer": "3.0.0"
1231 | }
1232 | },
1233 | "levn": {
1234 | "version": "0.4.1",
1235 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
1236 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
1237 | "dev": true,
1238 | "requires": {
1239 | "prelude-ls": "^1.2.1",
1240 | "type-check": "~0.4.0"
1241 | }
1242 | },
1243 | "lodash": {
1244 | "version": "4.17.15",
1245 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
1246 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
1247 | "dev": true
1248 | },
1249 | "lowercase-keys": {
1250 | "version": "1.0.1",
1251 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
1252 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
1253 | "dev": true
1254 | },
1255 | "marked": {
1256 | "version": "1.1.0",
1257 | "resolved": "https://registry.npmjs.org/marked/-/marked-1.1.0.tgz",
1258 | "integrity": "sha512-EkE7RW6KcXfMHy2PA7Jg0YJE1l8UPEZE8k45tylzmZM30/r1M1MUXWQfJlrSbsTeh7m/XTwHbWUENvAJZpp1YA=="
1259 | },
1260 | "matcher": {
1261 | "version": "2.1.0",
1262 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-2.1.0.tgz",
1263 | "integrity": "sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ==",
1264 | "dev": true,
1265 | "optional": true,
1266 | "requires": {
1267 | "escape-string-regexp": "^2.0.0"
1268 | }
1269 | },
1270 | "mimic-fn": {
1271 | "version": "2.1.0",
1272 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1273 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1274 | "dev": true
1275 | },
1276 | "mimic-response": {
1277 | "version": "1.0.1",
1278 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
1279 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
1280 | "dev": true
1281 | },
1282 | "minimatch": {
1283 | "version": "3.0.4",
1284 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1285 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1286 | "dev": true,
1287 | "requires": {
1288 | "brace-expansion": "^1.1.7"
1289 | }
1290 | },
1291 | "minimist": {
1292 | "version": "1.2.5",
1293 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1294 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
1295 | "dev": true
1296 | },
1297 | "mkdirp": {
1298 | "version": "0.5.5",
1299 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
1300 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
1301 | "dev": true,
1302 | "requires": {
1303 | "minimist": "^1.2.5"
1304 | }
1305 | },
1306 | "ms": {
1307 | "version": "2.1.2",
1308 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1309 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1310 | },
1311 | "mute-stream": {
1312 | "version": "0.0.8",
1313 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
1314 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
1315 | "dev": true
1316 | },
1317 | "natural-compare": {
1318 | "version": "1.4.0",
1319 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1320 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1321 | "dev": true
1322 | },
1323 | "normalize-url": {
1324 | "version": "4.5.0",
1325 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
1326 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
1327 | "dev": true
1328 | },
1329 | "npm-conf": {
1330 | "version": "1.1.3",
1331 | "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
1332 | "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
1333 | "dev": true,
1334 | "optional": true,
1335 | "requires": {
1336 | "config-chain": "^1.1.11",
1337 | "pify": "^3.0.0"
1338 | }
1339 | },
1340 | "object-component": {
1341 | "version": "0.0.3",
1342 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
1343 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
1344 | },
1345 | "object-keys": {
1346 | "version": "1.1.1",
1347 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
1348 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
1349 | "dev": true,
1350 | "optional": true
1351 | },
1352 | "once": {
1353 | "version": "1.4.0",
1354 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1355 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1356 | "dev": true,
1357 | "requires": {
1358 | "wrappy": "1"
1359 | }
1360 | },
1361 | "onetime": {
1362 | "version": "5.1.0",
1363 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
1364 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
1365 | "dev": true,
1366 | "requires": {
1367 | "mimic-fn": "^2.1.0"
1368 | }
1369 | },
1370 | "optionator": {
1371 | "version": "0.9.1",
1372 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
1373 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
1374 | "dev": true,
1375 | "requires": {
1376 | "deep-is": "^0.1.3",
1377 | "fast-levenshtein": "^2.0.6",
1378 | "levn": "^0.4.1",
1379 | "prelude-ls": "^1.2.1",
1380 | "type-check": "^0.4.0",
1381 | "word-wrap": "^1.2.3"
1382 | }
1383 | },
1384 | "os-tmpdir": {
1385 | "version": "1.0.2",
1386 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1387 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
1388 | "dev": true
1389 | },
1390 | "p-cancelable": {
1391 | "version": "1.1.0",
1392 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
1393 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
1394 | "dev": true
1395 | },
1396 | "parent-module": {
1397 | "version": "1.0.1",
1398 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1399 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1400 | "dev": true,
1401 | "requires": {
1402 | "callsites": "^3.0.0"
1403 | }
1404 | },
1405 | "parseqs": {
1406 | "version": "0.0.5",
1407 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
1408 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
1409 | "requires": {
1410 | "better-assert": "~1.0.0"
1411 | }
1412 | },
1413 | "parseuri": {
1414 | "version": "0.0.5",
1415 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
1416 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
1417 | "requires": {
1418 | "better-assert": "~1.0.0"
1419 | }
1420 | },
1421 | "path-is-absolute": {
1422 | "version": "1.0.1",
1423 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1424 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1425 | "dev": true
1426 | },
1427 | "path-key": {
1428 | "version": "3.1.1",
1429 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1430 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1431 | "dev": true
1432 | },
1433 | "pend": {
1434 | "version": "1.2.0",
1435 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
1436 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
1437 | "dev": true
1438 | },
1439 | "pify": {
1440 | "version": "3.0.0",
1441 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
1442 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
1443 | "dev": true,
1444 | "optional": true
1445 | },
1446 | "prelude-ls": {
1447 | "version": "1.2.1",
1448 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
1449 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
1450 | "dev": true
1451 | },
1452 | "prepend-http": {
1453 | "version": "2.0.0",
1454 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
1455 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
1456 | "dev": true
1457 | },
1458 | "process-nextick-args": {
1459 | "version": "2.0.1",
1460 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1461 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
1462 | "dev": true
1463 | },
1464 | "progress": {
1465 | "version": "2.0.3",
1466 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1467 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1468 | "dev": true
1469 | },
1470 | "proto-list": {
1471 | "version": "1.2.4",
1472 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
1473 | "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
1474 | "dev": true,
1475 | "optional": true
1476 | },
1477 | "pump": {
1478 | "version": "3.0.0",
1479 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
1480 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
1481 | "dev": true,
1482 | "requires": {
1483 | "end-of-stream": "^1.1.0",
1484 | "once": "^1.3.1"
1485 | }
1486 | },
1487 | "punycode": {
1488 | "version": "2.1.1",
1489 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1490 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1491 | "dev": true
1492 | },
1493 | "readable-stream": {
1494 | "version": "2.3.7",
1495 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
1496 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
1497 | "dev": true,
1498 | "requires": {
1499 | "core-util-is": "~1.0.0",
1500 | "inherits": "~2.0.3",
1501 | "isarray": "~1.0.0",
1502 | "process-nextick-args": "~2.0.0",
1503 | "safe-buffer": "~5.1.1",
1504 | "string_decoder": "~1.1.1",
1505 | "util-deprecate": "~1.0.1"
1506 | }
1507 | },
1508 | "regexpp": {
1509 | "version": "3.1.0",
1510 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
1511 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
1512 | "dev": true
1513 | },
1514 | "resolve-from": {
1515 | "version": "4.0.0",
1516 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1517 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1518 | "dev": true
1519 | },
1520 | "responselike": {
1521 | "version": "1.0.2",
1522 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
1523 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
1524 | "dev": true,
1525 | "requires": {
1526 | "lowercase-keys": "^1.0.0"
1527 | }
1528 | },
1529 | "restore-cursor": {
1530 | "version": "3.1.0",
1531 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
1532 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
1533 | "dev": true,
1534 | "requires": {
1535 | "onetime": "^5.1.0",
1536 | "signal-exit": "^3.0.2"
1537 | }
1538 | },
1539 | "rimraf": {
1540 | "version": "2.6.3",
1541 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
1542 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
1543 | "dev": true,
1544 | "requires": {
1545 | "glob": "^7.1.3"
1546 | }
1547 | },
1548 | "roarr": {
1549 | "version": "2.15.3",
1550 | "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.3.tgz",
1551 | "integrity": "sha512-AEjYvmAhlyxOeB9OqPUzQCo3kuAkNfuDk/HqWbZdFsqDFpapkTjiw+p4svNEoRLvuqNTxqfL+s+gtD4eDgZ+CA==",
1552 | "dev": true,
1553 | "optional": true,
1554 | "requires": {
1555 | "boolean": "^3.0.0",
1556 | "detect-node": "^2.0.4",
1557 | "globalthis": "^1.0.1",
1558 | "json-stringify-safe": "^5.0.1",
1559 | "semver-compare": "^1.0.0",
1560 | "sprintf-js": "^1.1.2"
1561 | }
1562 | },
1563 | "run-async": {
1564 | "version": "2.4.1",
1565 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
1566 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
1567 | "dev": true
1568 | },
1569 | "rxjs": {
1570 | "version": "6.5.5",
1571 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
1572 | "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
1573 | "dev": true,
1574 | "requires": {
1575 | "tslib": "^1.9.0"
1576 | }
1577 | },
1578 | "safe-buffer": {
1579 | "version": "5.1.2",
1580 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1581 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1582 | "dev": true
1583 | },
1584 | "safer-buffer": {
1585 | "version": "2.1.2",
1586 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1587 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1588 | "dev": true
1589 | },
1590 | "sanitize-filename": {
1591 | "version": "1.6.3",
1592 | "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
1593 | "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
1594 | "dev": true,
1595 | "requires": {
1596 | "truncate-utf8-bytes": "^1.0.0"
1597 | }
1598 | },
1599 | "semver": {
1600 | "version": "7.3.2",
1601 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
1602 | "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
1603 | "dev": true
1604 | },
1605 | "semver-compare": {
1606 | "version": "1.0.0",
1607 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
1608 | "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
1609 | "dev": true,
1610 | "optional": true
1611 | },
1612 | "serialize-error": {
1613 | "version": "5.0.0",
1614 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz",
1615 | "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==",
1616 | "dev": true,
1617 | "optional": true,
1618 | "requires": {
1619 | "type-fest": "^0.8.0"
1620 | }
1621 | },
1622 | "shebang-command": {
1623 | "version": "2.0.0",
1624 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1625 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1626 | "dev": true,
1627 | "requires": {
1628 | "shebang-regex": "^3.0.0"
1629 | }
1630 | },
1631 | "shebang-regex": {
1632 | "version": "3.0.0",
1633 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1634 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1635 | "dev": true
1636 | },
1637 | "signal-exit": {
1638 | "version": "3.0.3",
1639 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
1640 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
1641 | "dev": true
1642 | },
1643 | "slice-ansi": {
1644 | "version": "2.1.0",
1645 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
1646 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
1647 | "dev": true,
1648 | "requires": {
1649 | "ansi-styles": "^3.2.0",
1650 | "astral-regex": "^1.0.0",
1651 | "is-fullwidth-code-point": "^2.0.0"
1652 | },
1653 | "dependencies": {
1654 | "is-fullwidth-code-point": {
1655 | "version": "2.0.0",
1656 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1657 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
1658 | "dev": true
1659 | }
1660 | }
1661 | },
1662 | "socket.io-client": {
1663 | "version": "2.3.0",
1664 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz",
1665 | "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==",
1666 | "requires": {
1667 | "backo2": "1.0.2",
1668 | "base64-arraybuffer": "0.1.5",
1669 | "component-bind": "1.0.0",
1670 | "component-emitter": "1.2.1",
1671 | "debug": "~4.1.0",
1672 | "engine.io-client": "~3.4.0",
1673 | "has-binary2": "~1.0.2",
1674 | "has-cors": "1.1.0",
1675 | "indexof": "0.0.1",
1676 | "object-component": "0.0.3",
1677 | "parseqs": "0.0.5",
1678 | "parseuri": "0.0.5",
1679 | "socket.io-parser": "~3.3.0",
1680 | "to-array": "0.1.4"
1681 | }
1682 | },
1683 | "socket.io-parser": {
1684 | "version": "3.3.0",
1685 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz",
1686 | "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==",
1687 | "requires": {
1688 | "component-emitter": "1.2.1",
1689 | "debug": "~3.1.0",
1690 | "isarray": "2.0.1"
1691 | },
1692 | "dependencies": {
1693 | "debug": {
1694 | "version": "3.1.0",
1695 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
1696 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
1697 | "requires": {
1698 | "ms": "2.0.0"
1699 | }
1700 | },
1701 | "isarray": {
1702 | "version": "2.0.1",
1703 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
1704 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
1705 | },
1706 | "ms": {
1707 | "version": "2.0.0",
1708 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1709 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1710 | }
1711 | }
1712 | },
1713 | "sprintf-js": {
1714 | "version": "1.1.2",
1715 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
1716 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
1717 | "dev": true,
1718 | "optional": true
1719 | },
1720 | "string-width": {
1721 | "version": "4.2.0",
1722 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
1723 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
1724 | "dev": true,
1725 | "requires": {
1726 | "emoji-regex": "^8.0.0",
1727 | "is-fullwidth-code-point": "^3.0.0",
1728 | "strip-ansi": "^6.0.0"
1729 | }
1730 | },
1731 | "string_decoder": {
1732 | "version": "1.1.1",
1733 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1734 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1735 | "dev": true,
1736 | "requires": {
1737 | "safe-buffer": "~5.1.0"
1738 | }
1739 | },
1740 | "strip-ansi": {
1741 | "version": "6.0.0",
1742 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
1743 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
1744 | "dev": true,
1745 | "requires": {
1746 | "ansi-regex": "^5.0.0"
1747 | }
1748 | },
1749 | "strip-json-comments": {
1750 | "version": "3.1.0",
1751 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz",
1752 | "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==",
1753 | "dev": true
1754 | },
1755 | "sumchecker": {
1756 | "version": "3.0.1",
1757 | "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
1758 | "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
1759 | "dev": true,
1760 | "requires": {
1761 | "debug": "^4.1.0"
1762 | }
1763 | },
1764 | "supports-color": {
1765 | "version": "5.5.0",
1766 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1767 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1768 | "dev": true,
1769 | "requires": {
1770 | "has-flag": "^3.0.0"
1771 | }
1772 | },
1773 | "table": {
1774 | "version": "5.4.6",
1775 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
1776 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
1777 | "dev": true,
1778 | "requires": {
1779 | "ajv": "^6.10.2",
1780 | "lodash": "^4.17.14",
1781 | "slice-ansi": "^2.1.0",
1782 | "string-width": "^3.0.0"
1783 | },
1784 | "dependencies": {
1785 | "ansi-regex": {
1786 | "version": "4.1.0",
1787 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
1788 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
1789 | "dev": true
1790 | },
1791 | "emoji-regex": {
1792 | "version": "7.0.3",
1793 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
1794 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
1795 | "dev": true
1796 | },
1797 | "is-fullwidth-code-point": {
1798 | "version": "2.0.0",
1799 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1800 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
1801 | "dev": true
1802 | },
1803 | "string-width": {
1804 | "version": "3.1.0",
1805 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
1806 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
1807 | "dev": true,
1808 | "requires": {
1809 | "emoji-regex": "^7.0.1",
1810 | "is-fullwidth-code-point": "^2.0.0",
1811 | "strip-ansi": "^5.1.0"
1812 | }
1813 | },
1814 | "strip-ansi": {
1815 | "version": "5.2.0",
1816 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1817 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1818 | "dev": true,
1819 | "requires": {
1820 | "ansi-regex": "^4.1.0"
1821 | }
1822 | }
1823 | }
1824 | },
1825 | "text-table": {
1826 | "version": "0.2.0",
1827 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1828 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
1829 | "dev": true
1830 | },
1831 | "through": {
1832 | "version": "2.3.8",
1833 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
1834 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
1835 | "dev": true
1836 | },
1837 | "timeago.js": {
1838 | "version": "4.0.2",
1839 | "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz",
1840 | "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w=="
1841 | },
1842 | "tmp": {
1843 | "version": "0.0.33",
1844 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
1845 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
1846 | "dev": true,
1847 | "requires": {
1848 | "os-tmpdir": "~1.0.2"
1849 | }
1850 | },
1851 | "to-array": {
1852 | "version": "0.1.4",
1853 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
1854 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
1855 | },
1856 | "to-readable-stream": {
1857 | "version": "1.0.0",
1858 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
1859 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
1860 | "dev": true
1861 | },
1862 | "truncate-utf8-bytes": {
1863 | "version": "1.0.2",
1864 | "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
1865 | "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
1866 | "dev": true,
1867 | "requires": {
1868 | "utf8-byte-length": "^1.0.1"
1869 | }
1870 | },
1871 | "tslib": {
1872 | "version": "1.13.0",
1873 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
1874 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
1875 | "dev": true
1876 | },
1877 | "tunnel": {
1878 | "version": "0.0.6",
1879 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
1880 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
1881 | "dev": true,
1882 | "optional": true
1883 | },
1884 | "type-check": {
1885 | "version": "0.4.0",
1886 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
1887 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
1888 | "dev": true,
1889 | "requires": {
1890 | "prelude-ls": "^1.2.1"
1891 | }
1892 | },
1893 | "type-fest": {
1894 | "version": "0.8.1",
1895 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
1896 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
1897 | "dev": true
1898 | },
1899 | "typedarray": {
1900 | "version": "0.0.6",
1901 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
1902 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
1903 | "dev": true
1904 | },
1905 | "universalify": {
1906 | "version": "0.1.2",
1907 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
1908 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
1909 | "dev": true
1910 | },
1911 | "uri-js": {
1912 | "version": "4.2.2",
1913 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
1914 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
1915 | "dev": true,
1916 | "requires": {
1917 | "punycode": "^2.1.0"
1918 | }
1919 | },
1920 | "url-parse-lax": {
1921 | "version": "3.0.0",
1922 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
1923 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
1924 | "dev": true,
1925 | "requires": {
1926 | "prepend-http": "^2.0.0"
1927 | }
1928 | },
1929 | "utf8-byte-length": {
1930 | "version": "1.0.4",
1931 | "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
1932 | "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=",
1933 | "dev": true
1934 | },
1935 | "util-deprecate": {
1936 | "version": "1.0.2",
1937 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1938 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
1939 | "dev": true
1940 | },
1941 | "v8-compile-cache": {
1942 | "version": "2.1.0",
1943 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
1944 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
1945 | "dev": true
1946 | },
1947 | "vue": {
1948 | "version": "2.6.11",
1949 | "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz",
1950 | "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ=="
1951 | },
1952 | "which": {
1953 | "version": "2.0.2",
1954 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1955 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1956 | "dev": true,
1957 | "requires": {
1958 | "isexe": "^2.0.0"
1959 | }
1960 | },
1961 | "word-wrap": {
1962 | "version": "1.2.3",
1963 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1964 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
1965 | "dev": true
1966 | },
1967 | "wrappy": {
1968 | "version": "1.0.2",
1969 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1970 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1971 | "dev": true
1972 | },
1973 | "write": {
1974 | "version": "1.0.3",
1975 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
1976 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
1977 | "dev": true,
1978 | "requires": {
1979 | "mkdirp": "^0.5.1"
1980 | }
1981 | },
1982 | "ws": {
1983 | "version": "6.1.4",
1984 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",
1985 | "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==",
1986 | "requires": {
1987 | "async-limiter": "~1.0.0"
1988 | }
1989 | },
1990 | "xmlhttprequest-ssl": {
1991 | "version": "1.5.5",
1992 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
1993 | "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
1994 | },
1995 | "yauzl": {
1996 | "version": "2.10.0",
1997 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
1998 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
1999 | "dev": true,
2000 | "requires": {
2001 | "buffer-crc32": "~0.2.3",
2002 | "fd-slicer": "~1.1.0"
2003 | }
2004 | },
2005 | "yeast": {
2006 | "version": "0.1.2",
2007 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
2008 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
2009 | }
2010 | }
2011 | }
2012 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-quick-start",
3 | "version": "1.0.0",
4 | "description": "A minimal Electron application",
5 | "main": "main.js",
6 | "scripts": {
7 | "start": "electron --enable-transparent-visuals ."
8 | },
9 | "repository": "https://github.com/electron/electron-quick-start",
10 | "keywords": [
11 | "Electron",
12 | "quick",
13 | "start",
14 | "tutorial",
15 | "demo"
16 | ],
17 | "author": "GitHub",
18 | "license": "CC0-1.0",
19 | "devDependencies": {
20 | "electron": "^9.0.0",
21 | "eslint": "^7.0.0"
22 | },
23 | "dependencies": {
24 | "@fortawesome/fontawesome-free": "^5.13.0",
25 | "dompurify": "^2.0.11",
26 | "flag-icon-css": "^3.4.6",
27 | "marked": "^1.1.0",
28 | "socket.io-client": "^2.3.0",
29 | "timeago.js": "^4.0.2",
30 | "vue": "^2.6.11"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/preload.js:
--------------------------------------------------------------------------------
1 | const Vue = require('vue/dist/vue');
2 | const io = require('socket.io-client');
3 | const timeago = require('timeago.js');
4 | const marked = require('marked');
5 | const createDOMPurify = require('dompurify');
6 | const electron = require('electron');
7 |
8 | window.DOMPurify = createDOMPurify(window);
9 | window.marked = marked;
10 | window.Vue = Vue;
11 | window.io = io;
12 | window.timeago = timeago;
13 | window.highlightMessage = (message) => {
14 | electron.ipcRenderer.send('highlightMessage');
15 | };
--------------------------------------------------------------------------------
/renderer.js:
--------------------------------------------------------------------------------
1 | /* eslint-env browser */
2 | (async () => {
3 | DOMPurify.addHook('afterSanitizeAttributes', (node) => {
4 | if (node.hasAttribute('src')) {
5 | node.setAttribute('src', `https://external-content.duckduckgo.com/iu/?u=${node.getAttribute('src')}`);
6 | }
7 | });
8 |
9 | const API_URL = 'http://localhost:5000';
10 | const id = await fetch(`${API_URL}/streams`)
11 | .then(res => res.json())
12 | .then((events) => {
13 | if (events.length) {
14 | const event = events[0];
15 | return event.snippet.liveChatId;
16 | }
17 | return new Date().toLocaleDateString();
18 | });
19 |
20 | console.log(id);
21 |
22 | function sanitize(message) {
23 | message.sanitized = DOMPurify
24 | .sanitize(marked(message.message), {
25 | FORBID_ATTR: [
26 | 'style',
27 | 'onerror',
28 | 'onload',
29 | 'class',
30 | ],
31 | FORBID_TAGS: [
32 | 'table',
33 | 'script',
34 | 'audio',
35 | 'video',
36 | 'style',
37 | 'iframe',
38 | 'object',
39 | 'embed',
40 | 'textarea',
41 | 'frame',
42 | 'frameset'
43 | ],
44 | });
45 | }
46 |
47 | function setTimesent(message) {
48 | message.timesent = timeago.format(message.publishedAt);
49 | }
50 |
51 | const rewardColors = {
52 | '19c49b5f-bf65-4b3f-b0e0-68d2666f0db8': '#454ADEEE',
53 | '87b6d20b-8c36-4bd1-8d4f-e005e29e1b9a': '#C52233EE',
54 | 'a34d5787-9270-4e93-9cc2-2594a22aa81f': '#191923EE'
55 | };
56 |
57 | function processMessage(message) {
58 | setTimesent(message);
59 | sanitize(message);
60 | if (message.reward) {
61 | message.bgColor = rewardColors[message.rewardId] || '#496A81EE';
62 | }
63 | message.showSource = false;
64 | message.isPotentiallyNaughty = message.message.match(/<|>/i);
65 | }
66 |
67 | const messageIds = new Set();
68 | new Vue({
69 | el: '#app',
70 | data: {
71 | showSearch: false,
72 | messages: [],
73 | authors: {},
74 | focus: false,
75 | botId: '519135902',
76 | broadcasterId: '413856795',
77 | filter: '',
78 | },
79 | async created() {
80 | this.loadMessages();
81 | this.listen();
82 | window.addEventListener('keydown', (event) => {
83 | if (event.code === 'KeyF' && event.metaKey) {
84 | this.showSearch = !this.showSearch;
85 | setTimeout(() => {
86 | this.$refs.input.focus();
87 | }, 200);
88 | }
89 | });
90 | },
91 | computed: {
92 | filteredMessages() {
93 | if (!this.filter) return this.messages;
94 | const filterMatch = new RegExp(this.filter, 'gi');
95 | return this.messages.filter((message) => (
96 | message.message.match(filterMatch)
97 | || message.author.displayName.match(filterMatch)
98 | ));
99 | }
100 | },
101 | methods: {
102 | toggleShowCountry(message) {
103 | this.$set(message, 'showCountry', !message.showCountry);
104 | },
105 | highlightMessage(message) {
106 | localStorage.highlightedMessage = JSON.stringify(message);
107 | window.highlightMessage();
108 | },
109 | listen() {
110 | const socket = io(API_URL);
111 | socket.on(`messages/${id}`, this.addLatestMessages);
112 | socket.on(`authors/${id}`, this.addLatestAuthors);
113 | socket.on(`message-deleted/${id}`, (messageId) => {
114 | this.removeMessage({ id: messageId });
115 | });
116 | },
117 | removeMessage(message) {
118 | localStorage.setItem(`delete-${message.id}`, true);
119 | this.messages = this.messages.filter(m => !localStorage[`delete-${m.id}`]);
120 | },
121 | async loadMessages() {
122 | const [messages, authors] = await Promise.all([
123 | fetch(`${API_URL}/messages?id=${id}`).then(res => res.json()),
124 | fetch(`${API_URL}/authors?id=${id}`).then(res => res.json()),
125 | ]);
126 | const allMessages = messages.reduceRight((all, message) => {
127 | if (message.author.channelId === this.botId && message.message.includes('Focus mode ended')) {
128 | this.focus = false;
129 | }
130 | if (!messageIds.has(message.id) && !message.message.match(/^!\w/)) {
131 | all.push(message);
132 | processMessage(message);
133 | messageIds.add(message.id);
134 | } else if (message.author.channelId === this.broadcasterId && message.message.startsWith('!focus')) {
135 | const command = message.message;
136 | if (command.startsWith('!focus-start') || command.startsWith('!focus-resume')) {
137 | this.focus = true;
138 | } else if (command.startsWith('!focus-pause') || command.startsWith('!focus-end')) {
139 | this.focus = false;
140 | }
141 | }
142 | return all;
143 | }, [])
144 | .filter(m => !localStorage[`delete-${m.id}`])
145 | .sort((a, b) => new Date(b.publishedAt) - new Date(a.publishedAt))
146 | .slice(0, 500);
147 |
148 | this.messages = allMessages;
149 | this.authors = authors;
150 | setInterval(() => {
151 | this.messages.forEach(setTimesent);
152 | }, 1000);
153 | },
154 | addLatestMessages(data) {
155 | const newMessages = data.reduce((all, message) => {
156 | if (message.author.channelId === this.botId && message.message.includes('Focus mode ended')) {
157 | this.focus = false;
158 | }
159 | if (!messageIds.has(message.id) && !message.message.match(/^!\w/)) {
160 | all.push(message);
161 | processMessage(message);
162 | messageIds.add(message.id);
163 | } else if (message.author.channelId === this.broadcasterId && message.message.startsWith('!focus')) {
164 | const command = message.message;
165 | if (command.startsWith('!focus-start') || command.startsWith('!focus-resume')) {
166 | this.focus = true;
167 | } else if (command.startsWith('!focus-pause') || command.startsWith('!focus-end')) {
168 | this.focus = false;
169 | }
170 | }
171 | return all;
172 | }, []);
173 | this.messages = [...newMessages, ...this.messages]
174 | .filter(m => !localStorage[`delete-${m.id}`])
175 | .sort((a, b) => new Date(b.publishedAt) - new Date(a.publishedAt))
176 | .slice(0, 500);
177 | },
178 | addLatestAuthors(data) {
179 | data.forEach((author) => {
180 | this.$set(this.authors, author.channelId, author);
181 | });
182 | }
183 | }
184 | });
185 | })();
--------------------------------------------------------------------------------
/styles.css:
--------------------------------------------------------------------------------
1 | @import './node_modules/@fortawesome/fontawesome-free/css/fontawesome.min.css';
2 | @import './node_modules/@fortawesome/fontawesome-free/css/brands.min.css';
3 | @import './node_modules/flag-icon-css/css/flag-icon.min.css';
4 |
5 | [v-cloak] { display: none; }
6 |
7 | body {
8 | margin: 0;
9 | padding: 0;
10 | background: rgba(0, 0, 0, 0);
11 | border: none;
12 | font-family: 'Montserrat', sans-serif;
13 | font-size: 1.5rem;
14 | }
15 |
16 | body::-webkit-scrollbar {
17 | display: none;
18 | }
19 |
20 | .search-input {
21 | border-radius: 20px;
22 | font-size: 1.5rem;
23 | margin: 0.5rem;
24 | padding: 1rem;
25 | width: 100%;
26 | box-sizing: border-box;
27 | opacity: 0.93;
28 | }
29 |
30 | .input-wrapper {
31 | display: flex;
32 | width: 100%;
33 | justify-content: flex-end;
34 | }
35 |
36 | .search-input:focus {
37 | outline: none;
38 | }
39 |
40 | .message {
41 | color: white;
42 | background: transparent;
43 | margin: 0.5rem;
44 | border-radius: 20px;
45 | padding: 1rem;
46 | max-height: 300px;
47 | overflow-y: auto;
48 | position: relative;
49 | }
50 |
51 | .author {
52 | display: flex;
53 | font-size: 1rem;
54 | align-items: center;
55 | height: 100%;
56 | }
57 |
58 | .author img {
59 | width: 50px;
60 | height: 50px;
61 | border-radius: 25px;
62 | margin-bottom: 0.25rem;
63 | }
64 |
65 | .author img.badge {
66 | width: 20px;
67 | height: 20px;
68 | border-radius: 0;
69 | margin-left: 6px;
70 | }
71 |
72 | .author .team-badge {
73 | max-height: 20px;
74 | width: auto;
75 | border-radius: 0;
76 | margin-left: 6px;
77 | }
78 |
79 | .author .name {
80 | margin-left: 0.5rem;
81 | font-size: 1.2rem;
82 | word-break: break-all;
83 | font-family: 'Fira Sans', sans-serif;
84 | }
85 |
86 | .author .avatar {
87 | position: relative;
88 | }
89 |
90 | .author .avatar .member-badge img {
91 | position: absolute;
92 | bottom: -2px;
93 | width: 25px;
94 | height: 25px;
95 | right: -5px;
96 | }
97 |
98 | .message .content {
99 | padding: 0.25rem;
100 | flex: 5;
101 | /* word-break: break-all; */
102 | overflow-wrap: break-word;
103 | display: block;
104 | }
105 |
106 | .message .content textarea {
107 | width: 100%;
108 | font-size: 1.5rem;
109 | font-family: 'Courier New', Courier, monospace;
110 | }
111 |
112 | .message.youtube {
113 | background: #95190CEE;
114 | }
115 |
116 | .message.twitch {
117 | background: #392F5AEE;
118 | }
119 |
120 | .message.highlight {
121 | background: #BD2D87EE;
122 | }
123 |
124 | .message.follow {
125 | background: #99B2DDEE;
126 | color: black;
127 | font-weight: bold;
128 | }
129 |
130 | .time-sent {
131 | font-size: 0.75rem;
132 | text-align: right;
133 | display: block;
134 | }
135 |
136 | p {
137 | margin: 0;
138 | padding: 0;
139 | }
140 |
141 | .bottom-bar {
142 | margin-top: 1rem;
143 | display: flex;
144 | justify-content: space-between;
145 | }
146 |
147 | .button {
148 | margin: 0.25rem;
149 | cursor: pointer;
150 | }
151 |
152 | a,
153 | a:visited {
154 | color: #E6AF2E;
155 | }
156 |
157 | .messages-item {
158 | transition: all 500ms ease-in;
159 | }
160 |
161 | .messages-move {
162 | transition: transform 500ms;
163 | }
164 |
165 | .messages-enter-active,
166 | .messages-leave-active {
167 | transition: all 500ms ease-in;
168 | }
169 |
170 | .messages-enter,
171 | .messages-leave-to {
172 | opacity: 0;
173 | transform: translateY(-200px) translateX(600px);
174 | }
175 |
176 | .moderator .star {
177 | display: block;
178 | margin-left: 0.5rem;
179 | color: #FFB700;
180 | }
181 |
182 | .member .name {
183 | color: rgb(255, 221, 18);
184 | }
185 |
186 | .moderator .name {
187 | color: #22DE1F;
188 | }
189 |
190 | .delete-button {
191 | margin-top: 0.25rem;
192 | position: absolute;
193 | top: 0.5rem;
194 | right: 0.5rem;
195 | }
196 |
197 | .delete-button svg line {
198 | stroke: white;
199 | }
200 |
201 | .delete-button svg polygon {
202 | stroke: white;
203 | }
204 |
205 | img[src$="#emote"] {
206 | height: 50px;
207 | }
208 |
209 | img.badge.moderator {
210 | background: #23CE6B;
211 | }
212 | img.badge.vip {
213 | background: #BD2D87;
214 | }
215 |
216 | .badges-and-name {
217 | display: flex;
218 | justify-content: center;
219 | height: 100%;
220 | }
221 |
222 | .messages.focus {
223 | opacity: 0.2;
224 | transition: opacity 1s linear;
225 | }
226 |
227 | .buttons {
228 | display: flex;
229 | }
230 |
231 | i.team-badge {
232 | font-size: 1.5rem;
233 | }
234 |
235 | .country {
236 | margin-left: 1rem;
237 | cursor: pointer;
238 | }
239 |
240 | .country-name {
241 | font-size: 1rem;
242 | font-style: italic;
243 | opacity: 0.5;
244 | }
--------------------------------------------------------------------------------