将题目纳入rating计算系统

This commit is contained in:
undefined committed 2020-07-17 16:59:39 +08:00
1 parent bf29661eaa
commit 17b38cbf4e
19 files changed
+290 -271

No files matched your search

+2 -2
View File
@@ -25,8 +25,8 @@ export const builtinHandler = [
]; ];
export const builtinScript = [ export const builtinScript = [
'install', 'rating', 'recalcRating', 'register', 'problemStat', 'install', 'rating', 'register', 'problemStat', 'blacklist',
'blacklist', 'setSuperadmin', 'deleteUser', 'setSuperadmin', 'deleteUser',
]; ];
function getFiles(folder: string, base = ''): string[] { function getFiles(folder: string, base = ''): string[] {
+2 -1
View File
@@ -142,7 +142,8 @@ class HomeSecurityHandler extends Handler {
@param('verifyPassword', Types.String) @param('verifyPassword', Types.String)
async postChangePassword(current: string, password: string, verifyPassword: string) { async postChangePassword(current: string, password: string, verifyPassword: string) {
if (password !== verifyPassword) throw new VerifyPasswordError(); if (password !== verifyPassword) throw new VerifyPasswordError();
await user.changePassword(this.user._id, current, password); this.user.checkPassword(current);
await user.setPassword(this.user._id, password);
this.back(); this.back();
} }
+3 -3
View File
@@ -50,9 +50,9 @@ class RecordListHandler extends RecordHandler {
rdocs, rdocs,
pdict, pdict,
udict, udict,
fliterPid: pid, filterPid: pid,
fliterTid: tid, filterTid: tid,
fliterUidOrName: uidOrName, filterUidOrName: uidOrName,
}; };
} }
} }
+1
View File
@@ -56,6 +56,7 @@ export type Udict = NumericDictionary<User>;
export interface Pdoc { export interface Pdoc {
_id: ObjectID, _id: ObjectID,
domainId: string, domainId: string,
docType: number,
docId: number, docId: number,
pid: string, pid: string,
owner: number, owner: number,
+1 -1
View File
@@ -238,7 +238,7 @@ export async function setIfNotStatus(
{ {
domainId, docType, docId, uid, key: { $not: { $eq: ifNot } }, domainId, docType, docId, uid, key: { $not: { $eq: ifNot } },
}, },
{ $set: { [key]: value, args } }, { $set: { [key]: value, ...args } },
{ upsert: true, returnOriginal: false }, { upsert: true, returnOriginal: false },
); );
return res.value; return res.value;
+1
View File
@@ -10,6 +10,7 @@ import readConfig from '../lib/readConfig';
export const pdocHidden: Pdoc = { export const pdocHidden: Pdoc = {
_id: new ObjectID(), _id: new ObjectID(),
domainId: 'system', domainId: 'system',
docType: document.TYPE_PROBLEM,
docId: -1, docId: -1,
pid: '', pid: '',
owner: 1, owner: 1,
+36 -1
View File
@@ -57,6 +57,41 @@ export async function consume(query: any, cb: Function) {
}, 100); }, 100);
} }
export class Consumer {
consuming: boolean;
running?: Promise<any>;
interval: NodeJS.Timeout;
filter: any;
func: Function;
constructor(filter: any, func: Function) {
this.consuming = true;
this.filter = filter;
this.func = func;
this.interval = setInterval(this.consume.bind(this), 100);
}
async consume() {
if (this.running || !this.consuming) return;
const res = await getFirst(this.filter);
if (res) {
this.running = this.func(res);
if (this.running instanceof Promise) await this.running;
this.running = null;
}
}
async destory() {
this.consuming = false;
clearInterval(this.interval);
if (this.running) await this.running;
}
}
global.Hydro.model.task = { global.Hydro.model.task = {
add, get, del, count, getFirst, consume, Consumer, add, get, del, count, getFirst, consume,
}; };
-12
View File
@@ -156,17 +156,6 @@ export function setEmail(uid: number, mail: string) {
return setById(uid, { mail, mailLower: mail.trim().toLowerCase() }); return setById(uid, { mail, mailLower: mail.trim().toLowerCase() });
} }
export async function changePassword(uid: number, currentPassword: string, newPassword: string) {
const udoc = await getById('system', uid);
if (!udoc) throw new UserNotFoundError(uid);
udoc.checkPassword(currentPassword);
const salt = String.random();
return await coll.findOneAndUpdate(
{ _id: udoc._id },
{ $set: { salt, hash: pwhash(newPassword, salt), hashType: 'hydro' } },
);
}
export async function inc(_id: number, field: string, n = 1) { export async function inc(_id: number, field: string, n = 1) {
const udoc = await coll.findOne({ _id }); const udoc = await coll.findOne({ _id });
if (!udoc) throw new UserNotFoundError(_id); if (!udoc) throw new UserNotFoundError(_id);
@@ -234,7 +223,6 @@ export function ensureIndexes() {
global.Hydro.model.user = { global.Hydro.model.user = {
User, User,
changePassword,
create, create,
getByEmail, getByEmail,
getById, getById,
+137 -15
View File
@@ -1,28 +1,150 @@
/* eslint-disable no-await-in-loop */
import { NumericDictionary } from 'lodash';
import { ObjectID } from 'mongodb'; import { ObjectID } from 'mongodb';
import * as domain from '../model/domain';
import * as contest from '../model/contest'; import * as contest from '../model/contest';
import * as user from '../model/user'; import * as problem from '../model/problem';
import rating from '../lib/rating'; import rating from '../lib/rating';
import { STATUS } from '../model/builtin';
import { Tdoc, Pdoc } from '../interface';
export const description = 'Calculate the rating of a contest'; export const description = 'Calculate rating of a domain, or all domains';
export async function run({ domainId, contestId }) { type ND = NumericDictionary<number>
contestId = new ObjectID(contestId);
const tdoc = await contest.get(domainId, contestId); function calc(udict: ND, rankedDocs: [number, number][]) {
const tsdocs = await contest.getMultiStatus(domainId, { docId: contestId })
.sort(contest.RULES[tdoc.rule].statusSort).toArray();
const udict = await user.getList(domainId, tsdocs.map((tsdoc) => tsdoc.uid));
const rankedTsdocs = contest.RULES[tdoc.rule].rank(tsdocs);
const users = []; const users = [];
for (const result of rankedTsdocs) { for (const [rank, uid] of rankedDocs) {
users.push({ ...result[1], rank: result[0], old: udict[result[1].uid].rating || 1500 }); users.push({ uid, rank, old: users[uid] || 1500 });
} }
const rated = rating(users); const rated = rating(users);
return rated; for (const udoc of rated) {
udict[udoc.uid] = udoc.new;
}
}
async function runProblem(pdoc: Pdoc, udict: ND, report: Function): Promise<void>
async function runProblem(
domainId: string, pid: number, udict: ND, report: Function
): Promise<void>
async function runProblem(...arg: Array<any>) {
const start = new Date().getTime();
const pdoc: Pdoc = (typeof arg[0] === 'string')
? await contest.get(arg[0], arg[1], -1)
: arg[0];
const udict: ND = (typeof arg[0] === 'string') ? arg[2] : arg[1];
const report = (typeof arg[0] === 'string') ? arg[3] : arg[2];
// TODO maybe some other rules?
// TODO pagination
const psdocs = await problem.getMultiStatus(
pdoc.domainId, { docId: pdoc.docId, status: STATUS.STATUS_ACCEPTED },
).sort('rid', 1).toArray();
const ranked = [];
for (const index of psdocs) {
ranked.push([index + 1, psdocs[index].uid]);
}
calc(udict, ranked);
await report({
case: {
status: STATUS.STATUS_ACCEPTED,
judgeText: `Problem ${pdoc.title} finished`,
time_ms: new Date().getTime() - start,
memory_kb: 0,
score: 0,
},
});
}
async function runContest(tdoc: Tdoc, udict: ND, report: Function): Promise<void>
async function runContest(
domainId: string, tid: ObjectID, udict: ND, report: Function
): Promise<void>
async function runContest(...arg: Array<any>) {
const start = new Date().getTime();
const tdoc: Tdoc = (typeof arg[0] === 'string')
? await contest.get(arg[0], arg[1], -1)
: arg[0];
const udict: ND = (typeof arg[0] === 'string') ? arg[2] : arg[1];
const report = (typeof arg[0] === 'string') ? arg[3] : arg[2];
const tsdocs = await contest.getMultiStatus(tdoc.domainId, tdoc.docId, tdoc.docType)
.sort(contest.RULES[tdoc.rule].statusSort).toArray();
const rankedTsdocs = contest.RULES[tdoc.rule].rank(tsdocs);
const ranked = [];
for (const result of rankedTsdocs) {
ranked.push([result[0], result[1].uid]);
}
calc(udict, ranked);
await report({
case: {
status: STATUS.STATUS_ACCEPTED,
judgeText: `Contest ${tdoc.title} finished`,
time_ms: new Date().getTime() - start,
memory_kb: 0,
score: 0,
},
});
}
async function runInDomain(domainId: string, isSub: boolean, report: Function) {
await domain.setMultiUserInDomain(domainId, {}, { rating: 1500 });
const udict: ND = {};
// TODO pagination
const problems = await problem.getMulti(domainId, { hidden: false }).toArray();
await report({ message: `Found ${problems.length} problems in ${domainId}` });
for (const i in problems) {
const pdoc = problems[i];
runProblem(pdoc, udict, report);
if (!isSub) {
await report({
progress: Math.floor(((parseInt(i, 10) + 1) / problems.length) * 100),
});
}
}
const contests = await contest.getMulti(domainId, { rated: true }, -1).sort('endAt', -1).toArray();
await report({ message: `Found ${contests.length} contests in ${domainId}` });
for (const i in contests) {
const tdoc = contests[i];
runContest(tdoc, udict, report);
if (!isSub) {
await report({
progress: Math.floor(((parseInt(i, 10) + 1) / contests.length) * 100),
});
}
}
const tasks = [];
for (const uid in udict) {
tasks.push(domain.setUserInDomain(domainId, parseInt(uid, 10), { rating: udict[uid] }));
}
await Promise.all(tasks);
}
export async function run({ domainId }, report: Function) {
if (!domainId) {
const domains = await domain.getMulti().toArray();
await report({ message: `Found ${domains.length} domains` });
for (const i in domains) {
const start = new Date().getTime();
await runInDomain(domains[i]._id, true, report);
await report({
case: {
status: STATUS.STATUS_ACCEPTED,
judgeText: `Domain ${domains[i]._id} finished`,
time_ms: new Date().getTime() - start,
memory_kb: 0,
score: 0,
},
progress: Math.floor(((parseInt(i, 10) + 1) / domains.length) * 100),
});
}
} else runInDomain(domainId, false, report);
return true;
} }
export const validate = { export const validate = {
domainId: { $type: 'string' }, $or: [
contestId: { $type: ObjectID }, { domainId: 'string' },
{ domainId: 'undefined' },
],
}; };
global.Hydro.script.rating = { run, description, validate }; global.Hydro.script.recalcRating = { run, description, validate };
-75
View File
@@ -1,75 +0,0 @@
/* eslint-disable no-await-in-loop */
import * as domain from '../model/domain';
import * as contest from '../model/contest';
import rating from '../lib/rating';
import { STATUS } from '../model/builtin';
export const description = 'Calculate rating of a domain, or all domains';
export async function run({ domainId, isSub = false }, report: Function) {
if (!domainId) {
const domains = await domain.getMulti().toArray();
await report({ message: `Found ${domains.length} domains` });
for (const i in domains) {
const start = new Date().getTime();
await run({ domainId: domains[i]._id, isSub: true }, report);
await report({
case: {
status: STATUS.STATUS_ACCEPTED,
judgeText: `Domain ${domains[i]._id} finished`,
time_ms: new Date().getTime() - start,
memory_kb: 0,
score: 0,
},
progress: Math.floor(((parseInt(i, 10) + 1) / domains.length) * 100),
});
}
return true;
}
await domain.setMultiUserInDomain(domainId, {}, { rating: 1500 });
const contests = await contest.getMulti(domainId, { rated: true }).sort('endAt', -1).toArray();
await report({ message: `Found ${contests.length} contests in ${domainId}` });
const udict = {};
for (const i in contests) {
const start = new Date().getTime();
const tdoc = contests[i];
const tsdocs = await contest.getMultiStatus(domainId, { docId: tdoc.docId })
.sort(contest.RULES[tdoc.rule].statusSort).toArray();
const rankedTsdocs = contest.RULES[tdoc.rule].rank(tsdocs);
const users = [];
for (const result of rankedTsdocs) {
users.push({ ...result[1], rank: result[0], old: udict[result[1].uid] || 1500 });
}
const rated = rating(users);
for (const udoc of rated) {
udict[udoc.uid] = udoc.new;
}
if (!isSub) {
await report({ progress: Math.floor(((parseInt(i, 10) + 1) / contests.length) * 100) });
}
await report({
case: {
status: STATUS.STATUS_ACCEPTED,
judgeText: `Contest ${tdoc.title} finished`,
time_ms: new Date().getTime() - start,
memory_kb: 0,
score: 0,
},
});
}
const tasks = [];
for (const uid in udict) {
tasks.push(domain.setUserInDomain(domainId, parseInt(uid, 10), { rating: udict[uid] }));
}
await Promise.all(tasks);
return true;
}
export const validate = {
$or: [
{ domainId: 'string' },
{ domainId: 'undefined' },
],
};
global.Hydro.script.recalcRating = { run, description, validate };
+1
View File
@@ -1,3 +1,4 @@
// eslint-disable-next-line import/no-extraneous-dependencies
const path = require('path'); const path = require('path');
module.exports = { module.exports = {
-10
View File
@@ -120,16 +120,6 @@ export default function (env = {}) {
exclude: /node_modules[/\\]/, exclude: /node_modules[/\\]/,
use: [babelLoader()], use: [babelLoader()],
}, },
{
// fix pickadate loading
test: /pickadate/,
use: [
{
loader: 'imports-loader',
options: { define: '>false' },
},
],
},
{ {
test: /\.styl$/, test: /\.styl$/,
use: [extractCssLoader(), cssLoader(), postcssLoader(), 'stylus-loader'] use: [extractCssLoader(), cssLoader(), postcssLoader(), 'stylus-loader']
+1 -11
View File
@@ -1,4 +1,4 @@
.ReactCodeMirror .ScratchpadMonacoEditor
flex: 1 flex: 1
position: relative position: relative
overflow: hidden overflow: hidden
@@ -12,13 +12,3 @@
font-family: $code-font-family font-family: $code-font-family
font-size: rem($font-size-secondary) font-size: rem($font-size-secondary)
line-height: 1.2 line-height: 1.2
&.CodeMirror-focused .CodeMirror-selected
background: #cee4f2
.CodeMirror-gutters
border-right: 0
background: none
.CodeMirror-linenumber
color: #DDD
@@ -1,63 +0,0 @@
@import './var.inc.styl'
.scratchpad__panel-tab
margin-top: rem(-($panel-header-height))
&.rc-tabs-top
border: 0
&.rc-tabs-top .rc-tabs-bar
border: 0
.rc-tabs-bar
padding-left: rem(120px)
.rc-tabs-ink-bar
background: $tab-color
.rc-tabs-tab-prev-icon, .rc-tabs-tab-next-icon
display: none
font-family: $icon-font-name !important
line-height: rem($panel-header-height)
font-size: rem($font-size)
color: #FFF
.rc-tabs-tab-arrow-show
display: block
&.rc-tabs-top .rc-tabs-tab-prev-icon:before
content: $icon-chevron_left
&.rc-tabs-top .rc-tabs-tab-next-icon:before
content: $icon-chevron_right
.rc-tabs-content
flex: 1
.rc-tabs-tabpane
display: flex
flex-direction: column
&.rc-tabs-top .rc-tabs-tab
padding: rem(0 5px)
line-height: rem($panel-header-height)
margin: 0
margin-right: rem(5px)
color: rgba(#FFF, 0.8)
&.rc-tabs-top .rc-tabs-tab-active
&, &:hover
color: #FFF
.rc-tabs-bar, .rc-tabs-nav-container
line-height: 1
font-size: rem($font-size-small)
.rc-tabs-tab-btn-disabled
color: rgba(#FFF, 0.7)
.rc-tabs-tabpane-hidden
display: none
.rc-tabs-tabpane
overflow: auto
@@ -30,6 +30,7 @@ export default class ScratchpadEditorContainer extends React.PureComponent {
<MonacoEditor <MonacoEditor
language={languageEnum.LANG_MONACO_MODES[this.props.lang]} language={languageEnum.LANG_MONACO_MODES[this.props.lang]}
theme="vs-dark" theme="vs-dark"
class="ScratchpadMonacoEditor"
value={this.props.code} value={this.props.code}
options={getOptions(this.props.lang)} options={getOptions(this.props.lang)}
ref="editor" ref="editor"
+1
View File
@@ -64,6 +64,7 @@ export default class ScratchpadContainer extends React.PureComponent {
handleChangeSize(uiElement, size) { handleChangeSize(uiElement, size) {
this.props.changeUiSize(uiElement, size); this.props.changeUiSize(uiElement, size);
$('#scratchpad').trigger('vjScratchpadRelayout'); $('#scratchpad').trigger('vjScratchpadRelayout');
this.forceUpdate();
} }
render() { render() {
+9 -8
View File
@@ -46,17 +46,17 @@
"gulp-if": "^3.0.0", "gulp-if": "^3.0.0",
"gulp-nunjucks": "^5.0.1", "gulp-nunjucks": "^5.0.1",
"gulp-plumber": "^1.2.1", "gulp-plumber": "^1.2.1",
"gulp-svgmin": "^2.2.0", "gulp-svgmin": "^3.0.0",
"imports-loader": "^0.8.0", "imports-loader": "^1.1.0",
"js-yaml": "^3.14.0", "js-yaml": "^3.14.0",
"monaco-editor-webpack-plugin": "^1.9.0", "monaco-editor-webpack-plugin": "^1.9.0",
"optimize-css-assets-webpack-plugin": "^5.0.3", "optimize-css-assets-webpack-plugin": "^5.0.3",
"postcss-loader": "^3.0.0", "postcss-loader": "^3.0.0",
"rupture": "^0.7.1", "rupture": "^0.7.1",
"style-loader": "^1.2.1", "style-loader": "^1.2.1",
"stylus": "^0.54.5", "stylus": "^0.54.8",
"stylus-loader": "^3.0.2", "stylus-loader": "^3.0.2",
"through2": "^3.0.2", "through2": "^4.0.2",
"uglifyjs-webpack-plugin": "^2.2.0", "uglifyjs-webpack-plugin": "^2.2.0",
"vinyl-buffer": "^1.0.1", "vinyl-buffer": "^1.0.1",
"webpack": "^4.43.0", "webpack": "^4.43.0",
@@ -90,12 +90,13 @@
"react": "^16.13.1", "react": "^16.13.1",
"react-codemirror": "^1.0.0", "react-codemirror": "^1.0.0",
"react-dom": "^16.13.1", "react-dom": "^16.13.1",
"react-monaco-editor": "^0.36.0", "react-monaco-editor": "^0.39.1",
"react-redux": "^5.0.6", "react-redux": "^7.2.0",
"react-resize-detector": "^5.0.6",
"react-split-pane": "^0.1.65", "react-split-pane": "^0.1.65",
"redux": "^3.7.2", "redux": "^4.0.5",
"redux-logger": "^3.0.6", "redux-logger": "^3.0.6",
"redux-promise-middleware": "^4.3.0", "redux-promise-middleware": "^6.1.2",
"redux-thunk": "^2.2.0", "redux-thunk": "^2.2.0",
"slideout": "^1.0.1", "slideout": "^1.0.1",
"sockjs-client": "^1.3.0", "sockjs-client": "^1.3.0",
+1 -1
View File
@@ -8,7 +8,7 @@ export default async function loadReactRedux(storeReducer) {
const reduxMiddlewares = []; const reduxMiddlewares = [];
reduxMiddlewares.push(reduxThunk); reduxMiddlewares.push(reduxThunk);
reduxMiddlewares.push(reduxPromise()); reduxMiddlewares.push(reduxPromise);
if (process.env.NODE_ENV !== 'production') { if (process.env.NODE_ENV !== 'production') {
const { createLogger } = await import('redux-logger'); const { createLogger } = await import('redux-logger');
+93 -68
View File
@@ -1066,13 +1066,6 @@
core-js-pure "^3.0.0" core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.1.2", "@babel/runtime@^7.8.4":
version "7.9.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.10.2": "@babel/runtime@^7.10.2":
version "7.10.3" version "7.10.3"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364"
@@ -1080,6 +1073,20 @@
dependencies: dependencies:
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.5.5":
version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.5.tgz#303d8bd440ecd5a491eae6117fd3367698674c5c"
integrity sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.8.4":
version "7.9.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.10.4": "@babel/template@^7.10.4":
version "7.10.4" version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
@@ -4279,7 +4286,7 @@ glob-watcher@^5.0.3:
just-debounce "^1.0.0" just-debounce "^1.0.0"
object.defaults "^1.1.0" object.defaults "^1.1.0"
glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.1.6" version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
@@ -4495,13 +4502,13 @@ gulp-svgicons2svgfont@^5.0.1:
svgicons2svgfont "^9.0.3" svgicons2svgfont "^9.0.3"
vinyl "^2.1.0" vinyl "^2.1.0"
gulp-svgmin@^2.2.0: gulp-svgmin@^3.0.0:
version "2.2.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/gulp-svgmin/-/gulp-svgmin-2.2.0.tgz#eabc2b97aa4aef90c21cef65ae5499b075007323" resolved "https://registry.yarnpkg.com/gulp-svgmin/-/gulp-svgmin-3.0.0.tgz#c5fecee998f3836ad9298153c6b5f10bb96a9b85"
integrity sha512-MjfZ7DNlomplrhACwmdowPnAV3firF+3432chp1XQyy6OxbZmM7AyMwsITfglS6bGaE3msKiNeqIb0Sn3LHlyg== integrity sha512-z1eaUlkJVAX1bh7uNAWG+7IbEYEHBgj+MXgJDOrt05vJNplFPxq/+QonT29nzRmvdpzd04+JHsephGpfnwa95g==
dependencies: dependencies:
plugin-error "^1.0.1" plugin-error "^1.0.1"
svgo "^1.2.1" svgo "^1.3.2"
gulp-ttf2eot@^1.1.1: gulp-ttf2eot@^1.1.1:
version "1.1.2" version "1.1.2"
@@ -4853,13 +4860,15 @@ import-from@^2.1.0:
dependencies: dependencies:
resolve-from "^3.0.0" resolve-from "^3.0.0"
imports-loader@^0.8.0: imports-loader@^1.1.0:
version "0.8.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.8.0.tgz#030ea51b8ca05977c40a3abfd9b4088fe0be9a69" resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-1.1.0.tgz#1c3a388d0c5cd7f9eb08f3646d4aae3b70e57933"
integrity sha512-kXWL7Scp8KQ4552ZcdVTeaQCZSLW+e6nJfp3cwUMB673T7Hr98Xjx5JK+ql7ADlJUvj1JS5O01RLbKoutN5QDQ== integrity sha512-HcPM6rULdQ6EBLVq+5O+CF9xb7qiUjsRm6V28bTG/c3IU5sQkVZzUDwYY0r4jHvSAmVFdO9WA/vLAURR5WQSeQ==
dependencies: dependencies:
loader-utils "^1.0.2" loader-utils "^2.0.0"
schema-utils "^2.7.0"
source-map "^0.6.1" source-map "^0.6.1"
strip-comments "^2.0.1"
imurmurhash@^0.1.4: imurmurhash@^0.1.4:
version "0.1.4" version "0.1.4"
@@ -4889,7 +4898,7 @@ inflight@^1.0.4:
once "^1.3.0" once "^1.3.0"
wrappy "1" wrappy "1"
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4" version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -5610,7 +5619,7 @@ locate-path@^5.0.0:
dependencies: dependencies:
p-locate "^4.1.0" p-locate "^4.1.0"
lodash-es@^4.2.1: lodash-es@^4.17.15:
version "4.17.15" version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78"
integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==
@@ -5739,7 +5748,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1: lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5:
version "4.17.15" version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@@ -6038,14 +6047,14 @@ mixin-deep@^1.2.0:
for-in "^1.0.2" for-in "^1.0.2"
is-extendable "^1.0.1" is-extendable "^1.0.1"
mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1, mkdirp@~0.5.x: mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1:
version "0.5.5" version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies: dependencies:
minimist "^1.2.5" minimist "^1.2.5"
mkdirp@^1.0.3, mkdirp@^1.0.4: mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4:
version "1.0.4" version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
@@ -7270,7 +7279,7 @@ promise@^7.1.1:
dependencies: dependencies:
asap "~2.0.3" asap "~2.0.3"
prop-types@^15.5.4, prop-types@^15.5.9, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: prop-types@^15.5.4, prop-types@^15.5.9, prop-types@^15.6.2, prop-types@^15.7.2:
version "15.7.2" version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -7374,6 +7383,11 @@ querystringify@^2.1.1:
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
raf-schd@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0"
integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -7441,37 +7455,46 @@ react-dom@^16.13.1:
prop-types "^15.6.2" prop-types "^15.6.2"
scheduler "^0.19.1" scheduler "^0.19.1"
react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: react-is@^16.7.0, react-is@^16.8.1, react-is@^16.9.0:
version "16.13.1" version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: react-lifecycles-compat@^3.0.4:
version "3.0.4" version "3.0.4"
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
react-monaco-editor@^0.36.0: react-monaco-editor@^0.39.1:
version "0.36.0" version "0.39.1"
resolved "https://registry.yarnpkg.com/react-monaco-editor/-/react-monaco-editor-0.36.0.tgz#ac085c14f25fb072514c925596f6a06a711ee078" resolved "https://registry.yarnpkg.com/react-monaco-editor/-/react-monaco-editor-0.39.1.tgz#2be0edf38f62eab127214c4d930f3d3ae369bfee"
integrity sha512-JVA5SZhOoYZ0DCdTwYgagtRb3jHo4KN7TVFiJauG+ZBAJWfDSTzavPIrwzWbgu8ahhDqDk4jUcYlOJL2BC/0UA== integrity sha512-D2GKJlPxEIwkad9n1L7K/J3rLZ/UlMItS44YPO4cGQCcUJyKdwJkhOtk7q8gCqVd2uu7jyfyb8U34iSe+z9Aeg==
dependencies: dependencies:
"@types/react" "^16.x" "@types/react" "^16.x"
monaco-editor "*" monaco-editor "*"
prop-types "^15.7.2" prop-types "^15.7.2"
react-redux@^5.0.6: react-redux@^7.2.0:
version "5.1.2" version "7.2.0"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.2.tgz#b19cf9e21d694422727bf798e934a916c4080f57" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d"
integrity sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q== integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA==
dependencies: dependencies:
"@babel/runtime" "^7.1.2" "@babel/runtime" "^7.5.5"
hoist-non-react-statics "^3.3.0" hoist-non-react-statics "^3.3.0"
invariant "^2.2.4" loose-envify "^1.4.0"
loose-envify "^1.1.0" prop-types "^15.7.2"
prop-types "^15.6.1" react-is "^16.9.0"
react-is "^16.6.0"
react-lifecycles-compat "^3.0.0" react-resize-detector@^5.0.6:
version "5.0.6"
resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-5.0.6.tgz#7a5b67df1117af83249fbda8bda33df29b0b7e22"
integrity sha512-wvyK350xvq3GgRDd8ENE0T5wqTBniGhKuK0rGHeg0L79AlW+2Be6ulecGCzCpC6CE7Zshohf1GZyDaf2onoGFg==
dependencies:
lodash "^4.17.15"
lodash-es "^4.17.15"
prop-types "^15.7.2"
raf-schd "^4.0.2"
resize-observer-polyfill "^1.5.1"
react-split-pane@^0.1.65: react-split-pane@^0.1.65:
version "0.1.91" version "0.1.91"
@@ -7545,7 +7568,7 @@ read-pkg@^2.0.0:
string_decoder "~1.1.1" string_decoder "~1.1.1"
util-deprecate "~1.0.1" util-deprecate "~1.0.1"
"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0: "readable-stream@2 || 3", readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0:
version "3.6.0" version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -7601,25 +7624,23 @@ redux-logger@^3.0.6:
dependencies: dependencies:
deep-diff "^0.3.5" deep-diff "^0.3.5"
redux-promise-middleware@^4.3.0: redux-promise-middleware@^6.1.2:
version "4.4.2" version "6.1.2"
resolved "https://registry.yarnpkg.com/redux-promise-middleware/-/redux-promise-middleware-4.4.2.tgz#8defa5d1384299b99a6d2a7b4f4c21b96b3dda39" resolved "https://registry.yarnpkg.com/redux-promise-middleware/-/redux-promise-middleware-6.1.2.tgz#1c14222686934be243cbb292e348ef7d5b20d6d2"
integrity sha512-PdBYebU+pstX2/CIrHiSD0meFetsFI0P/LrtsQLfhLPxU7zJASnMdO9KSrv1fHRh0fftYMtg8HfYiyVePBcDFg== integrity sha512-ZqZu/nnSzGgwTtNbGoGVontpk7LjTOv0kigtt3CcgXI9gpq+8WlfXTXRZD0WTD5yaohRq0q2nYmJXSTjwXs83Q==
redux-thunk@^2.2.0: redux-thunk@^2.2.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==
redux@^3.7.2: redux@^4.0.5:
version "3.7.2" version "4.0.5"
resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f"
integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==
dependencies: dependencies:
lodash "^4.2.1" loose-envify "^1.4.0"
lodash-es "^4.2.1" symbol-observable "^1.2.0"
loose-envify "^1.1.0"
symbol-observable "^1.0.3"
regenerate-unicode-properties@^8.2.0: regenerate-unicode-properties@^8.2.0:
version "8.2.0" version "8.2.0"
@@ -8573,6 +8594,11 @@ strip-bom@^3.0.0:
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
strip-comments@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b"
integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==
strip-json-comments@^3.1.0: strip-json-comments@^3.1.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
@@ -8609,18 +8635,18 @@ stylus-loader@^3.0.2:
lodash.clonedeep "^4.5.0" lodash.clonedeep "^4.5.0"
when "~3.6.x" when "~3.6.x"
stylus@^0.54.5: stylus@^0.54.8:
version "0.54.7" version "0.54.8"
resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.7.tgz#c6ce4793965ee538bcebe50f31537bfc04d88cd2" resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.8.tgz#3da3e65966bc567a7b044bfe0eece653e099d147"
integrity sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug== integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==
dependencies: dependencies:
css-parse "~2.0.0" css-parse "~2.0.0"
debug "~3.1.0" debug "~3.1.0"
glob "^7.1.3" glob "^7.1.6"
mkdirp "~0.5.x" mkdirp "~1.0.4"
safer-buffer "^2.1.2" safer-buffer "^2.1.2"
sax "~1.2.4" sax "~1.2.4"
semver "^6.0.0" semver "^6.3.0"
source-map "^0.7.3" source-map "^0.7.3"
supports-color@^2.0.0: supports-color@^2.0.0:
@@ -8692,7 +8718,7 @@ svgicons2svgfont@^9.0.3:
svg-pathdata "^5.0.0" svg-pathdata "^5.0.0"
transformation-matrix-js "^2.7.1" transformation-matrix-js "^2.7.1"
svgo@^1.0.0, svgo@^1.2.1: svgo@^1.0.0, svgo@^1.3.2:
version "1.3.2" version "1.3.2"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
@@ -8716,7 +8742,7 @@ svgpath@^2.1.5:
resolved "https://registry.yarnpkg.com/svgpath/-/svgpath-2.2.3.tgz#749c673899f92c3a4fc2d5415cf85dec349d9512" resolved "https://registry.yarnpkg.com/svgpath/-/svgpath-2.2.3.tgz#749c673899f92c3a4fc2d5415cf85dec349d9512"
integrity sha512-xA0glXYpJ9SYT4JeMp3c0psbqdZsG1c0ywGvdJUPY2FKEgwJV7NgkeYuuQiOxMp+XsK9nCqjm3KDw0LkM1YLXw== integrity sha512-xA0glXYpJ9SYT4JeMp3c0psbqdZsG1c0ywGvdJUPY2FKEgwJV7NgkeYuuQiOxMp+XsK9nCqjm3KDw0LkM1YLXw==
symbol-observable@^1.0.3: symbol-observable@^1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
@@ -8840,13 +8866,12 @@ through2@^3.0.1:
dependencies: dependencies:
readable-stream "2 || 3" readable-stream "2 || 3"
through2@^3.0.2: through2@^4.0.2:
version "3.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764"
integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==
dependencies: dependencies:
inherits "^2.0.4" readable-stream "3"
readable-stream "2 || 3"
time-stamp@^1.0.0: time-stamp@^1.0.0:
version "1.1.0" version "1.1.0"