) => {
+ this.setState({ inputValue: event.target.value, loading: true }, () => this.query(event.target.value))
+ }}
+ label="Search satellites"
+ variant="standard"
+ InputProps={{
+ ...params.InputProps,
+ endAdornment: (
+
+ {loading ? : null}
+ {params.InputProps.endAdornment}
+
+ ),
+ }}
+ />
+ )}
+ />
+ }
+}
diff --git a/client/components/icons/ObserverIcon.ts b/client/components/icons/ObserverIcon.ts
new file mode 100644
index 0000000..4655478
--- /dev/null
+++ b/client/components/icons/ObserverIcon.ts
@@ -0,0 +1,7 @@
+export default new google.maps.MarkerImage(
+ '/images/observer.svg',
+ null,
+ null,
+ new google.maps.Point(20, 40),
+ new google.maps.Size(40, 40)
+)
diff --git a/client/components/icons/SatelliteMarker.ts b/client/components/icons/SatelliteMarker.ts
new file mode 100644
index 0000000..c50768a
--- /dev/null
+++ b/client/components/icons/SatelliteMarker.ts
@@ -0,0 +1,16 @@
+export interface SatelliteMarkerIconOptionsInterface {
+ color: string
+}
+
+export default (options: SatelliteMarkerIconOptionsInterface) => {
+ const { color } = options
+
+ return {
+ path: "M28.2 28.3L16.5 40l8.5 8.5 8.5 8.5 12.2-12.3L58 32.5l-8-8c-4.4-4.4-8.4-8-9-8-.6 0-6.3 5.3-12.8 11.8zM51.7 50.8L39.5 63l8.3 8.3 8.2 8.2 12.3-12.3L80.5 55l-8.3-8.3-8.2-8.2-12.3 12.3zM74 73.5l-12 12 8.5 8.5 8.5 8.5 11.7-11.7c6.5-6.5 11.8-12.2 11.8-12.8 0-1-15.1-16.5-16-16.5-.3 0-5.9 5.4-12.5 12zM118 76.4c-1.6 1-11.8 10.7-22.5 21.5L76 117.5v12l9.8 9.7 9.7 9.8h12l20.9-21c13.4-13.4 21.2-22 21.6-23.8 1.5-6-.3-9.7-8.8-18.5-10.9-11.3-16.5-13.5-23.2-9.3zM134.2 134.3L122.5 146l8.5 8.5 8.5 8.5 12.2-12.3 12.3-12.2-8-8c-4.4-4.4-8.4-8-9-8s-6.3 5.3-12.8 11.8zM55.7 136.3c-2.9 1.1-5.9 2.5-6.5 3.1-.9.9 3.3 5.6 17.1 19.4 17.5 17.4 18.4 18.1 19.8 16.2 4.4-5.9 5.3-17.8 1.8-24.8-6.2-12.3-20-18.2-32.2-13.9zM157.7 156.8L145.5 169l8.3 8.3 8.2 8.2 12.3-12.3 12.2-12.2-8.3-8.3-8.2-8.2-12.3 12.3zM180 179.5l-12 12 8.5 8.5 8.5 8.5 11.7-11.7c6.5-6.5 11.8-12.2 11.8-12.8 0-1-15.1-16.5-16-16.5-.3 0-5.9 5.4-12.5 12z",
+ strokeColor: color,
+ fillColor: color,
+ fillOpacity: 1.0,
+ scale: 0.2,
+ anchor: new google.maps.Point(100, 130)
+ }
+}
diff --git a/client/index.css b/client/index.css
new file mode 100644
index 0000000..cb06a49
--- /dev/null
+++ b/client/index.css
@@ -0,0 +1,173 @@
+html {
+ height: 100%;
+ width: 100%;
+ overflow: -moz-scrollbars-vertical;
+ overflow-y: scroll;
+}
+
+body {
+ height: 100%;
+ width: 100%;
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',
+ 'Droid Sans', 'Helvetica Neue', sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.slide-container {
+ height: calc(100% * 2 - 64px);
+}
+
+.slide-container a {
+ color: #dd361c;
+}
+
+.slide-container a:visited {
+ color: #c62d1f;
+}
+
+.slide {
+ padding: 40px 0;
+ min-height: 100vh;
+}
+
+.first-slide {
+ padding: 40px 0;
+ min-height: calc(100vh - 64px);
+}
+
+.code {
+ font-family: 'Anonymous Pro', monospace;
+ background: #f1f1f1;
+ padding: 20px 40px;
+}
+
+#root {
+ height: 100%;
+}
+
+.bg-darker {
+
+}
+
+.bg-dark {
+ background: #6e7a87;
+}
+
+.bg-white {
+ background: #fff;
+}
+
+#home-page {
+ min-height: calc(100% - 64px);
+}
+
+.tle-display .element {
+ /*border: 2px solid transparent;*/
+ border-radius: 8px;
+}
+
+.tle-display .element:hover {
+ /*border: 2px solid red;*/
+}
+
+.element {
+ border: 2px solid transparent;
+}
+
+.element-detail {
+ padding: 15px;
+}
+
+.element.name {
+ border-color: #fc8080;
+}
+
+.element.line_number {
+ border-color: #94dafb;
+}
+
+.element.satellite_id {
+ border-color: #6d838e;
+}
+
+.element.inclination {
+ border-color: #aed9c5;
+}
+
+.element.raan {
+ border-color: #fdbc3a;
+}
+
+.element.eccentricity {
+ border-color: #26a0fc;
+}
+
+.element.argument-of-perigee {
+ border-color: #cff57b;
+}
+
+.element.mean-anomaly {
+ border-color: #8b75d7;
+}
+
+.element.mean-motion {
+ border-color: #26e7a6;
+}
+
+.element.revolution-number {
+ border-color: #f2d3d9;
+}
+
+.element.epoch-year {
+ border-color: #a8e5dd;
+}
+
+.element.epoch-day {
+ border-color: #a8e5dd;
+}
+
+.element.classification {
+ border-color: #c7cbe6;
+}
+
+.element.launch-year {
+ border-color: #e1ebb9;
+}
+
+.element.launch-number {
+ border-color: #e1ebb9;
+}
+
+.element.launch-piece {
+ border-color: #e1ebb9;
+}
+
+.element.checksum {
+ border-color: #c9e7f2;
+}
+
+.element.first-derivative {
+ border-color: #c4a296;
+}
+
+.element.second-derivative {
+ border-color: #a7babe;
+}
+
+.element.drag-term {
+ border-color: #f9e0e3;
+}
+
+.element.element-number {
+ border-color: #ddd5be;
+}
+
+.element.ephemeris-type {
+ border-color: #b3b6c5;
+}
+
+.MuiAppBar-root .MuiButton-label {
+ color: #f1f1f1;
+}
diff --git a/client/index.tsx b/client/index.tsx
new file mode 100644
index 0000000..9b9d904
--- /dev/null
+++ b/client/index.tsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import './index.css';
+import App from './App';
+
+ReactDOM.render(
+ //
+ ,
+ // ,
+ document.getElementById('root')
+);
+
+// If you want to start measuring performance in your app, pass a function
+// to log results (for example: reportWebVitals(console.log))
+// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
+// reportWebVitals();
diff --git a/client/model/LatLng.ts b/client/model/LatLng.ts
new file mode 100644
index 0000000..4f4e52e
--- /dev/null
+++ b/client/model/LatLng.ts
@@ -0,0 +1,4 @@
+export interface LatLng {
+ latitude: number
+ longitude: number
+}
diff --git a/client/pages/AbstractPage.tsx b/client/pages/AbstractPage.tsx
new file mode 100644
index 0000000..59247d3
--- /dev/null
+++ b/client/pages/AbstractPage.tsx
@@ -0,0 +1,39 @@
+import React from "react";
+import {RouteComponentProps} from "react-router";
+
+export interface AbstractPagePropsInterface extends RouteComponentProps {
+
+}
+
+export interface AbstractPageStateInterface {
+ routeParams: any
+ queryParams: URLSearchParams
+}
+
+export abstract class AbstractPage extends React.Component {
+
+ readonly state = {
+ routeParams: [],
+ queryParams: new URLSearchParams(),
+ }
+
+ shouldComponentUpdate(nextProps: Readonly, nextState: Readonly, nextContext: any): boolean {
+ return (nextProps.match.params !== this.props.match.params) || (nextProps.location.search !== this.props.location.search);
+ }
+
+ public static getDerivedStateFromProps(props: Readonly, state: Readonly): AbstractPageStateInterface {
+ return {
+ routeParams: props.match.params,
+ queryParams: new URLSearchParams(props.location.search)
+ }
+ }
+
+ updateUrl(path: null, query: URLSearchParams) {
+ const { history } = this.props;
+
+ history.push({
+ pathname: history.location.pathname,
+ search: decodeURIComponent(query.toString()),
+ });
+ }
+}
diff --git a/client/pages/AbstractTlePage.tsx b/client/pages/AbstractTlePage.tsx
new file mode 100644
index 0000000..63bd1d6
--- /dev/null
+++ b/client/pages/AbstractTlePage.tsx
@@ -0,0 +1,56 @@
+import React from "react"
+import { Tle, TleProvider } from "tle-client"
+import { RouteComponentProps } from "react-router"
+
+export interface AbstractTlePageStateInterface {
+ data: any | null
+}
+
+type RouteParams = {
+ id: string
+}
+
+abstract class AbstractTlePage, S extends AbstractTlePageStateInterface> extends React.Component, S> {
+
+ protected provider: TleProvider
+
+ readonly state: any = {
+ data: null,
+ }
+
+ protected constructor(props: RouteComponentProps) {
+ super(props)
+
+ this.provider = new TleProvider()
+ }
+
+ componentWillReceiveProps(nextProps: any) {
+ if (nextProps.match.params.id !== this.props.match.params.id) {
+ const { id } = nextProps.match.params
+
+ if (id) {
+ this.provider.get(id).then(tle => this.updateTle(tle))
+ }
+ }
+ }
+
+ componentDidMount() {
+ const { id } = this.props.match.params
+
+ if (id) {
+ this.provider.get(parseInt(id)).then(tle => this.updateTle(tle))
+ }
+ }
+
+ protected updateTle = (tle: Tle | null) => {
+ if (!tle) {
+ return
+ }
+
+ this.setState({
+ data: tle
+ })
+ }
+}
+
+export default AbstractTlePage
diff --git a/client/pages/Browse.tsx b/client/pages/Browse.tsx
new file mode 100644
index 0000000..734019c
--- /dev/null
+++ b/client/pages/Browse.tsx
@@ -0,0 +1,344 @@
+import React from 'react';
+import { DataGrid, GridColDef } from '@material-ui/data-grid';
+import { Drawer, IconButton, InputAdornment, MenuItem, Select, TextField, Tooltip } from '@material-ui/core';
+import { TleProvider } from 'tle-client';
+import { If } from 'react-if';
+import { TleBrowser } from '../components/TleBrowser';
+import styled from 'styled-components';
+import ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';
+import SearchIcon from '@material-ui/icons/Search';
+import { SatellitePosition } from '../components/SatellitePosition';
+import TleApi from '../services/TleApi';
+
+const Toolbar = styled.div`
+ padding: 10px 0
+`;
+
+const DrawerHeader = styled.div`
+ padding: 20px
+`;
+
+export const RETROGRADE = 'retrograde';
+export const POSIGRADE = 'posigrade'
+
+const formatTime = (seconds: number) => {
+ const h = Math.floor(seconds / 3600)
+ const m = Math.floor((seconds % 3600) / 60)
+ const s = Math.round(seconds % 60)
+ return [
+ h,
+ m > 9 ? m : (h ? '0' + m : m || '0'),
+ s > 9 ? s : '0' + s
+ ].filter(Boolean).join(':')
+}
+
+const columns: GridColDef[] = [
+ {
+ field: 'actions',
+ headerName: 'Actions',
+ type: 'string',
+ width: 100,
+ disableColumnMenu: true,
+ disableClickEventBubbling: true,
+ sortable: false,
+ renderCell: (params) => {
+ return (
+
+
+
+
+
+ )
+ }
+ },
+ {
+ field: 'name',
+ headerName: 'Name',
+ type: 'string',
+ width: 250,
+ disableColumnMenu: true,
+ },
+ {
+ field: 'inclination',
+ headerName: 'Inclination',
+ type: 'float',
+ width: 250,
+ sortable: true,
+ disableColumnMenu: true,
+ filterable: true,
+ valueGetter: (params) => {
+ return params.row.extra.inclination.toFixed(2) + '°'
+ }
+ },
+ {
+ field: 'eccentricity',
+ headerName: 'Eccentricity',
+ type: 'float',
+ width: 250,
+ valueGetter: (params) => {
+ return params.row.extra.eccentricity
+ },
+ disableColumnMenu: true,
+ sortable: true
+ },
+ {
+ field: 'semi_major_axis',
+ headerName: 'Semi Major Axis',
+ type: 'float',
+ width: 250,
+ valueGetter: (params) => {
+ return (parseFloat(params.row.extra.semi_major_axis) / 1000).toFixed(2)
+ },
+ disableColumnMenu: true,
+ sortable: true
+ },
+ {
+ field: 'period',
+ headerName: 'Period',
+ type: 'string',
+ width: 250,
+ valueGetter: (params) => {
+ return formatTime(params.row.extra.period)
+ },
+ disableColumnMenu: true,
+ sortable: true
+ },
+ {
+ field: 'raan',
+ headerName: 'RAAN',
+ type: 'string',
+ width: 250,
+ valueGetter: (params) => {
+ return params.row.extra.raan.toFixed(2) + '°'
+ },
+ disableColumnMenu: true,
+ sortable: true
+ },
+
+]
+
+const TleBrowserWrapper = styled.div`
+ padding: 20px
+`
+
+export class Browse extends React.Component {
+
+ private static URL: string = "https://tle.ivanstanojevic.me"
+
+ private provider: TleProvider
+
+ constructor(props: any) {
+ super(props)
+
+ this.provider = new TleProvider()
+ }
+
+ public readonly state: any = {
+ data: [],
+ total: 0,
+ loading: true,
+ parameters: {
+ extra: 1,
+ },
+ orbitValue: '-',
+ open: false,
+ current: null,
+ propagation: null
+ }
+
+ componentDidMount() {
+ this.collection()
+ }
+
+ public async collection(): Promise {
+
+ this.setState({
+ loading: true,
+ })
+
+ let url: string = Browse.URL + '/api/tle'
+
+ const response = await fetch(url + '?' + new URLSearchParams(this.state.parameters).toString())
+ const data: any = await response.json()
+
+ const result: any[] = []
+
+ if (result.hasOwnProperty('member')) {
+ return result
+ }
+
+ this.setState({
+ data: data.member,
+ total: data.totalItems,
+ loading: false,
+ })
+
+ return data.member
+ }
+
+ handlePageChange = (event: any) => {
+ let parameters: any = this.state.parameters
+
+ parameters['page-size'] = event.pageSize
+
+ if (event.page > 0) {
+ parameters['page'] = event.page
+ }
+
+ this.setState({ parameters: parameters }, this.collection)
+ }
+
+ handleSortModelChange = (event: any) => {
+ let parameters: any = this.state.parameters
+
+ if (!event.sortModel.hasOwnProperty(0)) {
+ return
+ }
+
+ parameters['sort'] = event.sortModel[0].field
+ parameters['sort-dir'] = event.sortModel[0].sort
+
+ this.setState({ parameters: parameters }, this.collection)
+ }
+
+ handleModelSelectChange = (event: any) => {
+ this.provider.get(event.selectionModel[0]).then(async (current) => {
+ const date = new Date()
+
+ let propagation = null
+ if (current) {
+ propagation = await TleApi.predict(current.satelliteId, date)
+ }
+
+ this.setState({
+ propagation: propagation,
+ current: current
+ })
+ })
+
+ this.setState({
+ open: true,
+ })
+ }
+
+ toggleDrawer = () => {
+ this.setState({
+ open: !this.state.open
+ })
+ }
+
+ handleSearchChange = (event: any) => {
+ let value = event.target.value.trim()
+
+ if (value !== '') {
+ let parameters: any = this.state.parameters
+
+ parameters['search'] = value
+
+ this.setState({ parameters: parameters }, this.collection)
+ }
+ }
+
+ handleInclinationFilter = (event: any): void => {
+ let value = event.target.value.trim()
+
+ let parameters: any = this.state.parameters
+
+ if (value === RETROGRADE) {
+ parameters['inclination[gt]'] = 90
+ delete parameters['inclination[lt]']
+ }
+
+ if (value === POSIGRADE) {
+ parameters['inclination[lt]'] = 90
+ delete parameters['inclination[gt]']
+ }
+
+ if (value === '') {
+ delete parameters['inclination[lt]']
+ delete parameters['inclination[gt]']
+ }
+
+ this.setState({
+ orbitValue: value,
+ parameters: parameters
+ }, this.collection)
+ }
+
+ render() {
+ const { orbitValue } = this.state
+
+ return (
+
+
+
+
+
+ ),
+ }}
+ />
+
+
+
+ -
+
+
+ Retrograde
+
+
+ Posigrade
+
+
+
+
+
row.satelliteId}
+ rowHeight={52}
+ rowCount={this.state.total}
+ columnBuffer={8}
+ density={"standard"}
+ onPageChange={this.handlePageChange}
+ onSortModelChange={this.handleSortModelChange}
+ paginationMode={'server'}
+ disableColumnMenu={false}
+ onSelectionModelChange={this.handleModelSelectChange}
+ sortingMode={'server'}
+ sortingOrder={['desc', 'asc']}
+ disableColumnSelector={true}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ }
+}
diff --git a/client/pages/Docs.tsx b/client/pages/Docs.tsx
new file mode 100644
index 0000000..8991462
--- /dev/null
+++ b/client/pages/Docs.tsx
@@ -0,0 +1,36 @@
+import React from "react"
+import { RedocStandalone } from "redoc"
+import { isProduction } from "../util/common"
+
+const PRODUCTION_DOCS = 'https://tle.ivanstanojevic.me/api/tle.json'
+const DEVELOPMENT_DOCS = 'http://127.0.0.1:8000/api/tle.json'
+
+export class Docs extends React.Component {
+
+ render() {
+ return <>
+
+ >
+ }
+}
diff --git a/client/pages/FlyOver.tsx b/client/pages/FlyOver.tsx
new file mode 100644
index 0000000..05452ca
--- /dev/null
+++ b/client/pages/FlyOver.tsx
@@ -0,0 +1,132 @@
+import React from "react"
+import { inject, observer } from "mobx-react"
+import { RouteComponentProps } from "react-router"
+import { Observer } from "../services/Observer"
+import { FlyOverStore } from "../services/FlyOverStore"
+import { formatDiff, fromAtom } from "../util/date"
+import { GeoMap } from "../components/GeoMap"
+import { Link, List, ListItem, ListItemText } from "@material-ui/core"
+import { If } from "react-if";
+import RoomIcon from '@material-ui/icons/Room';
+import Tooltip from '@material-ui/core/Tooltip';
+
+type RouteParams = {
+ id: string
+}
+
+interface FlyOverPropsInterface extends RouteComponentProps {
+ observer: Observer,
+ flyOverStore: FlyOverStore
+}
+
+@inject('observer', 'flyOverStore')
+@observer
+export class FlyOver extends React.Component {
+
+ public constructor(props: FlyOverPropsInterface) {
+ super(props)
+
+ const { flyOverStore } = this.props
+
+ const { id } = this.props.match.params
+ flyOverStore.tle = id
+ }
+
+ async componentDidMount() {
+ //
+ // let flyOver = null
+ // if (tle) {
+ // flyOver = await TleApi.flyOver(tle, observer.position)
+ // }
+ //
+ // this.setState({ flyOver: flyOver, data: tle })
+ }
+
+ componentWillReceiveProps(nextProps: any) {
+ if (nextProps.match.params.id !== this.props.match.params.id) {
+ const { flyOverStore } = this.props
+ const { id } = nextProps.match.params
+ flyOverStore.tle = id
+ }
+ }
+
+ render() {
+ // const { flyOver, data } = this.state
+ const { observer, flyOverStore } = this.props
+
+ let flyovers = flyOverStore.flyovers.get()
+
+ if (!flyovers.hasOwnProperty('member')) {
+ return null
+ }
+
+ const timezone = flyovers.observer.timezone
+
+ let observerTime = fromAtom(flyovers.observer.date)
+
+ return (
+
+
+
+
}
+ mapElement={
}
+ />
+
+ * Click on map or drag marker to change your location
+
+
+
+
+
+
+
+
+ {flyovers.tle.name} visible flyovers for location
+
+ [ latitude: {observer.position.latitude.toFixed(2)}°,
+ longitude: {observer.position.longitude.toFixed(2)}° ]
+
+
+
+ {
+ flyovers.member.map((element: any, index: number) => {
+ let aosTime = fromAtom(element.aos.date)
+ let losTime = fromAtom(element.los.date)
+ let maxTime = fromAtom(element.max.date)
+
+ let diff = aosTime.diff(observerTime, ['days', 'hours', 'minutes', 'seconds'])
+
+ let params = new URLSearchParams({
+ 'id[]': flyOverStore.tle,
+ 'date': element.max.date,
+ })
+
+ let mapLink = '#/map?' + decodeURIComponent(params.toString())
+
+ return (
+
+
+
+
+
+
+ )
+ })
+ }
+
+
+
+ No flyovers found here.
+
+
+
+
+
+ )
+ }
+}
diff --git a/client/pages/Health.tsx b/client/pages/Health.tsx
new file mode 100644
index 0000000..701159b
--- /dev/null
+++ b/client/pages/Health.tsx
@@ -0,0 +1,84 @@
+import React from "react"
+import styled from "styled-components"
+import { Line } from "react-chartjs-2"
+
+const Badge = styled.img`
+ margin-right: 5px
+`
+
+const options = {
+ maintainAspectRatio: false,
+ title: {
+ display: true,
+ text: 'Number of requests in last three days'
+ },
+ legend: {
+ display: false,
+ },
+}
+
+export class Health extends React.Component {
+
+ public readonly state: any = { data: [], labels: [] }
+
+ componentDidMount() {
+ this.getData().then(response => {
+
+ const labels: any[] = []
+ Object.keys(response).forEach(item => {
+ let dateObject: Date = new Date(Date.parse(item))
+
+ labels.push(dateObject.toLocaleString())
+ })
+
+ this.setState({
+ data: Object.values(response),
+ labels: labels
+ })
+ })
+ }
+
+ getData = async () => {
+ const response = await fetch('https://tle.ivanstanojevic.me/api/tle/hits')
+ return await response.json()
+ }
+
+ render() {
+ let data = {
+ labels: this.state.labels,
+ datasets: [{
+ label: 'Requests',
+ data: this.state.data,
+ borderWidth: 1,
+ borderColor: 'rgba(53, 134, 77, 1)',
+ backgroundColor: 'rgba(53, 134, 77, 0.2)',
+ }]
+ }
+
+ return (
+
+ )
+ }
+}
diff --git a/client/pages/Home.tsx b/client/pages/Home.tsx
new file mode 100644
index 0000000..666ec2d
--- /dev/null
+++ b/client/pages/Home.tsx
@@ -0,0 +1,197 @@
+import React from "react"
+import { TleSelect } from "../components/TleSelect"
+import { Tle } from "tle-client"
+import { TleBrowser } from "../components/TleBrowser"
+import { TlePopularProvider } from "../services/TlePopularProvider"
+import { Button, Link, Typography, withStyles } from "@material-ui/core"
+import styled from "styled-components"
+import { device } from "../util/responsive"
+import Satellite from "../services/Satellite"
+import { If } from "react-if"
+import { SatellitePosition } from "../components/SatellitePosition"
+import AbstractTlePage, { AbstractTlePageStateInterface } from "./AbstractTlePage"
+import RoomIcon from "@material-ui/icons/Room";
+
+const styles: any = (theme: any) => ({
+ button: {
+ height: 95, // setting height/width is optional
+ },
+ label: {
+ // Aligns the content of the button vertically.
+ flexDirection: 'column'
+ },
+ icon: {
+ color: '#5ba473',
+ fontSize: '62px !important',
+ padding: 2,
+ marginBottom: theme.spacing.unit
+ }
+})
+
+const CustomButton = (props: any) => {
+ const { classes, onClick } = props;
+
+ return
+ {props.children}
+
+}
+
+const WrappedCustomButton = withStyles(styles)(CustomButton)
+
+interface HomeStateInterface extends AbstractTlePageStateInterface {
+ popular: any[]
+ propagation: any,
+}
+
+const PopularWrapper = styled.div`
+ margin-bottom: 20px;
+
+ display: grid;
+ grid-template-columns: repeat(auto-fill,minmax(260px, 5fr));
+
+ @media ${device.tablet} {
+ margin-right: 100px;
+ margin-left: 100px;
+ }
+
+ @media ${device.laptop} {
+ margin-right: 100px;
+ margin-left: 100px;
+ }
+`
+
+const CenterTitle = styled.p`
+ font-weight: bold;
+ text-align: center;
+ margin-bottom: 40px;
+`
+
+const PopularItemWrapper = styled.div``
+
+class Home extends AbstractTlePage {
+
+ private popular: TlePopularProvider
+
+ constructor(props: any) {
+ super(props)
+
+ this.popular = new TlePopularProvider()
+ }
+
+ readonly state: HomeStateInterface = {
+ propagation: null,
+ data: null,
+ popular: [],
+ }
+
+ componentDidMount() {
+ super.componentDidMount()
+ this.provider.search().then((data: any) => {
+ if (data) {
+ this.setState({ popular: data })
+ }
+ })
+ }
+
+ onChange = (tle: any | null) => {
+ if (tle === null) {
+ this.props.history.push('/')
+ } else {
+ this.props.history.push('/tle/' + tle.satelliteId)
+ }
+
+ this.updateTle(tle)
+ }
+
+ protected updateTle = (tle: Tle|null) => {
+ if (!tle) {
+ return
+ }
+
+ this.setState({
+ propagation: Satellite.sgp4(tle, new Date()),
+ data: tle
+ })
+ window.scroll({
+ top: window.innerHeight + 64,
+ behavior: 'smooth'
+ })
+ }
+
+ public render() {
+ const { data, popular, propagation } = this.state
+ const { history } = this.props
+
+ const classes: any = this.props;
+
+ return (
+
+
+
+
+
+
+
TLE API
+
+ API provides up to date NORAD two line element sets for number of Earth orbiting satellites. Data is
+ provided
+ by CelesTrak and served in web application friendly JSON format.
+ A two-line element set (TLE) is a data format encoding of orbital elements of an Earth-orbiting
+ object for a given point in time.
+
+
+
Recently popular satellites
+
+ {popular.map(item => {
+ return (
+
+ {item.name}
+
+ )
+ })}
+
+
+
Search for satellite of your interest
+
+
+
+ {data?.name &&
+
{data.name}
+
+
+ {/*
{history.push(`/map?id[]=${data.satelliteId}`)}}>*/}
+ {/* */}
+ {/* Map */}
+ {/* */}
+
+
{history.push(`/tle/${data.satelliteId}/flyover`)}}>
+
+ Flyover
+
+
+
+
Latest two line element data for selected satellite
+
+
+
+
+
+
+
+ }
+
+
+
+ )
+ }
+}
+
+export default withStyles(styles)(Home)
diff --git a/client/pages/Map.tsx b/client/pages/Map.tsx
new file mode 100644
index 0000000..b23aad5
--- /dev/null
+++ b/client/pages/Map.tsx
@@ -0,0 +1,190 @@
+import React from 'react'
+import * as satellite from 'satellite.js'
+import {twoline2satrec} from 'satellite.js'
+import {fromAtom, toAtom} from '../util/date'
+import {GeoMap} from '../components/GeoMap'
+import Marker from 'react-google-maps/lib/components/Marker'
+import SatelliteMarker from '../components/icons/SatelliteMarker'
+import {TleApi} from '../services/TleApi'
+import {If} from 'react-if'
+import Polyline from 'react-google-maps/lib/components/Polyline'
+import {IconButton, InputAdornment, Toolbar} from '@material-ui/core'
+import {DateTimePicker} from '@material-ui/pickers'
+import {MaterialUiPickersDate} from '@material-ui/pickers/typings/date'
+import AccessTimeIcon from '@material-ui/icons/AccessTime'
+import {getColor} from "../services/ColorPalette"
+import {AbstractPage, AbstractPagePropsInterface, AbstractPageStateInterface} from "./AbstractPage"
+import {TleMultiSelect} from "../components/TleMultiSelect";
+
+interface MapStateInterface extends AbstractPageStateInterface {
+ satellites: any[]
+}
+
+export class Map extends AbstractPage> {
+
+ readonly state: MapStateInterface = {
+ queryParams: new URLSearchParams(),
+ routeParams: [],
+ satellites: [],
+ }
+
+ public static getDerivedStateFromProps(props: Readonly, state: Readonly): MapStateInterface {
+ let newState: any = super.getDerivedStateFromProps(props, state)
+
+ return newState
+ }
+
+ getDate = () => {
+ let date: any = toAtom(new Date())
+
+ if (this.state.queryParams.has('date') && this.state.queryParams.get('date')) {
+ date = this.state.queryParams.get('date')?.replace(' ', '+')
+ }
+
+ return fromAtom(date).toJSDate()
+ }
+
+ shouldComponentUpdate(nextProps: Readonly, nextState: Readonly, nextContext: any): boolean {
+ let result = super.shouldComponentUpdate(nextProps, nextState, nextContext)
+
+ if (this.state.satellites.length === 0) {
+ result = true
+ }
+
+ return result
+ }
+
+ componentDidMount() {
+ this.onChange()
+ }
+
+ async componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any) {
+ await this.onChange()
+ }
+
+ onChange = async () => {
+ const {queryParams} = this.state
+
+ // let result1 = await fetch('https://tle.ivanstanojevic.me/api/tle/25544/propagate?date=' + dateParam)
+ // let response1 = await result1.json()
+ //
+ // {
+ // marker: {
+ // lat: response1.geodetic.latitude,
+ // lng: response1.geodetic.longitude,
+ // }
+ // }
+
+ const date = this.getDate()
+
+ const requestParams = new URLSearchParams()
+
+ if (queryParams.getAll('id[]').length > 0) {
+ queryParams.getAll('id[]').forEach((item: any) => requestParams.append('satellite_id[]', item))
+
+ let result2 = await fetch('https://tle.ivanstanojevic.me/api/tle?' + requestParams.toString())
+ let response2 = await result2.json()
+
+ const satellites: any = []
+ response2.member?.forEach((member: any, index: number) => {
+ const satrec = twoline2satrec(member.line1, member.line2)
+ const positionAndVelocity = satellite.propagate(satrec, date)
+ const positionEci: any = positionAndVelocity.position
+ const gmst = satellite.gstime(date)
+
+ const positionGd = satellite.eciToGeodetic(positionEci, gmst)
+
+ satellites.push({
+ color: getColor(index),
+ tle: member,
+ groundTracks: TleApi.groundTracks(member, date),
+ marker: {
+ lat: positionGd.latitude * 180 / Math.PI,
+ lng: positionGd.longitude * 180 / Math.PI,
+ },
+ })
+ })
+
+ this.setState({satellites: satellites})
+ }
+ }
+
+ handleDateChange = (event: MaterialUiPickersDate) => {
+ if (event === null) {
+ return
+ }
+
+ const {queryParams} = this.state
+
+ queryParams.set('date', toAtom(event))
+
+ super.updateUrl(null, queryParams)
+ }
+
+ render() {
+ const {satellites} = this.state
+
+ console.log(satellites)
+
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ ),
+ }}
+ />
+
+
+
+ }
+ mapElement={
}
+ >
+ {this.state.satellites.map((satellite: any, index: number) => (
+
+
+
+
+
+
+
+
+ )
+ )}
+
+ >
+ )
+ }
+}
diff --git a/client/react-app-env.d.ts b/client/react-app-env.d.ts
new file mode 100644
index 0000000..88e9c03
--- /dev/null
+++ b/client/react-app-env.d.ts
@@ -0,0 +1,2 @@
+///
+declare var google: any;
diff --git a/client/reportWebVitals.ts b/client/reportWebVitals.ts
new file mode 100644
index 0000000..49a2a16
--- /dev/null
+++ b/client/reportWebVitals.ts
@@ -0,0 +1,15 @@
+import { ReportHandler } from 'web-vitals';
+
+const reportWebVitals = (onPerfEntry?: ReportHandler) => {
+ if (onPerfEntry && onPerfEntry instanceof Function) {
+ import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
+ getCLS(onPerfEntry);
+ getFID(onPerfEntry);
+ getFCP(onPerfEntry);
+ getLCP(onPerfEntry);
+ getTTFB(onPerfEntry);
+ });
+ }
+};
+
+export default reportWebVitals;
diff --git a/client/services/ColorPalette.ts b/client/services/ColorPalette.ts
new file mode 100644
index 0000000..7a55cee
--- /dev/null
+++ b/client/services/ColorPalette.ts
@@ -0,0 +1,16 @@
+const palette = [
+ '#74BD8C',
+ '#fc8080',
+ '#fdbc3a',
+ '#f2d3d9',
+ '#b3b6c5'
+]
+
+export const getColor = (index: number): string => {
+
+ if (palette[index] !== undefined) {
+ return palette[index]
+ }
+
+ return '#74BD8C';
+}
diff --git a/client/services/FlyOverStore.ts b/client/services/FlyOverStore.ts
new file mode 100644
index 0000000..7652976
--- /dev/null
+++ b/client/services/FlyOverStore.ts
@@ -0,0 +1,21 @@
+import { makeObservable, observable } from "mobx"
+import { promisedComputed } from "computed-async-mobx"
+import TleApi from "../services/TleApi"
+import Observer from "./Observer"
+
+export class FlyOverStore {
+
+ constructor() {
+ makeObservable(this)
+ }
+
+ @observable
+ public tle: any
+
+ public flyovers = promisedComputed({}, async () => {
+ return await TleApi.flyOver(this.tle, Observer.position)
+ })
+
+}
+
+export default new FlyOverStore()
diff --git a/client/services/Observer.ts b/client/services/Observer.ts
new file mode 100644
index 0000000..daa60eb
--- /dev/null
+++ b/client/services/Observer.ts
@@ -0,0 +1,78 @@
+import { LatLng } from "../model/LatLng"
+import { action, makeObservable, observable } from "mobx"
+
+export class Observer {
+
+ @observable
+ public position: LatLng
+
+ @action
+ setPosition = (position: LatLng) => {
+ this.position = position
+
+ this.persist()
+ }
+
+ constructor() {
+ this.position = {
+ latitude: 0,
+ longitude: 0
+ }
+
+ this.restore().then(data => {
+ this.position = data.position
+ })
+
+ makeObservable(this)
+ }
+
+ protected getHtml5Geolocation = (defaultValue: LatLng): Promise => {
+ if (!navigator.geolocation) {
+ return new Promise(resolve => resolve(defaultValue))
+ }
+
+ return new Promise(resolve => {
+ navigator.geolocation.getCurrentPosition((position => {
+ resolve({
+ latitude: position.coords.latitude,
+ longitude: position.coords.longitude
+ })
+ }), () => {
+ resolve(defaultValue)
+ })
+ })
+ }
+
+ protected restore = async (): Promise => {
+ let json = localStorage.getItem('observer') || '{}'
+
+ let data
+ try {
+ data = JSON.parse(json)
+ } catch (e) {
+ data = {}
+ }
+
+ let result = {
+ position: this.position
+ }
+
+ if (data.hasOwnProperty('position')) {
+ result.position = data.position
+ } else {
+ result.position = await this.getHtml5Geolocation(this.position)
+ }
+
+ return result
+ }
+
+ protected persist = (): void => {
+ const data = {
+ position: this.position,
+ }
+
+ localStorage.setItem('observer', JSON.stringify(data))
+ }
+}
+
+export default new Observer()
diff --git a/client/services/Satellite.ts b/client/services/Satellite.ts
new file mode 100644
index 0000000..3fa7191
--- /dev/null
+++ b/client/services/Satellite.ts
@@ -0,0 +1,36 @@
+import * as satellite from 'satellite.js'
+import { Tle } from "tle-client"
+import { toAtom } from "../util/date"
+import { TleApi } from "./TleApi"
+
+export class Satellite {
+
+ public sgp4 = (tle: Tle, date: Date) => {
+ const satrec = satellite.twoline2satrec(tle.line1, tle.line2)
+
+ const positionAndVelocity = satellite.propagate(satrec, date)
+
+ const positionEci: any = positionAndVelocity.position
+ const gmst = satellite.gstime(date)
+
+ const positionGd = satellite.eciToGeodetic(positionEci, gmst)
+
+ return {
+ tle: tle,
+ parameters: {
+ satelliteId: tle.satelliteId,
+ date: toAtom(date)
+ },
+ groundTracks: TleApi.groundTracks(tle, date),
+ geodetic: {
+ latitude: positionGd.latitude * 180 / Math.PI,
+ longitude: positionGd.longitude * 180 / Math.PI,
+ }
+ }
+ }
+
+
+
+}
+
+export default new Satellite()
diff --git a/client/services/TleApi.ts b/client/services/TleApi.ts
new file mode 100644
index 0000000..131c0af
--- /dev/null
+++ b/client/services/TleApi.ts
@@ -0,0 +1,70 @@
+import { toAtom } from "../util/date"
+import { Tle } from "tle-client"
+import * as satellite from "satellite.js"
+import { TleParser } from "./TleParser"
+import { LatLng } from "../model/LatLng"
+
+export class TleApi {
+
+ static GROUND_TRACK_ORBITS = 1
+
+ predict = async (satelliteId: number, date: Date) => {
+ let atom = toAtom(date)
+
+ let result: any = await fetch(`https://tle.ivanstanojevic.me/api/tle/${satelliteId}/propagate?date=${atom}`)
+ result = await result.json()
+
+ result['groundTracks'] = TleApi.groundTracks(result.tle, date)
+
+ return result
+ }
+
+ static groundTracks(tle: Tle, date: Date) {
+ const satrec = satellite.twoline2satrec(tle.line1, tle.line2)
+
+ const period = (new TleParser(tle)).getPeriod()
+
+ let dt = 30, // time increase [seconds]
+ TO = Math.floor(period),
+ timestamp = Math.floor(date.getTime() / 1000),
+ half = Math.floor(TO / 2 * TleApi.GROUND_TRACK_ORBITS),
+ T1 = timestamp - half, // start time
+ T2 = timestamp + half, // end time
+ result: any[] = []
+
+ while (T1 < T2) {
+ let time: Date = new Date(T1 * 1000)
+
+ const positionAndVelocity: any = satellite.propagate(satrec, time)
+
+ const geodetic = satellite.eciToGeodetic(positionAndVelocity.position, satellite.gstime(date))
+
+ result.push({
+ lat: geodetic.latitude * 180 / Math.PI,
+ lng: geodetic.longitude * 180 / Math.PI,
+ })
+
+ T1 += dt
+ }
+
+ return result
+ }
+
+ flyOver = async (tle: Tle | number, position: LatLng) => {
+ let id = tle
+ if (typeof tle === "object") {
+ id = tle.satelliteId
+ }
+
+ const params = new URLSearchParams()
+ params.append('latitude', position.latitude.toString())
+ params.append('longitude', position.longitude.toString())
+
+ let result: any = await fetch(`https://tle.ivanstanojevic.me/api/tle/${id}/flyover?${params.toString()}`)
+
+ return await result.json()
+ }
+
+}
+
+export default new TleApi()
diff --git a/client/services/TleParser.ts b/client/services/TleParser.ts
new file mode 100644
index 0000000..29b89bb
--- /dev/null
+++ b/client/services/TleParser.ts
@@ -0,0 +1,119 @@
+import { Tle } from "tle-client"
+
+export enum LineNumber {
+ LINE1 = 1,
+ LINE2 = 2,
+}
+
+export class TleParser extends Tle {
+
+ getLine(lineNumber: LineNumber): string {
+ if (lineNumber === LineNumber.LINE1) {
+ return this.line1
+ } else if (lineNumber === LineNumber.LINE2) {
+ return this.line2
+ }
+
+ return ''
+ }
+
+ getLineNumberRaw(lineNumber: LineNumber): string {
+ const line = this.getLine(lineNumber)
+
+ return line.substring(0, 1).trim()
+ }
+
+ getLineChecksumRaw(lineNumber: LineNumber): string {
+ const line = this.getLine(lineNumber)
+
+ return line.substring(68, 69).trim()
+ }
+
+ getSatelliteIdRaw(lineNumber: LineNumber): string {
+ const line = this.getLine(lineNumber)
+
+ return line.substring(2, 7).trim()
+ }
+
+ /**
+ * Line 1 Data
+ */
+ getClassificationRaw(): string {
+ return this.line1.substring(7, 8).trim()
+ }
+
+ getLaunchYearRaw(fourDigits: boolean = false): string {
+ return this.line1.substring(9, 11).trim()
+ }
+
+ getLaunchNumberOfTheYearRaw(): string {
+ return this.line1.substring(11, 14).trim()
+ }
+
+ getLaunchPieceRaw(): string {
+ return this.line1.substring(14, 17).trim()
+ }
+
+ getEpochYearRaw(): string {
+ return this.line1.substring(18, 20).trim()
+ }
+
+ getEpochDayRaw(): string {
+ return this.line1.substring(20, 32).trim()
+ }
+
+ getFirstTimeDerivativeOfMeanMotionRaw(): string {
+ return this.line1.substring(33, 43).trim()
+ }
+
+ getSecondTimeDerivativeOfMeanMotionRaw(): string {
+ return this.line1.substring(44, 52).trim()
+ }
+
+ getBstarDragTermRaw(): string {
+ return this.line1.substring(53, 61).trim()
+ }
+
+ getEphemerisTypeRaw(): string {
+ return this.line1.substring(62, 63).trim()
+ }
+
+ getElementNumberRaw(): string {
+ return this.line1.substring(64, 68).trim()
+ }
+
+ /**
+ * Line 2 Data
+ */
+ getInclinationRaw(): string {
+ return this.line2.substring(8, 16).trim()
+ }
+
+ getRightAscensionOfAscendingNodeRaw(): string {
+ return this.line2.substring(17, 25).trim()
+ }
+
+ getEccentricityRaw(): string {
+ return this.line2.substring(26, 33).trim()
+ }
+
+ getArgumentOfPerigeeRaw(): string {
+ return this.line2.substring(34, 42).trim()
+ }
+
+ getMeanAnomalyRaw(): string {
+ return this.line2.substring(43, 51).trim()
+ }
+
+ getMeanMotionRaw(): string {
+ return this.line2.substring(52, 63).trim()
+ }
+
+ getPeriod(): number {
+ return 86400 / parseFloat(this.getMeanMotionRaw())
+ }
+
+ getRevolutionNumberRaw(): string {
+ return this.line2.substring(63, 68).trim()
+ }
+}
diff --git a/client/services/TlePopularProvider.ts b/client/services/TlePopularProvider.ts
new file mode 100644
index 0000000..a23222e
--- /dev/null
+++ b/client/services/TlePopularProvider.ts
@@ -0,0 +1,17 @@
+export class TlePopularProvider {
+
+ private static URL: string = "https://tle.ivanstanojevic.me"
+
+ public async get(): Promise {
+ let url: string = TlePopularProvider.URL + '/api/tle/popular'
+
+ const response = await fetch(url)
+ const data = await response.json()
+
+ if (!data) {
+ return null
+ }
+
+ return data.member
+ }
+}
diff --git a/client/tests/date.test.ts b/client/tests/date.test.ts
new file mode 100644
index 0000000..2c55574
--- /dev/null
+++ b/client/tests/date.test.ts
@@ -0,0 +1,4 @@
+
+test('Link changes the class when hovered', () => {
+
+});
diff --git a/client/util/common.ts b/client/util/common.ts
new file mode 100644
index 0000000..94b02e9
--- /dev/null
+++ b/client/util/common.ts
@@ -0,0 +1,5 @@
+export const PRODUCTION_HOST = 'tle.ivanstanojevic.me';
+
+export const isProduction = (): boolean => {
+ return window.location.host === PRODUCTION_HOST;
+}
diff --git a/client/util/date.ts b/client/util/date.ts
new file mode 100644
index 0000000..eb80186
--- /dev/null
+++ b/client/util/date.ts
@@ -0,0 +1,32 @@
+import { DateTime } from "luxon";
+import { Duration } from "luxon/src/duration";
+
+export const toAtom = (date: Date): string => {
+ // @ts-ignore
+ const luxon: any = new DateTime.fromJSDate(date);
+ let format = luxon.toFormat('yyyy-MM-dd');
+ format += 'T' + luxon.toFormat('TTZZ');
+
+ return format;
+}
+
+export const fromAtom = (date: string|null): DateTime => {
+
+ if (!date) {
+ return new DateTime();
+ }
+
+ return DateTime.fromFormat(date, "yyyy-MM-dd'T'HH:mm:ssZZ")
+}
+
+export const formatDiff = (difference: Duration): string => {
+ const diff = difference.toObject();
+
+ let result = '';
+
+ if (diff.days) {
+ result += diff.days + (diff.days > 1 ? ' days,' : ' day,');
+ }
+
+ return `${result} ${diff.hours} hours, ${diff.minutes} minutes, ${diff.seconds?.toFixed()} seconds`;
+}
diff --git a/client/util/map.ts b/client/util/map.ts
new file mode 100644
index 0000000..bf5a506
--- /dev/null
+++ b/client/util/map.ts
@@ -0,0 +1,62 @@
+export const styles = [
+ {
+ "featureType": "all",
+ "stylers": [
+ {
+ "saturation": 0
+ },
+ {
+ "hue": "#e7ecf0"
+ }
+ ]
+ },
+ {
+ "featureType": "road",
+ "stylers": [
+ {
+ "saturation": -70
+ }
+ ]
+ },
+ {
+ featureType: "administrative.country",
+ elementType: "labels",
+ stylers: [
+ { visibility: "off" }
+ ]
+ },
+ {
+ featureType: "administrative.province",
+ elementType: "labels",
+ stylers: [
+ { visibility: "off" }
+ ]
+ },
+ {
+ "featureType": "transit",
+ "stylers": [
+ {
+ "visibility": "off"
+ }
+ ]
+ },
+ {
+ "featureType": "poi",
+ "stylers": [
+ {
+ "visibility": "off"
+ }
+ ]
+ },
+ {
+ "featureType": "water",
+ "stylers": [
+ {
+ "visibility": "simplified"
+ },
+ {
+ "saturation": -60
+ }
+ ]
+ }
+]
diff --git a/client/util/responsive.ts b/client/util/responsive.ts
new file mode 100644
index 0000000..f5dad2f
--- /dev/null
+++ b/client/util/responsive.ts
@@ -0,0 +1,20 @@
+export const size = {
+ mobileS: '320px',
+ mobileM: '375px',
+ mobileL: '425px',
+ tablet: '768px',
+ laptop: '1024px',
+ laptopL: '1440px',
+ desktop: '2560px'
+}
+
+export const device = {
+ mobileS: `(min-width: ${size.mobileS})`,
+ mobileM: `(min-width: ${size.mobileM})`,
+ mobileL: `(min-width: ${size.mobileL})`,
+ tablet: `(min-width: ${size.tablet})`,
+ laptop: `(min-width: ${size.laptop})`,
+ laptopL: `(min-width: ${size.laptopL})`,
+ desktop: `(min-width: ${size.desktop})`,
+ desktopL: `(min-width: ${size.desktop})`
+};
diff --git a/composer.json b/composer.json
index 91a68f9..35ee33c 100644
--- a/composer.json
+++ b/composer.json
@@ -1,76 +1,124 @@
-{
- "type": "project",
- "license": "proprietary",
- "require": {
- "php": "^7.4",
- "ext-ctype": "*",
- "ext-iconv": "*",
- "ext-json": "*",
- "symfony/apache-pack": "^1.0",
- "symfony/asset": "5.0.*",
- "symfony/browser-kit": "5.0.*",
- "symfony/console": "5.0.*",
- "symfony/dotenv": "5.0.*",
- "symfony/flex": "^1.3.1",
- "symfony/framework-bundle": "5.0.*",
- "symfony/orm-pack": "^1.0",
- "symfony/serializer": "5.0.*",
- "symfony/twig-bundle": "5.0.*",
- "symfony/yaml": "5.0.*"
- },
- "require-dev": {
- "doctrine/doctrine-fixtures-bundle": "^3.1",
- "symfony/maker-bundle": "^1.9",
- "symfony/phpunit-bridge": "^5.0"
- },
- "config": {
- "preferred-install": {
- "*": "dist"
- },
- "sort-packages": true,
- "optimize-autoloader": true
- },
- "autoload": {
- "psr-4": {
- "App\\": "src/"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "App\\Tests\\": "tests/"
- }
- },
- "replace": {
- "paragonie/random_compat": "2.*",
- "symfony/polyfill-ctype": "*",
- "symfony/polyfill-iconv": "*",
- "symfony/polyfill-php72": "*",
- "symfony/polyfill-php71": "*",
- "symfony/polyfill-php70": "*",
- "symfony/polyfill-php56": "*"
- },
- "scripts": {
- "auto-scripts": {
- "cache:clear": "symfony-cmd",
- "assets:install %PUBLIC_DIR%": "symfony-cmd",
- "doctrine:migrations:migrate --no-interaction": "symfony-cmd",
- "cache:warmup": "symfony-cmd"
- },
- "post-install-cmd": [
- "@auto-scripts"
- ],
- "post-update-cmd": [
- "@auto-scripts"
- ]
- },
- "conflict": {
- "symfony/symfony": "*"
- },
- "extra": {
- "public-dir": "./",
- "symfony": {
- "allow-contrib": false,
- "require": "5.0.*"
- }
- }
-}
+{
+ "name": "ivanstan/tle-backend",
+ "description": "TLE API backend",
+ "type": "project",
+ "license": "proprietary",
+ "version": "1.3.2",
+ "minimum-stability": "dev",
+ "prefer-stable": true,
+ "require": {
+ "php": "^8.1",
+ "ext-ctype": "*",
+ "ext-dom": "*",
+ "ext-iconv": "*",
+ "ext-json": "*",
+ "beberlei/doctrineextensions": "^1.3",
+ "composer/package-versions-deprecated": "1.11.99.4",
+ "doctrine/annotations": "^1.13",
+ "doctrine/doctrine-bundle": "^2",
+ "doctrine/doctrine-migrations-bundle": "^3",
+ "doctrine/orm": "^2",
+ "ivanstan/symfony-support": "dev-master",
+ "ivanstan/tle-php": "dev-master",
+ "sentry/sentry-symfony": "^4.0",
+ "symfony/apache-pack": "^1.0",
+ "symfony/asset": "6.0.*",
+ "symfony/browser-kit": "6.0.*",
+ "symfony/console": "6.0.*",
+ "symfony/css-selector": "6.0.*",
+ "symfony/dotenv": "6.0.*",
+ "symfony/flex": "^1.3.1",
+ "symfony/framework-bundle": "6.0.*",
+ "symfony/monolog-bundle": "^3.7",
+ "symfony/property-access": "6.0.*",
+ "symfony/rate-limiter": "6.0.*",
+ "symfony/runtime": "6.0.*",
+ "symfony/serializer": "6.0.*",
+ "symfony/validator": "6.0.*",
+ "symfony/yaml": "6.0.*"
+ },
+ "require-dev": {
+ "doctrine/doctrine-fixtures-bundle": "^3.1",
+ "laravel/pint": "^1.2",
+ "roave/security-advisories": "dev-latest",
+ "symfony/phpunit-bridge": "^5.3"
+ },
+ "config": {
+ "preferred-install": {
+ "*": "auto"
+ },
+ "sort-packages": true,
+ "optimize-autoloader": true,
+ "allow-plugins": {
+ "composer/package-versions-deprecated": true,
+ "symfony/flex": true,
+ "symfony/runtime": true
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "App\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "App\\Tests\\": "tests/"
+ },
+ "files": [
+ "lib/predict/Predict.php",
+ "lib/predict/Predict/Time.php",
+ "lib/predict/Predict/Math.php",
+ "lib/predict/Predict/Pass.php",
+ "lib/predict/Predict/PassDetail.php",
+ "lib/predict/Predict/Vector.php",
+ "lib/predict/Predict/Geodetic.php",
+ "lib/predict/Predict/ObsSet.php",
+ "lib/predict/Predict/Solar.php",
+ "lib/predict/Predict/SGPObs.php",
+ "lib/predict/Predict/SGPSDP.php",
+ "lib/predict/Predict.php",
+ "lib/predict/Predict/Sat.php",
+ "lib/predict/Predict/QTH.php",
+ "lib/predict/Predict/Time.php",
+ "lib/predict/Predict/TLE.php",
+ "lib/predict/Predict/SGSDPStatic.php",
+ "lib/predict/Predict/SGSDPStatic.php",
+ "lib/predict/Predict/DeepArg.php",
+ "lib/predict/Predict/DeepStatic.php"
+ ]
+ },
+ "replace": {
+ "paragonie/random_compat": "2.*",
+ "symfony/polyfill-ctype": "*",
+ "symfony/polyfill-iconv": "*",
+ "symfony/polyfill-php72": "*",
+ "symfony/polyfill-php71": "*",
+ "symfony/polyfill-php70": "*",
+ "symfony/polyfill-php56": "*"
+ },
+ "scripts": {
+ "auto-scripts": {
+ "cache:clear": "symfony-cmd",
+ "cache:warmup": "symfony-cmd",
+ "assets:install %PUBLIC_DIR%": "symfony-cmd"
+ },
+ "post-install-cmd": [
+ "@auto-scripts"
+ ],
+ "post-update-cmd": [
+ "@auto-scripts"
+ ],
+ "test": "XDEBUG_MODE=coverage php bin/phpunit --coverage-text --coverage-html ./coverage",
+ "deploy": "dep deploy"
+ },
+ "conflict": {
+ "symfony/symfony": "*"
+ },
+ "extra": {
+ "public-dir": "./public",
+ "symfony": {
+ "allow-contrib": false,
+ "require": "6.0.*"
+ }
+ }
+}
diff --git a/composer.lock b/composer.lock
index 568f416..edb3fe7 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,36 +4,232 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "ad45ae0642275997354a798821f94a16",
+ "content-hash": "668607f6bdda492cf188a9ddf086b40e",
"packages": [
{
- "name": "doctrine/annotations",
- "version": "v1.8.0",
+ "name": "beberlei/doctrineextensions",
+ "version": "v1.3.0",
"source": {
"type": "git",
- "url": "https://github.com/doctrine/annotations.git",
- "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc"
+ "url": "https://github.com/beberlei/DoctrineExtensions.git",
+ "reference": "008f162f191584a6c37c03a803f718802ba9dd9a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/904dca4eb10715b92569fbcd79e201d5c349b6bc",
- "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc",
+ "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/008f162f191584a6c37c03a803f718802ba9dd9a",
+ "reference": "008f162f191584a6c37c03a803f718802ba9dd9a",
"shasum": ""
},
"require": {
- "doctrine/lexer": "1.*",
- "php": "^7.1"
+ "doctrine/orm": "^2.7",
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.14",
+ "nesbot/carbon": "*",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "symfony/yaml": "^4.2 || ^5.0",
+ "zf1/zend-date": "^1.12",
+ "zf1/zend-registry": "^1.12"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DoctrineExtensions\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Steve Lacey",
+ "email": "steve@steve.ly"
+ }
+ ],
+ "description": "A set of extensions to Doctrine 2 that add support for additional query functions available in MySQL, Oracle, PostgreSQL and SQLite.",
+ "keywords": [
+ "database",
+ "doctrine",
+ "orm"
+ ],
+ "support": {
+ "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.3.0"
+ },
+ "time": "2020-11-29T07:37:23+00:00"
+ },
+ {
+ "name": "clue/stream-filter",
+ "version": "v1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/clue/stream-filter.git",
+ "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/clue/stream-filter/zipball/aeb7d8ea49c7963d3b581378955dbf5bc49aa320",
+ "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
},
"require-dev": {
- "doctrine/cache": "1.*",
- "phpunit/phpunit": "^7.5"
+ "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36"
},
"type": "library",
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "Clue\\StreamFilter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering"
+ }
+ ],
+ "description": "A simple and modern approach to stream filtering in PHP",
+ "homepage": "https://github.com/clue/php-stream-filter",
+ "keywords": [
+ "bucket brigade",
+ "callback",
+ "filter",
+ "php_user_filter",
+ "stream",
+ "stream_filter_append",
+ "stream_filter_register"
+ ],
+ "support": {
+ "issues": "https://github.com/clue/stream-filter/issues",
+ "source": "https://github.com/clue/stream-filter/tree/v1.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://clue.engineering/support",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/clue",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-02T12:38:20+00:00"
+ },
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "b174585d1fe49ceed21928a945138948cb394600"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600",
+ "reference": "b174585d1fe49ceed21928a945138948cb394600",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13",
+ "phpunit/phpunit": "^6.5 || ^7"
+ },
+ "type": "composer-plugin",
"extra": {
+ "class": "PackageVersions\\Installer",
"branch-alias": {
- "dev-master": "1.7.x-dev"
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "support": {
+ "issues": "https://github.com/composer/package-versions-deprecated/issues",
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
}
+ ],
+ "time": "2021-09-13T08:41:34+00:00"
+ },
+ {
+ "name": "doctrine/annotations",
+ "version": "1.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "ext-tokenizer": "*",
+ "php": "^7.1 || ^8.0",
+ "psr/cache": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "doctrine/cache": "^1.11 || ^2.0",
+ "doctrine/coding-standard": "^6.0 || ^8.1",
+ "phpstan/phpstan": "^0.12.20",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5",
+ "symfony/cache": "^4.4 || ^5.2"
},
+ "type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
@@ -66,50 +262,53 @@
}
],
"description": "Docblock Annotations Parser",
- "homepage": "http://www.doctrine-project.org",
+ "homepage": "https://www.doctrine-project.org/projects/annotations.html",
"keywords": [
"annotations",
"docblock",
"parser"
],
- "time": "2019-10-01T18:55:10+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/annotations/issues",
+ "source": "https://github.com/doctrine/annotations/tree/1.13.2"
+ },
+ "time": "2021-08-05T19:00:23+00:00"
},
{
"name": "doctrine/cache",
- "version": "1.10.0",
+ "version": "2.1.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
- "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62"
+ "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62",
- "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce",
+ "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce",
"shasum": ""
},
"require": {
- "php": "~7.1"
+ "php": "~7.1 || ^8.0"
},
"conflict": {
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
- "doctrine/coding-standard": "^6.0",
+ "cache/integration-tests": "dev-master",
+ "doctrine/coding-standard": "^8.0",
"mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0",
- "predis/predis": "~1.0"
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "predis/predis": "~1.0",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0",
+ "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev",
+ "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev"
},
"suggest": {
"alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
@@ -154,37 +353,50 @@
"redis",
"xcache"
],
- "time": "2019-11-29T15:36:20+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/cache/issues",
+ "source": "https://github.com/doctrine/cache/tree/2.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-17T14:49:29+00:00"
},
{
"name": "doctrine/collections",
- "version": "1.6.4",
+ "version": "1.6.8",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
- "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7"
+ "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7",
- "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af",
+ "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af",
"shasum": ""
},
"require": {
- "php": "^7.1.3"
+ "php": "^7.1.3 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan-shim": "^0.9.2",
- "phpunit/phpunit": "^7.0",
- "vimeo/psalm": "^3.2.2"
+ "doctrine/coding-standard": "^9.0",
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5",
+ "vimeo/psalm": "^4.2.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.6.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections"
@@ -224,47 +436,40 @@
"iterators",
"php"
],
- "time": "2019-11-13T13:07:11+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/collections/issues",
+ "source": "https://github.com/doctrine/collections/tree/1.6.8"
+ },
+ "time": "2021-08-10T18:51:53+00:00"
},
{
"name": "doctrine/common",
- "version": "v2.11.0",
+ "version": "3.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
- "reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff"
+ "reference": "295082d3750987065912816a9d536c2df735f637"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/common/zipball/b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff",
- "reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/295082d3750987065912816a9d536c2df735f637",
+ "reference": "295082d3750987065912816a9d536c2df735f637",
"shasum": ""
},
"require": {
- "doctrine/annotations": "^1.0",
- "doctrine/cache": "^1.0",
- "doctrine/collections": "^1.0",
- "doctrine/event-manager": "^1.0",
- "doctrine/inflector": "^1.0",
- "doctrine/lexer": "^1.0",
- "doctrine/persistence": "^1.1",
- "doctrine/reflection": "^1.0",
- "php": "^7.1"
+ "doctrine/persistence": "^2.0",
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^1.0",
- "phpstan/phpstan": "^0.11",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpunit/phpunit": "^7.0",
+ "doctrine/coding-standard": "^9.0",
+ "phpstan/phpstan": "^1.4.1",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0",
"squizlabs/php_codesniffer": "^3.0",
- "symfony/phpunit-bridge": "^4.0.5"
+ "symfony/phpunit-bridge": "^4.0.5",
+ "vimeo/psalm": "^4.4"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.11.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
@@ -300,41 +505,67 @@
"email": "ocramius@gmail.com"
}
],
- "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.",
+ "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.",
"homepage": "https://www.doctrine-project.org/projects/common.html",
"keywords": [
"common",
"doctrine",
"php"
],
- "time": "2019-09-10T10:10:14+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/common/issues",
+ "source": "https://github.com/doctrine/common/tree/3.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-02T09:15:57+00:00"
},
{
"name": "doctrine/dbal",
- "version": "v2.10.0",
+ "version": "3.3.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934"
+ "reference": "35eae239ef515d55ebb24e9d4715cad09a4f58ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
- "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/35eae239ef515d55ebb24e9d4715cad09a4f58ed",
+ "reference": "35eae239ef515d55ebb24e9d4715cad09a4f58ed",
"shasum": ""
},
"require": {
- "doctrine/cache": "^1.0",
+ "composer-runtime-api": "^2",
+ "doctrine/cache": "^1.11|^2.0",
+ "doctrine/deprecations": "^0.5.3",
"doctrine/event-manager": "^1.0",
- "ext-pdo": "*",
- "php": "^7.2"
+ "php": "^7.3 || ^8.0",
+ "psr/cache": "^1|^2|^3",
+ "psr/log": "^1|^2|^3"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "jetbrains/phpstorm-stubs": "^2019.1",
- "phpstan/phpstan": "^0.11.3",
- "phpunit/phpunit": "^8.4.1",
- "symfony/console": "^2.0.5|^3.0|^4.0|^5.0"
+ "doctrine/coding-standard": "9.0.0",
+ "jetbrains/phpstorm-stubs": "2021.1",
+ "phpstan/phpstan": "1.4.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "phpunit/phpunit": "9.5.11",
+ "psalm/plugin-phpunit": "0.16.1",
+ "squizlabs/php_codesniffer": "3.6.2",
+ "symfony/cache": "^5.2|^6.0",
+ "symfony/console": "^2.7|^3.0|^4.0|^5.0|^6.0",
+ "vimeo/psalm": "4.16.1"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
@@ -343,15 +574,9 @@
"bin/doctrine-dbal"
],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.10.x-dev",
- "dev-develop": "3.0.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
+ "Doctrine\\DBAL\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -394,67 +619,131 @@
"queryobject",
"sasql",
"sql",
- "sqlanywhere",
"sqlite",
"sqlserver",
"sqlsrv"
],
- "time": "2019-11-03T16:50:43+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/dbal/issues",
+ "source": "https://github.com/doctrine/dbal/tree/3.3.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-05T16:33:45+00:00"
+ },
+ {
+ "name": "doctrine/deprecations",
+ "version": "v0.5.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/deprecations.git",
+ "reference": "9504165960a1f83cc1480e2be1dd0a0478561314"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314",
+ "reference": "9504165960a1f83cc1480e2be1dd0a0478561314",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1|^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0|^7.0|^8.0",
+ "phpunit/phpunit": "^7.0|^8.0|^9.0",
+ "psr/log": "^1.0"
+ },
+ "suggest": {
+ "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
+ "homepage": "https://www.doctrine-project.org/",
+ "support": {
+ "issues": "https://github.com/doctrine/deprecations/issues",
+ "source": "https://github.com/doctrine/deprecations/tree/v0.5.3"
+ },
+ "time": "2021-03-21T12:59:47+00:00"
},
{
"name": "doctrine/doctrine-bundle",
- "version": "2.0.6",
+ "version": "2.5.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineBundle.git",
- "reference": "0ef972d3b730f975c80db9fffa4b2a0258c91442"
+ "reference": "f1423b2a640b6ac545b6e0c02575427a4dc1e9dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0ef972d3b730f975c80db9fffa4b2a0258c91442",
- "reference": "0ef972d3b730f975c80db9fffa4b2a0258c91442",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/f1423b2a640b6ac545b6e0c02575427a4dc1e9dc",
+ "reference": "f1423b2a640b6ac545b6e0c02575427a4dc1e9dc",
"shasum": ""
},
"require": {
- "doctrine/dbal": "^2.9.0",
- "doctrine/persistence": "^1.3.3",
- "jdorn/sql-formatter": "^1.2.16",
- "php": "^7.1",
- "symfony/cache": "^4.3.3|^5.0",
- "symfony/config": "^4.3.3|^5.0",
- "symfony/console": "^3.4.30|^4.3.3|^5.0",
- "symfony/dependency-injection": "^4.3.3|^5.0",
- "symfony/doctrine-bridge": "^4.3.7|^5.0",
- "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0",
- "symfony/service-contracts": "^1.1.1|^2.0"
+ "doctrine/annotations": "^1",
+ "doctrine/cache": "^1.11 || ^2.0",
+ "doctrine/dbal": "^2.13.1|^3.3.2",
+ "doctrine/persistence": "^2.2",
+ "doctrine/sql-formatter": "^1.0.1",
+ "php": "^7.1 || ^8.0",
+ "symfony/cache": "^4.3.3|^5.0|^6.0",
+ "symfony/config": "^4.4.3|^5.0|^6.0",
+ "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4.18|^5.0|^6.0",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0",
+ "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0",
+ "symfony/service-contracts": "^1.1.1|^2.0|^3"
},
"conflict": {
- "doctrine/orm": "<2.6",
+ "doctrine/orm": "<2.9|>=3.0",
"twig/twig": "<1.34|>=2.0,<2.4"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "doctrine/orm": "^2.6",
- "ocramius/proxy-manager": "^2.1",
- "phpunit/phpunit": "^7.5",
- "symfony/phpunit-bridge": "^4.2",
- "symfony/property-info": "^4.3.3|^5.0",
- "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0",
- "symfony/validator": "^3.4.30|^4.3.3|^5.0",
- "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0",
- "symfony/yaml": "^3.4.30|^4.3.3|^5.0",
- "twig/twig": "^1.34|^2.12"
+ "doctrine/coding-standard": "^9.0",
+ "doctrine/orm": "^2.9 || ^3.0",
+ "friendsofphp/proxy-manager-lts": "^1.0",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0",
+ "psalm/plugin-phpunit": "^0.16.1",
+ "psalm/plugin-symfony": "^3",
+ "symfony/phpunit-bridge": "^5.2|^6.0",
+ "symfony/property-info": "^4.3.3|^5.0|^6.0",
+ "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0",
+ "symfony/security-bundle": "^4.4|^5.0|^6.0",
+ "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0",
+ "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0",
+ "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0",
+ "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0",
+ "twig/twig": "^1.34|^2.12|^3.0",
+ "vimeo/psalm": "^4.7"
},
"suggest": {
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
+ "ext-pdo": "*",
"symfony/web-profiler-bundle": "To use the data collector."
},
"type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\DoctrineBundle\\": ""
@@ -475,56 +764,73 @@
},
{
"name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
+ "homepage": "https://symfony.com/contributors"
},
{
"name": "Doctrine Project",
- "homepage": "http://www.doctrine-project.org/"
+ "homepage": "https://www.doctrine-project.org/"
}
],
"description": "Symfony DoctrineBundle",
- "homepage": "http://www.doctrine-project.org",
+ "homepage": "https://www.doctrine-project.org",
"keywords": [
"database",
"dbal",
"orm",
"persistence"
],
- "time": "2019-12-19T13:47:07+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/DoctrineBundle/issues",
+ "source": "https://github.com/doctrine/DoctrineBundle/tree/2.5.6"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-bundle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-13T20:17:53+00:00"
},
{
"name": "doctrine/doctrine-migrations-bundle",
- "version": "2.1.2",
+ "version": "3.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineMigrationsBundle.git",
- "reference": "856437e8de96a70233e1f0cc2352fc8dd15a899d"
+ "reference": "3393f411ba25ade21969c33f2053220044854d01"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/856437e8de96a70233e1f0cc2352fc8dd15a899d",
- "reference": "856437e8de96a70233e1f0cc2352fc8dd15a899d",
+ "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/3393f411ba25ade21969c33f2053220044854d01",
+ "reference": "3393f411ba25ade21969c33f2053220044854d01",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "~1.0|~2.0",
- "doctrine/migrations": "^2.2",
- "php": "^7.1",
- "symfony/framework-bundle": "~3.4|~4.0|~5.0"
+ "doctrine/migrations": "^3.2",
+ "php": "^7.2|^8.0",
+ "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0"
},
"require-dev": {
- "doctrine/coding-standard": "^5.0",
- "mikey179/vfsstream": "^1.6",
- "phpstan/phpstan": "^0.9.2",
- "phpstan/phpstan-strict-rules": "^0.9",
- "phpunit/phpunit": "^6.4|^7.0"
+ "doctrine/coding-standard": "^8.0",
+ "doctrine/orm": "^2.6",
+ "doctrine/persistence": "^1.3||^2.0",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-deprecation-rules": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpstan/phpstan-strict-rules": "^0.12",
+ "phpunit/phpunit": "^8.0|^9.0",
+ "vimeo/psalm": "^4.11"
},
"type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\MigrationsBundle\\": ""
@@ -544,11 +850,11 @@
},
{
"name": "Doctrine Project",
- "homepage": "http://www.doctrine-project.org"
+ "homepage": "https://www.doctrine-project.org"
},
{
"name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
+ "homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony DoctrineMigrationsBundle",
@@ -558,24 +864,42 @@
"migrations",
"schema"
],
- "time": "2019-11-13T12:57:41+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues",
+ "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-migrations-bundle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-01T18:08:07+00:00"
},
{
"name": "doctrine/event-manager",
- "version": "1.1.0",
+ "version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
- "reference": "629572819973f13486371cb611386eb17851e85c"
+ "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c",
- "reference": "629572819973f13486371cb611386eb17851e85c",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f",
+ "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/common": "<2.9@dev"
@@ -634,37 +958,55 @@
"event system",
"events"
],
- "time": "2019-11-10T09:48:07+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/event-manager/issues",
+ "source": "https://github.com/doctrine/event-manager/tree/1.1.x"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-29T18:28:51+00:00"
},
{
"name": "doctrine/inflector",
- "version": "1.3.1",
+ "version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1"
+ "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
- "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
+ "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": "^7.2 || ^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.2"
+ "doctrine/coding-standard": "^8.2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpstan/phpstan-strict-rules": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "vimeo/psalm": "^4.10"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -693,48 +1035,67 @@
"email": "schmittjoh@gmail.com"
}
],
- "description": "Common String Manipulations with regard to casing and singular/plural rules.",
- "homepage": "http://www.doctrine-project.org",
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
"keywords": [
"inflection",
- "pluralize",
- "singularize",
- "string"
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
],
- "time": "2019-10-30T19:59:35+00:00"
- },
- {
- "name": "doctrine/instantiator",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/2.0.4"
},
- "dist": {
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-22T20:16:43+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ },
+ "dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
+ "doctrine/coding-standard": "^8.0",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.13",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-shim": "^0.11",
- "phpunit/phpunit": "^7.0"
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
@@ -748,7 +1109,7 @@
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
+ "homepage": "https://ocramius.github.io/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
@@ -757,36 +1118,50 @@
"constructor",
"instantiate"
],
- "time": "2019-10-21T16:45:58+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
},
{
"name": "doctrine/lexer",
- "version": "1.2.0",
+ "version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
- "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6"
+ "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6",
- "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c",
+ "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c",
"shasum": ""
},
"require": {
- "php": "^7.2"
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan": "^0.11.8",
- "phpunit/phpunit": "^8.2"
+ "doctrine/coding-standard": "^9.0",
+ "phpstan/phpstan": "1.3",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.11"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
@@ -819,46 +1194,70 @@
"parser",
"php"
],
- "time": "2019-10-30T14:39:59+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/lexer/issues",
+ "source": "https://github.com/doctrine/lexer/tree/1.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-12T08:27:12+00:00"
},
{
"name": "doctrine/migrations",
- "version": "2.2.0",
+ "version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/migrations.git",
- "reference": "8e124252d2f6be1124017d746d5994dd4095d66f"
+ "reference": "e7df670aa9565b435ffec636cebdb4d0a1987f10"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/migrations/zipball/8e124252d2f6be1124017d746d5994dd4095d66f",
- "reference": "8e124252d2f6be1124017d746d5994dd4095d66f",
+ "url": "https://api.github.com/repos/doctrine/migrations/zipball/e7df670aa9565b435ffec636cebdb4d0a1987f10",
+ "reference": "e7df670aa9565b435ffec636cebdb4d0a1987f10",
"shasum": ""
},
"require": {
- "doctrine/dbal": "^2.9",
- "ocramius/package-versions": "^1.3",
- "ocramius/proxy-manager": "^2.0.2",
- "php": "^7.1",
- "symfony/console": "^3.4||^4.0||^5.0",
- "symfony/stopwatch": "^3.4||^4.0||^5.0"
+ "composer-runtime-api": "^2",
+ "doctrine/dbal": "^2.11 || ^3.0",
+ "doctrine/deprecations": "^0.5.3",
+ "doctrine/event-manager": "^1.0",
+ "friendsofphp/proxy-manager-lts": "^1.0",
+ "php": "^7.2 || ^8.0",
+ "psr/log": "^1.1.3 || ^2 || ^3",
+ "symfony/console": "^3.4 || ^4.4.16 || ^5.0 || ^6.0",
+ "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0 || ^6.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
+ "doctrine/coding-standard": "^8.0",
"doctrine/orm": "^2.6",
+ "doctrine/persistence": "^1.3 || ^2.0",
+ "doctrine/sql-formatter": "^1.0",
+ "ergebnis/composer-normalize": "^2.9",
"ext-pdo_sqlite": "*",
- "jdorn/sql-formatter": "^1.1",
- "mikey179/vfsstream": "^1.6",
- "phpstan/phpstan": "^0.10",
- "phpstan/phpstan-deprecation-rules": "^0.10",
- "phpstan/phpstan-phpunit": "^0.10",
- "phpstan/phpstan-strict-rules": "^0.10",
- "phpunit/phpunit": "^7.0",
- "symfony/process": "^3.4||^4.0||^5.0",
- "symfony/yaml": "^3.4||^4.0||^5.0"
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-deprecation-rules": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpstan/phpstan-strict-rules": "^0.12",
+ "phpstan/phpstan-symfony": "^0.12",
+ "phpunit/phpunit": "^8.5 || ^9.4",
+ "symfony/cache": "^3.4.26 || ^4.2.12 || ^5.0 || ^6.0",
+ "symfony/process": "^3.4 || ^4.0 || ^5.0 || ^6.0",
+ "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0"
},
"suggest": {
- "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.",
+ "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.",
"symfony/yaml": "Allows the use of yaml for migration configuration files."
},
"bin": [
@@ -866,8 +1265,9 @@
],
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "2.2.x-dev"
+ "composer-normalize": {
+ "indent-size": 4,
+ "indent-style": "space"
}
},
"autoload": {
@@ -898,55 +1298,84 @@
"keywords": [
"database",
"dbal",
- "migrations",
- "php"
+ "migrations"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/migrations/issues",
+ "source": "https://github.com/doctrine/migrations/tree/3.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations",
+ "type": "tidelift"
+ }
],
- "time": "2019-11-13T11:06:31+00:00"
+ "time": "2022-01-28T21:58:35+00:00"
},
{
"name": "doctrine/orm",
- "version": "v2.7.0",
+ "version": "2.11.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
- "reference": "4d763ca4c925f647b248b9fa01b5f47aa3685d62"
+ "reference": "4b88ce787d3916c8366abf52f6c658a7a27ed3a6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/orm/zipball/4d763ca4c925f647b248b9fa01b5f47aa3685d62",
- "reference": "4d763ca4c925f647b248b9fa01b5f47aa3685d62",
+ "url": "https://api.github.com/repos/doctrine/orm/zipball/4b88ce787d3916c8366abf52f6c658a7a27ed3a6",
+ "reference": "4b88ce787d3916c8366abf52f6c658a7a27ed3a6",
"shasum": ""
},
"require": {
- "doctrine/annotations": "^1.8",
- "doctrine/cache": "^1.9.1",
+ "composer-runtime-api": "^2",
+ "doctrine/cache": "^1.12.1 || ^2.1.1",
"doctrine/collections": "^1.5",
- "doctrine/common": "^2.11",
- "doctrine/dbal": "^2.9.3",
+ "doctrine/common": "^3.0.3",
+ "doctrine/dbal": "^2.13.1 || ^3.2",
+ "doctrine/deprecations": "^0.5.3",
"doctrine/event-manager": "^1.1",
+ "doctrine/inflector": "^1.4 || ^2.0",
"doctrine/instantiator": "^1.3",
- "doctrine/persistence": "^1.2",
+ "doctrine/lexer": "^1.0",
+ "doctrine/persistence": "^2.2",
+ "ext-ctype": "*",
"ext-pdo": "*",
- "php": "^7.1",
- "symfony/console": "^3.0|^4.0|^5.0"
+ "php": "^7.1 || ^8.0",
+ "psr/cache": "^1 || ^2 || ^3",
+ "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0",
+ "symfony/polyfill-php72": "^1.23",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.13 || >= 2.0"
},
"require-dev": {
- "doctrine/coding-standard": "^5.0",
- "phpunit/phpunit": "^7.5",
- "symfony/yaml": "^3.4|^4.0|^5.0"
+ "doctrine/annotations": "^1.13",
+ "doctrine/coding-standard": "^9.0",
+ "phpbench/phpbench": "^0.16.10 || ^1.0",
+ "phpstan/phpstan": "1.4.3",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4",
+ "squizlabs/php_codesniffer": "3.6.2",
+ "symfony/cache": "^4.4 || ^5.4 || ^6.0",
+ "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0",
+ "vimeo/psalm": "4.19.0"
},
"suggest": {
+ "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0",
"symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
},
"bin": [
"bin/doctrine"
],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\ORM\\": "lib/Doctrine/ORM"
@@ -984,44 +1413,49 @@
"database",
"orm"
],
- "time": "2019-11-19T08:38:05+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/orm/issues",
+ "source": "https://github.com/doctrine/orm/tree/2.11.1"
+ },
+ "time": "2022-01-30T21:47:06+00:00"
},
{
"name": "doctrine/persistence",
- "version": "1.3.3",
+ "version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
- "reference": "99b196bbd4715a94fa100fac664a351ffa46d6a5"
+ "reference": "f8af155c1e7963f3d2b4415097d55757bbaa53d8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/persistence/zipball/99b196bbd4715a94fa100fac664a351ffa46d6a5",
- "reference": "99b196bbd4715a94fa100fac664a351ffa46d6a5",
+ "url": "https://api.github.com/repos/doctrine/persistence/zipball/f8af155c1e7963f3d2b4415097d55757bbaa53d8",
+ "reference": "f8af155c1e7963f3d2b4415097d55757bbaa53d8",
"shasum": ""
},
"require": {
- "doctrine/annotations": "^1.0",
- "doctrine/cache": "^1.0",
+ "doctrine/cache": "^1.11 || ^2.0",
"doctrine/collections": "^1.0",
+ "doctrine/deprecations": "^0.5.3",
"doctrine/event-manager": "^1.0",
- "doctrine/reflection": "^1.0",
- "php": "^7.1"
+ "php": "^7.1 || ^8.0",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0"
},
"conflict": {
+ "doctrine/annotations": "<1.0 || >=2.0",
"doctrine/common": "<2.10@dev"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan": "^0.11",
- "phpunit/phpunit": "^7.0"
+ "composer/package-versions-deprecated": "^1.11",
+ "doctrine/annotations": "^1.0",
+ "doctrine/coding-standard": "^6.0 || ^9.0",
+ "doctrine/common": "^3.0",
+ "phpstan/phpstan": "1.2.0",
+ "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0",
+ "symfony/cache": "^4.4 || ^5.0 || ^6.0",
+ "vimeo/psalm": "4.13.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common",
@@ -1067,44 +1501,39 @@
"orm",
"persistence"
],
- "time": "2019-12-13T10:43:02+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/persistence/issues",
+ "source": "https://github.com/doctrine/persistence/tree/2.3.0"
+ },
+ "time": "2022-01-09T19:58:46+00:00"
},
{
- "name": "doctrine/reflection",
- "version": "v1.0.0",
+ "name": "doctrine/sql-formatter",
+ "version": "1.1.2",
"source": {
"type": "git",
- "url": "https://github.com/doctrine/reflection.git",
- "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6"
+ "url": "https://github.com/doctrine/sql-formatter.git",
+ "reference": "20c39c2de286a9d3262cc8ed282a4ae60e265894"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6",
- "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6",
+ "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/20c39c2de286a9d3262cc8ed282a4ae60e265894",
+ "reference": "20c39c2de286a9d3262cc8ed282a4ae60e265894",
"shasum": ""
},
"require": {
- "doctrine/annotations": "^1.0",
- "ext-tokenizer": "*",
- "php": "^7.1"
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^4.0",
- "doctrine/common": "^2.8",
- "phpstan/phpstan": "^0.9.2",
- "phpstan/phpstan-phpunit": "^0.9.4",
- "phpunit/phpunit": "^7.0",
- "squizlabs/php_codesniffer": "^3.0"
+ "bamarni/composer-bin-plugin": "^1.4"
},
+ "bin": [
+ "bin/sql-formatter"
+ ],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
+ "Doctrine\\SqlFormatter\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1113,67 +1542,64 @@
],
"authors": [
{
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- },
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
+ "name": "Jeremy Dorn",
+ "email": "jeremy@jeremydorn.com",
+ "homepage": "http://jeremydorn.com/"
}
],
- "description": "Doctrine Reflection component",
- "homepage": "https://www.doctrine-project.org/projects/reflection.html",
+ "description": "a PHP SQL highlighting library",
+ "homepage": "https://github.com/doctrine/sql-formatter/",
"keywords": [
- "reflection"
+ "highlight",
+ "sql"
],
- "time": "2018-06-14T14:45:07+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/sql-formatter/issues",
+ "source": "https://github.com/doctrine/sql-formatter/tree/1.1.2"
+ },
+ "time": "2021-11-05T11:11:14+00:00"
},
{
- "name": "jdorn/sql-formatter",
- "version": "v1.2.17",
+ "name": "friendsofphp/proxy-manager-lts",
+ "version": "v1.0.5",
"source": {
"type": "git",
- "url": "https://github.com/jdorn/sql-formatter.git",
- "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
+ "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git",
+ "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
- "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f",
+ "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f",
"shasum": ""
},
"require": {
- "php": ">=5.2.4"
+ "laminas/laminas-code": "~3.4.1|^4.0",
+ "php": ">=7.1",
+ "symfony/filesystem": "^4.4.17|^5.0|^6.0"
+ },
+ "conflict": {
+ "laminas/laminas-stdlib": "<3.2.1",
+ "zendframework/zend-stdlib": "<3.2.1"
+ },
+ "replace": {
+ "ocramius/proxy-manager": "^2.1"
},
"require-dev": {
- "phpunit/phpunit": "3.7.*"
+ "ext-phar": "*",
+ "symfony/phpunit-bridge": "^5.2|^6.0"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
+ "thanks": {
+ "name": "ocramius/proxy-manager",
+ "url": "https://github.com/Ocramius/ProxyManager"
}
},
"autoload": {
- "classmap": [
- "lib"
- ]
+ "psr-4": {
+ "ProxyManager\\": "src/ProxyManager"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1181,55 +1607,81 @@
],
"authors": [
{
- "name": "Jeremy Dorn",
- "email": "jeremy@jeremydorn.com",
- "homepage": "http://jeremydorn.com/"
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.io/"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
}
],
- "description": "a PHP SQL highlighting library",
- "homepage": "https://github.com/jdorn/sql-formatter/",
+ "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager",
+ "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts",
"keywords": [
- "highlight",
- "sql"
+ "aop",
+ "lazy loading",
+ "proxy",
+ "proxy pattern",
+ "service proxies"
+ ],
+ "support": {
+ "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues",
+ "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Ocramius",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
+ "type": "tidelift"
+ }
],
- "time": "2014-01-12T16:20:24+00:00"
+ "time": "2021-05-22T16:11:15+00:00"
},
{
- "name": "ocramius/package-versions",
- "version": "1.5.1",
+ "name": "guzzlehttp/guzzle",
+ "version": "6.5.5",
"source": {
"type": "git",
- "url": "https://github.com/Ocramius/PackageVersions.git",
- "reference": "1d32342b8c1eb27353c8887c366147b4c2da673c"
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/1d32342b8c1eb27353c8887c366147b4c2da673c",
- "reference": "1d32342b8c1eb27353c8887c366147b4c2da673c",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+ "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"shasum": ""
},
"require": {
- "composer-plugin-api": "^1.0.0",
- "php": "^7.3.0"
+ "ext-json": "*",
+ "guzzlehttp/promises": "^1.0",
+ "guzzlehttp/psr7": "^1.6.1",
+ "php": ">=5.5",
+ "symfony/polyfill-intl-idn": "^1.17.0"
},
"require-dev": {
- "composer/composer": "^1.8.6",
- "doctrine/coding-standard": "^6.0.0",
- "ext-zip": "*",
- "infection/infection": "^0.13.4",
- "phpunit/phpunit": "^8.2.5",
- "vimeo/psalm": "^3.4.9"
+ "ext-curl": "*",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+ "psr/log": "^1.1"
},
- "type": "composer-plugin",
+ "suggest": {
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
"extra": {
- "class": "PackageVersions\\Installer",
"branch-alias": {
- "dev-master": "1.6.x-dev"
+ "dev-master": "6.5-dev"
}
},
"autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
"psr-4": {
- "PackageVersions\\": "src/PackageVersions"
+ "GuzzleHttp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1238,65 +1690,61 @@
],
"authors": [
{
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
}
],
- "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
- "time": "2019-07-17T15:49:50+00:00"
+ "description": "Guzzle is a PHP HTTP client library",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/6.5"
+ },
+ "time": "2020-06-16T21:01:06+00:00"
},
{
- "name": "ocramius/proxy-manager",
- "version": "2.5.1",
+ "name": "guzzlehttp/promises",
+ "version": "1.5.1",
"source": {
"type": "git",
- "url": "https://github.com/Ocramius/ProxyManager.git",
- "reference": "b7bac968eef945322d1e28d7e833b6a549a6da27"
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/b7bac968eef945322d1e28d7e833b6a549a6da27",
- "reference": "b7bac968eef945322d1e28d7e833b6a549a6da27",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
+ "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
"shasum": ""
},
"require": {
- "ocramius/package-versions": "^1.5.1",
- "php": "^7.4.0",
- "zendframework/zend-code": "^3.3.1"
- },
- "conflict": {
- "doctrine/annotations": "<1.6.1",
- "zendframework/zend-stdlib": "<3.2.1"
+ "php": ">=5.5"
},
"require-dev": {
- "couscous/couscous": "^1.7.2",
- "doctrine/coding-standard": "^6.0.0",
- "ext-phar": "*",
- "infection/infection": "^0.13.4",
- "nikic/php-parser": "^4.2.2",
- "phpbench/phpbench": "^0.16.9",
- "phpunit/phpunit": "^8.3.3",
- "slevomat/coding-standard": "^5.0.4",
- "squizlabs/php_codesniffer": "^3.4.2",
- "symfony/console": "^4.3.3",
- "vimeo/psalm": "3.4.11"
- },
- "suggest": {
- "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects",
- "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)",
- "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)",
- "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)"
+ "symfony/phpunit-bridge": "^4.4 || ^5.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0.x-dev"
+ "dev-master": "1.5-dev"
}
},
"autoload": {
"psr-4": {
- "ProxyManager\\": "src/ProxyManager"
- }
+ "GuzzleHttp\\Promise\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1304,48 +1752,91 @@
],
"authors": [
{
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.io/"
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
}
],
- "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies",
- "homepage": "https://github.com/Ocramius/ProxyManager",
+ "description": "Guzzle promises library",
"keywords": [
- "aop",
- "lazy loading",
- "proxy",
- "proxy pattern",
- "service proxies"
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/1.5.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
],
- "time": "2019-12-17T09:22:43+00:00"
+ "time": "2021-10-22T20:56:57+00:00"
},
{
- "name": "psr/cache",
- "version": "1.0.1",
+ "name": "guzzlehttp/psr7",
+ "version": "1.8.3",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/cache.git",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
+ "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=5.4.0",
+ "psr/http-message": "~1.0",
+ "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "ext-zlib": "*",
+ "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.7-dev"
}
},
"autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
"psr-4": {
- "Psr\\Cache\\": "src/"
+ "GuzzleHttp\\Psr7\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1354,45 +1845,101 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
}
],
- "description": "Common interface for caching libraries",
+ "description": "PSR-7 message implementation that also provides common utility methods",
"keywords": [
- "cache",
- "psr",
- "psr-6"
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/1.8.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
],
- "time": "2016-08-06T20:24:11+00:00"
+ "time": "2021-10-05T13:56:00+00:00"
},
{
- "name": "psr/container",
- "version": "1.0.0",
+ "name": "http-interop/http-factory-guzzle",
+ "version": "1.2.0",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ "url": "https://github.com/http-interop/http-factory-guzzle.git",
+ "reference": "8f06e92b95405216b237521cc64c804dd44c4a81"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/8f06e92b95405216b237521cc64c804dd44c4a81",
+ "reference": "8f06e92b95405216b237521cc64c804dd44c4a81",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "guzzlehttp/psr7": "^1.7||^2.0",
+ "php": ">=7.3",
+ "psr/http-factory": "^1.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
+ "provide": {
+ "psr/http-factory-implementation": "^1.0"
},
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
+ "require-dev": {
+ "http-interop/http-factory-tests": "^0.9",
+ "phpunit/phpunit": "^9.5"
+ },
+ "suggest": {
+ "guzzlehttp/psr7": "Includes an HTTP factory starting in version 2.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Http\\Factory\\Guzzle\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1404,43 +1951,50 @@
"homepage": "http://www.php-fig.org/"
}
],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
+ "description": "An HTTP Factory using Guzzle PSR7",
"keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
+ "factory",
+ "http",
+ "psr-17",
+ "psr-7"
],
- "time": "2017-02-14T16:28:37+00:00"
+ "support": {
+ "issues": "https://github.com/http-interop/http-factory-guzzle/issues",
+ "source": "https://github.com/http-interop/http-factory-guzzle/tree/1.2.0"
+ },
+ "time": "2021-07-21T13:50:14+00:00"
},
{
- "name": "psr/event-dispatcher",
- "version": "1.0.0",
+ "name": "ivanstan/symfony-support",
+ "version": "dev-master",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/event-dispatcher.git",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ "url": "https://github.com/ivanstan/symfony-support.git",
+ "reference": "6a2abcd75f3aed5ad44bfda11e1533d0e342aac1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "url": "https://api.github.com/repos/ivanstan/symfony-support/zipball/6a2abcd75f3aed5ad44bfda11e1533d0e342aac1",
+ "reference": "6a2abcd75f3aed5ad44bfda11e1533d0e342aac1",
"shasum": ""
},
"require": {
- "php": ">=7.2.0"
+ "php": ">=8.0",
+ "symfony/console": "^5.3|^6.0",
+ "symfony/framework-bundle": "^5.3|^6.0",
+ "symfony/orm-pack": "^2.1",
+ "symfony/serializer-pack": "^1.0",
+ "symfony/validator": "^5.3|^6.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
+ "require-dev": {
+ "phpunit/php-code-coverage": "^9.2",
+ "phpunit/phpunit": "^9"
},
+ "default-branch": true,
+ "type": "symfony-bundle",
"autoload": {
"psr-4": {
- "Psr\\EventDispatcher\\": "src/"
+ "Ivanstan\\SymfonySupport\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1449,44 +2003,45 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Ivan Stanojevic",
+ "email": "ivanstan@gmail.com"
}
],
- "description": "Standard interfaces for event handling.",
- "keywords": [
- "events",
- "psr",
- "psr-14"
- ],
- "time": "2019-01-08T18:20:26+00:00"
+ "description": "Symfony support API toolkit",
+ "support": {
+ "issues": "https://github.com/ivanstan/symfony-support/issues",
+ "source": "https://github.com/ivanstan/symfony-support/tree/master"
+ },
+ "time": "2022-02-15T16:11:33+00:00"
},
{
- "name": "psr/log",
- "version": "1.1.2",
+ "name": "ivanstan/tle-php",
+ "version": "dev-master",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
+ "url": "https://github.com/ivanstan/tle-php.git",
+ "reference": "41ddb95c5c0cb98ef5f0aa28016d0e5cf7664094"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
- "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
+ "url": "https://api.github.com/repos/ivanstan/tle-php/zipball/41ddb95c5c0cb98ef5f0aa28016d0e5cf7664094",
+ "reference": "41ddb95c5c0cb98ef5f0aa28016d0e5cf7664094",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "ext-json": "*",
+ "guzzlehttp/guzzle": "^6.5",
+ "myclabs/php-enum": "^1.7",
+ "php": "^7.4|^8.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
+ "require-dev": {
+ "phpunit/phpunit": "^8"
},
+ "default-branch": true,
+ "type": "library",
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "Ivanstan\\Tle\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1495,137 +2050,206 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Ivan Stanojevic",
+ "email": "ivan.stanojevic@protonmail.com"
}
],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2019-11-01T11:05:21+00:00"
+ "description": "TLE Framework written in PHP and client to NASA TLE API.",
+ "support": {
+ "issues": "https://github.com/ivanstan/tle-php/issues",
+ "source": "https://github.com/ivanstan/tle-php/tree/master"
+ },
+ "time": "2021-06-05T16:45:49+00:00"
},
{
- "name": "symfony/apache-pack",
- "version": "v1.0.1",
+ "name": "jean85/pretty-package-versions",
+ "version": "2.0.5",
"source": {
"type": "git",
- "url": "https://github.com/symfony/apache-pack.git",
- "reference": "3aa5818d73ad2551281fc58a75afd9ca82622e6c"
+ "url": "https://github.com/Jean85/pretty-package-versions.git",
+ "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/apache-pack/zipball/3aa5818d73ad2551281fc58a75afd9ca82622e6c",
- "reference": "3aa5818d73ad2551281fc58a75afd9ca82622e6c",
+ "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af",
+ "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af",
"shasum": ""
},
- "type": "symfony-pack",
+ "require": {
+ "composer-runtime-api": "^2.0.0",
+ "php": "^7.1|^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.17",
+ "jean85/composer-provided-replaced-stub-package": "^1.0",
+ "phpstan/phpstan": "^0.12.66",
+ "phpunit/phpunit": "^7.5|^8.5|^9.4",
+ "vimeo/psalm": "^4.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Jean85\\": "src/"
+ }
+ },
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "description": "A pack for Apache support in Symfony",
- "time": "2017-12-12T01:46:35+00:00"
+ "authors": [
+ {
+ "name": "Alessandro Lai",
+ "email": "alessandro.lai85@gmail.com"
+ }
+ ],
+ "description": "A library to get pretty versions strings of installed dependencies",
+ "keywords": [
+ "composer",
+ "package",
+ "release",
+ "versions"
+ ],
+ "support": {
+ "issues": "https://github.com/Jean85/pretty-package-versions/issues",
+ "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5"
+ },
+ "time": "2021-10-08T21:21:46+00:00"
},
{
- "name": "symfony/asset",
- "version": "v5.0.2",
+ "name": "laminas/laminas-code",
+ "version": "4.5.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/asset.git",
- "reference": "6b66969b9f5cd53c1ce69bdc651aa962f211b6b6"
+ "url": "https://github.com/laminas/laminas-code.git",
+ "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/asset/zipball/6b66969b9f5cd53c1ce69bdc651aa962f211b6b6",
- "reference": "6b66969b9f5cd53c1ce69bdc651aa962f211b6b6",
+ "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e",
+ "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e",
"shasum": ""
},
"require": {
- "php": "^7.2.5"
+ "php": ">=7.4, <8.2"
},
"require-dev": {
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/http-kernel": "^4.4|^5.0"
+ "doctrine/annotations": "^1.13.2",
+ "ext-phar": "*",
+ "laminas/laminas-coding-standard": "^2.3.0",
+ "laminas/laminas-stdlib": "^3.6.1",
+ "phpunit/phpunit": "^9.5.10",
+ "psalm/plugin-phpunit": "^0.16.1",
+ "vimeo/psalm": "^4.13.1"
},
"suggest": {
- "symfony/http-foundation": ""
+ "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
+ "laminas/laminas-stdlib": "Laminas\\Stdlib component"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Component\\Asset\\": ""
+ "Laminas\\Code\\": "src/"
},
- "exclude-from-classmap": [
- "/Tests/"
+ "files": [
+ "polyfill/ReflectionEnumPolyfill.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
+ "description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "code",
+ "laminas",
+ "laminasframework"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-code/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-code/issues",
+ "rss": "https://github.com/laminas/laminas-code/releases.atom",
+ "source": "https://github.com/laminas/laminas-code"
+ },
+ "funding": [
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
}
],
- "description": "Symfony Asset Component",
- "homepage": "https://symfony.com",
- "time": "2019-11-18T17:27:11+00:00"
+ "time": "2021-12-19T18:06:55+00:00"
},
{
- "name": "symfony/browser-kit",
- "version": "v5.0.2",
+ "name": "monolog/monolog",
+ "version": "2.3.5",
"source": {
"type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "a195f83b0ba20e622a5baa726af96826b8f5616b"
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "fd4380d6fc37626e2f799f29d91195040137eba9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a195f83b0ba20e622a5baa726af96826b8f5616b",
- "reference": "a195f83b0ba20e622a5baa726af96826b8f5616b",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9",
+ "reference": "fd4380d6fc37626e2f799f29d91195040137eba9",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/dom-crawler": "^4.4|^5.0"
+ "php": ">=7.2",
+ "psr/log": "^1.0.1 || ^2.0 || ^3.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
},
"require-dev": {
- "symfony/css-selector": "^4.4|^5.0",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/mime": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0"
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "elasticsearch/elasticsearch": "^7",
+ "graylog2/gelf-php": "^1.4.2",
+ "mongodb/mongodb": "^1.8",
+ "php-amqplib/php-amqplib": "~2.4 || ^3",
+ "php-console/php-console": "^3.1.3",
+ "phpspec/prophecy": "^1.6.1",
+ "phpstan/phpstan": "^0.12.91",
+ "phpunit/phpunit": "^8.5",
+ "predis/predis": "^1.1",
+ "rollbar/rollbar": "^1.3",
+ "ruflin/elastica": ">=0.90@dev",
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
- "symfony/process": ""
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
+ "ext-mbstring": "Allow to work properly with unicode symbols",
+ "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+ "ext-openssl": "Required to send log messages using SSL",
+ "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "2.x-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "Monolog\\": "src/Monolog"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1633,74 +2257,62 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "https://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/monolog/issues",
+ "source": "https://github.com/Seldaek/monolog/tree/2.3.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+ "type": "tidelift"
}
],
- "description": "Symfony BrowserKit Component",
- "homepage": "https://symfony.com",
- "time": "2019-11-18T17:27:11+00:00"
+ "time": "2021-10-01T21:08:31+00:00"
},
{
- "name": "symfony/cache",
- "version": "v5.0.2",
+ "name": "myclabs/php-enum",
+ "version": "1.8.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/cache.git",
- "reference": "6e8d978878ae5de705ec9fabbb6011cc18776bc9"
+ "url": "https://github.com/myclabs/php-enum.git",
+ "reference": "b942d263c641ddb5190929ff840c68f78713e937"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/6e8d978878ae5de705ec9fabbb6011cc18776bc9",
- "reference": "6e8d978878ae5de705ec9fabbb6011cc18776bc9",
+ "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937",
+ "reference": "b942d263c641ddb5190929ff840c68f78713e937",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "psr/cache": "~1.0",
- "psr/log": "~1.0",
- "symfony/cache-contracts": "^1.1.7|^2",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0"
- },
- "conflict": {
- "doctrine/dbal": "<2.5",
- "symfony/dependency-injection": "<4.4",
- "symfony/http-kernel": "<4.4",
- "symfony/var-dumper": "<4.4"
- },
- "provide": {
- "psr/cache-implementation": "1.0",
- "psr/simple-cache-implementation": "1.0",
- "symfony/cache-implementation": "1.0"
+ "ext-json": "*",
+ "php": "^7.3 || ^8.0"
},
"require-dev": {
- "cache/integration-tests": "dev-master",
- "doctrine/cache": "~1.6",
- "doctrine/dbal": "~2.5",
- "predis/predis": "~1.1",
- "psr/simple-cache": "^1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
+ "phpunit/phpunit": "^9.5",
+ "squizlabs/php_codesniffer": "1.*",
+ "vimeo/psalm": "^4.6.2"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Component\\Cache\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "MyCLabs\\Enum\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1708,52 +2320,80 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "PHP Enum contributors",
+ "homepage": "https://github.com/myclabs/php-enum/graphs/contributors"
}
],
- "description": "Symfony Cache component with PSR-6, PSR-16, and tags",
- "homepage": "https://symfony.com",
+ "description": "PHP Enum implementation",
+ "homepage": "http://github.com/myclabs/php-enum",
"keywords": [
- "caching",
- "psr6"
+ "enum"
],
- "time": "2019-12-12T13:03:32+00:00"
+ "support": {
+ "issues": "https://github.com/myclabs/php-enum/issues",
+ "source": "https://github.com/myclabs/php-enum/tree/1.8.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/mnapoli",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-05T08:18:36+00:00"
},
{
- "name": "symfony/cache-contracts",
- "version": "v2.0.1",
+ "name": "php-http/client-common",
+ "version": "2.5.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/cache-contracts.git",
- "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16"
+ "url": "https://github.com/php-http/client-common.git",
+ "reference": "d135751167d57e27c74de674d6a30cef2dc8e054"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16",
- "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16",
+ "url": "https://api.github.com/repos/php-http/client-common/zipball/d135751167d57e27c74de674d6a30cef2dc8e054",
+ "reference": "d135751167d57e27c74de674d6a30cef2dc8e054",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "psr/cache": "^1.0"
+ "php": "^7.1 || ^8.0",
+ "php-http/httplug": "^2.0",
+ "php-http/message": "^1.6",
+ "php-http/message-factory": "^1.0",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.0",
+ "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0",
+ "symfony/polyfill-php80": "^1.17"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "^1.1",
+ "guzzlehttp/psr7": "^1.4",
+ "nyholm/psr7": "^1.2",
+ "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1",
+ "phpspec/prophecy": "^1.10.2",
+ "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3"
},
"suggest": {
- "symfony/cache-implementation": ""
+ "ext-json": "To detect JSON responses with the ContentTypePlugin",
+ "ext-libxml": "To detect XML responses with the ContentTypePlugin",
+ "php-http/cache-plugin": "PSR-6 Cache plugin",
+ "php-http/logger-plugin": "PSR-3 Logger plugin",
+ "php-http/stopwatch-plugin": "Symfony Stopwatch plugin"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-master": "2.3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Contracts\\Cache\\": ""
+ "Http\\Client\\Common\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1762,71 +2402,64 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
}
],
- "description": "Generic abstractions related to caching",
- "homepage": "https://symfony.com",
+ "description": "Common HTTP Client implementations and tools for HTTPlug",
+ "homepage": "http://httplug.io",
"keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
+ "client",
+ "common",
+ "http",
+ "httplug"
],
- "time": "2019-11-18T17:27:11+00:00"
+ "support": {
+ "issues": "https://github.com/php-http/client-common/issues",
+ "source": "https://github.com/php-http/client-common/tree/2.5.0"
+ },
+ "time": "2021-11-26T15:01:24+00:00"
},
{
- "name": "symfony/config",
- "version": "v5.0.2",
+ "name": "php-http/discovery",
+ "version": "1.14.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/config.git",
- "reference": "7f930484966350906185ba0a604728f7898b7ba0"
+ "url": "https://github.com/php-http/discovery.git",
+ "reference": "de90ab2b41d7d61609f504e031339776bc8c7223"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/7f930484966350906185ba0a604728f7898b7ba0",
- "reference": "7f930484966350906185ba0a604728f7898b7ba0",
+ "url": "https://api.github.com/repos/php-http/discovery/zipball/de90ab2b41d7d61609f504e031339776bc8c7223",
+ "reference": "de90ab2b41d7d61609f504e031339776bc8c7223",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/filesystem": "^4.4|^5.0",
- "symfony/polyfill-ctype": "~1.8"
+ "php": "^7.1 || ^8.0"
},
"conflict": {
- "symfony/finder": "<4.4"
+ "nyholm/psr7": "<1.0"
},
"require-dev": {
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/messenger": "^4.4|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/yaml": "^4.4|^5.0"
+ "graham-campbell/phpspec-skip-example-extension": "^5.0",
+ "php-http/httplug": "^1.0 || ^2.0",
+ "php-http/message-factory": "^1.0",
+ "phpspec/phpspec": "^5.1 || ^6.1",
+ "puli/composer-plugin": "1.0.0-beta10"
},
"suggest": {
- "symfony/yaml": "To use the yaml reference dumper"
+ "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "1.9-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Component\\Config\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "Http\\Discovery\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1834,75 +2467,61 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
}
],
- "description": "Symfony Config Component",
- "homepage": "https://symfony.com",
- "time": "2019-12-18T13:50:31+00:00"
+ "description": "Finds installed HTTPlug implementations and PSR-7 message factories",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "adapter",
+ "client",
+ "discovery",
+ "factory",
+ "http",
+ "message",
+ "psr7"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/discovery/issues",
+ "source": "https://github.com/php-http/discovery/tree/1.14.1"
+ },
+ "time": "2021-09-18T07:57:46+00:00"
},
{
- "name": "symfony/console",
- "version": "v5.0.2",
+ "name": "php-http/httplug",
+ "version": "2.2.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "fe6e3cd889ca64172d7a742a2eb058541404ef47"
+ "url": "https://github.com/php-http/httplug.git",
+ "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/fe6e3cd889ca64172d7a742a2eb058541404ef47",
- "reference": "fe6e3cd889ca64172d7a742a2eb058541404ef47",
+ "url": "https://api.github.com/repos/php-http/httplug/zipball/191a0a1b41ed026b717421931f8d3bd2514ffbf9",
+ "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.8",
- "symfony/service-contracts": "^1.1|^2"
- },
- "conflict": {
- "symfony/dependency-injection": "<4.4",
- "symfony/event-dispatcher": "<4.4",
- "symfony/lock": "<4.4",
- "symfony/process": "<4.4"
- },
- "provide": {
- "psr/log-implementation": "1.0"
+ "php": "^7.1 || ^8.0",
+ "php-http/promise": "^1.1",
+ "psr/http-client": "^1.0",
+ "psr/http-message": "^1.0"
},
"require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/lock": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/lock": "",
- "symfony/process": ""
+ "friends-of-phpspec/phpspec-code-coverage": "^4.1",
+ "phpspec/phpspec": "^5.1 || ^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "2.x-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "Http\\Client\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1910,69 +2529,3130 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Eric GELOEN",
+ "email": "geloen.eric@gmail.com"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
}
],
- "description": "Symfony Console Component",
- "homepage": "https://symfony.com",
- "time": "2019-12-17T13:20:22+00:00"
+ "description": "HTTPlug, the HTTP client abstraction for PHP",
+ "homepage": "http://httplug.io",
+ "keywords": [
+ "client",
+ "http"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/httplug/issues",
+ "source": "https://github.com/php-http/httplug/tree/master"
+ },
+ "time": "2020-07-13T15:43:23+00:00"
},
{
- "name": "symfony/dependency-injection",
- "version": "v5.0.2",
+ "name": "php-http/message",
+ "version": "1.13.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/dependency-injection.git",
- "reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2"
+ "url": "https://github.com/php-http/message.git",
+ "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f9dbfbf487d08f60b1c83220edcd16559d1e40a2",
- "reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2",
+ "url": "https://api.github.com/repos/php-http/message/zipball/7886e647a30a966a1a8d1dad1845b71ca8678361",
+ "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "psr/container": "^1.0",
- "symfony/service-contracts": "^1.1.6|^2"
- },
- "conflict": {
- "symfony/config": "<5.0",
- "symfony/finder": "<4.4",
- "symfony/proxy-manager-bridge": "<4.4",
- "symfony/yaml": "<4.4"
+ "clue/stream-filter": "^1.5",
+ "php": "^7.1 || ^8.0",
+ "php-http/message-factory": "^1.0.2",
+ "psr/http-message": "^1.0"
},
"provide": {
- "psr/container-implementation": "1.0",
- "symfony/service-implementation": "1.0"
+ "php-http/message-factory-implementation": "1.0"
},
"require-dev": {
- "symfony/config": "^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0"
+ "ergebnis/composer-normalize": "^2.6",
+ "ext-zlib": "*",
+ "guzzlehttp/psr7": "^1.0",
+ "laminas/laminas-diactoros": "^2.0",
+ "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1",
+ "slim/slim": "^3.0"
},
"suggest": {
- "symfony/config": "",
- "symfony/expression-language": "For using expressions in service container configuration",
- "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
- "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
- "symfony/yaml": ""
+ "ext-zlib": "Used with compressor/decompressor streams",
+ "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories",
+ "laminas/laminas-diactoros": "Used with Diactoros Factories",
+ "slim/slim": "Used with Slim Framework PSR-7 implementation"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "1.10-dev"
}
},
"autoload": {
+ "files": [
+ "src/filters.php"
+ ],
"psr-4": {
- "Symfony\\Component\\DependencyInjection\\": ""
- },
+ "Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "HTTP Message related tools",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/message/issues",
+ "source": "https://github.com/php-http/message/tree/1.13.0"
+ },
+ "time": "2022-02-11T13:41:14+00:00"
+ },
+ {
+ "name": "php-http/message-factory",
+ "version": "v1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/message-factory.git",
+ "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1",
+ "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Factory interfaces for PSR-7 HTTP Message",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "stream",
+ "uri"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/message-factory/issues",
+ "source": "https://github.com/php-http/message-factory/tree/master"
+ },
+ "time": "2015-12-19T14:08:53+00:00"
+ },
+ {
+ "name": "php-http/promise",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/promise.git",
+ "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
+ "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "friends-of-phpspec/phpspec-code-coverage": "^4.3.2",
+ "phpspec/phpspec": "^5.1.2 || ^6.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Joel Wurtz",
+ "email": "joel.wurtz@gmail.com"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Promise used for asynchronous HTTP requests",
+ "homepage": "http://httplug.io",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/promise/issues",
+ "source": "https://github.com/php-http/promise/tree/1.1.0"
+ },
+ "time": "2020-07-07T09:29:14+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ },
+ "time": "2021-10-19T17:43:47+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
+ },
+ "time": "2022-01-04T19:58:01+00:00"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "dbc093d7af60eff5cd575d2ed761b15ed40bd08e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/dbc093d7af60eff5cd575d2ed761b15ed40bd08e",
+ "reference": "dbc093d7af60eff5cd575d2ed761b15ed40bd08e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.0",
+ "phpunit/phpunit": "^9.5",
+ "symfony/process": "^5.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPDoc parser with support for nullable, intersection and generic types",
+ "support": {
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.2.0"
+ },
+ "time": "2021-09-16T20:46:02+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
+ },
+ "time": "2021-02-03T23:26:27+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
+ {
+ "name": "psr/http-client",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
+ "keywords": [
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-client/tree/master"
+ },
+ "time": "2020-06-29T06:28:15+00:00"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory/tree/master"
+ },
+ "time": "2019-04-30T12:38:16+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/master"
+ },
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
+ },
+ "time": "2021-07-14T16:46:02+00:00"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
+ "time": "2019-03-08T08:55:37+00:00"
+ },
+ {
+ "name": "sentry/sdk",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/getsentry/sentry-php-sdk.git",
+ "reference": "2de7de3233293f80d1e244bd950adb2121a3731c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/2de7de3233293f80d1e244bd950adb2121a3731c",
+ "reference": "2de7de3233293f80d1e244bd950adb2121a3731c",
+ "shasum": ""
+ },
+ "require": {
+ "http-interop/http-factory-guzzle": "^1.0",
+ "sentry/sentry": "^3.1",
+ "symfony/http-client": "^4.3|^5.0|^6.0"
+ },
+ "type": "metapackage",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Sentry",
+ "email": "accounts@sentry.io"
+ }
+ ],
+ "description": "This is a metapackage shipping sentry/sentry with a recommended HTTP client.",
+ "homepage": "http://sentry.io",
+ "keywords": [
+ "crash-reporting",
+ "crash-reports",
+ "error-handler",
+ "error-monitoring",
+ "log",
+ "logging",
+ "sentry"
+ ],
+ "support": {
+ "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://sentry.io/",
+ "type": "custom"
+ },
+ {
+ "url": "https://sentry.io/pricing/",
+ "type": "custom"
+ }
+ ],
+ "time": "2021-11-30T11:54:41+00:00"
+ },
+ {
+ "name": "sentry/sentry",
+ "version": "3.3.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/getsentry/sentry-php.git",
+ "reference": "32e5415803ff0349ccb5e5b5e77b016320762786"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/32e5415803ff0349ccb5e5b5e77b016320762786",
+ "reference": "32e5415803ff0349ccb5e5b5e77b016320762786",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "guzzlehttp/promises": "^1.4",
+ "guzzlehttp/psr7": "^1.7|^2.0",
+ "jean85/pretty-package-versions": "^1.5|^2.0.4",
+ "php": "^7.2|^8.0",
+ "php-http/async-client-implementation": "^1.0",
+ "php-http/client-common": "^1.5|^2.0",
+ "php-http/discovery": "^1.6.1",
+ "php-http/httplug": "^1.1|^2.0",
+ "php-http/message": "^1.5",
+ "psr/http-factory": "^1.0",
+ "psr/http-message-implementation": "^1.0",
+ "psr/log": "^1.0|^2.0|^3.0",
+ "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0",
+ "symfony/polyfill-php80": "^1.17",
+ "symfony/polyfill-uuid": "^1.13.1"
+ },
+ "conflict": {
+ "php-http/client-common": "1.8.0",
+ "raven/raven": "*"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.19|3.4.*",
+ "http-interop/http-factory-guzzle": "^1.0",
+ "monolog/monolog": "^1.3|^2.0",
+ "nikic/php-parser": "^4.10.3",
+ "php-http/mock-client": "^1.3",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^8.5.14|^9.4",
+ "symfony/phpunit-bridge": "^5.2|^6.0",
+ "vimeo/psalm": "^4.17"
+ },
+ "suggest": {
+ "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Sentry\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sentry",
+ "email": "accounts@sentry.io"
+ }
+ ],
+ "description": "A PHP SDK for Sentry (http://sentry.io)",
+ "homepage": "http://sentry.io",
+ "keywords": [
+ "crash-reporting",
+ "crash-reports",
+ "error-handler",
+ "error-monitoring",
+ "log",
+ "logging",
+ "sentry"
+ ],
+ "support": {
+ "issues": "https://github.com/getsentry/sentry-php/issues",
+ "source": "https://github.com/getsentry/sentry-php/tree/3.3.7"
+ },
+ "funding": [
+ {
+ "url": "https://sentry.io/",
+ "type": "custom"
+ },
+ {
+ "url": "https://sentry.io/pricing/",
+ "type": "custom"
+ }
+ ],
+ "time": "2022-01-19T08:46:27+00:00"
+ },
+ {
+ "name": "sentry/sentry-symfony",
+ "version": "4.2.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/getsentry/sentry-symfony.git",
+ "reference": "c3f2c687b45e3e42573372ac75e643c9e4f3f896"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/c3f2c687b45e3e42573372ac75e643c9e4f3f896",
+ "reference": "c3f2c687b45e3e42573372ac75e643c9e4f3f896",
+ "shasum": ""
+ },
+ "require": {
+ "jean85/pretty-package-versions": "^1.5 || ^2.0",
+ "php": "^7.2||^8.0",
+ "php-http/discovery": "^1.11",
+ "sentry/sdk": "^3.1",
+ "symfony/cache-contracts": "^1.1||^2.4||^3.0",
+ "symfony/config": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/console": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/dependency-injection": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/event-dispatcher": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/http-kernel": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/polyfill-php80": "^1.22",
+ "symfony/psr-http-message-bridge": "^1.2||^2.0",
+ "symfony/security-core": "^3.4.44||^4.4.20||^5.0.11||^6.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.13||^3.0",
+ "doctrine/doctrine-bundle": "^1.12||^2.5",
+ "friendsofphp/php-cs-fixer": "^2.18",
+ "jangregor/phpstan-prophecy": "^0.8",
+ "monolog/monolog": "^1.3||^2.0",
+ "phpspec/prophecy": "!=1.11.0",
+ "phpspec/prophecy-phpunit": "^1.1||^2.0",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^8.5.14||^9.3.9",
+ "symfony/browser-kit": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/cache": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/dom-crawler": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/framework-bundle": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/messenger": "^4.4.20||^5.0.11||^6.0",
+ "symfony/monolog-bundle": "^3.4",
+ "symfony/phpunit-bridge": "^5.2.6||^6.0",
+ "symfony/process": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/twig-bundle": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "symfony/yaml": "^3.4.44||^4.4.20||^5.0.11||^6.0",
+ "vimeo/psalm": "^4.3"
+ },
+ "suggest": {
+ "doctrine/doctrine-bundle": "Allow distributed tracing of database queries using Sentry.",
+ "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler.",
+ "symfony/cache": "Allow distributed tracing of cache pools using Sentry.",
+ "symfony/twig-bundle": "Allow distributed tracing of Twig template rendering using Sentry."
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2.x-dev",
+ "releases/3.2.x": "3.2.x-dev",
+ "releases/2.x": "2.x-dev",
+ "releases/1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/aliases.php"
+ ],
+ "psr-4": {
+ "Sentry\\SentryBundle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "David Cramer",
+ "email": "dcramer@gmail.com"
+ },
+ {
+ "name": "Alessandro Lai",
+ "email": "alessandro.lai85@gmail.com"
+ }
+ ],
+ "description": "Symfony integration for Sentry (http://getsentry.com)",
+ "homepage": "http://getsentry.com",
+ "keywords": [
+ "errors",
+ "logging",
+ "sentry",
+ "symfony"
+ ],
+ "support": {
+ "issues": "https://github.com/getsentry/sentry-symfony/issues",
+ "source": "https://github.com/getsentry/sentry-symfony/tree/4.2.6"
+ },
+ "funding": [
+ {
+ "url": "https://sentry.io/",
+ "type": "custom"
+ },
+ {
+ "url": "https://sentry.io/pricing/",
+ "type": "custom"
+ }
+ ],
+ "time": "2022-01-10T08:56:54+00:00"
+ },
+ {
+ "name": "symfony/apache-pack",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/apache-pack.git",
+ "reference": "3aa5818d73ad2551281fc58a75afd9ca82622e6c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/apache-pack/zipball/3aa5818d73ad2551281fc58a75afd9ca82622e6c",
+ "reference": "3aa5818d73ad2551281fc58a75afd9ca82622e6c",
+ "shasum": ""
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for Apache support in Symfony",
+ "support": {
+ "issues": "https://github.com/symfony/apache-pack/issues",
+ "source": "https://github.com/symfony/apache-pack/tree/master"
+ },
+ "time": "2017-12-12T01:46:35+00:00"
+ },
+ {
+ "name": "symfony/asset",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/asset.git",
+ "reference": "a926033206f3644b1289f4eb09dc0989c7080c21"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/asset/zipball/a926033206f3644b1289f4eb09dc0989c7080c21",
+ "reference": "a926033206f3644b1289f4eb09dc0989c7080c21",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "conflict": {
+ "symfony/http-foundation": "<5.4"
+ },
+ "require-dev": {
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/http-foundation": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Asset\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/asset/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/browser-kit",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/browser-kit.git",
+ "reference": "0ec66df981406fd2c9e41acbb526249bd18a0123"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/0ec66df981406fd2c9e41acbb526249bd18a0123",
+ "reference": "0ec66df981406fd2c9e41acbb526249bd18a0123",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/dom-crawler": "^5.4|^6.0"
+ },
+ "require-dev": {
+ "symfony/css-selector": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\BrowserKit\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/browser-kit/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/cache",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache.git",
+ "reference": "4d2edb87334c1fb2fade9382c70e2284204f0b8b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/4d2edb87334c1fb2fade9382c70e2284204f0b8b",
+ "reference": "4d2edb87334c1fb2fade9382c70e2284204f0b8b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/cache": "^2.0|^3.0",
+ "psr/log": "^1.1|^2|^3",
+ "symfony/cache-contracts": "^1.1.7|^2|^3",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/var-exporter": "^5.4|^6.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.13.1",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/var-dumper": "<5.4"
+ },
+ "provide": {
+ "psr/cache-implementation": "2.0|3.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0",
+ "symfony/cache-implementation": "1.1|2.0|3.0"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/dbal": "^2.13.1|^3.0",
+ "predis/predis": "^1.1",
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/filesystem": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/var-dumper": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Cache\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "caching",
+ "psr6"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/cache/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T17:32:35+00:00"
+ },
+ {
+ "name": "symfony/cache-contracts",
+ "version": "v3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache-contracts.git",
+ "reference": "2f7463f156cf9c665d9317e21a809c3bbff5754e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2f7463f156cf9c665d9317e21a809c3bbff5754e",
+ "reference": "2f7463f156cf9c665d9317e21a809c3bbff5754e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/cache": "^3.0"
+ },
+ "suggest": {
+ "symfony/cache-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Cache\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to caching",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/cache-contracts/tree/v3.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-08-17T15:35:52+00:00"
+ },
+ {
+ "name": "symfony/config",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/config.git",
+ "reference": "c14f32ae4cd2a3c29d8825c5093463ac08ade7d8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/config/zipball/c14f32ae4cd2a3c29d8825c5093463ac08ade7d8",
+ "reference": "c14f32ae4cd2a3c29d8825c5093463ac08ade7d8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/filesystem": "^5.4|^6.0",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php81": "^1.22"
+ },
+ "conflict": {
+ "symfony/finder": "<4.4"
+ },
+ "require-dev": {
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/yaml": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/yaml": "To use the yaml reference dumper"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Config\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/config/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-03T09:53:43+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "22e8efd019c3270c4f79376234a3f8752cd25490"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490",
+ "reference": "22e8efd019c3270c4f79376234a3f8752cd25490",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.4|^6.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/process": "<5.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/lock": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/var-dumper": "^5.4|^6.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T17:23:29+00:00"
+ },
+ {
+ "name": "symfony/css-selector",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "1955d595c12c111629cc814d3f2a2ff13580508a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a",
+ "reference": "1955d595c12c111629cc814d3f2a2ff13580508a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\CssSelector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Jean-François Simon",
+ "email": "jeanfrancois.simon@sensiolabs.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Converts CSS selectors to XPath expressions",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/css-selector/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/dependency-injection",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "bf53dbf6e8f3eec14f44c53fa4c3b4905ab19ee4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/bf53dbf6e8f3eec14f44c53fa4c3b4905ab19ee4",
+ "reference": "bf53dbf6e8f3eec14f44c53fa4c3b4905ab19ee4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php81": "^1.22",
+ "symfony/service-contracts": "^1.1.6|^2.0|^3.0"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2",
+ "symfony/config": "<5.4",
+ "symfony/finder": "<5.4",
+ "symfony/proxy-manager-bridge": "<5.4",
+ "symfony/yaml": "<5.4"
+ },
+ "provide": {
+ "psr/container-implementation": "1.1|2.0",
+ "symfony/service-implementation": "1.1|2.0|3.0"
+ },
+ "require-dev": {
+ "symfony/config": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/config": "",
+ "symfony/expression-language": "For using expressions in service container configuration",
+ "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
+ "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DependencyInjection\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Allows you to standardize and centralize the way objects are constructed in your application",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/dependency-injection/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T17:23:29+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
+ "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-01T23:48:49+00:00"
+ },
+ {
+ "name": "symfony/doctrine-bridge",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/doctrine-bridge.git",
+ "reference": "d1d9d54717d3125119e09c9c34b337364e47960e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/d1d9d54717d3125119e09c9c34b337364e47960e",
+ "reference": "d1d9d54717d3125119e09c9c34b337364e47960e",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/event-manager": "~1.0",
+ "doctrine/persistence": "^2",
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/service-contracts": "^1.1|^2|^3"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.13.1",
+ "doctrine/lexer": "<1.1",
+ "doctrine/orm": "<2.7.4",
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/cache": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/form": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/messenger": "<5.4",
+ "symfony/property-info": "<5.4",
+ "symfony/security-bundle": "<5.4",
+ "symfony/security-core": "<6.0",
+ "symfony/validator": "<5.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.10.4",
+ "doctrine/collections": "~1.0",
+ "doctrine/data-fixtures": "^1.1",
+ "doctrine/dbal": "^2.13.1|^3.0",
+ "doctrine/orm": "^2.7.4",
+ "psr/log": "^1|^2|^3",
+ "symfony/cache": "^5.4|^6.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/doctrine-messenger": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/form": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/property-access": "^5.4|^6.0",
+ "symfony/property-info": "^5.4|^6.0",
+ "symfony/proxy-manager-bridge": "^5.4|^6.0",
+ "symfony/security-core": "^6.0",
+ "symfony/stopwatch": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/uid": "^5.4|^6.0",
+ "symfony/validator": "^5.4|^6.0",
+ "symfony/var-dumper": "^5.4|^6.0"
+ },
+ "suggest": {
+ "doctrine/data-fixtures": "",
+ "doctrine/dbal": "",
+ "doctrine/orm": "",
+ "symfony/form": "",
+ "symfony/property-info": "",
+ "symfony/validator": ""
+ },
+ "type": "symfony-bridge",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Doctrine\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides integration for Doctrine with various Symfony components",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/doctrine-bridge/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-27T10:11:24+00:00"
+ },
+ {
+ "name": "symfony/dom-crawler",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dom-crawler.git",
+ "reference": "24d9de5965b8b043ea13ef234087543c9740641c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/24d9de5965b8b043ea13ef234087543c9740641c",
+ "reference": "24d9de5965b8b043ea13ef234087543c9740641c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "masterminds/html5": "<2.6"
+ },
+ "require-dev": {
+ "masterminds/html5": "^2.6",
+ "symfony/css-selector": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/css-selector": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DomCrawler\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases DOM navigation for HTML and XML documents",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/dom-crawler/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/dotenv",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dotenv.git",
+ "reference": "45c47b67cc92fbcf9b1d40f08e970a136f75559f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/45c47b67cc92fbcf9b1d40f08e970a136f75559f",
+ "reference": "45c47b67cc92fbcf9b1d40f08e970a136f75559f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "require-dev": {
+ "symfony/console": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Dotenv\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Registers environment variables from a .env file",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/dotenv/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T17:23:29+00:00"
+ },
+ {
+ "name": "symfony/error-handler",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/error-handler.git",
+ "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b",
+ "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/var-dumper": "^5.4|^6.0"
+ },
+ "require-dev": {
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0"
+ },
+ "bin": [
+ "Resources/bin/patch-type-declarations"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ErrorHandler\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to manage errors and ease debugging PHP code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/error-handler/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934",
+ "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/event-dispatcher-contracts": "^2|^3"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<5.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/stopwatch": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "aa5422287b75594b90ee9cd807caf8f0df491385"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385",
+ "reference": "aa5422287b75594b90ee9cd807caf8f0df491385",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/event-dispatcher": "^1"
+ },
+ "suggest": {
+ "symfony/event-dispatcher-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-15T12:33:35+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "6ae49c4fda17322171a2b8dc5f70bc6edbc498e1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/6ae49c4fda17322171a2b8dc5f70bc6edbc498e1",
+ "reference": "6ae49c4fda17322171a2b8dc5f70bc6edbc498e1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides basic utilities for the filesystem",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430",
+ "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T17:23:29+00:00"
+ },
+ {
+ "name": "symfony/flex",
+ "version": "v1.18.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/flex.git",
+ "reference": "910a5c5ac35b58c9faddc992f56ad7a931d1e064"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/flex/zipball/910a5c5ac35b58c9faddc992f56ad7a931d1e064",
+ "reference": "910a5c5ac35b58c9faddc992f56ad7a931d1e064",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0|^2.0",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0.2|^2.0",
+ "symfony/dotenv": "^4.4|^5.0|^6.0",
+ "symfony/filesystem": "^4.4|^5.0|^6.0",
+ "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Symfony\\Flex\\Flex"
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Flex\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "description": "Composer plugin for Symfony",
+ "support": {
+ "issues": "https://github.com/symfony/flex/issues",
+ "source": "https://github.com/symfony/flex/tree/v1.18.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-15T08:56:54+00:00"
+ },
+ {
+ "name": "symfony/framework-bundle",
+ "version": "v6.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/framework-bundle.git",
+ "reference": "12d8bfaa3dec658da80125d37633221ce1e40f8f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/12d8bfaa3dec658da80125d37633221ce1e40f8f",
+ "reference": "12d8bfaa3dec658da80125d37633221ce1e40f8f",
+ "shasum": ""
+ },
+ "require": {
+ "composer-runtime-api": ">=2.1",
+ "ext-xml": "*",
+ "php": ">=8.0.2",
+ "symfony/cache": "^5.4|^6.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/filesystem": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php81": "^1.22",
+ "symfony/routing": "^5.4|^6.0"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.13.1",
+ "doctrine/persistence": "<1.3",
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/asset": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dom-crawler": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/form": "<5.4",
+ "symfony/http-client": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/mailer": "<5.4",
+ "symfony/messenger": "<5.4",
+ "symfony/mime": "<5.4",
+ "symfony/property-access": "<5.4",
+ "symfony/property-info": "<5.4",
+ "symfony/security-core": "<5.4",
+ "symfony/security-csrf": "<5.4",
+ "symfony/serializer": "<5.4",
+ "symfony/stopwatch": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/twig-bridge": "<5.4",
+ "symfony/twig-bundle": "<5.4",
+ "symfony/validator": "<5.4",
+ "symfony/web-profiler-bundle": "<5.4",
+ "symfony/workflow": "<5.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.13.1",
+ "doctrine/persistence": "^1.3|^2.0",
+ "paragonie/sodium_compat": "^1.8",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/asset": "^5.4|^6.0",
+ "symfony/browser-kit": "^5.4|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/css-selector": "^5.4|^6.0",
+ "symfony/dom-crawler": "^5.4|^6.0",
+ "symfony/dotenv": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/form": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/lock": "^5.4|^6.0",
+ "symfony/mailer": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0",
+ "symfony/notifier": "^5.4|^6.0",
+ "symfony/phpunit-bridge": "^5.4|^6.0",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/property-info": "^5.4|^6.0",
+ "symfony/rate-limiter": "^5.4|^6.0",
+ "symfony/security-bundle": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0",
+ "symfony/stopwatch": "^5.4|^6.0",
+ "symfony/string": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/twig-bundle": "^5.4|^6.0",
+ "symfony/validator": "^5.4|^6.0",
+ "symfony/web-link": "^5.4|^6.0",
+ "symfony/workflow": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0",
+ "twig/twig": "^2.10|^3.0"
+ },
+ "suggest": {
+ "ext-apcu": "For best performance of the system caches",
+ "symfony/console": "For using the console commands",
+ "symfony/form": "For using forms",
+ "symfony/property-info": "For using the property_info service",
+ "symfony/serializer": "For using the serializer service",
+ "symfony/validator": "For using validation",
+ "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering",
+ "symfony/yaml": "For using the debug:config and lint:yaml commands"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\FrameworkBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/framework-bundle/tree/v6.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-29T17:50:53+00:00"
+ },
+ {
+ "name": "symfony/http-client",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client.git",
+ "reference": "45b95017f6a20d564584bdee6a376c9a79caa316"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/45b95017f6a20d564584bdee6a376c9a79caa316",
+ "reference": "45b95017f6a20d564584bdee6a376c9a79caa316",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/http-client-contracts": "^3",
+ "symfony/service-contracts": "^1.0|^2|^3"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "1.0",
+ "symfony/http-client-implementation": "3.0"
+ },
+ "require-dev": {
+ "amphp/amp": "^2.5",
+ "amphp/http-client": "^4.2.1",
+ "amphp/http-tunnel": "^1.0",
+ "amphp/socket": "^1.1",
+ "guzzlehttp/promises": "^1.4",
+ "nyholm/psr7": "^1.0",
+ "php-http/httplug": "^1.0|^2.0",
+ "psr/http-client": "^1.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/stopwatch": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpClient\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-client/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-22T06:58:00+00:00"
+ },
+ {
+ "name": "symfony/http-client-contracts",
+ "version": "v3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client-contracts.git",
+ "reference": "265f03fed057044a8e4dc159aa33596d0f48ed3f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/265f03fed057044a8e4dc159aa33596d0f48ed3f",
+ "reference": "265f03fed057044a8e4dc159aa33596d0f48ed3f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "suggest": {
+ "symfony/http-client-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\HttpClient\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to HTTP clients",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-03T13:44:55+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "ad157299ced81a637fade1efcadd688d6deba5c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1",
+ "reference": "ad157299ced81a637fade1efcadd688d6deba5c1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.1"
+ },
+ "require-dev": {
+ "predis/predis": "~1.0",
+ "symfony/cache": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/mime": "To use the file extension guesser"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Defines an object-oriented layer for the HTTP specification",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-foundation/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v6.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b",
+ "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/browser-kit": "<5.4",
+ "symfony/cache": "<5.4",
+ "symfony/config": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/doctrine-bridge": "<5.4",
+ "symfony/form": "<5.4",
+ "symfony/http-client": "<5.4",
+ "symfony/mailer": "<5.4",
+ "symfony/messenger": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/twig-bridge": "<5.4",
+ "symfony/validator": "<5.4",
+ "twig/twig": "<2.13"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/cache": "^1.0|^2.0|^3.0",
+ "symfony/browser-kit": "^5.4|^6.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/css-selector": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/dom-crawler": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/http-client-contracts": "^1.1|^2|^3",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/routing": "^5.4|^6.0",
+ "symfony/stopwatch": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/translation-contracts": "^1.1|^2|^3",
+ "twig/twig": "^2.13|^3.0.4"
+ },
+ "suggest": {
+ "symfony/browser-kit": "",
+ "symfony/config": "",
+ "symfony/console": "",
+ "symfony/dependency-injection": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides a structured process for converting a Request into a Response",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-kernel/tree/v6.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-29T18:12:46+00:00"
+ },
+ {
+ "name": "symfony/lock",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/lock.git",
+ "reference": "07aae10b83209a0c85bd19824d42c25efccde3fe"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/lock/zipball/07aae10b83209a0c85bd19824d42c25efccde3fe",
+ "reference": "07aae10b83209a0c85bd19824d42c25efccde3fe",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/log": "^1|^2|^3"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.13"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.13|^3.0",
+ "predis/predis": "~1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Lock\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jérémy Derussé",
+ "email": "jeremy@derusse.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cas",
+ "flock",
+ "locking",
+ "mutex",
+ "redlock",
+ "semaphore"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/lock/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-27T13:13:08+00:00"
+ },
+ {
+ "name": "symfony/monolog-bridge",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bridge.git",
+ "reference": "10d90ee25c6a76c12d4bbe8721e354c287e177da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/10d90ee25c6a76c12d4bbe8721e354c287e177da",
+ "reference": "10d90ee25c6a76c12d4bbe8721e354c287e177da",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "^1.25.1|^2",
+ "php": ">=8.0.2",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3"
+ },
+ "conflict": {
+ "symfony/console": "<5.4",
+ "symfony/http-foundation": "<5.4",
+ "symfony/security-core": "<6.0"
+ },
+ "require-dev": {
+ "symfony/console": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/mailer": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0",
+ "symfony/security-core": "^6.0",
+ "symfony/var-dumper": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.",
+ "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.",
+ "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler."
+ },
+ "type": "symfony-bridge",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Monolog\\": ""
+ },
"exclude-from-classmap": [
"/Tests/"
]
@@ -1991,83 +5671,63 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony DependencyInjection Component",
+ "description": "Provides integration for Monolog with various Symfony components",
"homepage": "https://symfony.com",
- "time": "2019-12-19T16:01:11+00:00"
+ "support": {
+ "source": "https://github.com/symfony/monolog-bridge/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
},
{
- "name": "symfony/doctrine-bridge",
- "version": "v5.0.2",
+ "name": "symfony/monolog-bundle",
+ "version": "v3.7.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/doctrine-bridge.git",
- "reference": "0bdb2d31741cacacb95130d28fbac939c4d574f2"
+ "url": "https://github.com/symfony/monolog-bundle.git",
+ "reference": "fde12fc628162787a4e53877abadc30047fd868b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/0bdb2d31741cacacb95130d28fbac939c4d574f2",
- "reference": "0bdb2d31741cacacb95130d28fbac939c4d574f2",
+ "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/fde12fc628162787a4e53877abadc30047fd868b",
+ "reference": "fde12fc628162787a4e53877abadc30047fd868b",
"shasum": ""
},
"require": {
- "doctrine/event-manager": "~1.0",
- "doctrine/persistence": "^1.3",
- "php": "^7.2.5",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/service-contracts": "^1.1|^2"
- },
- "conflict": {
- "phpunit/phpunit": "<5.4.3",
- "symfony/dependency-injection": "<4.4",
- "symfony/form": "<5",
- "symfony/http-kernel": "<5",
- "symfony/messenger": "<4.4",
- "symfony/property-info": "<5",
- "symfony/security-bundle": "<5",
- "symfony/security-core": "<5",
- "symfony/validator": "<5.0.2"
+ "monolog/monolog": "~1.22 || ~2.0",
+ "php": ">=7.1.3",
+ "symfony/config": "~4.4 || ^5.0 || ^6.0",
+ "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0",
+ "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0",
+ "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0"
},
"require-dev": {
- "doctrine/annotations": "~1.7",
- "doctrine/cache": "~1.6",
- "doctrine/collections": "~1.0",
- "doctrine/data-fixtures": "1.0.*",
- "doctrine/dbal": "~2.4",
- "doctrine/orm": "^2.6.3",
- "doctrine/reflection": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/form": "^5.0",
- "symfony/http-kernel": "^5.0",
- "symfony/messenger": "^4.4|^5.0",
- "symfony/property-access": "^4.4|^5.0",
- "symfony/property-info": "^5.0",
- "symfony/proxy-manager-bridge": "^4.4|^5.0",
- "symfony/security-core": "^5.0",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/translation": "^4.4|^5.0",
- "symfony/validator": "^5.0.2",
- "symfony/var-dumper": "^4.4|^5.0"
- },
- "suggest": {
- "doctrine/data-fixtures": "",
- "doctrine/dbal": "",
- "doctrine/orm": "",
- "symfony/form": "",
- "symfony/property-info": "",
- "symfony/validator": ""
+ "symfony/console": "~4.4 || ^5.0 || ^6.0",
+ "symfony/phpunit-bridge": "^5.2 || ^6.0",
+ "symfony/yaml": "~4.4 || ^5.0 || ^6.0"
},
- "type": "symfony-bridge",
+ "type": "symfony-bundle",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Bridge\\Doctrine\\": ""
+ "Symfony\\Bundle\\MonologBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2087,48 +5747,54 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Doctrine Bridge",
+ "description": "Symfony MonologBundle",
"homepage": "https://symfony.com",
- "time": "2019-12-19T12:10:29+00:00"
+ "keywords": [
+ "log",
+ "logging"
+ ],
+ "support": {
+ "issues": "https://github.com/symfony/monolog-bundle/issues",
+ "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-05T10:34:29+00:00"
},
{
- "name": "symfony/dom-crawler",
- "version": "v5.0.2",
+ "name": "symfony/options-resolver",
+ "version": "v6.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "0a0a73a0836926898b6fcd6817fe697487a73d97"
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "51f7006670febe4cbcbae177cbffe93ff833250d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0a0a73a0836926898b6fcd6817fe697487a73d97",
- "reference": "0a0a73a0836926898b6fcd6817fe697487a73d97",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/51f7006670febe4cbcbae177cbffe93ff833250d",
+ "reference": "51f7006670febe4cbcbae177cbffe93ff833250d",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "conflict": {
- "masterminds/html5": "<2.6"
- },
- "require-dev": {
- "masterminds/html5": "^2.6",
- "symfony/css-selector": "^4.4|^5.0"
- },
- "suggest": {
- "symfony/css-selector": ""
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.1|^3"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
+ "Symfony\\Component\\OptionsResolver\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2148,39 +5814,106 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony DomCrawler Component",
+ "description": "Provides an improved replacement for the array_replace PHP function",
"homepage": "https://symfony.com",
- "time": "2019-11-18T17:27:11+00:00"
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/options-resolver/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
},
{
- "name": "symfony/dotenv",
- "version": "v5.0.2",
+ "name": "symfony/orm-pack",
+ "version": "v2.2.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/dotenv.git",
- "reference": "7e1bc9024edd9157264e388080df2533306894d3"
+ "url": "https://github.com/symfony/orm-pack.git",
+ "reference": "c4728ba9ed071876f71df637c7dff0490c9252b2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/7e1bc9024edd9157264e388080df2533306894d3",
- "reference": "7e1bc9024edd9157264e388080df2533306894d3",
+ "url": "https://api.github.com/repos/symfony/orm-pack/zipball/c4728ba9ed071876f71df637c7dff0490c9252b2",
+ "reference": "c4728ba9ed071876f71df637c7dff0490c9252b2",
"shasum": ""
},
"require": {
- "php": "^7.2.5"
+ "doctrine/doctrine-bundle": "*",
+ "doctrine/doctrine-migrations-bundle": "*",
+ "doctrine/orm": "*",
+ "symfony/proxy-manager-bridge": "*"
},
- "require-dev": {
- "symfony/process": "^4.4|^5.0"
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for the Doctrine ORM",
+ "support": {
+ "issues": "https://github.com/symfony/orm-pack/issues",
+ "source": "https://github.com/symfony/orm-pack/tree/v2.2.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
+ ],
+ "time": "2022-01-12T09:53:02+00:00"
+ },
+ {
+ "name": "symfony/password-hasher",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/password-hasher.git",
+ "reference": "4d04edcbcee4a97f39c72d1cf6149681d634e63f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/password-hasher/zipball/4d04edcbcee4a97f39c72d1cf6149681d634e63f",
+ "reference": "4d04edcbcee4a97f39c72d1cf6149681d634e63f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "conflict": {
+ "symfony/security-core": "<5.4"
+ },
+ "require-dev": {
+ "symfony/console": "^5",
+ "symfony/security-core": "^5.4|^6.0"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Dotenv\\": ""
+ "Symfony\\Component\\PasswordHasher\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2192,59 +5925,76 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Robin Chalas",
+ "email": "robin.chalas@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Registers environment variables from a .env file",
+ "description": "Provides password hashing utilities",
"homepage": "https://symfony.com",
"keywords": [
- "dotenv",
- "env",
- "environment"
+ "hashing",
+ "password"
],
- "time": "2019-12-19T16:01:11+00:00"
+ "support": {
+ "source": "https://github.com/symfony/password-hasher/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
},
{
- "name": "symfony/error-handler",
- "version": "v5.0.2",
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.24.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/error-handler.git",
- "reference": "460863313bd3212d7c38e1b40602cbcfeeeea4a5"
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/460863313bd3212d7c38e1b40602cbcfeeeea4a5",
- "reference": "460863313bd3212d7c38e1b40602cbcfeeeea4a5",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783",
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "psr/log": "^1.0",
- "symfony/var-dumper": "^4.4|^5.0"
+ "php": ">=7.1"
},
- "require-dev": {
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0"
+ "suggest": {
+ "ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
"psr-4": {
- "Symfony\\Component\\ErrorHandler\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2252,68 +6002,169 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony ErrorHandler Component",
+ "description": "Symfony polyfill for intl's grapheme_* functions",
"homepage": "https://symfony.com",
- "time": "2019-12-16T14:48:47+00:00"
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-23T21:10:46+00:00"
},
{
- "name": "symfony/event-dispatcher",
- "version": "v5.0.2",
+ "name": "symfony/polyfill-intl-idn",
+ "version": "v1.24.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "7b738a51645e10f864cc25c24d232fb03f37b475"
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
+ "reference": "749045c69efb97c70d25d7463abba812e91f3a44"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7b738a51645e10f864cc25c24d232fb03f37b475",
- "reference": "7b738a51645e10f864cc25c24d232fb03f37b475",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
+ "reference": "749045c69efb97c70d25d7463abba812e91f3a44",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/event-dispatcher-contracts": "^2"
+ "php": ">=7.1",
+ "symfony/polyfill-intl-normalizer": "^1.10",
+ "symfony/polyfill-php72": "^1.10"
},
- "conflict": {
- "symfony/dependency-injection": "<4.4"
+ "suggest": {
+ "ext-intl": "For best performance"
},
- "provide": {
- "psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "2.0"
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
},
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/stopwatch": "^4.4|^5.0"
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Laurent Bassin",
+ "email": "laurent@bassin.info"
+ },
+ {
+ "name": "Trevor Rowbotham",
+ "email": "trevor.rowbotham@pm.me"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "idn",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-14T14:02:44+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
},
"suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
+ "ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
"psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
- "exclude-from-classmap": [
- "/Tests/"
+ "classmap": [
+ "Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2322,48 +6173,82 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "description": "Symfony EventDispatcher Component",
- "homepage": "https://symfony.com",
- "time": "2019-11-18T17:27:11+00:00"
+ "time": "2021-02-19T12:13:01+00:00"
},
{
- "name": "symfony/event-dispatcher-contracts",
- "version": "v2.0.1",
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.24.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "af23c2584d4577d54661c434446fb8fbed6025dd"
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/af23c2584d4577d54661c434446fb8fbed6025dd",
- "reference": "af23c2584d4577d54661c434446fb8fbed6025dd",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "psr/event-dispatcher": "^1"
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
},
"suggest": {
- "symfony/event-dispatcher-implementation": ""
+ "ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
"psr-4": {
- "Symfony\\Contracts\\EventDispatcher\\": ""
+ "Symfony\\Polyfill\\Mbstring\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2380,48 +6265,70 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Generic abstractions related to dispatching event",
+ "description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
],
- "time": "2019-11-18T17:27:11+00:00"
+ "time": "2021-11-30T18:21:41+00:00"
},
{
- "name": "symfony/filesystem",
- "version": "v5.0.2",
+ "name": "symfony/polyfill-php80",
+ "version": "v1.24.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/filesystem.git",
- "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6"
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/1d71f670bc5a07b9ccc97dc44f932177a322d4e6",
- "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9",
+ "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/polyfill-ctype": "~1.8"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
"psr-4": {
- "Symfony\\Component\\Filesystem\\": ""
+ "Symfony\\Polyfill\\Php80\\": ""
},
- "exclude-from-classmap": [
- "/Tests/"
+ "classmap": [
+ "Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2430,47 +6337,81 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Filesystem Component",
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
- "time": "2019-11-26T23:25:11+00:00"
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-13T13:58:33+00:00"
},
{
- "name": "symfony/finder",
- "version": "v5.0.2",
+ "name": "symfony/polyfill-php81",
+ "version": "v1.24.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "17874dd8ab9a19422028ad56172fb294287a701b"
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/17874dd8ab9a19422028ad56172fb294287a701b",
- "reference": "17874dd8ab9a19422028ad56172fb294287a701b",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
+ "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
"shasum": ""
},
"require": {
- "php": "^7.2.5"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
"psr-4": {
- "Symfony\\Component\\Finder\\": ""
+ "Symfony\\Polyfill\\Php81\\": ""
},
- "exclude-from-classmap": [
- "/Tests/"
+ "classmap": [
+ "Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2479,52 +6420,80 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Finder Component",
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
"homepage": "https://symfony.com",
- "time": "2019-11-18T17:27:11+00:00"
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-13T13:58:11+00:00"
},
{
- "name": "symfony/flex",
- "version": "v1.6.0",
+ "name": "symfony/polyfill-uuid",
+ "version": "v1.24.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/flex.git",
- "reference": "952f45d1c5077e658cb16a61d11603bee873f968"
+ "url": "https://github.com/symfony/polyfill-uuid.git",
+ "reference": "7529922412d23ac44413d0f308861d50cf68d3ee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/flex/zipball/952f45d1c5077e658cb16a61d11603bee873f968",
- "reference": "952f45d1c5077e658cb16a61d11603bee873f968",
+ "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/7529922412d23ac44413d0f308861d50cf68d3ee",
+ "reference": "7529922412d23ac44413d0f308861d50cf68d3ee",
"shasum": ""
},
"require": {
- "composer-plugin-api": "^1.0",
- "php": "^7.0"
+ "php": ">=7.1"
},
- "require-dev": {
- "composer/composer": "^1.0.2",
- "symfony/dotenv": "^3.4|^4.0|^5.0",
- "symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0",
- "symfony/process": "^2.7|^3.0|^4.0|^5.0"
+ "provide": {
+ "ext-uuid": "*"
},
- "type": "composer-plugin",
+ "suggest": {
+ "ext-uuid": "For best performance"
+ },
+ "type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.5-dev"
+ "dev-main": "1.23-dev"
},
- "class": "Symfony\\Flex\\Flex"
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
},
"autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
"psr-4": {
- "Symfony\\Flex\\": "src"
+ "Symfony\\Polyfill\\Uuid\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2533,120 +6502,69 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien.potencier@gmail.com"
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "Composer plugin for Symfony",
- "time": "2019-12-13T18:05:11+00:00"
+ "description": "Symfony polyfill for uuid functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-20T20:35:02+00:00"
},
{
- "name": "symfony/framework-bundle",
- "version": "v5.0.2",
+ "name": "symfony/property-access",
+ "version": "v6.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/framework-bundle.git",
- "reference": "36e51776b231d8e224da4ce4c60079540acd1c55"
+ "url": "https://github.com/symfony/property-access.git",
+ "reference": "428ffd96c60bf2c13b35182f704b24db6712c897"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/36e51776b231d8e224da4ce4c60079540acd1c55",
- "reference": "36e51776b231d8e224da4ce4c60079540acd1c55",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/428ffd96c60bf2c13b35182f704b24db6712c897",
+ "reference": "428ffd96c60bf2c13b35182f704b24db6712c897",
"shasum": ""
},
"require": {
- "ext-xml": "*",
- "php": "^7.2.5",
- "symfony/cache": "^4.4|^5.0",
- "symfony/config": "^5.0",
- "symfony/dependency-injection": "^5.0.1",
- "symfony/error-handler": "^4.4.1|^5.0.1",
- "symfony/filesystem": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/http-kernel": "^5.0",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/routing": "^5.0"
- },
- "conflict": {
- "doctrine/persistence": "<1.3",
- "phpdocumentor/reflection-docblock": "<3.0",
- "phpdocumentor/type-resolver": "<0.2.1",
- "phpunit/phpunit": "<5.4.3",
- "symfony/asset": "<4.4",
- "symfony/browser-kit": "<4.4",
- "symfony/console": "<4.4",
- "symfony/dom-crawler": "<4.4",
- "symfony/dotenv": "<4.4",
- "symfony/form": "<4.4",
- "symfony/http-client": "<4.4",
- "symfony/lock": "<4.4",
- "symfony/mailer": "<4.4",
- "symfony/messenger": "<4.4",
- "symfony/mime": "<4.4",
- "symfony/property-info": "<4.4",
- "symfony/serializer": "<4.4",
- "symfony/stopwatch": "<4.4",
- "symfony/translation": "<5.0",
- "symfony/twig-bridge": "<4.4",
- "symfony/twig-bundle": "<4.4",
- "symfony/validator": "<4.4",
- "symfony/web-profiler-bundle": "<4.4",
- "symfony/workflow": "<4.4"
+ "php": ">=8.0.2",
+ "symfony/property-info": "^5.4|^6.0"
},
"require-dev": {
- "doctrine/annotations": "~1.7",
- "doctrine/cache": "~1.0",
- "paragonie/sodium_compat": "^1.8",
- "phpdocumentor/reflection-docblock": "^3.0|^4.0",
- "symfony/asset": "^4.4|^5.0",
- "symfony/browser-kit": "^4.4|^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/css-selector": "^4.4|^5.0",
- "symfony/dom-crawler": "^4.4|^5.0",
- "symfony/dotenv": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/form": "^4.4|^5.0",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/lock": "^4.4|^5.0",
- "symfony/mailer": "^4.4|^5.0",
- "symfony/messenger": "^4.4|^5.0",
- "symfony/mime": "^4.4|^5.0",
- "symfony/polyfill-intl-icu": "~1.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/property-info": "^4.4|^5.0",
- "symfony/security-csrf": "^4.4|^5.0",
- "symfony/security-http": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/string": "~5.0.0",
- "symfony/translation": "^5.0",
- "symfony/twig-bundle": "^4.4|^5.0",
- "symfony/validator": "^4.4|^5.0",
- "symfony/web-link": "^4.4|^5.0",
- "symfony/workflow": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0",
- "twig/twig": "^2.10|^3.0"
+ "symfony/cache": "^5.4|^6.0"
},
"suggest": {
- "ext-apcu": "For best performance of the system caches",
- "symfony/console": "For using the console commands",
- "symfony/form": "For using forms",
- "symfony/property-info": "For using the property_info service",
- "symfony/serializer": "For using the serializer service",
- "symfony/validator": "For using validation",
- "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering",
- "symfony/yaml": "For using the debug:config and lint:yaml commands"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
+ "psr/cache-implementation": "To cache access methods."
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Bundle\\FrameworkBundle\\": ""
+ "Symfony\\Component\\PropertyAccess\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2666,42 +6584,79 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony FrameworkBundle",
+ "description": "Provides functions to read and write from/to an object or array using a simple string notation",
"homepage": "https://symfony.com",
- "time": "2019-12-17T10:33:13+00:00"
+ "keywords": [
+ "access",
+ "array",
+ "extraction",
+ "index",
+ "injection",
+ "object",
+ "property",
+ "property path",
+ "reflection"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/property-access/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-12T18:59:56+00:00"
},
{
- "name": "symfony/http-foundation",
- "version": "v5.0.2",
+ "name": "symfony/property-info",
+ "version": "v6.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "5dd7f6be6e62d86ba6f3154cf40e78936367978b"
+ "url": "https://github.com/symfony/property-info.git",
+ "reference": "46e4e6d254f80d103689f2bb103b52a6f5ac2fe2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5dd7f6be6e62d86ba6f3154cf40e78936367978b",
- "reference": "5dd7f6be6e62d86ba6f3154cf40e78936367978b",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/46e4e6d254f80d103689f2bb103b52a6f5ac2fe2",
+ "reference": "46e4e6d254f80d103689f2bb103b52a6f5ac2fe2",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/mime": "^4.4|^5.0",
- "symfony/polyfill-mbstring": "~1.1"
+ "php": ">=8.0.2",
+ "symfony/string": "^5.4|^6.0"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<5.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/dependency-injection": "<5.4"
},
"require-dev": {
- "predis/predis": "~1.0",
- "symfony/expression-language": "^4.4|^5.0"
+ "doctrine/annotations": "^1.10.4",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "phpstan/phpdoc-parser": "^1.0",
+ "symfony/cache": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
+ "suggest": {
+ "phpdocumentor/reflection-docblock": "To use the PHPDoc",
+ "psr/cache-implementation": "To cache results",
+ "symfony/doctrine-bridge": "To use Doctrine metadata",
+ "symfony/serializer": "To use Serializer metadata"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
+ "Symfony\\Component\\PropertyInfo\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2713,91 +6668,69 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony HttpFoundation Component",
+ "description": "Extracts information about PHP class' properties using metadata of popular sources",
"homepage": "https://symfony.com",
- "time": "2019-12-19T16:01:11+00:00"
+ "keywords": [
+ "doctrine",
+ "phpdoc",
+ "property",
+ "symfony",
+ "type",
+ "validator"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/property-info/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
},
{
- "name": "symfony/http-kernel",
- "version": "v5.0.2",
+ "name": "symfony/proxy-manager-bridge",
+ "version": "v6.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "00ce30602f3f690e66a63c327743d7b26c723b2e"
+ "url": "https://github.com/symfony/proxy-manager-bridge.git",
+ "reference": "51ba60d4340fd91dd42c9caad76a414a521fbee4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/00ce30602f3f690e66a63c327743d7b26c723b2e",
- "reference": "00ce30602f3f690e66a63c327743d7b26c723b2e",
+ "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/51ba60d4340fd91dd42c9caad76a414a521fbee4",
+ "reference": "51ba60d4340fd91dd42c9caad76a414a521fbee4",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "psr/log": "~1.0",
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/event-dispatcher": "^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-php73": "^1.9"
- },
- "conflict": {
- "symfony/browser-kit": "<4.4",
- "symfony/cache": "<5.0",
- "symfony/config": "<5.0",
- "symfony/dependency-injection": "<4.4",
- "symfony/doctrine-bridge": "<5.0",
- "symfony/form": "<5.0",
- "symfony/http-client": "<5.0",
- "symfony/mailer": "<5.0",
- "symfony/messenger": "<5.0",
- "symfony/translation": "<5.0",
- "symfony/twig-bridge": "<5.0",
- "symfony/validator": "<5.0",
- "twig/twig": "<2.4"
- },
- "provide": {
- "psr/log-implementation": "1.0"
+ "friendsofphp/proxy-manager-lts": "^1.0.2",
+ "php": ">=8.0.2",
+ "symfony/dependency-injection": "^5.4|^6.0"
},
"require-dev": {
- "psr/cache": "~1.0",
- "symfony/browser-kit": "^4.4|^5.0",
- "symfony/config": "^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/css-selector": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/dom-crawler": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/routing": "^4.4|^5.0",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/translation": "^4.4|^5.0",
- "symfony/translation-contracts": "^1.1|^2",
- "twig/twig": "^2.4|^3.0"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
+ "symfony/config": "^5.4|^6.0"
},
+ "type": "symfony-bridge",
"autoload": {
"psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
+ "Symfony\\Bridge\\ProxyManager\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2817,45 +6750,68 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony HttpKernel Component",
+ "description": "Provides integration for ProxyManager with various Symfony components",
"homepage": "https://symfony.com",
- "time": "2019-12-19T18:35:03+00:00"
+ "support": {
+ "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
},
{
- "name": "symfony/mime",
- "version": "v5.0.2",
+ "name": "symfony/psr-http-message-bridge",
+ "version": "v2.1.2",
"source": {
"type": "git",
- "url": "https://github.com/symfony/mime.git",
- "reference": "0e6a4ced216e49d457eddcefb61132173a876d79"
+ "url": "https://github.com/symfony/psr-http-message-bridge.git",
+ "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/0e6a4ced216e49d457eddcefb61132173a876d79",
- "reference": "0e6a4ced216e49d457eddcefb61132173a876d79",
+ "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34",
+ "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/polyfill-intl-idn": "^1.10",
- "symfony/polyfill-mbstring": "^1.0"
- },
- "conflict": {
- "symfony/mailer": "<4.4"
+ "php": ">=7.1",
+ "psr/http-message": "^1.0",
+ "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0"
},
"require-dev": {
- "egulias/email-validator": "^2.1.10",
- "symfony/dependency-injection": "^4.4|^5.0"
+ "nyholm/psr7": "^1.1",
+ "psr/log": "^1.1 || ^2 || ^3",
+ "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0",
+ "symfony/config": "^4.4 || ^5.0 || ^6.0",
+ "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0",
+ "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0",
+ "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0",
+ "symfony/phpunit-bridge": "^5.4@dev || ^6.0"
},
- "type": "library",
+ "suggest": {
+ "nyholm/psr7": "For a super lightweight PSR-7/17 implementation"
+ },
+ "type": "symfony-bridge",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "2.1-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Component\\Mime\\": ""
+ "Symfony\\Bridge\\PsrHttpMessage\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2872,79 +6828,66 @@
},
{
"name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "homepage": "http://symfony.com/contributors"
}
],
- "description": "A library to manipulate MIME messages",
- "homepage": "https://symfony.com",
+ "description": "PSR HTTP message bridge",
+ "homepage": "http://symfony.com",
"keywords": [
- "mime",
- "mime-type"
- ],
- "time": "2019-11-30T14:12:50+00:00"
- },
- {
- "name": "symfony/orm-pack",
- "version": "v1.0.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/orm-pack.git",
- "reference": "c57f5e05232ca40626eb9fa52a32bc8565e9231c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/orm-pack/zipball/c57f5e05232ca40626eb9fa52a32bc8565e9231c",
- "reference": "c57f5e05232ca40626eb9fa52a32bc8565e9231c",
- "shasum": ""
- },
- "require": {
- "doctrine/doctrine-bundle": "^1.6.10|^2.0",
- "doctrine/doctrine-migrations-bundle": "^1.3|^2.0",
- "doctrine/orm": "^2.5.11",
- "php": "^7.0"
+ "http",
+ "http-message",
+ "psr-17",
+ "psr-7"
+ ],
+ "support": {
+ "issues": "https://github.com/symfony/psr-http-message-bridge/issues",
+ "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.2"
},
- "type": "symfony-pack",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
],
- "description": "A pack for the Doctrine ORM",
- "time": "2019-10-18T05:41:09+00:00"
+ "time": "2021-11-05T13:13:39+00:00"
},
{
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.13.1",
+ "name": "symfony/rate-limiter",
+ "version": "v6.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46"
+ "url": "https://github.com/symfony/rate-limiter.git",
+ "reference": "795406813d478966ac2a8d5e8771177a69b64cbf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46",
- "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46",
+ "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/795406813d478966ac2a8d5e8771177a69b64cbf",
+ "reference": "795406813d478966ac2a8d5e8771177a69b64cbf",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
- "symfony/polyfill-mbstring": "^1.3",
- "symfony/polyfill-php72": "^1.9"
+ "php": ">=8.0.2",
+ "symfony/lock": "^5.4|^6.0",
+ "symfony/options-resolver": "^5.4|^6.0"
},
- "suggest": {
- "ext-intl": "For best performance"
+ "require-dev": {
+ "psr/cache": "^1.0|^2.0|^3.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.13-dev"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ "Symfony\\Component\\RateLimiter\\": ""
},
- "files": [
- "bootstrap.php"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2953,58 +6896,84 @@
],
"authors": [
{
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
+ "name": "Wouter de Jong",
+ "email": "wouter@wouterj.nl"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "description": "Provides a Token Bucket implementation to rate limit input and output in your application",
"homepage": "https://symfony.com",
"keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
+ "limiter",
+ "rate-limiter"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/rate-limiter/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
],
- "time": "2019-11-27T13:56:44+00:00"
+ "time": "2022-01-24T15:11:35+00:00"
},
{
- "name": "symfony/polyfill-mbstring",
- "version": "v1.13.1",
+ "name": "symfony/routing",
+ "version": "v6.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f"
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f",
- "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099",
+ "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=8.0.2"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.12",
+ "symfony/config": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/yaml": "<5.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.12",
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
- "ext-mbstring": "For best performance"
+ "symfony/config": "For using the all-in-one router or any loader",
+ "symfony/expression-language": "For using expression matching",
+ "symfony/http-foundation": "For using a Symfony Request object",
+ "symfony/yaml": "For using the YAML loader"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.13-dev"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
+ "Symfony\\Component\\Routing\\": ""
},
- "files": [
- "bootstrap.php"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -3013,57 +6982,80 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for the Mbstring extension",
+ "description": "Maps an HTTP request to a set of configuration variables",
"homepage": "https://symfony.com",
"keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
+ "router",
+ "routing",
+ "uri",
+ "url"
],
- "time": "2019-11-27T14:18:11+00:00"
+ "support": {
+ "source": "https://github.com/symfony/routing/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
},
{
- "name": "symfony/polyfill-php73",
- "version": "v1.13.1",
+ "name": "symfony/runtime",
+ "version": "v6.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f"
+ "url": "https://github.com/symfony/runtime.git",
+ "reference": "3b1ee78e883101439eb6c033feb43a5eea7fe190"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f",
- "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f",
+ "url": "https://api.github.com/repos/symfony/runtime/zipball/3b1ee78e883101439eb6c033feb43a5eea7fe190",
+ "reference": "3b1ee78e883101439eb6c033feb43a5eea7fe190",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "composer-plugin-api": "^1.0|^2.0",
+ "php": ">=8.0.2"
},
- "type": "library",
+ "conflict": {
+ "symfony/dotenv": "<5.4"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0.2|^2.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/dotenv": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0"
+ },
+ "type": "composer-plugin",
"extra": {
- "branch-alias": {
- "dev-master": "1.13-dev"
- }
+ "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin"
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
+ "Symfony\\Component\\Runtime\\": "",
+ "Symfony\\Runtime\\Symfony\\Component\\": "Internal/"
},
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -3080,63 +7072,78 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "description": "Enables decoupling PHP applications from global state",
"homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
+ "support": {
+ "source": "https://github.com/symfony/runtime/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
],
- "time": "2019-11-27T16:25:15+00:00"
+ "time": "2022-01-26T17:34:56+00:00"
},
{
- "name": "symfony/routing",
- "version": "v5.0.2",
+ "name": "symfony/security-core",
+ "version": "v6.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "120c5fa4f4ef5466cbb510ece8126e0007285301"
+ "url": "https://github.com/symfony/security-core.git",
+ "reference": "eccb5675df44b2d7f3ad3a936c09ee8cb8340de5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/120c5fa4f4ef5466cbb510ece8126e0007285301",
- "reference": "120c5fa4f4ef5466cbb510ece8126e0007285301",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/eccb5675df44b2d7f3ad3a936c09ee8cb8340de5",
+ "reference": "eccb5675df44b2d7f3ad3a936c09ee8cb8340de5",
"shasum": ""
},
"require": {
- "php": "^7.2.5"
+ "php": ">=8.0.2",
+ "symfony/event-dispatcher-contracts": "^1.1|^2|^3",
+ "symfony/password-hasher": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1.6|^2|^3"
},
"conflict": {
- "symfony/config": "<5.0",
- "symfony/dependency-injection": "<4.4",
- "symfony/yaml": "<4.4"
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/http-foundation": "<5.4",
+ "symfony/ldap": "<5.4",
+ "symfony/security-guard": "<5.4",
+ "symfony/validator": "<5.4"
},
"require-dev": {
- "doctrine/annotations": "~1.2",
- "psr/log": "~1.0",
- "symfony/config": "^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0"
+ "psr/cache": "^1.0|^2.0|^3.0",
+ "psr/container": "^1.1|^2.0",
+ "psr/log": "^1|^2|^3",
+ "symfony/cache": "^5.4|^6.0",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/ldap": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/validator": "^5.4|^6.0"
},
"suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
+ "psr/container-implementation": "To instantiate the Security class",
+ "symfony/event-dispatcher": "",
+ "symfony/expression-language": "For using the expression voter",
+ "symfony/http-foundation": "",
+ "symfony/ldap": "For using LDAP integration",
+ "symfony/validator": "For using the user password constraint"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Component\\Routing\\": ""
+ "Symfony\\Component\\Security\\Core\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -3156,72 +7163,85 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Routing Component",
+ "description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
+ "support": {
+ "source": "https://github.com/symfony/security-core/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
],
- "time": "2019-12-12T13:03:32+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/serializer",
- "version": "v5.0.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
- "reference": "3cfc478c102f2d3bcf60edd339cd9c3cb446a576"
+ "reference": "8a81ecc4f0ca229961c6c2d699e634bf6f80c4fc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/serializer/zipball/3cfc478c102f2d3bcf60edd339cd9c3cb446a576",
- "reference": "3cfc478c102f2d3bcf60edd339cd9c3cb446a576",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/8a81ecc4f0ca229961c6c2d699e634bf6f80c4fc",
+ "reference": "8a81ecc4f0ca229961c6c2d699e634bf6f80c4fc",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
+ "php": ">=8.0.2",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
- "phpdocumentor/type-resolver": "<0.2.1",
- "symfony/dependency-injection": "<4.4",
- "symfony/property-access": "<4.4",
- "symfony/property-info": "<4.4",
- "symfony/yaml": "<4.4"
+ "doctrine/annotations": "<1.12",
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/property-access": "<5.4",
+ "symfony/property-info": "<5.4",
+ "symfony/uid": "<5.4",
+ "symfony/yaml": "<5.4"
},
"require-dev": {
- "doctrine/annotations": "~1.0",
- "doctrine/cache": "~1.0",
- "phpdocumentor/reflection-docblock": "^3.2|^4.0",
- "symfony/cache": "^4.4|^5.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/mime": "^4.4|^5.0",
- "symfony/property-access": "^4.4|^5.0",
- "symfony/property-info": "^4.4|^5.0",
- "symfony/validator": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0"
+ "doctrine/annotations": "^1.12",
+ "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0",
+ "symfony/cache": "^5.4|^6.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/filesystem": "^5.4|^6.0",
+ "symfony/form": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0",
+ "symfony/property-access": "^5.4|^6.0",
+ "symfony/property-info": "^5.4|^6.0",
+ "symfony/uid": "^5.4|^6.0",
+ "symfony/validator": "^5.4|^6.0",
+ "symfony/var-dumper": "^5.4|^6.0",
+ "symfony/var-exporter": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
- "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
- "doctrine/cache": "For using the default cached annotation reader and metadata cache.",
"psr/cache-implementation": "For using the metadata cache.",
"symfony/config": "For using the XML mapping loader.",
"symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.",
"symfony/property-access": "For using the ObjectNormalizer.",
"symfony/property-info": "To deserialize relations.",
+ "symfony/var-exporter": "For using the metadata compiler.",
"symfony/yaml": "For using the default YAML mapping loader."
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Serializer\\": ""
@@ -3244,27 +7264,98 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Serializer Component",
+ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com",
- "time": "2019-12-16T11:08:25+00:00"
+ "support": {
+ "source": "https://github.com/symfony/serializer/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T17:34:56+00:00"
+ },
+ {
+ "name": "symfony/serializer-pack",
+ "version": "v1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/serializer-pack.git",
+ "reference": "d6b1aca1e4f853d0d1ad3da24576e4dd9ab22510"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/serializer-pack/zipball/d6b1aca1e4f853d0d1ad3da24576e4dd9ab22510",
+ "reference": "d6b1aca1e4f853d0d1ad3da24576e4dd9ab22510",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "phpdocumentor/reflection-docblock": "*",
+ "phpstan/phpdoc-parser": "*",
+ "symfony/property-access": "*",
+ "symfony/property-info": "*",
+ "symfony/serializer": "*"
+ },
+ "conflict": {
+ "symfony/property-info": "<5.4"
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for the Symfony serializer",
+ "support": {
+ "issues": "https://github.com/symfony/serializer-pack/issues",
+ "source": "https://github.com/symfony/serializer-pack/tree/v1.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-30T16:37:42+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v2.0.1",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "144c5e51266b281231e947b51223ba14acf1a749"
+ "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749",
- "reference": "144c5e51266b281231e947b51223ba14acf1a749",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603",
+ "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "psr/container": "^1.0"
+ "php": ">=8.0.2",
+ "psr/container": "^2.0"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
},
"suggest": {
"symfony/service-implementation": ""
@@ -3272,7 +7363,11 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
},
"autoload": {
@@ -3304,36 +7399,125 @@
"interoperability",
"standards"
],
- "time": "2019-11-18T17:27:11+00:00"
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-04T17:53:12+00:00"
},
{
"name": "symfony/stopwatch",
- "version": "v5.0.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "d410282956706e0b08681a5527447a8e6b6f421e"
+ "reference": "6835045bb9f00fa4486ea4f1bcaf623be761556f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/d410282956706e0b08681a5527447a8e6b6f421e",
- "reference": "d410282956706e0b08681a5527447a8e6b6f421e",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6835045bb9f00fa4486ea4f1bcaf623be761556f",
+ "reference": "6835045bb9f00fa4486ea4f1bcaf623be761556f",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/service-contracts": "^1.0|^2"
+ "php": ">=8.0.2",
+ "symfony/service-contracts": "^1|^2|^3"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides a way to profile code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/stopwatch/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2",
+ "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/translation-contracts": "<2.0"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/translation-contracts": "^2.0|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Stopwatch\\": ""
+ "Symfony\\Component\\String\\": ""
},
+ "files": [
+ "Resources/functions.php"
+ ],
"exclude-from-classmap": [
"/Tests/"
]
@@ -3344,34 +7528,59 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "description": "Symfony Stopwatch Component",
- "homepage": "https://symfony.com",
- "time": "2019-11-18T17:27:11+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v2.0.1",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed"
+ "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed",
- "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77",
+ "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77",
"shasum": ""
},
"require": {
- "php": "^7.2.5"
+ "php": ">=8.0.2"
},
"suggest": {
"symfony/translation-implementation": ""
@@ -3379,7 +7588,11 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
},
"autoload": {
@@ -3411,161 +7624,93 @@
"interoperability",
"standards"
],
- "time": "2019-11-18T17:27:11+00:00"
- },
- {
- "name": "symfony/twig-bridge",
- "version": "v5.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/twig-bridge.git",
- "reference": "abbaeee38ff39651e335c55be40752be2ddd0976"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/abbaeee38ff39651e335c55be40752be2ddd0976",
- "reference": "abbaeee38ff39651e335c55be40752be2ddd0976",
- "shasum": ""
- },
- "require": {
- "php": "^7.2.5",
- "symfony/translation-contracts": "^1.1|^2",
- "twig/twig": "^2.10|^3.0"
- },
- "conflict": {
- "symfony/console": "<4.4",
- "symfony/form": "<5.0",
- "symfony/http-foundation": "<4.4",
- "symfony/http-kernel": "<4.4",
- "symfony/translation": "<5.0",
- "symfony/workflow": "<4.4"
- },
- "require-dev": {
- "egulias/email-validator": "^2.1.10",
- "symfony/asset": "^4.4|^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/form": "^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/mime": "^4.4|^5.0",
- "symfony/polyfill-intl-icu": "~1.0",
- "symfony/routing": "^4.4|^5.0",
- "symfony/security-acl": "^2.8|^3.0",
- "symfony/security-core": "^4.4|^5.0",
- "symfony/security-csrf": "^4.4|^5.0",
- "symfony/security-http": "^4.4|^5.0",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/translation": "^5.0",
- "symfony/web-link": "^4.4|^5.0",
- "symfony/workflow": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0",
- "twig/cssinliner-extra": "^2.12",
- "twig/inky-extra": "^2.12",
- "twig/markdown-extra": "^2.12"
- },
- "suggest": {
- "symfony/asset": "For using the AssetExtension",
- "symfony/expression-language": "For using the ExpressionExtension",
- "symfony/finder": "",
- "symfony/form": "For using the FormExtension",
- "symfony/http-kernel": "For using the HttpKernelExtension",
- "symfony/routing": "For using the RoutingExtension",
- "symfony/security-core": "For using the SecurityExtension",
- "symfony/security-csrf": "For using the CsrfExtension",
- "symfony/security-http": "For using the LogoutUrlExtension",
- "symfony/stopwatch": "For using the StopwatchExtension",
- "symfony/translation": "For using the TranslationExtension",
- "symfony/var-dumper": "For using the DumpExtension",
- "symfony/web-link": "For using the WebLinkExtension",
- "symfony/yaml": "For using the YamlExtension"
- },
- "type": "symfony-bridge",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.0.0"
},
- "autoload": {
- "psr-4": {
- "Symfony\\Bridge\\Twig\\": ""
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
},
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "url": "https://github.com/fabpot",
+ "type": "github"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "description": "Symfony Twig Bridge",
- "homepage": "https://symfony.com",
- "time": "2019-12-18T16:23:52+00:00"
+ "time": "2021-09-07T12:43:40+00:00"
},
{
- "name": "symfony/twig-bundle",
- "version": "v5.0.2",
+ "name": "symfony/validator",
+ "version": "v6.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/twig-bundle.git",
- "reference": "a54f6db9d452aa06a77e9f8562974a61e15bfa42"
+ "url": "https://github.com/symfony/validator.git",
+ "reference": "35f3614f605227ad16e03cab9fb9815ba05f5878"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a54f6db9d452aa06a77e9f8562974a61e15bfa42",
- "reference": "a54f6db9d452aa06a77e9f8562974a61e15bfa42",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/35f3614f605227ad16e03cab9fb9815ba05f5878",
+ "reference": "35f3614f605227ad16e03cab9fb9815ba05f5878",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/config": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/http-kernel": "^5.0",
+ "php": ">=8.0.2",
"symfony/polyfill-ctype": "~1.8",
- "symfony/twig-bridge": "^5.0",
- "twig/twig": "^2.10|^3.0"
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php81": "^1.22",
+ "symfony/translation-contracts": "^1.1|^2|^3"
},
"conflict": {
- "symfony/dependency-injection": "<4.4",
- "symfony/framework-bundle": "<5.0",
- "symfony/translation": "<5.0"
+ "doctrine/annotations": "<1.13",
+ "doctrine/lexer": "<1.1",
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/expression-language": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/intl": "<5.4",
+ "symfony/property-info": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/yaml": "<5.4"
},
"require-dev": {
- "doctrine/annotations": "~1.7",
- "doctrine/cache": "~1.0",
- "symfony/asset": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/form": "^4.4|^5.0",
- "symfony/framework-bundle": "^5.0",
- "symfony/routing": "^4.4|^5.0",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/translation": "^5.0",
- "symfony/web-link": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0"
+ "doctrine/annotations": "^1.13",
+ "egulias/email-validator": "^2.1.10|^3",
+ "symfony/cache": "^5.4|^6.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/intl": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0",
+ "symfony/property-access": "^5.4|^6.0",
+ "symfony/property-info": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
},
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
+ "suggest": {
+ "egulias/email-validator": "Strict (RFC compliant) email validation",
+ "psr/cache-implementation": "For using the mapping cache.",
+ "symfony/config": "",
+ "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints",
+ "symfony/http-foundation": "",
+ "symfony/intl": "",
+ "symfony/property-access": "For accessing properties within comparison constraints",
+ "symfony/property-info": "To automatically add NotNull and Type constraints",
+ "symfony/translation": "For translating validation errors.",
+ "symfony/yaml": ""
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Bundle\\TwigBundle\\": ""
+ "Symfony\\Component\\Validator\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -3585,37 +7730,55 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony TwigBundle",
+ "description": "Provides tools to validate values",
"homepage": "https://symfony.com",
- "time": "2019-12-10T11:06:55+00:00"
+ "support": {
+ "source": "https://github.com/symfony/validator/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T17:23:29+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v5.0.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a"
+ "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a",
- "reference": "d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834",
+ "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
+ "php": ">=8.0.2",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"phpunit/phpunit": "<5.4.3",
- "symfony/console": "<4.4"
+ "symfony/console": "<5.4"
},
"require-dev": {
"ext-iconv": "*",
- "symfony/console": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "twig/twig": "^2.4|^3.0"
+ "symfony/console": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/uid": "^5.4|^6.0",
+ "twig/twig": "^2.13|^3.0.4"
},
"suggest": {
"ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
@@ -3626,11 +7789,6 @@
"Resources/bin/var-dump-server"
],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
"autoload": {
"files": [
"Resources/functions/dump.php"
@@ -3656,40 +7814,52 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony mechanism for exploring and dumping PHP variables",
+ "description": "Provides mechanisms for walking through any arbitrary PHP variable",
"homepage": "https://symfony.com",
"keywords": [
"debug",
"dump"
],
- "time": "2019-12-18T13:50:31+00:00"
+ "support": {
+ "source": "https://github.com/symfony/var-dumper/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-17T16:30:44+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v5.0.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "1b9653e68d5b701bf6d9c91bdd3660078c9f4f28"
+ "reference": "1261b2d4a23081cb2b59a4caa311a5ac43b845b6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1b9653e68d5b701bf6d9c91bdd3660078c9f4f28",
- "reference": "1b9653e68d5b701bf6d9c91bdd3660078c9f4f28",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1261b2d4a23081cb2b59a4caa311a5ac43b845b6",
+ "reference": "1261b2d4a23081cb2b59a4caa311a5ac43b845b6",
"shasum": ""
},
"require": {
- "php": "^7.2.5"
+ "php": ">=8.0.2"
},
"require-dev": {
- "symfony/var-dumper": "^4.4|^5.0"
+ "symfony/var-dumper": "^5.4|^6.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\VarExporter\\": ""
@@ -3712,7 +7882,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code",
+ "description": "Allows exporting any serializable PHP data structure to plain PHP code",
"homepage": "https://symfony.com",
"keywords": [
"clone",
@@ -3722,41 +7892,56 @@
"instantiate",
"serialize"
],
- "time": "2019-12-01T08:48:26+00:00"
+ "support": {
+ "source": "https://github.com/symfony/var-exporter/tree/v6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/yaml",
- "version": "v5.0.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "847661e77afa48d99ecfa508e8b60f0b029a19c0"
+ "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/847661e77afa48d99ecfa508e8b60f0b029a19c0",
- "reference": "847661e77afa48d99ecfa508e8b60f0b029a19c0",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/e77f3ea0b21141d771d4a5655faa54f692b34af5",
+ "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5",
"shasum": ""
},
"require": {
- "php": "^7.2.5",
- "symfony/polyfill-ctype": "~1.8"
+ "php": ">=8.0.2",
+ "symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/console": "<4.4"
+ "symfony/console": "<5.4"
},
"require-dev": {
- "symfony/console": "^4.4|^5.0"
+ "symfony/console": "^5.4|^6.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
},
+ "bin": [
+ "Resources/bin/yaml-lint"
+ ],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
@@ -3779,228 +7964,129 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Yaml Component",
+ "description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
- "time": "2019-12-10T11:06:55+00:00"
- },
- {
- "name": "twig/twig",
- "version": "v3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/twigphp/Twig.git",
- "reference": "9b58bb8ac7a41d72fbb5a7dc643e07923e5ccc26"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/9b58bb8ac7a41d72fbb5a7dc643e07923e5ccc26",
- "reference": "9b58bb8ac7a41d72fbb5a7dc643e07923e5ccc26",
- "shasum": ""
- },
- "require": {
- "php": "^7.2.9",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-mbstring": "^1.3"
- },
- "require-dev": {
- "psr/container": "^1.0",
- "symfony/debug": "^3.4|^4.2|^5.0",
- "symfony/phpunit-bridge": "^4.4@dev|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Twig\\": "src/"
- }
+ "support": {
+ "source": "https://github.com/symfony/yaml/tree/v6.0.3"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
+ "funding": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com",
- "homepage": "http://fabien.potencier.org",
- "role": "Lead Developer"
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
},
{
- "name": "Twig Team",
- "homepage": "https://twig.symfony.com/contributors",
- "role": "Contributors"
+ "url": "https://github.com/fabpot",
+ "type": "github"
},
{
- "name": "Armin Ronacher",
- "email": "armin.ronacher@active-4.com",
- "role": "Project Founder"
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "description": "Twig, the flexible, fast, and secure template language for PHP",
- "homepage": "https://twig.symfony.com",
- "keywords": [
- "templating"
- ],
- "time": "2019-11-15T20:38:32+00:00"
+ "time": "2022-01-26T17:23:29+00:00"
},
{
- "name": "zendframework/zend-code",
- "version": "3.4.1",
+ "name": "webmozart/assert",
+ "version": "1.10.0",
"source": {
"type": "git",
- "url": "https://github.com/zendframework/zend-code.git",
- "reference": "268040548f92c2bfcba164421c1add2ba43abaaa"
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zendframework/zend-code/zipball/268040548f92c2bfcba164421c1add2ba43abaaa",
- "reference": "268040548f92c2bfcba164421c1add2ba43abaaa",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
"shasum": ""
},
"require": {
- "php": "^7.1",
- "zendframework/zend-eventmanager": "^2.6 || ^3.0"
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "phpspec/prophecy": "<1.9.0"
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
},
"require-dev": {
- "doctrine/annotations": "^1.7",
- "ext-phar": "*",
- "phpunit/phpunit": "^7.5.16 || ^8.4",
- "zendframework/zend-coding-standard": "^1.0",
- "zendframework/zend-stdlib": "^2.7 || ^3.0"
- },
- "suggest": {
- "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
- "zendframework/zend-stdlib": "Zend\\Stdlib component"
+ "phpunit/phpunit": "^8.5.13"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.4.x-dev",
- "dev-develop": "3.5.x-dev",
- "dev-dev-4.0": "4.0.x-dev"
+ "dev-master": "1.10-dev"
}
},
"autoload": {
"psr-4": {
- "Zend\\Code\\": "src/"
+ "Webmozart\\Assert\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
- ],
- "description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
- "keywords": [
- "ZendFramework",
- "code",
- "zf"
+ "MIT"
],
- "time": "2019-12-10T19:21:15+00:00"
- },
- {
- "name": "zendframework/zend-eventmanager",
- "version": "3.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/zendframework/zend-eventmanager.git",
- "reference": "a5e2583a211f73604691586b8406ff7296a946dd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd",
- "reference": "a5e2583a211f73604691586b8406ff7296a946dd",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "require-dev": {
- "athletic/athletic": "^0.1",
- "container-interop/container-interop": "^1.1.0",
- "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
- "zendframework/zend-coding-standard": "~1.0.0",
- "zendframework/zend-stdlib": "^2.7.3 || ^3.0"
- },
- "suggest": {
- "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature",
- "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.2-dev",
- "dev-develop": "3.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Zend\\EventManager\\": "src/"
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
}
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
],
- "description": "Trigger and listen to events within a PHP application",
- "homepage": "https://github.com/zendframework/zend-eventmanager",
+ "description": "Assertions to validate method input/output with nice error messages.",
"keywords": [
- "event",
- "eventmanager",
- "events",
- "zf2"
+ "assert",
+ "check",
+ "validate"
],
- "time": "2018-04-25T15:33:34+00:00"
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ },
+ "time": "2021-03-09T10:59:23+00:00"
}
],
"packages-dev": [
{
"name": "doctrine/data-fixtures",
- "version": "1.4.0",
+ "version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/data-fixtures.git",
- "reference": "608a35a3b5bcc4214d116603095f8b0c51091592"
+ "reference": "51c1890e8c5467c421c7cab4579f059ebf720278"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/608a35a3b5bcc4214d116603095f8b0c51091592",
- "reference": "608a35a3b5bcc4214d116603095f8b0c51091592",
+ "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/51c1890e8c5467c421c7cab4579f059ebf720278",
+ "reference": "51c1890e8c5467c421c7cab4579f059ebf720278",
"shasum": ""
},
"require": {
- "doctrine/common": "^2.11",
- "php": "^7.2"
+ "doctrine/common": "^2.13|^3.0",
+ "doctrine/persistence": "^1.3.3|^2.0",
+ "php": "^7.2 || ^8.0"
},
"conflict": {
+ "doctrine/dbal": "<2.13",
"doctrine/phpcr-odm": "<1.3.0"
},
"require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
- "doctrine/coding-standard": "^6.0",
- "doctrine/dbal": "^2.5.4",
- "doctrine/mongodb-odm": "^1.3.0",
- "doctrine/orm": "^2.5.4",
- "phpunit/phpunit": "^7.0"
+ "doctrine/coding-standard": "^9.0",
+ "doctrine/dbal": "^2.13 || ^3.0",
+ "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0",
+ "doctrine/orm": "^2.7.0",
+ "ext-sqlite3": "*",
+ "jangregor/phpstan-prophecy": "^0.8.1",
+ "phpstan/phpstan": "^0.12.99",
+ "phpunit/phpunit": "^8.0",
+ "symfony/cache": "^5.0 || ^6.0",
+ "vimeo/psalm": "^4.10"
},
"suggest": {
- "alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7",
+ "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)",
"doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
"doctrine/orm": "For loading ORM fixtures",
"doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures"
@@ -4017,48 +8103,64 @@
}
],
"description": "Data Fixtures for all Doctrine Object Managers",
- "homepage": "http://www.doctrine-project.org",
+ "homepage": "https://www.doctrine-project.org",
"keywords": [
"database"
],
- "time": "2019-10-30T20:03:18+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/data-fixtures/issues",
+ "source": "https://github.com/doctrine/data-fixtures/tree/1.5.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdata-fixtures",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-20T17:10:56+00:00"
},
{
"name": "doctrine/doctrine-fixtures-bundle",
- "version": "3.3.0",
+ "version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
- "reference": "8f07fcfdac7f3591f3c4bf13a50cbae05f65ed70"
+ "reference": "31ba202bebce0b66fe830f49f96228dcdc1503e7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/8f07fcfdac7f3591f3c4bf13a50cbae05f65ed70",
- "reference": "8f07fcfdac7f3591f3c4bf13a50cbae05f65ed70",
+ "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/31ba202bebce0b66fe830f49f96228dcdc1503e7",
+ "reference": "31ba202bebce0b66fe830f49f96228dcdc1503e7",
"shasum": ""
},
"require": {
"doctrine/data-fixtures": "^1.3",
"doctrine/doctrine-bundle": "^1.11|^2.0",
"doctrine/orm": "^2.6.0",
- "php": "^7.1",
- "symfony/config": "^3.4|^4.3|^5.0",
- "symfony/console": "^3.4|^4.3|^5.0",
- "symfony/dependency-injection": "^3.4|^4.3|^5.0",
- "symfony/doctrine-bridge": "^3.4|^4.1|^5.0",
- "symfony/http-kernel": "^3.4|^4.3|^5.0"
+ "doctrine/persistence": "^1.3.7|^2.0",
+ "php": "^7.1 || ^8.0",
+ "symfony/config": "^3.4|^4.3|^5.0|^6.0",
+ "symfony/console": "^3.4|^4.3|^5.0|^6.0",
+ "symfony/dependency-injection": "^3.4.47|^4.3|^5.0|^6.0",
+ "symfony/doctrine-bridge": "^3.4|^4.1|^5.0|^6.0",
+ "symfony/http-kernel": "^3.4|^4.3|^5.0|^6.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpunit/phpunit": "^7.4",
- "symfony/phpunit-bridge": "^4.1|^5.0"
+ "doctrine/coding-standard": "^8.0",
+ "phpstan/phpstan": "^0.12.99",
+ "phpunit/phpunit": "^7.4 || ^8.0 || ^9.2",
+ "symfony/phpunit-bridge": "^4.1|^5.0|^6.0",
+ "vimeo/psalm": "^4.10"
},
"type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "3.3.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\FixturesBundle\\": ""
@@ -4088,147 +8190,566 @@
"Fixture",
"persistence"
],
- "time": "2019-11-13T15:46:58+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues",
+ "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-fixtures-bundle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-28T05:46:28+00:00"
},
{
- "name": "nikic/php-parser",
- "version": "v4.3.0",
+ "name": "laravel/pint",
+ "version": "v1.2.0",
"source": {
"type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc"
+ "url": "https://github.com/laravel/pint.git",
+ "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc",
- "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc",
+ "url": "https://api.github.com/repos/laravel/pint/zipball/1d276e4c803397a26cc337df908f55c2a4e90d86",
+ "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86",
"shasum": ""
},
"require": {
+ "ext-json": "*",
+ "ext-mbstring": "*",
"ext-tokenizer": "*",
- "php": ">=7.0"
+ "ext-xml": "*",
+ "php": "^8.0"
},
"require-dev": {
- "ircmaxell/php-yacc": "0.0.5",
- "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
+ "friendsofphp/php-cs-fixer": "^3.11.0",
+ "illuminate/view": "^9.27",
+ "laravel-zero/framework": "^9.1.3",
+ "mockery/mockery": "^1.5.0",
+ "nunomaduro/larastan": "^2.2",
+ "nunomaduro/termwind": "^1.14.0",
+ "pestphp/pest": "^1.22.1"
},
"bin": [
- "bin/php-parse"
+ "builds/pint"
],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
+ "type": "project",
"autoload": {
"psr-4": {
- "PhpParser\\": "lib/PhpParser"
+ "App\\": "app/",
+ "Database\\Seeders\\": "database/seeders/",
+ "Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Nikita Popov"
+ "name": "Nuno Maduro",
+ "email": "enunomaduro@gmail.com"
}
],
- "description": "A PHP parser written in PHP",
+ "description": "An opinionated code formatter for PHP.",
+ "homepage": "https://laravel.com",
"keywords": [
- "parser",
+ "format",
+ "formatter",
+ "lint",
+ "linter",
"php"
],
- "time": "2019-11-08T13:50:10+00:00"
+ "support": {
+ "issues": "https://github.com/laravel/pint/issues",
+ "source": "https://github.com/laravel/pint"
+ },
+ "time": "2022-09-13T15:07:15+00:00"
},
{
- "name": "symfony/maker-bundle",
- "version": "v1.14.3",
+ "name": "roave/security-advisories",
+ "version": "dev-latest",
"source": {
"type": "git",
- "url": "https://github.com/symfony/maker-bundle.git",
- "reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded"
+ "url": "https://github.com/Roave/SecurityAdvisories.git",
+ "reference": "1032f0ce78ed92e983c17697eafd202ac5cbbca4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c864e7f9b8d1e1f5f60acc3beda11299f637aded",
- "reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/1032f0ce78ed92e983c17697eafd202ac5cbbca4",
+ "reference": "1032f0ce78ed92e983c17697eafd202ac5cbbca4",
"shasum": ""
},
- "require": {
- "doctrine/inflector": "^1.2",
- "nikic/php-parser": "^4.0",
- "php": "^7.0.8",
- "symfony/config": "^3.4|^4.0|^5.0",
- "symfony/console": "^3.4|^4.0|^5.0",
- "symfony/dependency-injection": "^3.4|^4.0|^5.0",
- "symfony/filesystem": "^3.4|^4.0|^5.0",
- "symfony/finder": "^3.4|^4.0|^5.0",
- "symfony/framework-bundle": "^3.4|^4.0|^5.0",
- "symfony/http-kernel": "^3.4|^4.0|^5.0"
- },
- "require-dev": {
- "doctrine/doctrine-bundle": "^1.8|^2.0",
- "doctrine/orm": "^2.3",
- "friendsofphp/php-cs-fixer": "^2.8",
- "friendsoftwig/twigcs": "^3.1.2",
- "symfony/http-client": "^4.3|^5.0",
- "symfony/phpunit-bridge": "^4.3|^5.0",
- "symfony/process": "^3.4|^4.0|^5.0",
- "symfony/security-core": "^3.4|^4.0|^5.0",
- "symfony/yaml": "^3.4|^4.0|^5.0"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Bundle\\MakerBundle\\": "src/"
- }
- },
+ "conflict": {
+ "3f/pygmentize": "<1.2",
+ "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
+ "akaunting/akaunting": "<2.1.13",
+ "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
+ "amazing/media2click": ">=1,<1.3.3",
+ "amphp/artax": "<1.0.6|>=2,<2.0.6",
+ "amphp/http": "<1.0.1",
+ "amphp/http-client": ">=4,<4.4",
+ "anchorcms/anchor-cms": "<=0.12.7",
+ "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6",
+ "area17/twill": "<1.2.5|>=2,<2.5.3",
+ "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
+ "aws/aws-sdk-php": ">=3,<3.2.1",
+ "bagisto/bagisto": "<0.1.5",
+ "barrelstrength/sprout-base-email": "<1.2.7",
+ "barrelstrength/sprout-forms": "<3.9",
+ "baserproject/basercms": "<4.5.4",
+ "billz/raspap-webgui": "<=2.6.6",
+ "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
+ "bolt/bolt": "<3.7.2",
+ "bolt/core": "<4.1.13",
+ "bottelet/flarepoint": "<2.2.1",
+ "brightlocal/phpwhois": "<=4.2.5",
+ "buddypress/buddypress": "<7.2.1",
+ "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
+ "bytefury/crater": "<6.0.2",
+ "cachethq/cachet": "<2.5.1",
+ "cakephp/cakephp": "<4.0.6",
+ "cardgate/magento2": "<2.0.33",
+ "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
+ "cartalyst/sentry": "<=2.1.6",
+ "catfan/medoo": "<1.7.5",
+ "centreon/centreon": "<20.10.7",
+ "cesnet/simplesamlphp-module-proxystatistics": "<3.1",
+ "codeception/codeception": "<3.1.3|>=4,<4.1.22",
+ "codeigniter/framework": "<=3.0.6",
+ "codeigniter4/framework": "<4.1.8",
+ "codiad/codiad": "<=2.8.4",
+ "composer/composer": "<1.10.23|>=2-alpha.1,<2.1.9",
+ "concrete5/concrete5": "<8.5.5",
+ "concrete5/core": "<8.5.7",
+ "contao-components/mediaelement": ">=2.14.2,<2.21.1",
+ "contao/core": ">=2,<3.5.39",
+ "contao/core-bundle": "<4.9.18|>=4.10,<4.11.7|= 4.10.0",
+ "contao/listing-bundle": ">=4,<4.4.8",
+ "craftcms/cms": "<3.7.14",
+ "croogo/croogo": "<3.0.7",
+ "datadog/dd-trace": ">=0.30,<0.30.2",
+ "david-garcia/phpwhois": "<=4.3.1",
+ "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
+ "directmailteam/direct-mail": "<5.2.4",
+ "doctrine/annotations": ">=1,<1.2.7",
+ "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
+ "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
+ "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4",
+ "doctrine/doctrine-bundle": "<1.5.2",
+ "doctrine/doctrine-module": "<=0.7.1",
+ "doctrine/mongodb-odm": ">=1,<1.0.2",
+ "doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
+ "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
+ "dolibarr/dolibarr": "<=14.0.5|>= 3.3.beta1, < 13.0.2",
+ "dompdf/dompdf": ">=0.6,<0.6.2",
+ "drupal/core": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
+ "drupal/drupal": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
+ "dweeves/magmi": "<=0.7.24",
+ "ecodev/newsletter": "<=4",
+ "elgg/elgg": "<3.3.24|>=4,<4.0.5",
+ "endroid/qr-code-bundle": "<3.4.2",
+ "enshrined/svg-sanitize": "<0.15",
+ "erusev/parsedown": "<1.7.2",
+ "ether/logs": "<3.0.4",
+ "ezsystems/demobundle": ">=5.4,<5.4.6.1",
+ "ezsystems/ez-support-tools": ">=2.2,<2.2.3",
+ "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1",
+ "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1",
+ "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24",
+ "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<=1.5.25",
+ "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
+ "ezsystems/ezplatform-kernel": "<=1.2.5|>=1.3,<=1.3.1",
+ "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
+ "ezsystems/ezplatform-richtext": ">=2.3,<=2.3.7",
+ "ezsystems/ezplatform-user": ">=1,<1.0.1",
+ "ezsystems/ezpublish-kernel": "<=6.13.8.1|>=7,<7.5.26",
+ "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.3.5.1",
+ "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
+ "ezsystems/repository-forms": ">=2.3,<2.3.2.1",
+ "ezyang/htmlpurifier": "<4.1.1",
+ "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
+ "feehi/cms": "<=2.1.1",
+ "feehi/feehicms": "<=0.1.3",
+ "firebase/php-jwt": "<2",
+ "flarum/core": ">=1,<=1.0.1",
+ "flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15",
+ "flarum/tags": "<=0.1-beta.13",
+ "fluidtypo3/vhs": "<5.1.1",
+ "fooman/tcpdf": "<6.2.22",
+ "forkcms/forkcms": "<=5.9.2",
+ "fossar/tcpdf-parser": "<6.2.22",
+ "francoisjacquet/rosariosis": "<8.1.1",
+ "friendsofsymfony/oauth2-php": "<1.3",
+ "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
+ "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
+ "friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
+ "froala/wysiwyg-editor": "<3.2.7",
+ "fuel/core": "<1.8.1",
+ "gaoming13/wechat-php-sdk": "<=1.10.2",
+ "getgrav/grav": "<1.7.28",
+ "getkirby/cms": "<3.5.8",
+ "getkirby/panel": "<2.5.14",
+ "gilacms/gila": "<=1.11.4",
+ "globalpayments/php-sdk": "<2",
+ "google/protobuf": "<3.15",
+ "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
+ "gree/jose": "<=2.2",
+ "gregwar/rst": "<1.0.3",
+ "grumpydictator/firefly-iii": "<5.6.5",
+ "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1",
+ "helloxz/imgurl": "<=2.31",
+ "hillelcoren/invoice-ninja": "<5.3.35",
+ "hjue/justwriting": "<=1",
+ "hov/jobfair": "<1.0.13|>=2,<2.0.2",
+ "ibexa/post-install": "<=1.0.4",
+ "icecoder/icecoder": "<=8.1",
+ "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10",
+ "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
+ "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40",
+ "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
+ "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
+ "impresscms/impresscms": "<=1.4.2",
+ "in2code/femanager": "<5.5.1|>=6,<6.3.1",
+ "intelliants/subrion": "<=4.2.1",
+ "ivankristianto/phpwhois": "<=4.3",
+ "jackalope/jackalope-doctrine-dbal": "<1.7.4",
+ "james-heinrich/getid3": "<1.9.21",
+ "joomla/archive": "<1.1.10",
+ "joomla/session": "<1.3.1",
+ "jsdecena/laracom": "<2.0.9",
+ "jsmitty12/phpwhois": "<5.1",
+ "kazist/phpwhois": "<=4.2.6",
+ "kevinpapst/kimai2": "<1.16.7",
+ "kitodo/presentation": "<3.1.2",
+ "klaviyo/magento2-extension": ">=1,<3",
+ "kreait/firebase-php": ">=3.2,<3.8.1",
+ "la-haute-societe/tcpdf": "<6.2.22",
+ "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
+ "laminas/laminas-http": "<2.14.2",
+ "laravel/framework": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
+ "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
+ "latte/latte": "<2.10.8",
+ "lavalite/cms": "<=5.8",
+ "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5",
+ "league/commonmark": "<0.18.3",
+ "league/flysystem": "<1.1.4|>=2,<2.1.1",
+ "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
+ "librenms/librenms": "<=21.11",
+ "limesurvey/limesurvey": "<3.27.19",
+ "livehelperchat/livehelperchat": "<=3.91",
+ "livewire/livewire": ">2.2.4,<2.2.6",
+ "lms/routes": "<2.1.1",
+ "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2",
+ "magento/community-edition": ">=2,<2.2.10|>=2.3,<2.3.3",
+ "magento/magento1ce": "<1.9.4.3",
+ "magento/magento1ee": ">=1,<1.14.4.3",
+ "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2",
+ "marcwillmann/turn": "<0.3.3",
+ "mautic/core": "<4|= 2.13.1",
+ "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
+ "microweber/microweber": "<1.2.11",
+ "miniorange/miniorange-saml": "<1.4.3",
+ "mittwald/typo3_forum": "<1.2.1",
+ "modx/revolution": "<2.8",
+ "monolog/monolog": ">=1.8,<1.12",
+ "moodle/moodle": "<3.9.11|>=3.10-beta,<3.10.8|>=3.11,<3.11.5",
+ "mustache/mustache": ">=2,<2.14.1",
+ "namshi/jose": "<2.2",
+ "neoan3-apps/template": "<1.1.1",
+ "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
+ "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3",
+ "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
+ "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
+ "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
+ "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
+ "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
+ "nilsteampassnet/teampass": "<=2.1.27.36",
+ "nukeviet/nukeviet": "<4.3.4",
+ "nystudio107/craft-seomatic": "<3.3",
+ "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
+ "october/backend": "<1.1.2",
+ "october/cms": "= 1.1.1|= 1.0.471|= 1.0.469|>=1.0.319,<1.0.469",
+ "october/october": ">=1.0.319,<1.0.466|>=2.1,<2.1.12",
+ "october/rain": "<1.0.472|>=1.1,<1.1.2",
+ "october/system": "<1.0.473|>=1.1,<1.1.6|>=2.1,<2.1.12",
+ "onelogin/php-saml": "<2.10.4",
+ "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
+ "opencart/opencart": "<=3.0.3.2",
+ "openid/php-openid": "<2.3",
+ "openmage/magento-lts": "<19.4.15|>=20,<20.0.13",
+ "orchid/platform": ">=9,<9.4.4",
+ "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7",
+ "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<4.2.8",
+ "padraic/humbug_get_contents": "<1.1.2",
+ "pagarme/pagarme-php": ">=0,<3",
+ "pagekit/pagekit": "<=1.0.18",
+ "paragonie/random_compat": "<2",
+ "passbolt/passbolt_api": "<2.11",
+ "paypal/merchant-sdk-php": "<3.12",
+ "pear/archive_tar": "<1.4.14",
+ "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
+ "personnummer/personnummer": "<3.0.2",
+ "phanan/koel": "<5.1.4",
+ "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
+ "phpmailer/phpmailer": "<6.5",
+ "phpmussel/phpmussel": ">=1,<1.6",
+ "phpmyadmin/phpmyadmin": "<4.9.8|>=5,<5.0.3|>=5.1,<5.1.2",
+ "phpoffice/phpexcel": "<1.8.2",
+ "phpoffice/phpspreadsheet": "<1.16",
+ "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.7",
+ "phpservermon/phpservermon": "<=3.5.2",
+ "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
+ "phpwhois/phpwhois": "<=4.2.5",
+ "phpxmlrpc/extras": "<0.6.1",
+ "pimcore/pimcore": "<=10.3",
+ "pocketmine/pocketmine-mp": "<4.0.7",
+ "pressbooks/pressbooks": "<5.18",
+ "prestashop/autoupgrade": ">=4,<4.10.1",
+ "prestashop/contactform": ">1.0.1,<4.3",
+ "prestashop/gamification": "<2.3.2",
+ "prestashop/prestashop": ">=1.7,<=1.7.8.2",
+ "prestashop/productcomments": ">=4,<4.2.1",
+ "prestashop/ps_emailsubscription": "<2.6.1",
+ "prestashop/ps_facetedsearch": "<3.4.1",
+ "prestashop/ps_linklist": "<3.1",
+ "privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2",
+ "propel/propel": ">=2-alpha.1,<=2-alpha.7",
+ "propel/propel1": ">=1,<=1.7.1",
+ "pterodactyl/panel": "<1.7",
+ "ptrofimov/beanstalk_console": "<1.7.14",
+ "pusher/pusher-php-server": "<2.2.1",
+ "pwweb/laravel-core": "<=0.3.6-beta",
+ "rainlab/debugbar-plugin": "<3.1",
+ "remdex/livehelperchat": "<3.93",
+ "rmccue/requests": ">=1.6,<1.8",
+ "robrichards/xmlseclibs": "<3.0.4",
+ "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
+ "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
+ "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11",
+ "sensiolabs/connect": "<4.2.3",
+ "serluck/phpwhois": "<=4.2.6",
+ "shopware/core": "<=6.4.6",
+ "shopware/platform": "<=6.4.6",
+ "shopware/production": "<=6.3.5.2",
+ "shopware/shopware": "<5.7.7",
+ "showdoc/showdoc": "<=2.10.2",
+ "silverstripe/admin": ">=1,<1.8.1",
+ "silverstripe/assets": ">=1,<1.4.7|>=1.5,<1.5.2",
+ "silverstripe/cms": "<4.3.6|>=4.4,<4.4.4",
+ "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1",
+ "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
+ "silverstripe/framework": "<4.10.1",
+ "silverstripe/graphql": "<3.5.2|>=4-alpha.1,<4-alpha.2",
+ "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
+ "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
+ "silverstripe/subsites": ">=2,<2.1.1",
+ "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
+ "silverstripe/userforms": "<3",
+ "simple-updates/phpwhois": "<=1",
+ "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4",
+ "simplesamlphp/simplesamlphp": "<1.18.6",
+ "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
+ "simplito/elliptic-php": "<1.0.6",
+ "slim/slim": "<2.6",
+ "smarty/smarty": "<3.1.43|>=4,<4.0.3",
+ "snipe/snipe-it": "<=5.3.7",
+ "socalnick/scn-social-auth": "<1.15.2",
+ "socialiteproviders/steam": "<1.1",
+ "spipu/html2pdf": "<5.2.4",
+ "spoonity/tcpdf": "<6.2.22",
+ "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
+ "ssddanbrown/bookstack": "<21.12.1",
+ "stormpath/sdk": ">=0,<9.9.99",
+ "studio-42/elfinder": "<2.1.59",
+ "subrion/cms": "<=4.2.1",
+ "sulu/sulu": "= 2.4.0-RC1|<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8",
+ "swiftmailer/swiftmailer": ">=4,<5.4.5",
+ "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
+ "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
+ "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
+ "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
+ "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
+ "sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3|>=1.9,<1.9.5",
+ "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
+ "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4",
+ "symbiote/silverstripe-versionedfiles": "<=2.0.3",
+ "symfont/process": ">=0,<4",
+ "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8",
+ "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+ "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
+ "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
+ "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3|= 6.0.3|= 5.4.3|= 5.3.14",
+ "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
+ "symfony/http-kernel": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5|>=5.2,<5.3.12",
+ "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
+ "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1",
+ "symfony/mime": ">=4.3,<4.3.8",
+ "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+ "symfony/polyfill": ">=1,<1.10",
+ "symfony/polyfill-php55": ">=1,<1.10",
+ "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+ "symfony/routing": ">=2,<2.0.19",
+ "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8",
+ "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11|>=5.3,<5.3.12",
+ "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9",
+ "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
+ "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8",
+ "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8|>=5.3,<5.3.2",
+ "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
+ "symfony/symfony": ">=2,<3.4.49|>=4,<4.4.35|>=5,<5.3.12|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3",
+ "symfony/translation": ">=2,<2.0.17",
+ "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
+ "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
+ "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
+ "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
+ "t3/dce": ">=2.2,<2.6.2",
+ "t3g/svg-sanitizer": "<1.0.3",
+ "tecnickcom/tcpdf": "<6.2.22",
+ "terminal42/contao-tablelookupwizard": "<3.3.5",
+ "thelia/backoffice-default-template": ">=2.1,<2.1.2",
+ "thelia/thelia": ">=2.1-beta.1,<2.1.3",
+ "theonedemon/phpwhois": "<=4.2.5",
+ "tinymce/tinymce": "<5.10",
+ "titon/framework": ">=0,<9.9.99",
+ "topthink/framework": "<6.0.9",
+ "topthink/think": "<=6.0.9",
+ "topthink/thinkphp": "<=3.2.3",
+ "tribalsystems/zenario": "<8.8.53370",
+ "truckersmp/phpwhois": "<=4.3.1",
+ "twig/twig": "<1.38|>=2,<2.14.11|>3,<3.3.8",
+ "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.29|>=10,<10.4.19|>=11,<11.5",
+ "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+ "typo3/cms-core": ">=6.2,<=6.2.56|>=7,<=7.6.52|>=8,<=8.7.41|>=9,<9.5.29|>=10,<10.4.19|>=11,<11.5",
+ "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+ "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
+ "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
+ "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
+ "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
+ "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
+ "ua-parser/uap-php": "<3.8",
+ "unisharp/laravel-filemanager": "<=2.3",
+ "userfrosting/userfrosting": ">=0.3.1,<4.6.3",
+ "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
+ "vanilla/safecurl": "<0.9.2",
+ "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
+ "vrana/adminer": "<4.7.9",
+ "wallabag/tcpdf": "<6.2.22",
+ "wanglelecc/laracms": "<=1.0.3",
+ "web-auth/webauthn-framework": ">=3.3,<3.3.4",
+ "webcoast/deferred-image-processing": "<1.0.2",
+ "wikimedia/parsoid": "<0.12.2",
+ "willdurand/js-translation-bundle": "<2.1.1",
+ "wp-cli/wp-cli": "<2.5",
+ "yetiforce/yetiforce-crm": "<=6.3",
+ "yidashi/yii2cmf": "<=2",
+ "yii2mod/yii2-cms": "<1.9.2",
+ "yiisoft/yii": ">=1.1.14,<1.1.15",
+ "yiisoft/yii2": "<2.0.38",
+ "yiisoft/yii2-bootstrap": "<2.0.4",
+ "yiisoft/yii2-dev": "<2.0.43",
+ "yiisoft/yii2-elasticsearch": "<2.0.5",
+ "yiisoft/yii2-gii": "<2.0.4",
+ "yiisoft/yii2-jui": "<2.0.4",
+ "yiisoft/yii2-redis": "<2.0.8",
+ "yoast-seo-for-typo3/yoast_seo": "<7.2.3",
+ "yourls/yourls": "<=1.8.2",
+ "zendesk/zendesk_api_client_php": "<2.2.11",
+ "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
+ "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
+ "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
+ "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
+ "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
+ "zendframework/zend-diactoros": ">=1,<1.8.4",
+ "zendframework/zend-feed": ">=1,<2.10.3",
+ "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-http": ">=1,<2.8.1",
+ "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
+ "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
+ "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
+ "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
+ "zendframework/zend-validator": ">=2.3,<2.3.6",
+ "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
+ "zendframework/zendframework": "<=3",
+ "zendframework/zendframework1": "<1.12.20",
+ "zendframework/zendopenid": ">=2,<2.0.2",
+ "zendframework/zendxml": ">=1,<1.0.1",
+ "zetacomponents/mail": "<1.8.2",
+ "zf-commons/zfc-user": "<1.2.2",
+ "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
+ "zfr/zfr-oauth2-server-module": "<0.1.2",
+ "zoujingli/thinkadmin": "<6.0.22"
+ },
+ "default-branch": true,
+ "type": "metapackage",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "role": "maintainer"
+ },
+ {
+ "name": "Ilya Tribusean",
+ "email": "slash3b@gmail.com",
+ "role": "maintainer"
}
],
- "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.",
- "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html",
- "keywords": [
- "code generator",
- "generator",
- "scaffold",
- "scaffolding"
+ "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
+ "support": {
+ "issues": "https://github.com/Roave/SecurityAdvisories/issues",
+ "source": "https://github.com/Roave/SecurityAdvisories/tree/latest"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Ocramius",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories",
+ "type": "tidelift"
+ }
],
- "time": "2019-11-07T00:56:03+00:00"
+ "time": "2022-02-15T01:00:26+00:00"
},
{
"name": "symfony/phpunit-bridge",
- "version": "v5.0.2",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
- "reference": "010cf42a81e7bec744edfdef5f76d6394f4906a7"
+ "reference": "216b07b05644607c81afd89a208e52641c1ce6b8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/010cf42a81e7bec744edfdef5f76d6394f4906a7",
- "reference": "010cf42a81e7bec744edfdef5f76d6394f4906a7",
+ "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/216b07b05644607c81afd89a208e52641c1ce6b8",
+ "reference": "216b07b05644607c81afd89a208e52641c1ce6b8",
"shasum": ""
},
"require": {
- "php": ">=5.5.9"
+ "php": ">=7.1.3",
+ "symfony/deprecation-contracts": "^2.1|^3"
},
"conflict": {
- "phpunit/phpunit": "<5.4.3"
+ "phpunit/phpunit": "<7.5|9.1.2"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
@@ -4238,9 +8759,6 @@
],
"type": "symfony-bridge",
"extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- },
"thanks": {
"name": "phpunit/phpunit",
"url": "https://github.com/sebastianbergmann/phpunit"
@@ -4271,21 +8789,44 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony PHPUnit Bridge",
+ "description": "Provides utilities for PHPUnit, especially user deprecation notices management",
"homepage": "https://symfony.com",
- "time": "2019-11-28T14:20:16+00:00"
+ "support": {
+ "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T16:28:35+00:00"
}
],
"aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
+ "minimum-stability": "dev",
+ "stability-flags": {
+ "ivanstan/symfony-support": 20,
+ "ivanstan/tle-php": 20,
+ "roave/security-advisories": 20
+ },
+ "prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": "^7.4",
+ "php": "^8.1",
"ext-ctype": "*",
+ "ext-dom": "*",
"ext-iconv": "*",
"ext-json": "*"
},
- "platform-dev": []
+ "platform-dev": [],
+ "plugin-api-version": "2.3.0"
}
diff --git a/config-overrides.js b/config-overrides.js
new file mode 100644
index 0000000..605df2a
--- /dev/null
+++ b/config-overrides.js
@@ -0,0 +1,13 @@
+const path = require('path');
+
+module.exports = {
+ paths: function (paths, env) {
+ paths.appIndexJs = path.resolve(__dirname, 'client/index.tsx');
+ paths.appSrc = path.resolve(__dirname, 'client');
+ paths.appTypeDeclarations = path.resolve(__dirname, 'client/react-app-env.d.ts');
+ paths.appHtml = path.resolve(__dirname, 'static/index.html');
+ paths.appPublic = path.resolve(__dirname, 'static');
+
+ return paths;
+ },
+}
diff --git a/config/custom/general.json b/config/custom/general.json
deleted file mode 100644
index e70dacc..0000000
--- a/config/custom/general.json
+++ /dev/null
@@ -1,210 +0,0 @@
-{
- "openapi": "3.0.0",
- "info": {
- "title": "TLE API",
- "version": "1.3.0"
- },
- "servers": [
- {
- "url": "/"
- }
- ],
- "paths": {},
- "components": {
- "schemas": {
- "ValueUnit": {
- "properties": {
- "value": {
- "type": "float"
- },
- "unit": {
- "type": "string"
- }
- }
- },
- "Pagination": {
- "properties": {
- "@id": {
- "type": "string"
- },
- "@type": {
- "type": "string"
- },
- "first": {
- "type": "string"
- },
- "previous": {
- "type": "string"
- },
- "next": {
- "type": "string"
- },
- "last": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "Exception": {
- "properties": {
- "response": {
- "properties": {
- "code": {
- "type": "integer"
- },
- "message": {
- "type": "string"
- }
- },
- "type": "object"
- }
- },
- "type": "object"
- },
- "METAR": {
- "allOf": [
- {
- "properties": {
- "icao": {
- "type": "string",
- "example": "LYBE"
- },
- "date": {
- "type": "string",
- "example": "2018-10-23T19:00:00+00:00"
- },
- "temperature": {
- "$ref": "#/components/schemas/ValueUnit"
- },
- "dewPoint": {
- "$ref": "#/components/schemas/ValueUnit"
- },
- "pressure": {
- "$ref": "#/components/schemas/ValueUnit"
- },
- "raw": {
- "type": "string",
- "example": "METAR LYBE 171530Z 11004KT CAVOK 22/04 Q1018 NOSIG"
- }
- },
- "type": "object"
- }
- ]
- },
- "TLE": {
- "allOf": [
- {
- "properties": {
- "@id": {
- "type": "string",
- "example": "https://ivanstanojevic.me/api/tle/43630"
- },
- "@type": {
- "type": "string",
- "example": "TleModel"
- },
- "satelliteId": {
- "type": "integer",
- "example": "43630"
- },
- "date": {
- "type": "string",
- "example": "2018-10-21T11:40:23+00:00"
- },
- "name": {
- "type": "string",
- "example": "HTV-7 (KOUNOTORI 7)"
- },
- "line1": {
- "type": "string",
- "example": "1 43630U 18073A 18285.64337553 .00002296 00000-0 42374-4 0 9998"
- },
- "line2": {
- "type": "string",
- "example": "2 43630 51.6412 153.3949 0003517 275.8456 137.9883 15.53813372136786"
- }
- },
- "type": "object"
- }
- ]
- }
- },
- "responses": {
- "404": {
- "description": "Resource not found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Exception"
- },
- "example": {
- "response": {
- "code": 404,
- "message": "Not found"
- }
- }
- }
- }
- },
- "500": {
- "description": "Server error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Exception"
- },
- "example": {
- "response": {
- "code": 500,
- "message": "Server error"
- }
- }
- }
- }
- }
- },
- "parameters": {
- "search": {
- "name": "search",
- "in": "query",
- "description": "Search string",
- "schema": {
- "type": "string",
- "default": "*"
- }
- },
- "sortDirection": {
- "name": "sort-dir",
- "in": "query",
- "description": "Sort direction",
- "schema": {
- "type": "string",
- "default": "asc",
- "enum": [
- "asc",
- "desc"
- ]
- }
- },
- "pageNumber": {
- "name": "page",
- "in": "query",
- "description": "Page number",
- "schema": {
- "type": "integer",
- "default": 1,
- "minimum": "1"
- }
- },
- "pageSize": {
- "name": "page-size",
- "in": "query",
- "description": "Number of items per page",
- "schema": {
- "type": "integer",
- "default": "50"
- }
- }
- }
- }
-}
diff --git a/config/custom/source.yaml b/config/custom/source.yaml
deleted file mode 100644
index c442556..0000000
--- a/config/custom/source.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-- https://www.celestrak.com/NORAD/elements/tle-new.txt
-- https://www.celestrak.com/NORAD/elements/stations.txt
-- https://www.celestrak.com/NORAD/elements/visual.txt
-- https://www.celestrak.com/NORAD/elements/active.txt
-- https://www.celestrak.com/NORAD/elements/analyst.txt
-- https://www.celestrak.com/NORAD/elements/1999-025.txt
-- https://www.celestrak.com/NORAD/elements/iridium-33-debris.txt
-- https://www.celestrak.com/NORAD/elements/cosmos-2251-debris.txt
-- https://www.celestrak.com/NORAD/elements/2012-044.txt
-- https://www.celestrak.com/NORAD/elements/weather.txt
-- https://www.celestrak.com/NORAD/elements/noaa.txt
-- https://www.celestrak.com/NORAD/elements/goes.txt
-- https://www.celestrak.com/NORAD/elements/resource.txt
-- https://www.celestrak.com/NORAD/elements/sarsat.txt
-- https://www.celestrak.com/NORAD/elements/dmc.txt
-- https://www.celestrak.com/NORAD/elements/tdrss.txt
-- https://www.celestrak.com/NORAD/elements/argos.txt
-- https://www.celestrak.com/NORAD/elements/planet.txt
-- https://www.celestrak.com/NORAD/elements/spire.txt
-- https://www.celestrak.com/NORAD/elements/geo.txt
-- https://www.celestrak.com/NORAD/elements/intelsat.txt
-- https://www.celestrak.com/NORAD/elements/ses.txt
-- https://www.celestrak.com/NORAD/elements/iridium.txt
-- https://www.celestrak.com/NORAD/elements/iridium-NEXT.txt
-- https://www.celestrak.com/NORAD/elements/orbcomm.txt
-- https://www.celestrak.com/NORAD/elements/globalstar.txt
-- https://www.celestrak.com/NORAD/elements/amateur.txt
-- https://www.celestrak.com/NORAD/elements/x-comm.txt
-- https://www.celestrak.com/NORAD/elements/other-comm.txt
-- https://www.celestrak.com/NORAD/elements/gorizont.txt
-- https://www.celestrak.com/NORAD/elements/raduga.txt
-- https://www.celestrak.com/NORAD/elements/molniya.txt
-- https://www.celestrak.com/NORAD/elements/gps-ops.txt
-- https://www.celestrak.com/NORAD/elements/glo-ops.txt
-- https://www.celestrak.com/NORAD/elements/galileo.txt
-- https://www.celestrak.com/NORAD/elements/beidou.txt
-- https://www.celestrak.com/NORAD/elements/sbas.txt
-- https://www.celestrak.com/NORAD/elements/nnss.txt
-- https://www.celestrak.com/NORAD/elements/musson.txt
-- https://www.celestrak.com/NORAD/elements/science.txt
-- https://www.celestrak.com/NORAD/elements/geodetic.txt
-- https://www.celestrak.com/NORAD/elements/engineering.txt
-- https://www.celestrak.com/NORAD/elements/education.txt
-- https://www.celestrak.com/NORAD/elements/military.txt
-- https://www.celestrak.com/NORAD/elements/radar.txt
-- https://www.celestrak.com/NORAD/elements/cubesat.txt
-- https://www.celestrak.com/NORAD/elements/other.txt
\ No newline at end of file
diff --git a/config/custom/tle.json b/config/custom/tle.json
deleted file mode 100644
index 1af51be..0000000
--- a/config/custom/tle.json
+++ /dev/null
@@ -1,313 +0,0 @@
-{
- "openapi": "3.0.0",
- "info": {
- "title": "TLE API",
- "version": "1.3.0"
- },
- "servers": [
- {
- "url": "/"
- }
- ],
- "paths": {
- "/api/tle/{id}": {
- "get": {
- "summary": "Record",
- "operationId": "tle-record",
- "parameters": [
- {
- "name": "id",
- "in": "path",
- "description": "id",
- "required": true,
- "schema": {
- "type": "integer"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Record found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/TLE"
- }
- }
- }
- },
- "404": {
- "$ref": "#/components/responses/404"
- },
- "500": {
- "$ref": "#/components/responses/500"
- }
- }
- }
- },
- "/api/tle": {
- "get": {
- "summary": "Collection",
- "operationId": "tle-collection",
- "parameters": [
- {
- "$ref": "#/components/parameters/search"
- },
- {
- "name": "prn",
- "in": "query",
- "description": "Filter by pseudo-random noise.",
- "schema": {
- "type": "number",
- "default": "null"
- }
- },
- {
- "name": "sort",
- "in": "query",
- "description": "Sort field",
- "schema": {
- "type": "string",
- "default": "name",
- "enum": [
- "id",
- "name"
- ]
- }
- },
- {
- "$ref": "#/components/parameters/sortDirection"
- },
- {
- "$ref": "#/components/parameters/pageNumber"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- }
- ],
- "responses": {
- "200": {
- "description": "Tle collection",
- "content": {
- "application/json": {
- "schema": {
- "properties": {
- "@context": {
- "type": "string",
- "example": "http://www.w3.org/ns/hydra/context.jsonld"
- },
- "@id": {
- "type": "string",
- "example": "https://ivanstanojevic.me/api/tle"
- },
- "@type": {
- "type": "string",
- "example": "Collection"
- },
- "totalItems": {
- "type": "integer",
- "example": "50"
- },
- "member": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/TLE"
- }
- },
- "parameters": {
- "type": "array"
- },
- "view": {
- "type": "object",
- "properties": {
- "@id": {
- "type": "string"
- },
- "@type": {
- "type": "string"
- },
- "first": {
- "type": "string"
- },
- "previous": {
- "type": "string"
- },
- "next": {
- "type": "string"
- },
- "last": {
- "type": "string"
- }
- }
- }
- },
- "type": "object"
- }
- }
- }
- },
- "500": {
- "$ref": "#/components/responses/500"
- }
- }
- }
- }
- },
- "components": {
- "schemas": {
- "Pagination": {
- "properties": {
- "@id": {
- "type": "string"
- },
- "@type": {
- "type": "string"
- },
- "first": {
- "type": "string"
- },
- "previous": {
- "type": "string"
- },
- "next": {
- "type": "string"
- },
- "last": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "Exception": {
- "properties": {
- "response": {
- "properties": {
- "code": {
- "type": "integer"
- },
- "message": {
- "type": "string"
- }
- },
- "type": "object"
- }
- },
- "type": "object"
- },
- "TLE": {
- "allOf": [
- {
- "properties": {
- "@id": {
- "type": "string",
- "example": "https://ivanstanojevic.me/api/tle/43630"
- },
- "@type": {
- "type": "string",
- "example": "TleModel"
- },
- "satelliteId": {
- "type": "integer",
- "example": "43630"
- },
- "name": {
- "type": "string",
- "example": "HTV-7 (KOUNOTORI 7)"
- },
- "date": {
- "type": "string",
- "example": "2018-10-21T11:40:23+00:00"
- },
- "line1": {
- "type": "string",
- "example": "1 43630U 18073A 18285.64337553 .00002296 00000-0 42374-4 0 9998"
- },
- "line2": {
- "type": "string",
- "example": "2 43630 51.6412 153.3949 0003517 275.8456 137.9883 15.53813372136786"
- }
- },
- "type": "object"
- }
- ]
- }
- },
- "responses": {
- "404": {
- "description": "Resource not found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Exception"
- },
- "example": {
- "response": {
- "code": 404,
- "message": "Not found"
- }
- }
- }
- }
- },
- "500": {
- "description": "Server error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Exception"
- },
- "example": {
- "response": {
- "code": 500,
- "message": "Server error"
- }
- }
- }
- }
- }
- },
- "parameters": {
- "search": {
- "name": "search",
- "in": "query",
- "description": "Search string",
- "schema": {
- "type": "string",
- "default": "*"
- }
- },
- "sortDirection": {
- "name": "sort-dir",
- "in": "query",
- "description": "Sort direction",
- "schema": {
- "type": "string",
- "default": "asc",
- "enum": [
- "asc",
- "desc"
- ]
- }
- },
- "pageNumber": {
- "name": "page",
- "in": "query",
- "description": "Page number",
- "schema": {
- "type": "integer",
- "default": 1,
- "minimum": "1"
- }
- },
- "pageSize": {
- "name": "page-size",
- "in": "query",
- "description": "Number of items per page",
- "schema": {
- "type": "integer",
- "default": "50"
- }
- }
- }
- }
-}
diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml
deleted file mode 100644
index 3bf0fbc..0000000
--- a/config/packages/doctrine_migrations.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-doctrine_migrations:
- dir_name: '%kernel.project_dir%/src/Migrations'
- # namespace is arbitrary but should be different from App\Migrations
- # as migrations classes should NOT be autoloaded
- namespace: DoctrineMigrations
diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml
deleted file mode 100644
index 7e97762..0000000
--- a/config/packages/routing.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-framework:
- router:
- utf8: true
diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml
deleted file mode 100644
index d051c84..0000000
--- a/config/packages/test/framework.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-framework:
- test: true
- session:
- storage_id: session.storage.mock_file
diff --git a/config/packages/test/twig.yaml b/config/packages/test/twig.yaml
deleted file mode 100644
index 8c6e0b4..0000000
--- a/config/packages/test/twig.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-twig:
- strict_variables: true
diff --git a/config/parameters.yaml b/config/parameters.yaml
deleted file mode 100644
index 89b37f7..0000000
--- a/config/parameters.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-parameters:
- app_name: 'TLE API'
diff --git a/config/routes.yaml b/config/routes.yaml
deleted file mode 100644
index c3283aa..0000000
--- a/config/routes.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-#index:
-# path: /
-# controller: App\Controller\DefaultController::index
diff --git a/config/routes/dev/framework.yaml b/config/routes/dev/framework.yaml
deleted file mode 100644
index bcbbf13..0000000
--- a/config/routes/dev/framework.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-_errors:
- resource: '@FrameworkBundle/Resources/config/routing/errors.xml'
- prefix: /_error
diff --git a/deploy.php b/deploy.php
new file mode 100644
index 0000000..11edd34
--- /dev/null
+++ b/deploy.php
@@ -0,0 +1,80 @@
+user('glutenfr')
+ ->port(2233)
+ ->stage('production')
+ ->set('deploy_path', '~/projects/tle.ivanstanojevic.me');
+
+task('test', function () {
+ set('symfony_env', 'test');
+ runLocally('bin/phpunit');
+ set('symfony_env', 'dev');
+});
+
+task('deploy:dump-env', function () {
+ run('cd {{release_path}} && {{bin/composer}} dump-env prod');
+});
+
+task('deploy:executable', function () {
+ run('chmod +x {{release_path}}/bin/console');
+});
+
+task(
+ 'deploy',
+ [
+ 'deploy:info',
+ 'deploy:prepare',
+ 'deploy:lock',
+ 'deploy:release',
+ 'deploy:update_code',
+ 'deploy:clear_paths',
+ 'deploy:create_cache_dir',
+ 'deploy:shared',
+ 'deploy:assets',
+ 'deploy:writable',
+ 'deploy:vendors',
+ 'deploy:executable',
+ 'deploy:cache:clear',
+ 'deploy:cache:warmup',
+ 'deploy:dump-env',
+ 'database:migrate',
+ 'deploy:symlink',
+ 'deploy:unlock',
+ 'cleanup',
+ ]
+);
+
+before('deploy', 'test');
+after('deploy:failed', 'deploy:unlock');
diff --git a/config/bundles.php b/etc/bundles.php
similarity index 62%
rename from config/bundles.php
rename to etc/bundles.php
index e1fa41c..dc57272 100644
--- a/config/bundles.php
+++ b/etc/bundles.php
@@ -4,7 +4,8 @@
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
- Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
- Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
+ Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
+ Sentry\SentryBundle\SentryBundle::class => ['prod' => true],
+ \Ivanstan\SymfonySupport\SymfonySupportBundle::class => ['all' => true],
];
diff --git a/etc/custom/source.yaml b/etc/custom/source.yaml
new file mode 100644
index 0000000..79c1987
--- /dev/null
+++ b/etc/custom/source.yaml
@@ -0,0 +1,70 @@
+- 'https://celestrak.com/NORAD/elements/1999-025.txt'
+- 'https://celestrak.com/NORAD/elements/2012-044.txt'
+- 'https://celestrak.com/NORAD/elements/2019-006.txt'
+- 'https://celestrak.com/NORAD/elements/active.txt'
+- 'https://celestrak.com/NORAD/elements/amateur.txt'
+- 'https://celestrak.com/NORAD/elements/analyst.txt'
+- 'https://celestrak.com/NORAD/elements/argos.txt'
+- 'https://celestrak.com/NORAD/elements/beidou.txt'
+- 'https://celestrak.com/NORAD/elements/cosmos-2251-debris.txt'
+- 'https://celestrak.com/NORAD/elements/cubesat.txt'
+- 'https://celestrak.com/NORAD/elements/dmc.txt'
+- 'https://celestrak.com/NORAD/elements/education.txt'
+- 'https://celestrak.com/NORAD/elements/engineering.txt'
+- 'https://celestrak.com/NORAD/elements/galileo.txt'
+- 'https://celestrak.com/NORAD/elements/geo.txt'
+- 'https://celestrak.com/NORAD/elements/geodetic.txt'
+- 'https://celestrak.com/NORAD/elements/glo-ops.txt'
+- 'https://celestrak.com/NORAD/elements/globalstar.txt'
+- 'https://celestrak.com/NORAD/elements/gnss.txt'
+- 'https://celestrak.com/NORAD/elements/goes.txt'
+- 'https://celestrak.com/NORAD/elements/gorizont.txt'
+- 'https://celestrak.com/NORAD/elements/gps-ops.txt'
+- 'https://celestrak.com/NORAD/elements/intelsat.txt'
+- 'https://celestrak.com/NORAD/elements/iridium-33-debris.txt'
+- 'https://celestrak.com/NORAD/elements/iridium-NEXT.txt'
+- 'https://celestrak.com/NORAD/elements/iridium.txt'
+- 'https://celestrak.com/NORAD/elements/military.txt'
+- 'https://celestrak.com/NORAD/elements/molniya.txt'
+- 'https://celestrak.com/NORAD/elements/musson.txt'
+- 'https://celestrak.com/NORAD/elements/nnss.txt'
+- 'https://celestrak.com/NORAD/elements/noaa.txt'
+- 'https://celestrak.com/NORAD/elements/oneweb.txt'
+- 'https://celestrak.com/NORAD/elements/orbcomm.txt'
+- 'https://celestrak.com/NORAD/elements/other-comm.txt'
+- 'https://celestrak.com/NORAD/elements/other.txt'
+- 'https://celestrak.com/NORAD/elements/planet.txt'
+- 'https://celestrak.com/NORAD/elements/radar.txt'
+- 'https://celestrak.com/NORAD/elements/raduga.txt'
+- 'https://celestrak.com/NORAD/elements/resource.txt'
+- 'https://celestrak.com/NORAD/elements/sarsat.txt'
+- 'https://celestrak.com/NORAD/elements/satnogs.txt'
+- 'https://celestrak.com/NORAD/elements/sbas.txt'
+- 'https://celestrak.com/NORAD/elements/science.txt'
+- 'https://celestrak.com/NORAD/elements/ses.txt'
+- 'https://celestrak.com/NORAD/elements/spire.txt'
+- 'https://celestrak.com/NORAD/elements/starlink.txt'
+- 'https://celestrak.com/NORAD/elements/stations.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/cpf.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/glonass.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/gps.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/intelsat.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/iss.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/meteosat.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/oneweb.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/orbcomm.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/planet.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/ses.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/starlink-V1.0-20.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/starlink.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/telesat.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/testcase/glonass.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/testcase/glonass_2008_01_25_1300.txt'
+- 'https://celestrak.com/NORAD/elements/supplemental/testcase/gps.txt'
+- 'https://celestrak.com/NORAD/elements/swarm.txt'
+- 'https://celestrak.com/NORAD/elements/tdrss.txt'
+- 'https://celestrak.com/NORAD/elements/tle-new.txt'
+- 'https://celestrak.com/NORAD/elements/visual.txt'
+- 'https://celestrak.com/NORAD/elements/weather.txt'
+- 'https://celestrak.com/NORAD/elements/x-comm.txt'
+- 'https://celestrak.com/satcat/gpz.php'
diff --git a/etc/custom/tle.json b/etc/custom/tle.json
new file mode 100644
index 0000000..bdaf5fc
--- /dev/null
+++ b/etc/custom/tle.json
@@ -0,0 +1,517 @@
+{
+ "openapi": "3.0.0",
+ "info": {
+ "title": "TLE API",
+ "version": ""
+ },
+ "servers": [
+ {
+ "url": "/"
+ }
+ ],
+ "paths": {
+ "/api/tle": {
+ "get": {
+ "summary": "Collection",
+ "operationId": "collection",
+ "description": "Return collection of TleModels depending on requested parameters",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/search"
+ },
+ {
+ "name": "sort",
+ "in": "query",
+ "description": "Sort by",
+ "schema": {
+ "type": "string",
+ "default": "name",
+ "enum": [
+ "id",
+ "name",
+ "popularity",
+ "inclination",
+ "eccentricity",
+ "period"
+ ]
+ }
+ },
+ {
+ "$ref": "#/components/parameters/sortDirection"
+ },
+ {
+ "$ref": "#/components/parameters/pageNumber"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "name": "eccentricity[gte]",
+ "in": "query",
+ "description": "Filter records with orbital eccentricity greater then or equal to the provided value",
+ "required": false,
+ "example": 1
+ },
+ {
+ "name": "eccentricity[lte]",
+ "in": "query",
+ "description": "Filter records with orbital eccentricity less then or equal to the provided value",
+ "required": false,
+ "example": 1
+ },
+ {
+ "name": "inclination[lt]",
+ "in": "query",
+ "description": "Filter records with posigrade orbital inclination",
+ "required": false,
+ "example": 90
+ },
+ {
+ "name": "inclination[gt]",
+ "in": "query",
+ "description": "Filter records with retrograde orbital inclination",
+ "required": false,
+ "example": 90
+ },
+ {
+ "name": "period[lt]",
+ "in": "query",
+ "description": "Filter records with orbital period less than specified",
+ "required": false,
+ "example": 255
+ },
+ {
+ "name": "period[gt]",
+ "in": "query",
+ "description": "Filter records with orbital period greater than specified",
+ "required": false,
+ "example": 255
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Resource found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "properties": {
+ "@context": {
+ "type": "string",
+ "example": "http://www.w3.org/ns/hydra/context.jsonld"
+ },
+ "@id": {
+ "type": "string",
+ "example": "https://tle.ivanstanojevic.me/api/tle"
+ },
+ "@type": {
+ "type": "string",
+ "example": "Collection"
+ },
+ "totalItems": {
+ "type": "integer",
+ "example": 10414
+ },
+ "member": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/TleModel"
+ }
+ },
+ "parameters": {
+ "type": "object"
+ },
+ "view": {
+ "type": "object",
+ "properties": {
+ "@id": {
+ "type": "string"
+ },
+ "@type": {
+ "type": "string"
+ },
+ "first": {
+ "type": "string"
+ },
+ "previous": {
+ "type": "string"
+ },
+ "next": {
+ "type": "string"
+ },
+ "last": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": "object"
+ }
+ }
+ }
+ },
+ "500": {
+ "$ref": "#/components/responses/500"
+ }
+ }
+ }
+ },
+ "/api/tle/{id}": {
+ "get": {
+ "summary": "Record",
+ "operationId": "record",
+ "description": "Return single TleModel for requested satellite id",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "description": "Satellite id",
+ "required": true,
+ "schema": {
+ "example": 43638,
+ "type": "integer"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Resource found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TleModel"
+ }
+ }
+ }
+ },
+ "404": {
+ "$ref": "#/components/responses/404"
+ },
+ "500": {
+ "$ref": "#/components/responses/500"
+ }
+ }
+ }
+ },
+ "/api/tle/{id}/propagate": {
+ "get": {
+ "summary": "Propagate (experimental)",
+ "description": "Return propagation result with satellite position and velocity using SGP4 or SDP4 algorithms",
+ "operationId": "propagate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "description": "Target satellite id for which propagation is calculated",
+ "required": true,
+ "schema": {
+ "example": 43638,
+ "type": "integer"
+ }
+ },
+ {
+ "name": "date",
+ "in": "query",
+ "description": "Target date and time",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "example": "2021-04-20T16:28:40+00:00"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Resource found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Propagation"
+ }
+ }
+ }
+ },
+ "404": {
+ "$ref": "#/components/responses/404"
+ },
+ "500": {
+ "$ref": "#/components/responses/500"
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "Pagination": {
+ "properties": {
+ "@id": {
+ "type": "string"
+ },
+ "@type": {
+ "type": "string"
+ },
+ "first": {
+ "type": "string"
+ },
+ "previous": {
+ "type": "string"
+ },
+ "next": {
+ "type": "string"
+ },
+ "last": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Exception": {
+ "properties": {
+ "response": {
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TleModel": {
+ "allOf": [
+ {
+ "properties": {
+ "@context": {
+ "type": "string",
+ "example": "https://www.w3.org/ns/hydra/context.jsonld"
+ },
+ "@id": {
+ "type": "string",
+ "example": "https://tle.ivanstanojevic.me/api/tle/43638"
+ },
+ "@type": {
+ "type": "string",
+ "example": "TleModel"
+ },
+ "satelliteId": {
+ "type": "integer",
+ "example": 43638
+ },
+ "name": {
+ "type": "string",
+ "example": "1998-067PN"
+ },
+ "date": {
+ "type": "string",
+ "example": "2021-02-16T06:41:41+00:00"
+ },
+ "line1": {
+ "type": "string",
+ "example": "1 43638U 98067PN 21047.27895714 .00025925 00000-0 18734-3 0 9990"
+ },
+ "line2": {
+ "type": "string",
+ "example": "2 43638 51.6322 151.1192 0001883 262.5831 97.4954 15.73313437134937"
+ }
+ },
+ "type": "object"
+ }
+ ]
+ },
+ "Propagation": {
+ "properties": {
+ "@context": {
+ "type": "string",
+ "example": "https://www.w3.org/ns/hydra/context.jsonld"
+ },
+ "@id": {
+ "type": "string",
+ "example": "https://tle.ivanstanojevic.me/api/tle/44859/propagate?date=2021-04-26T08:39:45+00:00"
+ },
+ "@type": {
+ "type": "string",
+ "example": "SatellitePropagationResult"
+ },
+ "tle": {
+ "$ref": "#/components/schemas/TleModel"
+ },
+ "algorithm": {
+ "type": "string",
+ "enum": ["SGP4", "SDP4"],
+ "description": "Algorithm used for propagation. Determined based on mean motion.",
+ "example": "SGP4"
+ },
+ "vector": {
+ "properties": {
+ "reference_frame": {
+ "type": "string",
+ "example": "ECI"
+ },
+ "position": {
+ "properties": {
+ "x": {
+ "type": "number",
+ "example": -2450.396984017652
+ },
+ "y": {
+ "type": "number",
+ "example": 6101.198295995954
+ },
+ "z": {
+ "type": "number",
+ "example": -6032.216318229235
+ },
+ "r": {
+ "type": "number",
+ "example": 8922.819046481767
+ },
+ "unit": {
+ "type": "string",
+ "example": "km"
+ }
+ },
+ "type": "object"
+ },
+
+ "velocity": {
+ "properties": {
+ "x": {
+ "type": "number",
+ "example": -0.1644949004552056
+ },
+ "y": {
+ "type": "number",
+ "example": 4.639904402973215
+ },
+ "z": {
+ "type": "number",
+ "example": 4.406398357056158
+ },
+ "r": {
+ "type": "number",
+ "example": 6.400946642651633
+ },
+ "unit": {
+ "type": "string",
+ "example": "km/s"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "geodetic": {
+ "properties": {
+ "latitude": {
+ "type": "number",
+ "example": -42.67210184042445
+ },
+ "longitude": {
+ "type": "number",
+ "example": 124.524923099869
+ },
+ "altitude": {
+ "type": "number",
+ "example": 2554.4740343929398
+ }
+ },
+ "type": "object"
+ },
+ "parameters": {
+ "properties": {
+ "date": {
+ "type": "string",
+ "example": "2021-04-26T08:39:45+00:00"
+ },
+ "satelliteId": {
+ "type": "string",
+ "example": "44859"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "responses": {
+ "404": {
+ "description": "Resource not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Exception"
+ },
+ "example": {
+ "response": {
+ "message": "Resource not found"
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Server error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Exception"
+ },
+ "example": {
+ "response": {
+ "message": "Server has encountered an internal error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": {
+ "search": {
+ "name": "search",
+ "in": "query",
+ "description": "Search string",
+ "schema": {
+ "type": "string",
+ "default": "*"
+ }
+ },
+ "sortDirection": {
+ "name": "sort-dir",
+ "in": "query",
+ "description": "Sort direction",
+ "schema": {
+ "type": "string",
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ },
+ "pageNumber": {
+ "name": "page",
+ "in": "query",
+ "description": "Page number",
+ "schema": {
+ "type": "integer",
+ "default": 1,
+ "minimum": 1
+ }
+ },
+ "pageSize": {
+ "name": "page-size",
+ "in": "query",
+ "description": "Number of collection member per page",
+ "schema": {
+ "type": "integer",
+ "default": 20,
+ "minimum": 1,
+ "maximum": 100
+ }
+ }
+ }
+ }
+}
diff --git a/config/packages/cache.yaml b/etc/packages/cache.yaml
similarity index 100%
rename from config/packages/cache.yaml
rename to etc/packages/cache.yaml
diff --git a/etc/packages/dev/monolog.yaml b/etc/packages/dev/monolog.yaml
new file mode 100644
index 0000000..32039e9
--- /dev/null
+++ b/etc/packages/dev/monolog.yaml
@@ -0,0 +1,19 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: php://stderr
+ level: debug
+ channels: ["!event"]
+ # uncomment to get logging in your browser
+ # you may have to allow bigger header sizes in your Web server configuration
+ #firephp:
+ # type: firephp
+ # level: info
+ #chromephp:
+ # type: chromephp
+ # level: info
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine", "!console"]
diff --git a/config/packages/doctrine.yaml b/etc/packages/doctrine.yaml
similarity index 56%
rename from config/packages/doctrine.yaml
rename to etc/packages/doctrine.yaml
index 5e80e77..3ac9bfa 100644
--- a/config/packages/doctrine.yaml
+++ b/etc/packages/doctrine.yaml
@@ -1,6 +1,8 @@
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'
+ options:
+ 1002: 'SET sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY", ""))'
# IMPORTANT: You MUST configure your server version,
# either here or in the DATABASE_URL env var (see .env file)
@@ -12,7 +14,15 @@ doctrine:
mappings:
App:
is_bundle: false
- type: annotation
+ type: attribute
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
+
+ dql:
+ string_functions:
+ DATE_FORMAT: DoctrineExtensions\Query\Mysql\DateFormat
+ CAST: DoctrineExtensions\Query\Mysql\Cast
+ IF: DoctrineExtensions\Query\Mysql\IfElse
+ numeric_functions:
+ ROUND: DoctrineExtensions\Query\Mysql\Round
diff --git a/etc/packages/doctrine_migrations.yaml b/etc/packages/doctrine_migrations.yaml
new file mode 100644
index 0000000..c2fde9d
--- /dev/null
+++ b/etc/packages/doctrine_migrations.yaml
@@ -0,0 +1,4 @@
+doctrine_migrations:
+ migrations_paths:
+ App\Migrations: '%kernel.project_dir%/src/Migrations'
+ enable_profiler: '%kernel.debug%'
diff --git a/config/packages/framework.yaml b/etc/packages/framework.yaml
similarity index 58%
rename from config/packages/framework.yaml
rename to etc/packages/framework.yaml
index 6089f4b..9ed2ebc 100644
--- a/config/packages/framework.yaml
+++ b/etc/packages/framework.yaml
@@ -1,7 +1,8 @@
+# see https://symfony.com/doc/current/reference/configuration/framework.html
framework:
secret: '%env(APP_SECRET)%'
#csrf_protection: true
- #http_method_override: true
+ http_method_override: true
# Enables session support. Note that the session will ONLY be started if you read or write from it.
# Remove or comment this section to explicitly disable session support.
@@ -9,8 +10,15 @@ framework:
handler_id: null
cookie_secure: auto
cookie_samesite: lax
+ storage_factory_id: session.storage.factory.native
#esi: true
#fragments: true
php_errors:
log: true
+
+when@test:
+ framework:
+ test: true
+ session:
+ storage_factory_id: session.storage.factory.mock_file
diff --git a/etc/packages/lock.yaml b/etc/packages/lock.yaml
new file mode 100644
index 0000000..574879f
--- /dev/null
+++ b/etc/packages/lock.yaml
@@ -0,0 +1,2 @@
+framework:
+ lock: '%env(LOCK_DSN)%'
diff --git a/etc/packages/prod/deprecations.yaml b/etc/packages/prod/deprecations.yaml
new file mode 100644
index 0000000..60026a1
--- /dev/null
+++ b/etc/packages/prod/deprecations.yaml
@@ -0,0 +1,8 @@
+# As of Symfony 5.1, deprecations are logged in the dedicated "deprecation" channel when it exists
+#monolog:
+# channels: [deprecation]
+# handlers:
+# deprecation:
+# type: stream
+# channels: [deprecation]
+# path: php://stderr
diff --git a/config/packages/prod/doctrine.yaml b/etc/packages/prod/doctrine.yaml
similarity index 100%
rename from config/packages/prod/doctrine.yaml
rename to etc/packages/prod/doctrine.yaml
diff --git a/etc/packages/prod/monolog.yaml b/etc/packages/prod/monolog.yaml
new file mode 100644
index 0000000..2c02ad8
--- /dev/null
+++ b/etc/packages/prod/monolog.yaml
@@ -0,0 +1,17 @@
+monolog:
+ handlers:
+ main:
+ type: fingers_crossed
+ action_level: error
+ handler: nested
+ excluded_http_codes: [404, 405]
+ buffer_size: 50 # How many messages should be saved? Prevent memory leaks
+ nested:
+ type: stream
+ path: php://stderr
+ level: debug
+ formatter: monolog.formatter.json
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine"]
diff --git a/config/packages/prod/routing.yaml b/etc/packages/prod/routing.yaml
similarity index 100%
rename from config/packages/prod/routing.yaml
rename to etc/packages/prod/routing.yaml
diff --git a/etc/packages/prod/sentry.yaml b/etc/packages/prod/sentry.yaml
new file mode 100644
index 0000000..96bf6cc
--- /dev/null
+++ b/etc/packages/prod/sentry.yaml
@@ -0,0 +1,9 @@
+sentry:
+ dsn: '%env(SENTRY_DSN)%'
+ options:
+ before_send: 'App\Service\SentryCallbackBeforeSend'
+ environment: '%kernel.environment%'
+ release: '%env(string:key:version:json:file:COMPOSER_JSON)%'
+ messenger:
+ enabled: true # flushes Sentry messages at the end of each message handling
+ capture_soft_fails: true # captures exceptions marked for retry too
diff --git a/etc/packages/rate_limiter.yaml b/etc/packages/rate_limiter.yaml
new file mode 100644
index 0000000..a677d37
--- /dev/null
+++ b/etc/packages/rate_limiter.yaml
@@ -0,0 +1,7 @@
+framework:
+ rate_limiter:
+ anonymous_api:
+ policy: 'sliding_window'
+ limit: 500
+ interval: '60 minutes'
+ lock_factory: null
diff --git a/etc/packages/routing.yaml b/etc/packages/routing.yaml
new file mode 100644
index 0000000..60a7991
--- /dev/null
+++ b/etc/packages/routing.yaml
@@ -0,0 +1,8 @@
+framework:
+ router:
+ utf8: true
+
+when@prod:
+ framework:
+ router:
+ strict_requirements: null
diff --git a/etc/packages/support.yaml b/etc/packages/support.yaml
new file mode 100644
index 0000000..a6bca74
--- /dev/null
+++ b/etc/packages/support.yaml
@@ -0,0 +1,4 @@
+symfony_support:
+ exception_subscriber:
+ paths:
+ - /
diff --git a/etc/packages/test/doctrine.yaml b/etc/packages/test/doctrine.yaml
new file mode 100644
index 0000000..34c2ebc
--- /dev/null
+++ b/etc/packages/test/doctrine.yaml
@@ -0,0 +1,4 @@
+doctrine:
+ dbal:
+ # "TEST_TOKEN" is typically set by ParaTest
+ dbname_suffix: '_test%env(default::TEST_TOKEN)%'
diff --git a/etc/packages/test/framework.yaml b/etc/packages/test/framework.yaml
new file mode 100644
index 0000000..acb6be9
--- /dev/null
+++ b/etc/packages/test/framework.yaml
@@ -0,0 +1,4 @@
+framework:
+ test: true
+ session:
+ storage_factory_id: session.storage.factory.mock_file
diff --git a/etc/packages/test/monolog.yaml b/etc/packages/test/monolog.yaml
new file mode 100644
index 0000000..fc40641
--- /dev/null
+++ b/etc/packages/test/monolog.yaml
@@ -0,0 +1,12 @@
+monolog:
+ handlers:
+ main:
+ type: fingers_crossed
+ action_level: error
+ handler: nested
+ excluded_http_codes: [404, 405]
+ channels: ["!event"]
+ nested:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
diff --git a/etc/packages/test/validator.yaml b/etc/packages/test/validator.yaml
new file mode 100644
index 0000000..1e5ab78
--- /dev/null
+++ b/etc/packages/test/validator.yaml
@@ -0,0 +1,3 @@
+framework:
+ validation:
+ not_compromised_password: false
diff --git a/etc/packages/validator.yaml b/etc/packages/validator.yaml
new file mode 100644
index 0000000..350786a
--- /dev/null
+++ b/etc/packages/validator.yaml
@@ -0,0 +1,8 @@
+framework:
+ validation:
+ email_validation_mode: html5
+
+ # Enables validator auto-mapping support.
+ # For instance, basic validation constraints will be inferred from Doctrine's metadata.
+ #auto_mapping:
+ # App\Entity\: []
diff --git a/etc/parameters.yaml b/etc/parameters.yaml
new file mode 100644
index 0000000..35e11fd
--- /dev/null
+++ b/etc/parameters.yaml
@@ -0,0 +1,3 @@
+parameters:
+ env(COMPOSER_JSON): "%kernel.project_dir%/composer.json"
+ version: '%env(string:key:version:json:file:COMPOSER_JSON)%'
diff --git a/etc/preload.php b/etc/preload.php
new file mode 100644
index 0000000..5ebcdb2
--- /dev/null
+++ b/etc/preload.php
@@ -0,0 +1,5 @@
+
+ John A. Magliacane, KD2BD.
+
+ Comments, questions and bugreports should be submitted via
+ http://sourceforge.net/projects/gpredict/
+ More details can be found at the project home page:
+
+ http://gpredict.oz9aec.net/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, visit http://www.fsf.org/
+*/
+
+/**
+ * The main Predict class. Contains constants for use by other classes, as well as
+ * the prediction logic.
+ */
+class Predict
+{
+ public const de2ra = 1.74532925E-2; /* Degrees to Radians */
+ public const pi = 3.1415926535898; /* Pi */
+ public const pio2 = 1.5707963267949; /* Pi/2 */
+ public const x3pio2 = 4.71238898; /* 3*Pi/2 */
+ public const twopi = 6.2831853071796; /* 2*Pi */
+ public const e6a = 1.0E-6;
+ public const tothrd = 6.6666667E-1; /* 2/3 */
+ public const xj2 = 1.0826158E-3; /* J2 Harmonic */
+ public const xj3 = -2.53881E-6; /* J3 Harmonic */
+ public const xj4 = -1.65597E-6; /* J4 Harmonic */
+ public const xke = 7.43669161E-2;
+ public const xkmper = 6.378135E3; /* Earth radius km */
+ public const xmnpda = 1.44E3; /* Minutes per day */
+ public const km2mi = 0.621371; /* Kilometers per Mile */
+ public const ae = 1.0;
+ public const ck2 = 5.413079E-4;
+ public const ck4 = 6.209887E-7;
+ public const __f = 3.352779E-3;
+ public const ge = 3.986008E5;
+ public const __s__ = 1.012229;
+ public const qoms2t = 1.880279E-09;
+ public const secday = 8.6400E4; /* Seconds per day */
+ public const omega_E = 1.0027379;
+ public const omega_ER = 6.3003879;
+ public const zns = 1.19459E-5;
+ public const c1ss = 2.9864797E-6;
+ public const zes = 1.675E-2;
+ public const znl = 1.5835218E-4;
+ public const c1l = 4.7968065E-7;
+ public const zel = 5.490E-2;
+ public const zcosis = 9.1744867E-1;
+ public const zsinis = 3.9785416E-1;
+ public const zsings = -9.8088458E-1;
+ public const zcosgs = 1.945905E-1;
+ public const zcoshs = 1;
+ public const zsinhs = 0;
+ public const q22 = 1.7891679E-6;
+ public const q31 = 2.1460748E-6;
+ public const q33 = 2.2123015E-7;
+ public const g22 = 5.7686396;
+ public const g32 = 9.5240898E-1;
+ public const g44 = 1.8014998;
+ public const g52 = 1.0508330;
+ public const g54 = 4.4108898;
+ public const root22 = 1.7891679E-6;
+ public const root32 = 3.7393792E-7;
+ public const root44 = 7.3636953E-9;
+ public const root52 = 1.1428639E-7;
+ public const root54 = 2.1765803E-9;
+ public const thdt = 4.3752691E-3;
+ public const rho = 1.5696615E-1;
+ public const mfactor = 7.292115E-5;
+ public const __sr__ = 6.96000E5; /* Solar radius - kilometers (IAU 76) */
+ public const AU = 1.49597870E8; /* Astronomical unit - kilometers (IAU 76) */
+
+ /* visibility constants */
+ public const SAT_VIS_NONE = 0;
+ public const SAT_VIS_VISIBLE = 1;
+ public const SAT_VIS_DAYLIGHT = 2;
+ public const SAT_VIS_ECLIPSED = 3;
+
+ /* preferences */
+ public $minEle = 10; // Minimum elevation
+ public $timeRes = 10; // Pass details: time resolution
+ public $numEntries = 20; // Pass details: number of entries
+ public $threshold = -6; // Twilight threshold
+
+ /**
+ * Predict the next pass.
+ *
+ * This function simply wraps the get_pass function using the current time
+ * as parameter.
+ *
+ * Note: the data in sat will be corrupt (future) and must be refreshed
+ * by the caller, if the caller will need it later on (eg. if the caller
+ * is GtkSatList).
+ *
+ * @param Predict_Sat $sat the satellite data
+ * @param Predict_QTH $qth the observer data
+ * @param int $maxdt the maximum number of days to look ahead
+ *
+ * @return Predict_Pass pointer instance or NULL if no pass can be
+ * found
+ */
+ public function get_next_pass(Predict_Sat $sat, Predict_QTH $qth, $maxdt)
+ {
+ /* get the current time and call the get_pass function */
+ $now = Predict_Time::get_current_daynum();
+
+ return $this->get_pass($sat, $qth, $now, $maxdt);
+ }
+
+ /** Predict first pass after a certain time.
+ *
+ * @param Predict_Sat $sat the satellite data
+ * @param Predict_QTH $qth the observer's location data
+ * @param float $start starting time
+ * @param int $maxdt the maximum number of days to look ahead (0 for no limit)
+ *
+ * @return Predict_Pass or NULL if there was an error.
+ *
+ * This function will find the first upcoming pass with AOS no earlier than
+ * t = start and no later than t = (start+maxdt).
+ *
+ * note For no time limit use maxdt = 0.0
+ *
+ * note the data in sat will be corrupt (future) and must be refreshed
+ * by the caller, if the caller will need it later on
+ */
+ public function get_pass(Predict_Sat $sat_in, Predict_QTH $qth, $start, $maxdt)
+ {
+ $aos = 0.0; /* time of AOS */
+ $tca = 0.0; /* time of TCA */
+ $los = 0.0; /* time of LOS */
+ $dt = 0.0; /* time diff */
+ $step = 0.0; /* time step */
+ $t0 = $start;
+ $tres = 0.0; /* required time resolution */
+ $max_el = 0.0; /* maximum elevation */
+ $pass = null;
+ $detail = null;
+ $done = false;
+ $iter = 0; /* number of iterations */
+ /* FIXME: watchdog */
+
+ /* copy sat_in to a working structure */
+ $sat = clone $sat_in;
+ $sat_working = clone $sat_in;
+
+ /* get time resolution; sat-cfg stores it in seconds */
+ $tres = $this->timeRes / 86400.0;
+
+ /* loop until we find a pass with elevation > SAT_CFG_INT_PRED_MIN_EL
+ or we run out of time
+ FIXME: we should have a safety break
+ */
+ while (!$done) {
+ /* Find los of next pass or of current pass */
+ $los = $this->find_los($sat, $qth, $t0, $maxdt); // See if a pass is ongoing
+ $aos = $this->find_aos($sat, $qth, $t0, $maxdt);
+ /* sat_log_log(SAT_LOG_LEVEL_MSG, "%s:%s:%d: found aos %f and los %f for t0=%f", */
+ /* __FILE__, */
+ /* __FUNCTION__, */
+ /* __LINE__, */
+ /* aos, */
+ /* los, */
+ /* t0); */
+ if ($aos > $los) {
+ // los is from an currently happening pass, find previous aos
+ $aos = $this->find_prev_aos($sat, $qth, $t0);
+ }
+
+ /* aos = 0.0 means no aos */
+ if (0.0 == $aos) {
+ $done = true;
+ } elseif (($maxdt > 0.0) && ($aos > ($start + $maxdt))) {
+ /* check whether we are within time limits;
+ maxdt = 0 mean no time limit.
+ */
+ $done = true;
+ } else {
+ // los = find_los (sat, qth, aos + 0.001, maxdt); // +1.5 min later
+ $dt = $los - $aos;
+
+ /* get time step, which will give us the max number of entries */
+ $step = $dt / $this->numEntries;
+
+ /* but if this is smaller than the required resolution
+ we go with the resolution
+ */
+ if ($step < $tres) {
+ $step = $tres;
+ }
+
+ /* create a pass_t entry; FIXME: g_try_new in 2.8 */
+ $pass = new Predict_Pass();
+
+ $pass->aos = $aos;
+ $pass->los = $los;
+ $pass->max_el = 0.0;
+ $pass->aos_az = 0.0;
+ $pass->los_az = 0.0;
+ $pass->maxel_az = 0.0;
+ $pass->vis = '---';
+ $pass->satname = $sat->nickname;
+ $pass->details = [];
+
+ /* iterate over each time step */
+ for ($t = $pass->aos; $t <= $pass->los; $t += $step) {
+ /* calculate satellite data */
+ $this->predict_calc($sat, $qth, $t);
+
+ /* in the first iter we want to store
+ pass->aos_az
+ */
+ if ($t == $pass->aos) {
+ $pass->aos_az = $sat->az;
+ $pass->orbit = $sat->orbit;
+ }
+
+ /* append details to sat->details */
+ $detail = new Predict_PassDetail();
+ $detail->time = $t;
+ $detail->pos->x = $sat->pos->x;
+ $detail->pos->y = $sat->pos->y;
+ $detail->pos->z = $sat->pos->z;
+ $detail->pos->w = $sat->pos->w;
+ $detail->vel->x = $sat->vel->x;
+ $detail->vel->y = $sat->vel->y;
+ $detail->vel->z = $sat->vel->z;
+ $detail->vel->w = $sat->vel->w;
+ $detail->velo = $sat->velo;
+ $detail->az = $sat->az;
+ $detail->el = $sat->el;
+ $detail->range = $sat->range;
+ $detail->range_rate = $sat->range_rate;
+ $detail->lat = $sat->ssplat;
+ $detail->lon = $sat->ssplon;
+ $detail->alt = $sat->alt;
+ $detail->ma = $sat->ma;
+ $detail->phase = $sat->phase;
+ $detail->footprint = $sat->footprint;
+ $detail->orbit = $sat->orbit;
+ $detail->vis = $this->get_sat_vis($sat, $qth, $t);
+
+ /* also store visibility "bit" */
+ switch ($detail->vis) {
+ case self::SAT_VIS_VISIBLE:
+ $pass->vis[0] = 'V';
+ break;
+ case self::SAT_VIS_DAYLIGHT:
+ $pass->vis[1] = 'D';
+ break;
+ case self::SAT_VIS_ECLIPSED:
+ $pass->vis[2] = 'E';
+ break;
+ default:
+ break;
+ }
+
+ // Using an array, no need to prepend and reverse the list
+ // as gpredict does
+ $pass->details[] = $detail;
+
+ // Look up apparent magnitude if this is a visible pass
+ if (self::SAT_VIS_VISIBLE === $detail->vis) {
+ $apmag = $sat->calculateApparentMagnitude($t, $qth);
+ if (null === $pass->max_apparent_magnitude || $apmag < $pass->max_apparent_magnitude) {
+ $pass->max_apparent_magnitude = $apmag;
+ }
+ }
+
+ /* store elevation if greater than the
+ previously stored one
+ */
+ if ($sat->el > $max_el) {
+ $max_el = $sat->el;
+ $tca = $t;
+ $pass->maxel_az = $sat->az;
+ }
+
+ /* g_print ("TIME: %f\tAZ: %f\tEL: %f (MAX: %f)\n", */
+ /* t, sat->az, sat->el, max_el); */
+ }
+
+ /* calculate satellite data */
+ $this->predict_calc($sat, $qth, $pass->los);
+ /* store los_az, max_el and tca */
+ $pass->los_az = $sat->az;
+ $pass->max_el = $max_el;
+ $pass->tca = $tca;
+
+ /* check whether this pass is good */
+ if ($max_el >= $this->minEle) {
+ $done = true;
+ } else {
+ $done = false;
+ $t0 = $los + 0.014; // +20 min
+ $pass = null;
+ }
+
+ ++$iter;
+ }
+ }
+
+ return $pass;
+ }
+
+ /**
+ * Calculate satellite visibility.
+ *
+ * @param Predict_Sat $sat the satellite structure
+ * @param Predict_QTH $qth The QTH
+ * @param float $jul_utc the time at which the visibility should be calculated
+ *
+ * @return int The visiblity constant, 0, 1, 2, or 3 (see above)
+ */
+ public function get_sat_vis(Predict_Sat $sat, Predict_QTH $qth, $jul_utc)
+ {
+ /* gboolean sat_sun_status;
+ gdouble sun_el;
+ gdouble threshold;
+ gdouble eclipse_depth;
+ sat_vis_t vis = SAT_VIS_NONE; */
+
+ $eclipse_depth = 0.0;
+ $zero_vector = new Predict_Vector();
+ $obs_geodetic = new Predict_Geodetic();
+
+ /* Solar ECI position vector */
+ $solar_vector = new Predict_Vector();
+
+ /* Solar observed az and el vector */
+ $solar_set = new Predict_ObsSet();
+
+ /* FIXME: could be passed as parameter */
+ $obs_geodetic->lon = $qth->lon * self::de2ra;
+ $obs_geodetic->lat = $qth->lat * self::de2ra;
+ $obs_geodetic->alt = $qth->alt / 1000.0;
+ $obs_geodetic->theta = 0;
+
+ Predict_Solar::Calculate_Solar_Position($jul_utc, $solar_vector);
+ Predict_SGPObs::Calculate_Obs($jul_utc, $solar_vector, $zero_vector, $obs_geodetic, $solar_set);
+
+ if (Predict_Solar::Sat_Eclipsed($sat->pos, $solar_vector, $eclipse_depth)) {
+ /* satellite is eclipsed */
+ $sat_sun_status = false;
+ } else {
+ /* satellite in sunlight => may be visible */
+ $sat_sun_status = true;
+ }
+
+ if ($sat_sun_status) {
+ $sun_el = Predict_Math::Degrees($solar_set->el);
+
+ if ($sun_el <= $this->threshold && $sat->el >= 0.0) {
+ $vis = self::SAT_VIS_VISIBLE;
+ } else {
+ $vis = self::SAT_VIS_DAYLIGHT;
+ }
+ } else {
+ $vis = self::SAT_VIS_ECLIPSED;
+ }
+
+ return $vis;
+ }
+
+ /** Find the AOS time of the next pass.
+ * @author Alexandru Csete, OZ9AEC
+ * @author John A. Magliacane, KD2BD
+ *
+ * @param Predict_Sat $sat the satellite data
+ * @param Predict_QTH $qth the observer's location (QTH) data
+ * @param float $start the julian date where calculation should start
+ * @param int $maxdt The upper time limit in days (0.0 = no limit)
+ *
+ * @return The julain date of the next AOS or 0.0 if the satellite has no AOS.
+ *
+ * This function finds the time of AOS for the first coming pass taking place
+ * no earlier that start.
+ * If the satellite is currently within range, the function first calls
+ * find_los to get the next LOS time. Then the calculations are done using
+ * the new start time.
+ */
+ public function find_aos(Predict_Sat $sat, Predict_QTH $qth, $start, $maxdt)
+ {
+ $t = $start;
+ $aostime = 0.0;
+
+ /* make sure current sat values are
+ in sync with the time
+ */
+ $this->predict_calc($sat, $qth, $start);
+
+ /* check whether satellite has aos */
+ if ((Predict_SGPSDP::ORBIT_TYPE_GEO == $sat->otype) ||
+ (Predict_SGPSDP::ORBIT_TYPE_DECAYED == $sat->otype) ||
+ !$this->has_aos($sat, $qth)) {
+ return 0.0;
+ }
+
+ if ($sat->el > 0.0) {
+ $t = $this->find_los($sat, $qth, $start, $maxdt) + 0.014; // +20 min
+ }
+
+ /* invalid time (potentially returned by find_los) */
+ if ($t < 0.1) {
+ return 0.0;
+ }
+
+ /* update satellite data */
+ $this->predict_calc($sat, $qth, $t);
+
+ /* use upper time limit */
+ if ($maxdt > 0.0) {
+ /* coarse time steps */
+ while (($sat->el < -1.0) && ($t <= ($start + $maxdt))) {
+ $t -= 0.00035 * ($sat->el * (($sat->alt / 8400.0) + 0.46) - 2.0);
+ $this->predict_calc($sat, $qth, $t);
+ }
+
+ /* fine steps */
+ while ((0.0 == $aostime) && ($t <= ($start + $maxdt))) {
+ if (abs($sat->el) < 0.005) {
+ $aostime = $t;
+ } else {
+ $t -= $sat->el * sqrt($sat->alt) / 530000.0;
+ $this->predict_calc($sat, $qth, $t);
+ }
+ }
+ } else {
+ /* don't use upper time limit */
+
+ /* coarse time steps */
+ while ($sat->el < -1.0) {
+ $t -= 0.00035 * ($sat->el * (($sat->alt / 8400.0) + 0.46) - 2.0);
+ $this->predict_calc($sat, $qth, $t);
+ }
+
+ /* fine steps */
+ while (0.0 == $aostime) {
+ if (abs($sat->el) < 0.005) {
+ $aostime = $t;
+ } else {
+ $t -= $sat->el * sqrt($sat->alt) / 530000.0;
+ $this->predict_calc($sat, $qth, $t);
+ }
+ }
+ }
+
+ return $aostime;
+ }
+
+ /** SGP4SDP4 driver for doing AOS/LOS calculations.
+ * @param Predict_Sat $sat the satellite data
+ * @param Predict_QTH $qth the QTH observer location data
+ * @param float $t The time for calculation (Julian Date)
+ */
+ public function predict_calc(Predict_Sat $sat, Predict_QTH $qth, $t)
+ {
+ $obs_set = new Predict_ObsSet();
+ $sat_geodetic = new Predict_Geodetic();
+ $obs_geodetic = new Predict_Geodetic();
+
+ $obs_geodetic->lon = $qth->lon * self::de2ra;
+ $obs_geodetic->lat = $qth->lat * self::de2ra;
+ $obs_geodetic->alt = $qth->alt / 1000.0;
+ $obs_geodetic->theta = 0;
+
+ $sat->jul_utc = $t;
+ $sat->tsince = ($sat->jul_utc - $sat->jul_epoch) * self::xmnpda;
+
+ /* call the norad routines according to the deep-space flag */
+ $sgpsdp = Predict_SGPSDP::getInstance($sat);
+ if ($sat->flags & Predict_SGPSDP::DEEP_SPACE_EPHEM_FLAG) {
+ $sgpsdp->SDP4($sat, $sat->tsince);
+ } else {
+ $sgpsdp->SGP4($sat, $sat->tsince);
+ }
+
+ Predict_Math::Convert_Sat_State($sat->pos, $sat->vel);
+
+ /* get the velocity of the satellite */
+ $sat->vel->w = sqrt($sat->vel->x * $sat->vel->x + $sat->vel->y * $sat->vel->y + $sat->vel->z * $sat->vel->z);
+ $sat->velo = $sat->vel->w;
+ Predict_SGPObs::Calculate_Obs($sat->jul_utc, $sat->pos, $sat->vel, $obs_geodetic, $obs_set);
+ Predict_SGPObs::Calculate_LatLonAlt($sat->jul_utc, $sat->pos, $sat_geodetic);
+
+ while ($sat_geodetic->lon < -self::pi) {
+ $sat_geodetic->lon += self::twopi;
+ }
+
+ while ($sat_geodetic->lon > self::pi) {
+ $sat_geodetic->lon -= self::twopi;
+ }
+
+ $sat->az = Predict_Math::Degrees($obs_set->az);
+ $sat->el = Predict_Math::Degrees($obs_set->el);
+ $sat->range = $obs_set->range;
+ $sat->range_rate = $obs_set->range_rate;
+ $sat->ssplat = Predict_Math::Degrees($sat_geodetic->lat);
+ $sat->ssplon = Predict_Math::Degrees($sat_geodetic->lon);
+ $sat->alt = $sat_geodetic->alt;
+ $sat->ma = Predict_Math::Degrees($sat->phase);
+ $sat->ma *= 256.0 / 360.0;
+ $sat->phase = Predict_Math::Degrees($sat->phase);
+
+ /* same formulas, but the one from predict is nicer */
+ // sat->footprint = 2.0 * xkmper * acos (xkmper/sat->pos.w);
+ $sat->footprint = 12756.33 * acos(self::xkmper / (self::xkmper + $sat->alt));
+ $age = $sat->jul_utc - $sat->jul_epoch;
+ $sat->orbit = floor(($sat->tle->xno * self::xmnpda / self::twopi +
+ $age * $sat->tle->bstar * self::ae) * $age +
+ $sat->tle->xmo / self::twopi) + $sat->tle->revnum - 1;
+ }
+
+ /** Find the LOS time of the next pass.
+ * @author Alexandru Csete, OZ9AEC
+ * @author John A. Magliacane, KD2BD
+ *
+ * @param Predict_Sat $sat the satellite data
+ * @param Predict_QTH $qth the QTH observer location data
+ * @param float $start The time where calculation should start. (Julian Date)
+ * @param int $maxdt The upper time limit in days (0.0 = no limit)
+ *
+ * @return The time (julian date) of the next LOS or 0.0 if the satellite has no LOS.
+ *
+ * This function finds the time of LOS for the first coming pass taking place
+ * no earlier that start.
+ * If the satellite is currently out of range, the function first calls
+ * find_aos to get the next AOS time. Then the calculations are done using
+ * the new start time.
+ * The function has a built-in watchdog to ensure that we don't end up in
+ * lengthy loops.
+ */
+ public function find_los(Predict_Sat $sat, Predict_QTH $qth, $start, $maxdt)
+ {
+ $t = $start;
+ $lostime = 0.0;
+
+ $this->predict_calc($sat, $qth, $start);
+
+ /* check whether satellite has aos */
+ if ((Predict_SGPSDP::ORBIT_TYPE_GEO == $sat->otype) ||
+ (Predict_SGPSDP::ORBIT_TYPE_DECAYED == $sat->otype) ||
+ !$this->has_aos($sat, $qth)) {
+ return 0.0;
+ }
+
+ if ($sat->el < 0.0) {
+ $t = $this->find_aos($sat, $qth, $start, $maxdt) + 0.001; // +1.5 min
+ }
+
+ /* invalid time (potentially returned by find_aos) */
+ if ($t < 0.01) {
+ return 0.0;
+ }
+
+ /* update satellite data */
+ $this->predict_calc($sat, $qth, $t);
+
+ /* use upper time limit */
+ if ($maxdt > 0.0) {
+ /* coarse steps */
+ while (($sat->el >= 1.0) && ($t <= ($start + $maxdt))) {
+ $t += cos(($sat->el - 1.0) * self::de2ra) * sqrt($sat->alt) / 25000.0;
+ $this->predict_calc($sat, $qth, $t);
+ }
+
+ /* fine steps */
+ while ((0.0 == $lostime) && ($t <= ($start + $maxdt))) {
+ $t += $sat->el * sqrt($sat->alt) / 502500.0;
+ $this->predict_calc($sat, $qth, $t);
+
+ if (abs($sat->el) < 0.005) {
+ $lostime = $t;
+ }
+ }
+ } else {
+ /* don't use upper limit */
+
+ /* coarse steps */
+ while ($sat->el >= 1.0) {
+ $t += cos(($sat->el - 1.0) * self::de2ra) * sqrt($sat->alt) / 25000.0;
+ $this->predict_calc($sat, $qth, $t);
+ }
+
+ /* fine steps */
+ while (0.0 == $lostime) {
+ $t += $sat->el * sqrt($sat->alt) / 502500.0;
+ $this->predict_calc($sat, $qth, $t);
+
+ if (abs($sat->el) < 0.005) {
+ $lostime = $t;
+ }
+ }
+ }
+
+ return $lostime;
+ }
+
+ /** Find AOS time of current pass.
+ * @param Predict_Sat $sat the satellite to find AOS for
+ * @param Predict_QTH $qth the ground station
+ * @param float $start start time, prefereably now
+ *
+ * @return The time of the previous AOS or 0.0 if the satellite has no AOS.
+ *
+ * This function can be used to find the AOS time in the past of the
+ * current pass.
+ */
+ public function find_prev_aos(Predict_Sat $sat, Predict_QTH $qth, $start)
+ {
+ $aostime = $start;
+
+ /* make sure current sat values are
+ in sync with the time
+ */
+ $this->predict_calc($sat, $qth, $start);
+
+ /* check whether satellite has aos */
+ if ((Predict_SGPSDP::ORBIT_TYPE_GEO == $sat->otype) ||
+ (Predict_SGPSDP::ORBIT_TYPE_DECAYED == $sat->otype) ||
+ !$this->has_aos($sat, $qth)) {
+ return 0.0;
+ }
+
+ while ($sat->el >= 0.0) {
+ $aostime -= 0.0005; // 0.75 min
+ $this->predict_calc($sat, $qth, $aostime);
+ }
+
+ return $aostime;
+ }
+
+ /** Determine whether satellite ever reaches AOS.
+ * @author John A. Magliacane, KD2BD
+ * @author Alexandru Csete, OZ9AEC
+ *
+ * @param Predict_Sat $sat the satellite data
+ * @param Predict_QTH $qth The observer's location data
+ *
+ * @return bool true if the satellite will reach AOS, false otherwise
+ */
+ public function has_aos(Predict_Sat $sat, Predict_QTH $qth)
+ {
+ $retcode = false;
+
+ /* FIXME */
+ if (0.0 == $sat->meanmo) {
+ $retcode = false;
+ } else {
+ /* xincl is already in RAD by select_ephemeris */
+ $lin = $sat->tle->xincl;
+ if ($lin >= self::pio2) {
+ $lin = self::pi - $lin;
+ }
+
+ $sma = 331.25 * exp(log(1440.0 / $sat->meanmo) * (2.0 / 3.0));
+ $apogee = $sma * (1.0 + $sat->tle->eo) - self::xkmper;
+
+ if ((acos(self::xkmper / ($apogee + self::xkmper)) + $lin) > abs($qth->lat * self::de2ra)) {
+ $retcode = true;
+ } else {
+ $retcode = false;
+ }
+ }
+
+ return $retcode;
+ }
+
+ /** Predict passes after a certain time.
+ *
+ * This function calculates num upcoming passes with AOS no earlier
+ * than t = start and not later that t = (start+maxdt). The function will
+ * repeatedly call get_pass until
+ * the number of predicted passes is equal to num, the time has reached
+ * limit or the get_pass function returns NULL.
+ *
+ * note For no time limit use maxdt = 0.0
+ *
+ * note the data in sat will be corrupt (future) and must be refreshed
+ * by the caller, if the caller will need it later on (eg. if the caller
+ * is GtkSatList).
+ *
+ * note Prepending to a singly linked list is much faster than appending.
+ * Therefore, the elements are prepended whereafter the GSList is
+ * reversed
+ *
+ * @param Predict_Sat $sat The satellite data
+ * @param Predict_QTH $qth The observer's location data
+ * @param float $start The start julian date
+ * @param int $maxdt The max # of days to look
+ * @param int $num The max # of passes to get
+ *
+ * @return array of Predict_Pass instances if found, empty array otherwise
+ */
+ public function get_passes(Predict_Sat $sat, Predict_QTH $qth, $start, $maxdt, $num = 0)
+ {
+ $passes = [];
+
+ /* if no number has been specified
+ set it to something big */
+ if (0 == $num) {
+ $num = 100;
+ }
+
+ $t = $start;
+
+ for ($i = 0; $i < $num; ++$i) {
+ $pass = $this->get_pass($sat, $qth, $t, $maxdt);
+
+ if (null != $pass) {
+ $passes[] = $pass;
+ $t = $pass->los + 0.014; // +20 min
+
+ /* if maxdt > 0.0 check whether we have reached t = start+maxdt
+ if yes finish predictions
+ */
+ if (($maxdt > 0.0) && ($t >= ($start + $maxdt))) {
+ $i = $num;
+ }
+ } else {
+ /* we can't get any more passes */
+ $i = $num;
+ }
+ }
+
+ return $passes;
+ }
+
+ /**
+ * Filters out visible passes and adds the visible aos, tca, los, and
+ * corresponding az and ele for each.
+ *
+ * @param array $passes The passes returned from get_passes()
+ *
+ * @author Bill Shupp
+ *
+ * @return array
+ */
+ public function filterVisiblePasses(array $passes)
+ {
+ $filtered = [];
+
+ foreach ($passes as $result) {
+ // Dummy check
+ if ('V' != $result->vis[0]) {
+ continue;
+ }
+
+ $aos = false;
+ $aos_az = false;
+ $aos = false;
+ $tca = false;
+ $los_az = false;
+ $max_el = 0;
+
+ foreach ($result->details as $detail) {
+ if (Predict::SAT_VIS_VISIBLE != $detail->vis) {
+ continue;
+ }
+ if ($detail->el < $this->minEle) {
+ continue;
+ }
+
+ if (false == $aos) {
+ $aos = $detail->time;
+ $aos_az = $detail->az;
+ $aos_el = $detail->el;
+ $tca = $detail->time;
+ $los = $detail->time;
+ $los_az = $detail->az;
+ $los_el = $detail->el;
+ $max_el = $detail->el;
+ $max_el_az = $detail->el;
+ continue;
+ }
+ $los = $detail->time;
+ $los_az = $detail->az;
+ $los_el = $detail->el;
+
+ if ($detail->el > $max_el) {
+ $tca = $detail->time;
+ $max_el = $detail->el;
+ $max_el_az = $detail->az;
+ }
+ }
+
+ if (false === $aos) {
+ // Does not reach minimum elevation, skip
+ continue;
+ }
+
+ $result->visible_aos = $aos;
+ $result->visible_aos_az = $aos_az;
+ $result->visible_aos_el = $aos_el;
+ $result->visible_tca = $tca;
+ $result->visible_max_el = $max_el;
+ $result->visible_max_el_az = $max_el_az;
+ $result->visible_los = $los;
+ $result->visible_los_az = $los_az;
+ $result->visible_los_el = $los_el;
+
+ $filtered[] = $result;
+ }
+
+ return $filtered;
+ }
+
+ /**
+ * Translates aziumuth degrees to compass direction:.
+ *
+ * N (0°), NNE (22.5°), NE (45°), ENE (67.5°), E (90°), ESE (112.5°),
+ * SE (135°), SSE (157.5°), S (180°), SSW (202.5°), SW (225°),
+ * WSW (247.5°), W (270°), WNW (292.5°), NW (315°), NNW (337.5°)
+ *
+ * @param int $az The azimuth in degrees, defaults to 0
+ *
+ * @return string
+ */
+ public static function azDegreesToDirection($az = 0)
+ {
+ $i = floor($az / 22.5);
+ $m = (22.5 * (2 * $i + 1)) / 2;
+ $i = ($az >= $m) ? $i + 1 : $i;
+
+ return trim(substr('N NNENE ENEE ESESE SSES SSWSW WSWW WNWNW NNWN ', $i * 3, 3));
+ }
+}
diff --git a/lib/predict/Predict/DeepArg.php b/lib/predict/Predict/DeepArg.php
new file mode 100644
index 0000000..e260dc9
--- /dev/null
+++ b/lib/predict/Predict/DeepArg.php
@@ -0,0 +1,35 @@
+ 0) {
+ return 1;
+ } elseif ($arg < 0) {
+ return -1;
+ } else {
+ return 0;
+ }
+ }
+
+ /* Returns the arcsine of the argument */
+ public static function ArcSin($arg)
+ {
+ if (abs($arg) >= 1) {
+ return self::Sign($arg) * Predict::pio2;
+ } else {
+ return atan($arg / sqrt(1 - $arg * $arg));
+ }
+ }
+
+ /* Returns arccosine of rgument */
+ public static function ArcCos($arg)
+ {
+ return Predict::pio2 - self::ArcSin($arg);
+ }
+
+ /* Adds vectors v1 and v2 together to produce v3 */
+ public static function Vec_Add(Predict_Vector $v1, Predict_Vector $v2, Predict_Vector $v3)
+ {
+ $v3->x = $v1->x + $v2->x;
+ $v3->y = $v1->y + $v2->y;
+ $v3->z = $v1->z + $v2->z;
+
+ $v3->w = sqrt($v3->x * $v3->x + $v3->y * $v3->y + $v3->z * $v3->z);
+ }
+
+ /* Subtracts vector v2 from v1 to produce v3 */
+ public static function Vec_Sub(Predict_Vector $v1, Predict_Vector $v2, Predict_Vector $v3)
+ {
+ $v3->x = $v1->x - $v2->x;
+ $v3->y = $v1->y - $v2->y;
+ $v3->z = $v1->z - $v2->z;
+
+ $v3->w = sqrt($v3->x * $v3->x + $v3->y * $v3->y + $v3->z * $v3->z);
+ }
+
+ /* Multiplies the vector v1 by the scalar k to produce the vector v2 */
+ public static function Scalar_Multiply($k, Predict_Vector $v1, Predict_Vector $v2)
+ {
+ $v2->x = $k * $v1->x;
+ $v2->y = $k * $v1->y;
+ $v2->z = $k * $v1->z;
+ $v2->w = abs($k) * $v1->w;
+ }
+
+ /* Multiplies the vector v1 by the scalar k */
+ public static function Scale_Vector($k, Predict_Vector $v)
+ {
+ $v->x *= $k;
+ $v->y *= $k;
+ $v->z *= $k;
+
+ $v->w = sqrt($v->x * $v->x + $v->y * $v->y + $v->z * $v->z);
+ }
+
+ /* Returns the dot product of two vectors */
+ public static function Dot(Predict_Vector $v1, Predict_Vector $v2)
+ {
+ return $v1->x * $v2->x + $v1->y * $v2->y + $v1->z * $v2->z;
+ }
+
+ /* Calculates the angle between vectors v1 and v2 */
+ public static function Angle(Predict_Vector $v1, Predict_Vector $v2)
+ {
+ $v1->w = sqrt($v1->x * $v1->x + $v1->y * $v1->y + $v1->z * $v1->z);
+ $v2->w = sqrt($v2->x * $v2->x + $v2->y * $v2->y + $v2->z * $v2->z);
+
+ return self::ArcCos(self::Dot($v1, $v2) / ($v1->w * $v2->w));
+ }
+
+ /* Produces cross product of v1 and v2, and returns in v3 */
+ public static function Cross(Predict_Vector $v1, Predict_Vector $v2, Predict_Vector $v3)
+ {
+ $v3->x = $v1->y * $v2->z - $v1->z * $v2->y;
+ $v3->y = $v1->z * $v2->x - $v1->x * $v2->z;
+ $v3->z = $v1->x * $v2->y - $v1->y * $v2->x;
+
+ $v3->w = sqrt($v3->x * $v3->x + $v3->y * $v3->y + $v3->z * $v3->z);
+ }
+
+ /* Normalizes a vector */
+ public static function Normalize(Predict_Vector $v)
+ {
+ $v->x /= $v->w;
+ $v->y /= $v->w;
+ $v->z /= $v->w;
+ }
+
+ /* Four-quadrant arctan function */
+ public static function AcTan($sinx, $cosx)
+ {
+ if (0 == $cosx) {
+ if ($sinx > 0) {
+ return Predict::pio2;
+ } else {
+ return Predict::x3pio2;
+ }
+ } else {
+ if ($cosx > 0) {
+ if ($sinx > 0) {
+ return atan($sinx / $cosx);
+ } else {
+ return Predict::twopi + atan($sinx / $cosx);
+ }
+ } else {
+ return Predict::pi + atan($sinx / $cosx);
+ }
+ }
+ }
+
+ /* Returns mod 2pi of argument */
+ public static function FMod2p($x)
+ {
+ $ret_val = $x;
+ $i = (int) ($ret_val / Predict::twopi);
+ $ret_val -= $i * Predict::twopi;
+
+ if ($ret_val < 0) {
+ $ret_val += Predict::twopi;
+ }
+
+ return $ret_val;
+ }
+
+ /* Returns arg1 mod arg2 */
+ public static function Modulus($arg1, $arg2)
+ {
+ $ret_val = $arg1;
+ $i = (int) ($ret_val / $arg2);
+ $ret_val -= $i * $arg2;
+
+ if ($ret_val < 0) {
+ $ret_val += $arg2;
+ }
+
+ return $ret_val;
+ }
+
+ /* Returns fractional part of double argument */
+ public static function Frac($arg)
+ {
+ return $arg - floor($arg);
+ }
+
+ /* Converts the satellite's position and velocity */
+ /* vectors from normalised values to km and km/sec */
+ public static function Convert_Sat_State(Predict_Vector $pos, Predict_Vector $vel)
+ {
+ self::Scale_Vector(Predict::xkmper, $pos);
+ self::Scale_Vector(Predict::xkmper * Predict::xmnpda / Predict::secday, $vel);
+ }
+
+ /* Returns angle in radians from arg in degrees */
+ public static function Radians($arg)
+ {
+ return $arg * Predict::de2ra;
+ }
+
+ /* Returns angle in degrees from arg in rads */
+ public static function Degrees($arg)
+ {
+ return $arg / Predict::de2ra;
+ }
+}
diff --git a/lib/predict/Predict/ObsSet.php b/lib/predict/Predict/ObsSet.php
new file mode 100644
index 0000000..08970e2
--- /dev/null
+++ b/lib/predict/Predict/ObsSet.php
@@ -0,0 +1,12 @@
+pos = new Predict_Vector();
+ $this->vel = new Predict_Vector();
+ }
+}
diff --git a/lib/predict/Predict/QTH.php b/lib/predict/Predict/QTH.php
new file mode 100644
index 0000000..55a8615
--- /dev/null
+++ b/lib/predict/Predict/QTH.php
@@ -0,0 +1,20 @@
+lat); /* Only run sin($geodetic->lat) once */
+
+ $geodetic->theta = Predict_Math::FMod2p(Predict_Time::ThetaG_JD($_time) + $geodetic->lon); /* LMST */
+ $c = 1 / sqrt(1 + Predict::__f * (Predict::__f - 2) * $sinGeodeticLat * $sinGeodeticLat);
+ $sq = (1 - Predict::__f) * (1 - Predict::__f) * $c;
+ $achcp = (Predict::xkmper * $c + $geodetic->alt) * cos($geodetic->lat);
+ $obs_pos->x = $achcp * cos($geodetic->theta); /* kilometers */
+ $obs_pos->y = $achcp * sin($geodetic->theta);
+ $obs_pos->z = (Predict::xkmper * $sq + $geodetic->alt) * $sinGeodeticLat;
+ $obs_vel->x = -Predict::mfactor * $obs_pos->y; /* kilometers/second */
+ $obs_vel->y = Predict::mfactor * $obs_pos->x;
+ $obs_vel->z = 0;
+ $obs_pos->w = sqrt($obs_pos->x * $obs_pos->x + $obs_pos->y * $obs_pos->y + $obs_pos->z * $obs_pos->z);
+ $obs_vel->w = sqrt($obs_vel->x * $obs_vel->x + $obs_vel->y * $obs_vel->y + $obs_vel->z * $obs_vel->z);
+ }
+
+ /* Procedure Calculate_LatLonAlt will calculate the geodetic */
+ /* position of an object given its ECI position pos and time. */
+ /* It is intended to be used to determine the ground track of */
+ /* a satellite. The calculations assume the earth to be an */
+ /* oblate spheroid as defined in WGS '72. */
+ public static function Calculate_LatLonAlt($_time, Predict_Vector $pos, Predict_Geodetic $geodetic)
+ {
+ /* Reference: The 1992 Astronomical Almanac, page K12. */
+
+ /* double r,e2,phi,c; */
+
+ $geodetic->theta = Predict_Math::AcTan($pos->y, $pos->x); /* radians */
+ $geodetic->lon = Predict_Math::FMod2p($geodetic->theta - Predict_Time::ThetaG_JD($_time)); /* radians */
+ $r = sqrt(($pos->x * $pos->x) + ($pos->y * $pos->y));
+ $e2 = Predict::__f * (2 - Predict::__f);
+ $geodetic->lat = Predict_Math::AcTan($pos->z, $r); /* radians */
+
+ do {
+ $phi = $geodetic->lat;
+ $sinPhi = sin($phi);
+ $c = 1 / sqrt(1 - $e2 * ($sinPhi * $sinPhi));
+ $geodetic->lat = Predict_Math::AcTan($pos->z + Predict::xkmper * $c * $e2 * $sinPhi, $r);
+ } while (abs($geodetic->lat - $phi) >= 1E-10);
+
+ $geodetic->alt = $r / cos($geodetic->lat) - Predict::xkmper * $c; /* kilometers */
+
+ if ($geodetic->lat > Predict::pio2) {
+ $geodetic->lat -= Predict::twopi;
+ }
+ }
+
+ /* The procedures Calculate_Obs and Calculate_RADec calculate */
+ /* the *topocentric* coordinates of the object with ECI position, */
+ /* {pos}, and velocity, {vel}, from location {geodetic} at {time}. */
+ /* The {obs_set} returned for Calculate_Obs consists of azimuth, */
+ /* elevation, range, and range rate (in that order) with units of */
+ /* radians, radians, kilometers, and kilometers/second, respectively. */
+ /* The WGS '72 geoid is used and the effect of atmospheric refraction */
+ /* (under standard temperature and pressure) is incorporated into the */
+ /* elevation calculation; the effect of atmospheric refraction on */
+ /* range and range rate has not yet been quantified. */
+
+ /* The {obs_set} for Calculate_RADec consists of right ascension and */
+ /* declination (in that order) in radians. Again, calculations are */
+ /* based on *topocentric* position using the WGS '72 geoid and */
+ /* incorporating atmospheric refraction. */
+ public static function Calculate_Obs($_time, Predict_Vector $pos, Predict_Vector $vel, Predict_Geodetic $geodetic, Predict_ObsSet $obs_set)
+ {
+ $obs_pos = new Predict_Vector();
+ $obs_vel = new Predict_Vector();
+ $range = new Predict_Vector();
+ $rgvel = new Predict_Vector();
+
+ self::Calculate_User_PosVel($_time, $geodetic, $obs_pos, $obs_vel);
+
+ $range->x = $pos->x - $obs_pos->x;
+ $range->y = $pos->y - $obs_pos->y;
+ $range->z = $pos->z - $obs_pos->z;
+
+ $rgvel->x = $vel->x - $obs_vel->x;
+ $rgvel->y = $vel->y - $obs_vel->y;
+ $rgvel->z = $vel->z - $obs_vel->z;
+
+ $range->w = sqrt($range->x * $range->x + $range->y * $range->y + $range->z * $range->z);
+
+ $sin_lat = sin($geodetic->lat);
+ $cos_lat = cos($geodetic->lat);
+ $sin_theta = sin($geodetic->theta);
+ $cos_theta = cos($geodetic->theta);
+ $top_s = $sin_lat * $cos_theta * $range->x
+ + $sin_lat * $sin_theta * $range->y
+ - $cos_lat * $range->z;
+ $top_e = -$sin_theta * $range->x
+ + $cos_theta * $range->y;
+ $top_z = $cos_lat * $cos_theta * $range->x
+ + $cos_lat * $sin_theta * $range->y
+ + $sin_lat * $range->z;
+ $azim = atan(-$top_e / $top_s); /* Azimuth */
+ if ($top_s > 0) {
+ $azim = $azim + Predict::pi;
+ }
+ if ($azim < 0) {
+ $azim = $azim + Predict::twopi;
+ }
+ $el = Predict_Math::ArcSin($top_z / $range->w);
+ $obs_set->az = $azim; /* Azimuth (radians) */
+ $obs_set->el = $el; /* Elevation (radians) */
+ $obs_set->range = $range->w; /* Range (kilometers) */
+
+ /* Range Rate (kilometers/second) */
+ $obs_set->range_rate = Predict_Math::Dot($range, $rgvel) / $range->w;
+
+ /* Corrections for atmospheric refraction */
+ /* Reference: Astronomical Algorithms by Jean Meeus, pp. 101-104 */
+ /* Correction is meaningless when apparent elevation is below horizon */
+ // obs_set->el = obs_set->el + Radians((1.02/tan(Radians(Degrees(el)+
+ // 10.3/(Degrees(el)+5.11))))/60);
+ if ($obs_set->el < 0) {
+ $obs_set->el = $el; /* Reset to true elevation */
+ }
+ }
+}
diff --git a/lib/predict/Predict/SGPSDP.php b/lib/predict/Predict/SGPSDP.php
new file mode 100644
index 0000000..35fd5ad
--- /dev/null
+++ b/lib/predict/Predict/SGPSDP.php
@@ -0,0 +1,1045 @@
+flags & self::SGP4_INITIALIZED_FLAG) {
+ $sat->flags |= self::SGP4_INITIALIZED_FLAG;
+
+ /* Recover original mean motion (xnodp) and */
+ /* semimajor axis (aodp) from input elements. */
+ $a1 = pow(Predict::xke / $sat->tle->xno, Predict::tothrd);
+ $sat->sgps->cosio = cos($sat->tle->xincl);
+ $theta2 = $sat->sgps->cosio * $sat->sgps->cosio;
+ $sat->sgps->x3thm1 = 3 * $theta2 - 1.0;
+ $eosq = $sat->tle->eo * $sat->tle->eo;
+ $betao2 = 1 - $eosq;
+ $betao = sqrt($betao2);
+ $del1 = 1.5 * Predict::ck2 * $sat->sgps->x3thm1 / ($a1 * $a1 * $betao * $betao2);
+ $ao = $a1 * (1 - $del1 * (0.5 * Predict::tothrd + $del1 * (1 + 134.0 / 81.0 * $del1)));
+ $delo = 1.5 * Predict::ck2 * $sat->sgps->x3thm1 / ($ao * $ao * $betao * $betao2);
+ $sat->sgps->xnodp = $sat->tle->xno / (1.0 + $delo);
+ $sat->sgps->aodp = $ao / (1.0 - $delo);
+
+ /* For perigee less than 220 kilometers, the "simple" flag is set */
+ /* and the equations are truncated to linear variation in sqrt a */
+ /* and quadratic variation in mean anomaly. Also, the c3 term, */
+ /* the delta omega term, and the delta m term are dropped. */
+ if (($sat->sgps->aodp * (1.0 - $sat->tle->eo) / Predict::ae) < (220.0 / Predict::xkmper + Predict::ae)) {
+ $sat->flags |= self::SIMPLE_FLAG;
+ } else {
+ $sat->flags &= ~self::SIMPLE_FLAG;
+ }
+
+ /* For perigee below 156 km, the */
+ /* values of s and qoms2t are altered. */
+ $s4 = Predict::__s__;
+ $qoms24 = Predict::qoms2t;
+ $perige = ($sat->sgps->aodp * (1 - $sat->tle->eo) - Predict::ae) * Predict::xkmper;
+ if ($perige < 156.0) {
+ if ($perige <= 98.0) {
+ $s4 = 20.0;
+ } else {
+ $s4 = $perige - 78.0;
+ }
+ $qoms24 = pow((120.0 - $s4) * Predict::ae / Predict::xkmper, 4);
+ $s4 = $s4 / Predict::xkmper + Predict::ae;
+ } /* FIXME FIXME: End of if(perige <= 98) NO WAY!!!! */
+
+ $pinvsq = 1.0 / ($sat->sgps->aodp * $sat->sgps->aodp * $betao2 * $betao2);
+ $tsi = 1.0 / ($sat->sgps->aodp - $s4);
+ $sat->sgps->eta = $sat->sgps->aodp * $sat->tle->eo * $tsi;
+ $etasq = $sat->sgps->eta * $sat->sgps->eta;
+ $eeta = $sat->tle->eo * $sat->sgps->eta;
+ $psisq = abs(1.0 - $etasq);
+ $coef = $qoms24 * pow($tsi, 4);
+ $coef1 = $coef / pow($psisq, 3.5);
+ $c2 = $coef1 * $sat->sgps->xnodp * ($sat->sgps->aodp *
+ (1.0 + 1.5 * $etasq + $eeta * (4.0 + $etasq)) +
+ 0.75 * Predict::ck2 * $tsi / $psisq * $sat->sgps->x3thm1 *
+ (8.0 + 3.0 * $etasq * (8 + $etasq)));
+ $sat->sgps->c1 = $c2 * $sat->tle->bstar;
+ $sat->sgps->sinio = sin($sat->tle->xincl);
+ $a3ovk2 = -Predict::xj3 / Predict::ck2 * pow(Predict::ae, 3);
+ $c3 = $coef * $tsi * $a3ovk2 * $sat->sgps->xnodp * Predict::ae * $sat->sgps->sinio / $sat->tle->eo;
+ $sat->sgps->x1mth2 = 1.0 - $theta2;
+ $sat->sgps->c4 = 2.0 * $sat->sgps->xnodp * $coef1 * $sat->sgps->aodp * $betao2 *
+ ($sat->sgps->eta * (2.0 + 0.5 * $etasq) +
+ $sat->tle->eo * (0.5 + 2.0 * $etasq) -
+ 2.0 * Predict::ck2 * $tsi / ($sat->sgps->aodp * $psisq) *
+ (-3.0 * $sat->sgps->x3thm1 * (1.0 - 2.0 * $eeta + $etasq * (1.5 - 0.5 * $eeta)) +
+ 0.75 * $sat->sgps->x1mth2 * (2.0 * $etasq - $eeta * (1.0 + $etasq)) *
+ cos(2.0 * $sat->tle->omegao)));
+ $sat->sgps->c5 = 2.0 * $coef1 * $sat->sgps->aodp * $betao2 *
+ (1.0 + 2.75 * ($etasq + $eeta) + $eeta * $etasq);
+ $theta4 = $theta2 * $theta2;
+ $temp1 = 3.0 * Predict::ck2 * $pinvsq * $sat->sgps->xnodp;
+ $temp2 = $temp1 * Predict::ck2 * $pinvsq;
+ $temp3 = 1.25 * Predict::ck4 * $pinvsq * $pinvsq * $sat->sgps->xnodp;
+ $sat->sgps->xmdot = $sat->sgps->xnodp + 0.5 * $temp1 * $betao * $sat->sgps->x3thm1 +
+ 0.0625 * $temp2 * $betao * (13.0 - 78.0 * $theta2 + 137.0 * $theta4);
+ $x1m5th = 1.0 - 5.0 * $theta2;
+ $sat->sgps->omgdot = -0.5 * $temp1 * $x1m5th +
+ 0.0625 * $temp2 * (7.0 - 114.0 * $theta2 + 395.0 * $theta4) +
+ $temp3 * (3.0 - 36.0 * $theta2 + 49.0 * $theta4);
+ $xhdot1 = -$temp1 * $sat->sgps->cosio;
+ $sat->sgps->xnodot = $xhdot1 + (0.5 * $temp2 * (4.0 - 19.0 * $theta2) +
+ 2.0 * $temp3 * (3.0 - 7.0 * $theta2)) * $sat->sgps->cosio;
+ $sat->sgps->omgcof = $sat->tle->bstar * $c3 * cos($sat->tle->omegao);
+ $sat->sgps->xmcof = -Predict::tothrd * $coef * $sat->tle->bstar * Predict::ae / $eeta;
+ $sat->sgps->xnodcf = 3.5 * $betao2 * $xhdot1 * $sat->sgps->c1;
+ $sat->sgps->t2cof = 1.5 * $sat->sgps->c1;
+ $sat->sgps->xlcof = 0.125 * $a3ovk2 * $sat->sgps->sinio *
+ (3.0 + 5.0 * $sat->sgps->cosio) / (1.0 + $sat->sgps->cosio);
+ $sat->sgps->aycof = 0.25 * $a3ovk2 * $sat->sgps->sinio;
+ $sat->sgps->delmo = pow(1.0 + $sat->sgps->eta * cos($sat->tle->xmo), 3);
+ $sat->sgps->sinmo = sin($sat->tle->xmo);
+ $sat->sgps->x7thm1 = 7.0 * $theta2 - 1.0;
+ if (~$sat->flags & self::SIMPLE_FLAG) {
+ $c1sq = $sat->sgps->c1 * $sat->sgps->c1;
+ $sat->sgps->d2 = 4.0 * $sat->sgps->aodp * $tsi * $c1sq;
+ $temp = $sat->sgps->d2 * $tsi * $sat->sgps->c1 / 3.0;
+ $sat->sgps->d3 = (17.0 * $sat->sgps->aodp + $s4) * $temp;
+ $sat->sgps->d4 = 0.5 * $temp * $sat->sgps->aodp * $tsi *
+ (221.0 * $sat->sgps->aodp + 31.0 * $s4) * $sat->sgps->c1;
+ $sat->sgps->t3cof = $sat->sgps->d2 + 2.0 * $c1sq;
+ $sat->sgps->t4cof = 0.25 * (3.0 * $sat->sgps->d3 + $sat->sgps->c1 *
+ (12.0 * $sat->sgps->d2 + 10.0 * $c1sq));
+ $sat->sgps->t5cof = 0.2 * (3.0 * $sat->sgps->d4 +
+ 12.0 * $sat->sgps->c1 * $sat->sgps->d3 +
+ 6.0 * $sat->sgps->d2 * $sat->sgps->d2 +
+ 15.0 * $c1sq * (2.0 * $sat->sgps->d2 + $c1sq));
+ } /* End of if (isFlagClear(SIMPLE_FLAG)) */
+ } /* End of SGP4() initialization */
+
+ /* Update for secular gravity and atmospheric drag. */
+ $xmdf = $sat->tle->xmo + $sat->sgps->xmdot * $tsince;
+ $omgadf = $sat->tle->omegao + $sat->sgps->omgdot * $tsince;
+ $xnoddf = $sat->tle->xnodeo + $sat->sgps->xnodot * $tsince;
+ $omega = $omgadf;
+ $xmp = $xmdf;
+ $tsq = $tsince * $tsince;
+ $xnode = $xnoddf + $sat->sgps->xnodcf * $tsq;
+ $tempa = 1.0 - $sat->sgps->c1 * $tsince;
+ $tempe = $sat->tle->bstar * $sat->sgps->c4 * $tsince;
+ $templ = $sat->sgps->t2cof * $tsq;
+ if (~$sat->flags & self::SIMPLE_FLAG) {
+ $delomg = $sat->sgps->omgcof * $tsince;
+ $delm = $sat->sgps->xmcof * (pow(1 + $sat->sgps->eta * cos($xmdf), 3) - $sat->sgps->delmo);
+ $temp = $delomg + $delm;
+ $xmp = $xmdf + $temp;
+ $omega = $omgadf - $temp;
+ $tcube = $tsq * $tsince;
+ $tfour = $tsince * $tcube;
+ $tempa = $tempa - $sat->sgps->d2 * $tsq - $sat->sgps->d3 * $tcube - $sat->sgps->d4 * $tfour;
+ $tempe = $tempe + $sat->tle->bstar * $sat->sgps->c5 * (sin($xmp) - $sat->sgps->sinmo);
+ $templ = $templ + $sat->sgps->t3cof * $tcube + $tfour *
+ ($sat->sgps->t4cof + $tsince * $sat->sgps->t5cof);
+ } /* End of if (isFlagClear(SIMPLE_FLAG)) */
+
+ $a = $sat->sgps->aodp * pow($tempa, 2);
+ $e = $sat->tle->eo - $tempe;
+ $xl = $xmp + $omega + $xnode + $sat->sgps->xnodp * $templ;
+ $beta = sqrt(1.0 - ($e * $e));
+ $xn = Predict::xke / pow($a, 1.5);
+
+ /* Long period periodics */
+ $axn = $e * cos($omega);
+ $temp = 1.0 / ($a * $beta * $beta);
+ $xll = $temp * $sat->sgps->xlcof * $axn;
+ $aynl = $temp * $sat->sgps->aycof;
+ $xlt = $xl + $xll;
+ $ayn = $e * sin($omega) + $aynl;
+
+ /* Solve Kepler's' Equation */
+ $capu = Predict_Math::FMod2p($xlt - $xnode);
+ $temp2 = $capu;
+
+ $i = 0;
+ do {
+ $sinepw = sin($temp2);
+ $cosepw = cos($temp2);
+ $temp3 = $axn * $sinepw;
+ $temp4 = $ayn * $cosepw;
+ $temp5 = $axn * $cosepw;
+ $temp6 = $ayn * $sinepw;
+ $epw = ($capu - $temp4 + $temp3 - $temp2) / (1.0 - $temp5 - $temp6) + $temp2;
+ if (abs($epw - $temp2) <= Predict::e6a) {
+ break;
+ }
+ $temp2 = $epw;
+ } while ($i++ < 10);
+
+ /* Short period preliminary quantities */
+ $ecose = $temp5 + $temp6;
+ $esine = $temp3 - $temp4;
+ $elsq = $axn * $axn + $ayn * $ayn;
+ $temp = 1.0 - $elsq;
+ $pl = $a * $temp;
+ $r = $a * (1.0 - $ecose);
+ $temp1 = 1.0 / $r;
+ $rdot = Predict::xke * sqrt($a) * $esine * $temp1;
+ $rfdot = Predict::xke * sqrt($pl) * $temp1;
+ $temp2 = $a * $temp1;
+ $betal = sqrt($temp);
+ $temp3 = 1.0 / (1.0 + $betal);
+ $cosu = $temp2 * ($cosepw - $axn + $ayn * $esine * $temp3);
+ $sinu = $temp2 * ($sinepw - $ayn - $axn * $esine * $temp3);
+ $u = Predict_Math::AcTan($sinu, $cosu);
+ $sin2u = 2.0 * $sinu * $cosu;
+ $cos2u = 2.0 * $cosu * $cosu - 1.0;
+ $temp = 1.0 / $pl;
+ $temp1 = Predict::ck2 * $temp;
+ $temp2 = $temp1 * $temp;
+
+ /* Update for short periodics */
+ $rk = $r * (1.0 - 1.5 * $temp2 * $betal * $sat->sgps->x3thm1) +
+ 0.5 * $temp1 * $sat->sgps->x1mth2 * $cos2u;
+ $uk = $u - 0.25 * $temp2 * $sat->sgps->x7thm1 * $sin2u;
+ $xnodek = $xnode + 1.5 * $temp2 * $sat->sgps->cosio * $sin2u;
+ $xinck = $sat->tle->xincl + 1.5 * $temp2 * $sat->sgps->cosio * $sat->sgps->sinio * $cos2u;
+ $rdotk = $rdot - $xn * $temp1 * $sat->sgps->x1mth2 * $sin2u;
+ $rfdotk = $rfdot + $xn * $temp1 * ($sat->sgps->x1mth2 * $cos2u + 1.5 * $sat->sgps->x3thm1);
+
+ /* Orientation vectors */
+ $sinuk = sin($uk);
+ $cosuk = cos($uk);
+ $sinik = sin($xinck);
+ $cosik = cos($xinck);
+ $sinnok = sin($xnodek);
+ $cosnok = cos($xnodek);
+ $xmx = -$sinnok * $cosik;
+ $xmy = $cosnok * $cosik;
+ $ux = $xmx * $sinuk + $cosnok * $cosuk;
+ $uy = $xmy * $sinuk + $sinnok * $cosuk;
+ $uz = $sinik * $sinuk;
+ $vx = $xmx * $cosuk - $cosnok * $sinuk;
+ $vy = $xmy * $cosuk - $sinnok * $sinuk;
+ $vz = $sinik * $cosuk;
+
+ /* Position and velocity */
+ $sat->pos->x = $rk * $ux;
+ $sat->pos->y = $rk * $uy;
+ $sat->pos->z = $rk * $uz;
+ $sat->vel->x = $rdotk * $ux + $rfdotk * $vx;
+ $sat->vel->y = $rdotk * $uy + $rfdotk * $vy;
+ $sat->vel->z = $rdotk * $uz + $rfdotk * $vz;
+
+ $sat->phase = $xlt - $xnode - $omgadf + Predict::twopi;
+ if ($sat->phase < 0) {
+ $sat->phase += Predict::twopi;
+ }
+ $sat->phase = Predict_Math::FMod2p($sat->phase);
+
+ $sat->tle->omegao1 = $omega;
+ $sat->tle->xincl1 = $xinck;
+ $sat->tle->xnodeo1 = $xnodek;
+ } /* SGP4 */
+
+ /* SDP4 */
+ /* This function is used to calculate the position and velocity */
+ /* of deep-space (period > 225 minutes) satellites. tsince is */
+ /* time since epoch in minutes, tle is a pointer to a tle_t */
+ /* structure with Keplerian orbital elements and pos and vel */
+ /* are vector_t structures returning ECI satellite position and */
+ /* velocity. Use Convert_Sat_State() to convert to km and km/s. */
+ public function SDP4(Predict_Sat $sat, $tsince)
+ {
+ /* Initialization */
+ if (~$sat->flags & self::SDP4_INITIALIZED_FLAG) {
+ $sat->flags |= self::SDP4_INITIALIZED_FLAG;
+
+ /* Recover original mean motion (xnodp) and */
+ /* semimajor axis (aodp) from input elements. */
+ $a1 = pow(Predict::xke / $sat->tle->xno, Predict::tothrd);
+ $sat->deep_arg->cosio = cos($sat->tle->xincl);
+ $sat->deep_arg->theta2 = $sat->deep_arg->cosio * $sat->deep_arg->cosio;
+ $sat->sgps->x3thm1 = 3.0 * $sat->deep_arg->theta2 - 1.0;
+ $sat->deep_arg->eosq = $sat->tle->eo * $sat->tle->eo;
+ $sat->deep_arg->betao2 = 1.0 - $sat->deep_arg->eosq;
+ $sat->deep_arg->betao = sqrt($sat->deep_arg->betao2);
+ $del1 = 1.5 * Predict::ck2 * $sat->sgps->x3thm1 /
+ ($a1 * $a1 * $sat->deep_arg->betao * $sat->deep_arg->betao2);
+ $ao = $a1 * (1.0 - $del1 * (0.5 * Predict::tothrd + $del1 * (1.0 + 134.0 / 81.0 * $del1)));
+ $delo = 1.5 * Predict::ck2 * $sat->sgps->x3thm1 /
+ ($ao * $ao * $sat->deep_arg->betao * $sat->deep_arg->betao2);
+ $sat->deep_arg->xnodp = $sat->tle->xno / (1.0 + $delo);
+ $sat->deep_arg->aodp = $ao / (1.0 - $delo);
+
+ /* For perigee below 156 km, the values */
+ /* of s and qoms2t are altered. */
+ $s4 = Predict::__s__;
+ $qoms24 = Predict::qoms2t;
+ $perige = ($sat->deep_arg->aodp * (1.0 - $sat->tle->eo) - Predict::ae) * Predict::xkmper;
+ if ($perige < 156.0) {
+ if ($perige <= 98.0) {
+ $s4 = 20.0;
+ } else {
+ $s4 = $perige - 78.0;
+ }
+ $qoms24 = pow((120.0 - $s4) * Predict::ae / Predict::xkmper, 4);
+ $s4 = $s4 / Predict::xkmper + Predict::ae;
+ }
+ $pinvsq = 1.0 / ($sat->deep_arg->aodp * $sat->deep_arg->aodp *
+ $sat->deep_arg->betao2 * $sat->deep_arg->betao2);
+ $sat->deep_arg->sing = sin($sat->tle->omegao);
+ $sat->deep_arg->cosg = cos($sat->tle->omegao);
+ $tsi = 1.0 / ($sat->deep_arg->aodp - $s4);
+ $eta = $sat->deep_arg->aodp * $sat->tle->eo * $tsi;
+ $etasq = $eta * $eta;
+ $eeta = $sat->tle->eo * $eta;
+ $psisq = abs(1.0 - $etasq);
+ $coef = $qoms24 * pow($tsi, 4);
+ $coef1 = $coef / pow($psisq, 3.5);
+ $c2 = $coef1 * $sat->deep_arg->xnodp * ($sat->deep_arg->aodp *
+ (1.0 + 1.5 * $etasq + $eeta *
+ (4.0 + $etasq)) + 0.75 * Predict::ck2 * $tsi / $psisq *
+ $sat->sgps->x3thm1 * (8.0 + 3.0 * $etasq *
+ (8.0 + $etasq)));
+ $sat->sgps->c1 = $sat->tle->bstar * $c2;
+ $sat->deep_arg->sinio = sin($sat->tle->xincl);
+ $a3ovk2 = -Predict::xj3 / Predict::ck2 * pow(Predict::ae, 3);
+ $sat->sgps->x1mth2 = 1.0 - $sat->deep_arg->theta2;
+ $sat->sgps->c4 = 2.0 * $sat->deep_arg->xnodp * $coef1 *
+ $sat->deep_arg->aodp * $sat->deep_arg->betao2 *
+ ($eta * (2.0 + 0.5 * $etasq) + $sat->tle->eo *
+ (0.5 + 2.0 * $etasq) - 2.0 * Predict::ck2 * $tsi /
+ ($sat->deep_arg->aodp * $psisq) * (-3.0 * $sat->sgps->x3thm1 *
+ (1.0 - 2.0 * $eeta + $etasq *
+ (1.5 - 0.5 * $eeta)) +
+ 0.75 * $sat->sgps->x1mth2 *
+ (2.0 * $etasq - $eeta * (1.0 + $etasq)) *
+ cos(2.0 * $sat->tle->omegao)));
+ $theta4 = $sat->deep_arg->theta2 * $sat->deep_arg->theta2;
+ $temp1 = 3.0 * Predict::ck2 * $pinvsq * $sat->deep_arg->xnodp;
+ $temp2 = $temp1 * Predict::ck2 * $pinvsq;
+ $temp3 = 1.25 * Predict::ck4 * $pinvsq * $pinvsq * $sat->deep_arg->xnodp;
+ $sat->deep_arg->xmdot = $sat->deep_arg->xnodp + 0.5 * $temp1 * $sat->deep_arg->betao *
+ $sat->sgps->x3thm1 + 0.0625 * $temp2 * $sat->deep_arg->betao *
+ (13.0 - 78.0 * $sat->deep_arg->theta2 + 137.0 * $theta4);
+ $x1m5th = 1.0 - 5.0 * $sat->deep_arg->theta2;
+ $sat->deep_arg->omgdot = -0.5 * $temp1 * $x1m5th + 0.0625 * $temp2 *
+ (7.0 - 114.0 * $sat->deep_arg->theta2 + 395.0 * $theta4) +
+ $temp3 * (3.0 - 36.0 * $sat->deep_arg->theta2 + 49.0 * $theta4);
+ $xhdot1 = -$temp1 * $sat->deep_arg->cosio;
+ $sat->deep_arg->xnodot = $xhdot1 + (0.5 * $temp2 * (4.0 - 19.0 * $sat->deep_arg->theta2) +
+ 2.0 * $temp3 * (3.0 - 7.0 * $sat->deep_arg->theta2)) *
+ $sat->deep_arg->cosio;
+ $sat->sgps->xnodcf = 3.5 * $sat->deep_arg->betao2 * $xhdot1 * $sat->sgps->c1;
+ $sat->sgps->t2cof = 1.5 * $sat->sgps->c1;
+ $sat->sgps->xlcof = 0.125 * $a3ovk2 * $sat->deep_arg->sinio *
+ (3.0 + 5.0 * $sat->deep_arg->cosio) / (1.0 + $sat->deep_arg->cosio);
+ $sat->sgps->aycof = 0.25 * $a3ovk2 * $sat->deep_arg->sinio;
+ $sat->sgps->x7thm1 = 7.0 * $sat->deep_arg->theta2 - 1.0;
+
+ /* initialize Deep() */
+ $this->Deep(self::dpinit, $sat);
+ } /* End of SDP4() initialization */
+
+ /* Update for secular gravity and atmospheric drag */
+ $xmdf = $sat->tle->xmo + $sat->deep_arg->xmdot * $tsince;
+ $sat->deep_arg->omgadf = $sat->tle->omegao + $sat->deep_arg->omgdot * $tsince;
+ $xnoddf = $sat->tle->xnodeo + $sat->deep_arg->xnodot * $tsince;
+ $tsq = $tsince * $tsince;
+ $sat->deep_arg->xnode = $xnoddf + $sat->sgps->xnodcf * $tsq;
+ $tempa = 1.0 - $sat->sgps->c1 * $tsince;
+ $tempe = $sat->tle->bstar * $sat->sgps->c4 * $tsince;
+ $templ = $sat->sgps->t2cof * $tsq;
+ $sat->deep_arg->xn = $sat->deep_arg->xnodp;
+
+ /* Update for deep-space secular effects */
+ $sat->deep_arg->xll = $xmdf;
+ $sat->deep_arg->t = $tsince;
+
+ $this->Deep(self::dpsec, $sat);
+
+ $xmdf = $sat->deep_arg->xll;
+ $a = pow(Predict::xke / $sat->deep_arg->xn, Predict::tothrd) * $tempa * $tempa;
+ $sat->deep_arg->em = $sat->deep_arg->em - $tempe;
+ $xmam = $xmdf + $sat->deep_arg->xnodp * $templ;
+
+ /* Update for deep-space periodic effects */
+ $sat->deep_arg->xll = $xmam;
+
+ $this->Deep(self::dpper, $sat);
+
+ $xmam = $sat->deep_arg->xll;
+ $xl = $xmam + $sat->deep_arg->omgadf + $sat->deep_arg->xnode;
+ $beta = sqrt(1.0 - $sat->deep_arg->em * $sat->deep_arg->em);
+ $sat->deep_arg->xn = Predict::xke / pow($a, 1.5);
+
+ /* Long period periodics */
+ $axn = $sat->deep_arg->em * cos($sat->deep_arg->omgadf);
+ $temp = 1.0 / ($a * $beta * $beta);
+ $xll = $temp * $sat->sgps->xlcof * $axn;
+ $aynl = $temp * $sat->sgps->aycof;
+ $xlt = $xl + $xll;
+ $ayn = $sat->deep_arg->em * sin($sat->deep_arg->omgadf) + $aynl;
+
+ /* Solve Kepler's Equation */
+ $capu = Predict_Math::FMod2p($xlt - $sat->deep_arg->xnode);
+ $temp2 = $capu;
+
+ $i = 0;
+ do {
+ $sinepw = sin($temp2);
+ $cosepw = cos($temp2);
+ $temp3 = $axn * $sinepw;
+ $temp4 = $ayn * $cosepw;
+ $temp5 = $axn * $cosepw;
+ $temp6 = $ayn * $sinepw;
+ $epw = ($capu - $temp4 + $temp3 - $temp2) / (1.0 - $temp5 - $temp6) + $temp2;
+ if (abs($epw - $temp2) <= Predict::e6a) {
+ break;
+ }
+ $temp2 = $epw;
+ } while ($i++ < 10);
+
+ /* Short period preliminary quantities */
+ $ecose = $temp5 + $temp6;
+ $esine = $temp3 - $temp4;
+ $elsq = $axn * $axn + $ayn * $ayn;
+ $temp = 1.0 - $elsq;
+ $pl = $a * $temp;
+ $r = $a * (1.0 - $ecose);
+ $temp1 = 1.0 / $r;
+ $rdot = Predict::xke * sqrt($a) * $esine * $temp1;
+ $rfdot = Predict::xke * sqrt($pl) * $temp1;
+ $temp2 = $a * $temp1;
+ $betal = sqrt($temp);
+ $temp3 = 1.0 / (1.0 + $betal);
+ $cosu = $temp2 * ($cosepw - $axn + $ayn * $esine * $temp3);
+ $sinu = $temp2 * ($sinepw - $ayn - $axn * $esine * $temp3);
+ $u = Predict_Math::AcTan($sinu, $cosu);
+ $sin2u = 2.0 * $sinu * $cosu;
+ $cos2u = 2.0 * $cosu * $cosu - 1.0;
+ $temp = 1.0 / $pl;
+ $temp1 = Predict::ck2 * $temp;
+ $temp2 = $temp1 * $temp;
+
+ /* Update for short periodics */
+ $rk = $r * (1.0 - 1.5 * $temp2 * $betal * $sat->sgps->x3thm1) +
+ 0.5 * $temp1 * $sat->sgps->x1mth2 * $cos2u;
+ $uk = $u - 0.25 * $temp2 * $sat->sgps->x7thm1 * $sin2u;
+ $xnodek = $sat->deep_arg->xnode + 1.5 * $temp2 * $sat->deep_arg->cosio * $sin2u;
+ $xinck = $sat->deep_arg->xinc + 1.5 * $temp2 *
+ $sat->deep_arg->cosio * $sat->deep_arg->sinio * $cos2u;
+ $rdotk = $rdot - $sat->deep_arg->xn * $temp1 * $sat->sgps->x1mth2 * $sin2u;
+ $rfdotk = $rfdot + $sat->deep_arg->xn * $temp1 *
+ ($sat->sgps->x1mth2 * $cos2u + 1.5 * $sat->sgps->x3thm1);
+
+ /* Orientation vectors */
+ $sinuk = sin($uk);
+ $cosuk = cos($uk);
+ $sinik = sin($xinck);
+ $cosik = cos($xinck);
+ $sinnok = sin($xnodek);
+ $cosnok = cos($xnodek);
+ $xmx = -$sinnok * $cosik;
+ $xmy = $cosnok * $cosik;
+ $ux = $xmx * $sinuk + $cosnok * $cosuk;
+ $uy = $xmy * $sinuk + $sinnok * $cosuk;
+ $uz = $sinik * $sinuk;
+ $vx = $xmx * $cosuk - $cosnok * $sinuk;
+ $vy = $xmy * $cosuk - $sinnok * $sinuk;
+ $vz = $sinik * $cosuk;
+
+ /* Position and velocity */
+ $sat->pos->x = $rk * $ux;
+ $sat->pos->y = $rk * $uy;
+ $sat->pos->z = $rk * $uz;
+ $sat->vel->x = $rdotk * $ux + $rfdotk * $vx;
+ $sat->vel->y = $rdotk * $uy + $rfdotk * $vy;
+ $sat->vel->z = $rdotk * $uz + $rfdotk * $vz;
+
+ /* Phase in rads */
+ $sat->phase = $xlt - $sat->deep_arg->xnode - $sat->deep_arg->omgadf + Predict::twopi;
+ if ($sat->phase < 0.0) {
+ $sat->phase += Predict::twopi;
+ }
+ $sat->phase = Predict_Math::FMod2p($sat->phase);
+
+ $sat->tle->omegao1 = $sat->deep_arg->omgadf;
+ $sat->tle->xincl1 = $sat->deep_arg->xinc;
+ $sat->tle->xnodeo1 = $sat->deep_arg->xnode;
+ } /* SDP4 */
+
+ /* DEEP */
+ /* This function is used by SDP4 to add lunar and solar */
+ /* perturbation effects to deep-space orbit objects. */
+ public function Deep($ientry, Predict_Sat $sat)
+ {
+ switch ($ientry) {
+ case self::dpinit: /* Entrance for deep space initialization */
+ $sat->dps->thgr = Predict_Time::ThetaG($sat->tle->epoch, $sat->deep_arg);
+ $eq = $sat->tle->eo;
+ $sat->dps->xnq = $sat->deep_arg->xnodp;
+ $aqnv = 1.0 / $sat->deep_arg->aodp;
+ $sat->dps->xqncl = $sat->tle->xincl;
+ $xmao = $sat->tle->xmo;
+ $xpidot = $sat->deep_arg->omgdot + $sat->deep_arg->xnodot;
+ $sinq = sin($sat->tle->xnodeo);
+ $cosq = cos($sat->tle->xnodeo);
+ $sat->dps->omegaq = $sat->tle->omegao;
+ $sat->dps->preep = 0;
+
+ /* Initialize lunar solar terms */
+ $day = $sat->deep_arg->ds50 + 18261.5; /* Days since 1900 Jan 0.5 */
+ if ($day != $sat->dps->preep) {
+ $sat->dps->preep = $day;
+ $xnodce = 4.5236020 - 9.2422029E-4 * $day;
+ $stem = sin($xnodce);
+ $ctem = cos($xnodce);
+ $sat->dps->zcosil = 0.91375164 - 0.03568096 * $ctem;
+ $sat->dps->zsinil = sqrt(1.0 - $sat->dps->zcosil * $sat->dps->zcosil);
+ $sat->dps->zsinhl = 0.089683511 * $stem / $sat->dps->zsinil;
+ $sat->dps->zcoshl = sqrt(1.0 - $sat->dps->zsinhl * $sat->dps->zsinhl);
+ $c = 4.7199672 + 0.22997150 * $day;
+ $gam = 5.8351514 + 0.0019443680 * $day;
+ $sat->dps->zmol = Predict_Math::FMod2p($c - $gam);
+ $zx = 0.39785416 * $stem / $sat->dps->zsinil;
+ $zy = $sat->dps->zcoshl * $ctem + 0.91744867 * $sat->dps->zsinhl * $stem;
+ $zx = Predict_Math::AcTan($zx, $zy);
+ $zx = $gam + $zx - $xnodce;
+ $sat->dps->zcosgl = cos($zx);
+ $sat->dps->zsingl = sin($zx);
+ $sat->dps->zmos = 6.2565837 + 0.017201977 * $day;
+ $sat->dps->zmos = Predict_Math::FMod2p($sat->dps->zmos);
+ } /* End if(day != preep) */
+
+ /* Do solar terms */
+ $sat->dps->savtsn = 1E20;
+ $zcosg = Predict::zcosgs;
+ $zsing = Predict::zsings;
+ $zcosi = Predict::zcosis;
+ $zsini = Predict::zsinis;
+ $zcosh = $cosq;
+ $zsinh = $sinq;
+ $cc = Predict::c1ss;
+ $zn = Predict::zns;
+ $ze = Predict::zes;
+ $zmo = $sat->dps->zmos;
+ $xnoi = 1.0 / $sat->dps->xnq;
+
+ /* Loop breaks when Solar terms are done a second */
+ /* time, after Lunar terms are initialized */
+ while (true){
+ /* Solar terms done again after Lunar terms are done */
+ $a1 = $zcosg * $zcosh + $zsing * $zcosi * $zsinh;
+ $a3 = -$zsing * $zcosh + $zcosg * $zcosi * $zsinh;
+ $a7 = -$zcosg * $zsinh + $zsing * $zcosi * $zcosh;
+ $a8 = $zsing * $zsini;
+ $a9 = $zsing * $zsinh + $zcosg * $zcosi * $zcosh;
+ $a10 = $zcosg * $zsini;
+ $a2 = $sat->deep_arg->cosio * $a7 + $sat->deep_arg->sinio * $a8;
+ $a4 = $sat->deep_arg->cosio * $a9 + $sat->deep_arg->sinio * $a10;
+ $a5 = -$sat->deep_arg->sinio * $a7 + $sat->deep_arg->cosio * $a8;
+ $a6 = -$sat->deep_arg->sinio * $a9 + $sat->deep_arg->cosio * $a10;
+ $x1 = $a1 * $sat->deep_arg->cosg + $a2 * $sat->deep_arg->sing;
+ $x2 = $a3 * $sat->deep_arg->cosg + $a4 * $sat->deep_arg->sing;
+ $x3 = -$a1 * $sat->deep_arg->sing + $a2 * $sat->deep_arg->cosg;
+ $x4 = -$a3 * $sat->deep_arg->sing + $a4 * $sat->deep_arg->cosg;
+ $x5 = $a5 * $sat->deep_arg->sing;
+ $x6 = $a6 * $sat->deep_arg->sing;
+ $x7 = $a5 * $sat->deep_arg->cosg;
+ $x8 = $a6 * $sat->deep_arg->cosg;
+ $z31 = 12 * $x1 * $x1 - 3 * $x3 * $x3;
+ $z32 = 24 * $x1 * $x2 - 6 * $x3 * $x4;
+ $z33 = 12 * $x2 * $x2 - 3 * $x4 * $x4;
+ $z1 = 3 * ($a1 * $a1 + $a2 * $a2) + $z31 * $sat->deep_arg->eosq;
+ $z2 = 6 * ($a1 * $a3 + $a2 * $a4) + $z32 * $sat->deep_arg->eosq;
+ $z3 = 3 * ($a3 * $a3 + $a4 * $a4) + $z33 * $sat->deep_arg->eosq;
+ $z11 = -6 * $a1 * $a5 + $sat->deep_arg->eosq * (-24 * $x1 * $x7 - 6 * $x3 * $x5);
+ $z12 = -6 * ($a1 * $a6 + $a3 * $a5) + $sat->deep_arg->eosq *
+ (-24 * ($x2 * $x7 + $x1 * $x8) - 6 * ($x3 * $x6 + $x4 * $x5));
+ $z13 = -6 * $a3 * $a6 + $sat->deep_arg->eosq * (-24 * $x2 * $x8 - 6 * $x4 * $x6);
+ $z21 = 6 * $a2 * $a5 + $sat->deep_arg->eosq * (24 * $x1 * $x5 - 6 * $x3 * $x7);
+ $z22 = 6 * ($a4 * $a5 + $a2 * $a6) + $sat->deep_arg->eosq *
+ (24 * ($x2 * $x5 + $x1 * $x6) - 6 * ($x4 * $x7 + $x3 * $x8));
+ $z23 = 6 * $a4 * $a6 + $sat->deep_arg->eosq * (24 * $x2 * $x6 - 6 * $x4 * $x8);
+ $z1 = $z1 + $z1 + $sat->deep_arg->betao2 * $z31;
+ $z2 = $z2 + $z2 + $sat->deep_arg->betao2 * $z32;
+ $z3 = $z3 + $z3 + $sat->deep_arg->betao2 * $z33;
+ $s3 = $cc * $xnoi;
+ $s2 = -0.5 * $s3 / $sat->deep_arg->betao;
+ $s4 = $s3 * $sat->deep_arg->betao;
+ $s1 = -15 * $eq * $s4;
+ $s5 = $x1 * $x3 + $x2 * $x4;
+ $s6 = $x2 * $x3 + $x1 * $x4;
+ $s7 = $x2 * $x4 - $x1 * $x3;
+ $se = $s1 * $zn * $s5;
+ $si = $s2 * $zn * ($z11 + $z13);
+ $sl = -$zn * $s3 * ($z1 + $z3 - 14 - 6 * $sat->deep_arg->eosq);
+ $sgh = $s4 * $zn * ($z31 + $z33 - 6);
+ $sh = -$zn * $s2 * ($z21 + $z23);
+ if ($sat->dps->xqncl < 5.2359877E-2) {
+ $sh = 0;
+ }
+ $sat->dps->ee2 = 2 * $s1 * $s6;
+ $sat->dps->e3 = 2 * $s1 * $s7;
+ $sat->dps->xi2 = 2 * $s2 * $z12;
+ $sat->dps->xi3 = 2 * $s2 * ($z13 - $z11);
+ $sat->dps->xl2 = -2 * $s3 * $z2;
+ $sat->dps->xl3 = -2 * $s3 * ($z3 - $z1);
+ $sat->dps->xl4 = -2 * $s3 * (-21 - 9 * $sat->deep_arg->eosq) * $ze;
+ $sat->dps->xgh2 = 2 * $s4 * $z32;
+ $sat->dps->xgh3 = 2 * $s4 * ($z33 - $z31);
+ $sat->dps->xgh4 = -18 * $s4 * $ze;
+ $sat->dps->xh2 = -2 * $s2 * $z22;
+ $sat->dps->xh3 = -2 * $s2 * ($z23 - $z21);
+
+ if ($sat->flags & self::LUNAR_TERMS_DONE_FLAG) {
+ break;
+ }
+
+ /* Do lunar terms */
+ $sat->dps->sse = $se;
+ $sat->dps->ssi = $si;
+ $sat->dps->ssl = $sl;
+ $sat->dps->ssh = $sh / $sat->deep_arg->sinio;
+ $sat->dps->ssg = $sgh - $sat->deep_arg->cosio * $sat->dps->ssh;
+ $sat->dps->se2 = $sat->dps->ee2;
+ $sat->dps->si2 = $sat->dps->xi2;
+ $sat->dps->sl2 = $sat->dps->xl2;
+ $sat->dps->sgh2 = $sat->dps->xgh2;
+ $sat->dps->sh2 = $sat->dps->xh2;
+ $sat->dps->se3 = $sat->dps->e3;
+ $sat->dps->si3 = $sat->dps->xi3;
+ $sat->dps->sl3 = $sat->dps->xl3;
+ $sat->dps->sgh3 = $sat->dps->xgh3;
+ $sat->dps->sh3 = $sat->dps->xh3;
+ $sat->dps->sl4 = $sat->dps->xl4;
+ $sat->dps->sgh4 = $sat->dps->xgh4;
+ $zcosg = $sat->dps->zcosgl;
+ $zsing = $sat->dps->zsingl;
+ $zcosi = $sat->dps->zcosil;
+ $zsini = $sat->dps->zsinil;
+ $zcosh = $sat->dps->zcoshl * $cosq + $sat->dps->zsinhl * $sinq;
+ $zsinh = $sinq * $sat->dps->zcoshl - $cosq * $sat->dps->zsinhl;
+ $zn = Predict::znl;
+ $cc = Predict::c1l;
+ $ze = Predict::zel;
+ $zmo = $sat->dps->zmol;
+ $sat->flags |= self::LUNAR_TERMS_DONE_FLAG;
+ } /* End of for(;;) */
+
+ $sat->dps->sse = $sat->dps->sse + $se;
+ $sat->dps->ssi = $sat->dps->ssi + $si;
+ $sat->dps->ssl = $sat->dps->ssl + $sl;
+ $sat->dps->ssg = $sat->dps->ssg + $sgh - $sat->deep_arg->cosio / $sat->deep_arg->sinio * $sh;
+ $sat->dps->ssh = $sat->dps->ssh + $sh / $sat->deep_arg->sinio;
+
+ /* Geopotential resonance initialization for 12 hour orbits */
+ $sat->flags &= ~self::RESONANCE_FLAG;
+ $sat->flags &= ~self::SYNCHRONOUS_FLAG;
+
+ if (!(($sat->dps->xnq < 0.0052359877) && ($sat->dps->xnq > 0.0034906585))) {
+ if (($sat->dps->xnq < 0.00826) || ($sat->dps->xnq > 0.00924)) {
+ return;
+ }
+ if ($eq < 0.5) {
+ return;
+ }
+ $sat->flags |= self::RESONANCE_FLAG;
+ $eoc = $eq * $sat->deep_arg->eosq;
+ $g201 = -0.306 - ($eq - 0.64) * 0.440;
+ if ($eq <= 0.65) {
+ $g211 = 3.616 - 13.247 * $eq + 16.290 * $sat->deep_arg->eosq;
+ $g310 = -19.302 + 117.390 * $eq - 228.419 *
+ $sat->deep_arg->eosq + 156.591 * $eoc;
+ $g322 = -18.9068 + 109.7927 * $eq - 214.6334 *
+ $sat->deep_arg->eosq + 146.5816 * $eoc;
+ $g410 = -41.122 + 242.694 * $eq - 471.094 *
+ $sat->deep_arg->eosq + 313.953 * $eoc;
+ $g422 = -146.407 + 841.880 * $eq - 1629.014 *
+ $sat->deep_arg->eosq + 1083.435 * $eoc;
+ $g520 = -532.114 + 3017.977 * $eq - 5740 *
+ $sat->deep_arg->eosq + 3708.276 * $eoc;
+ } else {
+ $g211 = -72.099 + 331.819 * $eq - 508.738 *
+ $sat->deep_arg->eosq + 266.724 * $eoc;
+ $g310 = -346.844 + 1582.851 * $eq - 2415.925 *
+ $sat->deep_arg->eosq + 1246.113 * $eoc;
+ $g322 = -342.585 + 1554.908 * $eq - 2366.899 *
+ $sat->deep_arg->eosq + 1215.972 * $eoc;
+ $g410 = -1052.797 + 4758.686 * $eq - 7193.992 *
+ $sat->deep_arg->eosq + 3651.957 * $eoc;
+ $g422 = -3581.69 + 16178.11 * $eq - 24462.77 *
+ $sat->deep_arg->eosq + 12422.52 * $eoc;
+ if ($eq <= 0.715) {
+ $g520 = 1464.74 - 4664.75 * $eq + 3763.64 * $sat->deep_arg->eosq;
+ } else {
+ $g520 = -5149.66 + 29936.92 * $eq - 54087.36 *
+ $sat->deep_arg->eosq + 31324.56 * $eoc;
+ }
+ } /* End if (eq <= 0.65) */
+
+ if ($eq < 0.7) {
+ $g533 = -919.2277 + 4988.61 * $eq - 9064.77 *
+ $sat->deep_arg->eosq + 5542.21 * $eoc;
+ $g521 = -822.71072 + 4568.6173 * $eq - 8491.4146 *
+ $sat->deep_arg->eosq + 5337.524 * $eoc;
+ $g532 = -853.666 + 4690.25 * $eq - 8624.77 *
+ $sat->deep_arg->eosq + 5341.4 * $eoc;
+ } else {
+ $g533 = -37995.78 + 161616.52 * $eq - 229838.2 *
+ $sat->deep_arg->eosq + 109377.94 * $eoc;
+ $g521 = -51752.104 + 218913.95 * $eq - 309468.16 *
+ $sat->deep_arg->eosq + 146349.42 * $eoc;
+ $g532 = -40023.88 + 170470.89 * $eq - 242699.48 *
+ $sat->deep_arg->eosq + 115605.82 * $eoc;
+ } /* End if (eq <= 0.7) */
+
+ $sini2 = $sat->deep_arg->sinio * $sat->deep_arg->sinio;
+ $f220 = 0.75 * (1 + 2 * $sat->deep_arg->cosio + $sat->deep_arg->theta2);
+ $f221 = 1.5 * $sini2;
+ $f321 = 1.875 * $sat->deep_arg->sinio * (1 - 2 *
+ $sat->deep_arg->cosio - 3 * $sat->deep_arg->theta2);
+ $f322 = -1.875 * $sat->deep_arg->sinio * (1 + 2 *
+ $sat->deep_arg->cosio - 3 * $sat->deep_arg->theta2);
+ $f441 = 35 * $sini2 * $f220;
+ $f442 = 39.3750 * $sini2 * $sini2;
+ $f522 = 9.84375 * $sat->deep_arg->sinio * ($sini2 * (1 - 2 * $sat->deep_arg->cosio - 5 *
+ $sat->deep_arg->theta2) + 0.33333333 * (-2 + 4 * $sat->deep_arg->cosio +
+ 6 * $sat->deep_arg->theta2));
+ $f523 = $sat->deep_arg->sinio * (4.92187512 * $sini2 * (-2 - 4 *
+ $sat->deep_arg->cosio + 10 * $sat->deep_arg->theta2) + 6.56250012
+ * (1 + 2 * $sat->deep_arg->cosio - 3 * $sat->deep_arg->theta2));
+ $f542 = 29.53125 * $sat->deep_arg->sinio * (2 - 8 *
+ $sat->deep_arg->cosio + $sat->deep_arg->theta2 *
+ (-12 + 8 * $sat->deep_arg->cosio + 10 * $sat->deep_arg->theta2));
+ $f543 = 29.53125 * $sat->deep_arg->sinio * (-2 - 8 * $sat->deep_arg->cosio +
+ $sat->deep_arg->theta2 * (12 + 8 * $sat->deep_arg->cosio - 10 *
+ $sat->deep_arg->theta2));
+ $xno2 = $sat->dps->xnq * $sat->dps->xnq;
+ $ainv2 = $aqnv * $aqnv;
+ $temp1 = 3 * $xno2 * $ainv2;
+ $temp = $temp1 * Predict::root22;
+ $sat->dps->d2201 = $temp * $f220 * $g201;
+ $sat->dps->d2211 = $temp * $f221 * $g211;
+ $temp1 = $temp1 * $aqnv;
+ $temp = $temp1 * Predict::root32;
+ $sat->dps->d3210 = $temp * $f321 * $g310;
+ $sat->dps->d3222 = $temp * $f322 * $g322;
+ $temp1 = $temp1 * $aqnv;
+ $temp = 2 * $temp1 * Predict::root44;
+ $sat->dps->d4410 = $temp * $f441 * $g410;
+ $sat->dps->d4422 = $temp * $f442 * $g422;
+ $temp1 = $temp1 * $aqnv;
+ $temp = $temp1 * Predict::root52;
+ $sat->dps->d5220 = $temp * $f522 * $g520;
+ $sat->dps->d5232 = $temp * $f523 * $g532;
+ $temp = 2 * $temp1 * Predict::root54;
+ $sat->dps->d5421 = $temp * $f542 * $g521;
+ $sat->dps->d5433 = $temp * $f543 * $g533;
+ $sat->dps->xlamo = $xmao + $sat->tle->xnodeo + $sat->tle->xnodeo - $sat->dps->thgr - $sat->dps->thgr;
+ $bfact = $sat->deep_arg->xmdot + $sat->deep_arg->xnodot +
+ $sat->deep_arg->xnodot - Predict::thdt - Predict::thdt;
+ $bfact = $bfact + $sat->dps->ssl + $sat->dps->ssh + $sat->dps->ssh;
+ } else {
+ $sat->flags |= self::RESONANCE_FLAG;
+ $sat->flags |= self::SYNCHRONOUS_FLAG;
+ /* Synchronous resonance terms initialization */
+ $g200 = 1 + $sat->deep_arg->eosq * (-2.5 + 0.8125 * $sat->deep_arg->eosq);
+ $g310 = 1 + 2 * $sat->deep_arg->eosq;
+ $g300 = 1 + $sat->deep_arg->eosq * (-6 + 6.60937 * $sat->deep_arg->eosq);
+ $f220 = 0.75 * (1 + $sat->deep_arg->cosio) * (1 + $sat->deep_arg->cosio);
+ $f311 = 0.9375 * $sat->deep_arg->sinio * $sat->deep_arg->sinio *
+ (1 + 3 * $sat->deep_arg->cosio) - 0.75 * (1 + $sat->deep_arg->cosio);
+ $f330 = 1 + $sat->deep_arg->cosio;
+ $f330 = 1.875 * $f330 * $f330 * $f330;
+ $sat->dps->del1 = 3 * $sat->dps->xnq * $sat->dps->xnq * $aqnv * $aqnv;
+ $sat->dps->del2 = 2 * $sat->dps->del1 * $f220 * $g200 * Predict::q22;
+ $sat->dps->del3 = 3 * $sat->dps->del1 * $f330 * $g300 * Predict::q33 * $aqnv;
+ $sat->dps->del1 = $sat->dps->del1 * $f311 * $g310 * Predict::q31 * $aqnv;
+ $sat->dps->fasx2 = 0.13130908;
+ $sat->dps->fasx4 = 2.8843198;
+ $sat->dps->fasx6 = 0.37448087;
+ $sat->dps->xlamo = $xmao + $sat->tle->xnodeo + $sat->tle->omegao - $sat->dps->thgr;
+ $bfact = $sat->deep_arg->xmdot + $xpidot - Predict::thdt;
+ $bfact = $bfact + $sat->dps->ssl + $sat->dps->ssg + $sat->dps->ssh;
+ } /* End if( !(xnq < 0.0052359877) && (xnq > 0.0034906585) ) */
+
+ $sat->dps->xfact = $bfact - $sat->dps->xnq;
+
+ /* Initialize integrator */
+ $sat->dps->xli = $sat->dps->xlamo;
+ $sat->dps->xni = $sat->dps->xnq;
+ $sat->dps->atime = 0;
+ $sat->dps->stepp = 720;
+ $sat->dps->stepn = -720;
+ $sat->dps->step2 = 259200;
+ /* End case self::dpinit: */
+ return;
+
+ case self::dpsec: /* Entrance for deep space secular effects */
+ $sat->deep_arg->xll = $sat->deep_arg->xll + $sat->dps->ssl * $sat->deep_arg->t;
+ $sat->deep_arg->omgadf = $sat->deep_arg->omgadf + $sat->dps->ssg * $sat->deep_arg->t;
+ $sat->deep_arg->xnode = $sat->deep_arg->xnode + $sat->dps->ssh * $sat->deep_arg->t;
+ $sat->deep_arg->em = $sat->tle->eo + $sat->dps->sse * $sat->deep_arg->t;
+ $sat->deep_arg->xinc = $sat->tle->xincl + $sat->dps->ssi * $sat->deep_arg->t;
+ if ($sat->deep_arg->xinc < 0) {
+ $sat->deep_arg->xinc = -$sat->deep_arg->xinc;
+ $sat->deep_arg->xnode = $sat->deep_arg->xnode + Predict::pi;
+ $sat->deep_arg->omgadf = $sat->deep_arg->omgadf - Predict::pi;
+ }
+ if (~$sat->flags & self::RESONANCE_FLAG) {
+ return;
+ }
+
+ do {
+ if ((0 == $sat->dps->atime) ||
+ (($sat->deep_arg->t >= 0) && ($sat->dps->atime < 0)) ||
+ (($sat->deep_arg->t < 0) && ($sat->dps->atime >= 0))) {
+ /* Epoch restart */
+ if ($sat->deep_arg->t >= 0) {
+ $delt = $sat->dps->stepp;
+ } else {
+ $delt = $sat->dps->stepn;
+ }
+
+ $sat->dps->atime = 0;
+ $sat->dps->xni = $sat->dps->xnq;
+ $sat->dps->xli = $sat->dps->xlamo;
+ } else {
+ if (abs($sat->deep_arg->t) >= abs($sat->dps->atime)) {
+ if ($sat->deep_arg->t > 0) {
+ $delt = $sat->dps->stepp;
+ } else {
+ $delt = $sat->dps->stepn;
+ }
+ }
+ }
+
+ do {
+ if (abs($sat->deep_arg->t - $sat->dps->atime) >= $sat->dps->stepp) {
+ $sat->flags |= self::DO_LOOP_FLAG;
+ $sat->flags &= ~self::EPOCH_RESTART_FLAG;
+ } else {
+ $ft = $sat->deep_arg->t - $sat->dps->atime;
+ $sat->flags &= ~self::DO_LOOP_FLAG;
+ }
+
+ if (abs($sat->deep_arg->t) < abs($sat->dps->atime)) {
+ if ($sat->deep_arg->t >= 0) {
+ $delt = $sat->dps->stepn;
+ } else {
+ $delt = $sat->dps->stepp;
+ }
+ $sat->flags |= (self::DO_LOOP_FLAG | self::EPOCH_RESTART_FLAG);
+ }
+
+ /* Dot terms calculated */
+ if ($sat->flags & self::SYNCHRONOUS_FLAG) {
+ $xndot = $sat->dps->del1 * sin($sat->dps->xli - $sat->dps->fasx2) + $sat->dps->del2 * sin(2 * ($sat->dps->xli - $sat->dps->fasx4))
+ + $sat->dps->del3 * sin(3 * ($sat->dps->xli - $sat->dps->fasx6));
+ $xnddt = $sat->dps->del1 * cos($sat->dps->xli - $sat->dps->fasx2) + 2 * $sat->dps->del2 * cos(2 * ($sat->dps->xli - $sat->dps->fasx4))
+ + 3 * $sat->dps->del3 * cos(3 * ($sat->dps->xli - $sat->dps->fasx6));
+ } else {
+ $xomi = $sat->dps->omegaq + $sat->deep_arg->omgdot * $sat->dps->atime;
+ $x2omi = $xomi + $xomi;
+ $x2li = $sat->dps->xli + $sat->dps->xli;
+ $xndot = $sat->dps->d2201 * sin($x2omi + $sat->dps->xli - Predict::g22)
+ + $sat->dps->d2211 * sin($sat->dps->xli - Predict::g22)
+ + $sat->dps->d3210 * sin($xomi + $sat->dps->xli - Predict::g32)
+ + $sat->dps->d3222 * sin(-$xomi + $sat->dps->xli - Predict::g32)
+ + $sat->dps->d4410 * sin($x2omi + $x2li - Predict::g44)
+ + $sat->dps->d4422 * sin($x2li - Predict::g44)
+ + $sat->dps->d5220 * sin($xomi + $sat->dps->xli - Predict::g52)
+ + $sat->dps->d5232 * sin(-$xomi + $sat->dps->xli - Predict::g52)
+ + $sat->dps->d5421 * sin($xomi + $x2li - Predict::g54)
+ + $sat->dps->d5433 * sin(-$xomi + $x2li - Predict::g54);
+ $xnddt = $sat->dps->d2201 * cos($x2omi + $sat->dps->xli - Predict::g22)
+ + $sat->dps->d2211 * cos($sat->dps->xli - Predict::g22)
+ + $sat->dps->d3210 * cos($xomi + $sat->dps->xli - Predict::g32)
+ + $sat->dps->d3222 * cos(-$xomi + $sat->dps->xli - Predict::g32)
+ + $sat->dps->d5220 * cos($xomi + $sat->dps->xli - Predict::g52)
+ + $sat->dps->d5232 * cos(-$xomi + $sat->dps->xli - Predict::g52)
+ + 2 * ($sat->dps->d4410 * cos($x2omi + $x2li - Predict::g44)
+ + $sat->dps->d4422 * cos($x2li - Predict::g44)
+ + $sat->dps->d5421 * cos($xomi + $x2li - Predict::g54)
+ + $sat->dps->d5433 * cos(-$xomi + $x2li - Predict::g54));
+ } /* End of if (isFlagSet(SYNCHRONOUS_FLAG)) */
+
+ $xldot = $sat->dps->xni + $sat->dps->xfact;
+ $xnddt = $xnddt * $xldot;
+
+ if ($sat->flags & self::DO_LOOP_FLAG) {
+ $sat->dps->xli = $sat->dps->xli + $xldot * $delt + $xndot * $sat->dps->step2;
+ $sat->dps->xni = $sat->dps->xni + $xndot * $delt + $xnddt * $sat->dps->step2;
+ $sat->dps->atime = $sat->dps->atime + $delt;
+ }
+ } while (($sat->flags & self::DO_LOOP_FLAG) &&
+ (~$sat->flags & self::EPOCH_RESTART_FLAG));
+ } while (($sat->flags & self::DO_LOOP_FLAG) && ($sat->flags & self::EPOCH_RESTART_FLAG));
+
+ $sat->deep_arg->xn = $sat->dps->xni + $xndot * $ft + $xnddt * $ft * $ft * 0.5;
+ $xl = $sat->dps->xli + $xldot * $ft + $xndot * $ft * $ft * 0.5;
+ $temp = -$sat->deep_arg->xnode + $sat->dps->thgr + $sat->deep_arg->t * Predict::thdt;
+
+ if (~$sat->flags & self::SYNCHRONOUS_FLAG) {
+ $sat->deep_arg->xll = $xl + $temp + $temp;
+ } else {
+ $sat->deep_arg->xll = $xl - $sat->deep_arg->omgadf + $temp;
+ }
+
+ return;
+ /* End case dpsec: */
+
+ case self::dpper: /* Entrance for lunar-solar periodics */
+ $sinis = sin($sat->deep_arg->xinc);
+ $cosis = cos($sat->deep_arg->xinc);
+ if (abs($sat->dps->savtsn - $sat->deep_arg->t) >= 30) {
+ $sat->dps->savtsn = $sat->deep_arg->t;
+ $zm = $sat->dps->zmos + Predict::zns * $sat->deep_arg->t;
+ $zf = $zm + 2 * Predict::zes * sin($zm);
+ $sinzf = sin($zf);
+ $f2 = 0.5 * $sinzf * $sinzf - 0.25;
+ $f3 = -0.5 * $sinzf * cos($zf);
+ $ses = $sat->dps->se2 * $f2 + $sat->dps->se3 * $f3;
+ $sis = $sat->dps->si2 * $f2 + $sat->dps->si3 * $f3;
+ $sls = $sat->dps->sl2 * $f2 + $sat->dps->sl3 * $f3 + $sat->dps->sl4 * $sinzf;
+ $sat->dps->sghs = $sat->dps->sgh2 * $f2 + $sat->dps->sgh3 * $f3 + $sat->dps->sgh4 * $sinzf;
+ $sat->dps->shs = $sat->dps->sh2 * $f2 + $sat->dps->sh3 * $f3;
+ $zm = $sat->dps->zmol + Predict::znl * $sat->deep_arg->t;
+ $zf = $zm + 2 * Predict::zel * sin($zm);
+ $sinzf = sin($zf);
+ $f2 = 0.5 * $sinzf * $sinzf - 0.25;
+ $f3 = -0.5 * $sinzf * cos($zf);
+ $sel = $sat->dps->ee2 * $f2 + $sat->dps->e3 * $f3;
+ $sil = $sat->dps->xi2 * $f2 + $sat->dps->xi3 * $f3;
+ $sll = $sat->dps->xl2 * $f2 + $sat->dps->xl3 * $f3 + $sat->dps->xl4 * $sinzf;
+ $sat->dps->sghl = $sat->dps->xgh2 * $f2 + $sat->dps->xgh3 * $f3 + $sat->dps->xgh4 * $sinzf;
+ $sat->dps->sh1 = $sat->dps->xh2 * $f2 + $sat->dps->xh3 * $f3;
+ $sat->dps->pe = $ses + $sel;
+ $sat->dps->pinc = $sis + $sil;
+ $sat->dps->pl = $sls + $sll;
+ }
+
+ $pgh = $sat->dps->sghs + $sat->dps->sghl;
+ $ph = $sat->dps->shs + $sat->dps->sh1;
+ $sat->deep_arg->xinc = $sat->deep_arg->xinc + $sat->dps->pinc;
+ $sat->deep_arg->em = $sat->deep_arg->em + $sat->dps->pe;
+
+ if ($sat->dps->xqncl >= 0.2) {
+ /* Apply periodics directly */
+ $ph = $ph / $sat->deep_arg->sinio;
+ $pgh = $pgh - $sat->deep_arg->cosio * $ph;
+ $sat->deep_arg->omgadf = $sat->deep_arg->omgadf + $pgh;
+ $sat->deep_arg->xnode = $sat->deep_arg->xnode + $ph;
+ $sat->deep_arg->xll = $sat->deep_arg->xll + $sat->dps->pl;
+ } else {
+ /* Apply periodics with Lyddane modification */
+ $sinok = sin($sat->deep_arg->xnode);
+ $cosok = cos($sat->deep_arg->xnode);
+ $alfdp = $sinis * $sinok;
+ $betdp = $sinis * $cosok;
+ $dalf = $ph * $cosok + $sat->dps->pinc * $cosis * $sinok;
+ $dbet = -$ph * $sinok + $sat->dps->pinc * $cosis * $cosok;
+ $alfdp = $alfdp + $dalf;
+ $betdp = $betdp + $dbet;
+ $sat->deep_arg->xnode = Predict_Math::FMod2p($sat->deep_arg->xnode);
+ $xls = $sat->deep_arg->xll + $sat->deep_arg->omgadf + $cosis * $sat->deep_arg->xnode;
+ $dls = $sat->dps->pl + $pgh - $sat->dps->pinc * $sat->deep_arg->xnode * $sinis;
+ $xls = $xls + $dls;
+ $xnoh = $sat->deep_arg->xnode;
+ $sat->deep_arg->xnode = Predict_Math::AcTan($alfdp, $betdp);
+
+ /* This is a patch to Lyddane modification */
+ /* suggested by Rob Matson. */
+ if (abs($xnoh - $sat->deep_arg->xnode) > Predict::pi) {
+ if ($sat->deep_arg->xnode < $xnoh) {
+ $sat->deep_arg->xnode += Predict::twopi;
+ } else {
+ $sat->deep_arg->xnode -= Predict::twopi;
+ }
+ }
+
+ $sat->deep_arg->xll = $sat->deep_arg->xll + $sat->dps->pl;
+ $sat->deep_arg->omgadf = $xls - $sat->deep_arg->xll - cos($sat->deep_arg->xinc) *
+ $sat->deep_arg->xnode;
+ } /* End case dpper: */
+
+ return;
+ } /* End switch(ientry) */
+ } /* End of Deep() */
+
+ /**
+ * Singleton.
+ *
+ * @param Predict_Sat $sat The current satellite data instance
+ *
+ * @return Predict_SGPSDP
+ */
+ public static function getInstance(Predict_Sat $sat)
+ {
+ static $instances = [];
+ $catnr = $sat->tle->catnr;
+ if (!isset($instances[$catnr])) {
+ $instances[$catnr] = new self();
+ }
+
+ return $instances[$catnr];
+ }
+}
diff --git a/lib/predict/Predict/SGSDPStatic.php b/lib/predict/Predict/SGSDPStatic.php
new file mode 100644
index 0000000..e745ae8
--- /dev/null
+++ b/lib/predict/Predict/SGSDPStatic.php
@@ -0,0 +1,39 @@
+header);
+ $this->name = $headerParts[0];
+ $this->nickname = $this->name;
+ $this->tle = $tle;
+ $this->pos = new Predict_Vector();
+ $this->vel = new Predict_Vector();
+ $this->sgps = new Predict_SGSDPStatic();
+ $this->deep_arg = new Predict_DeepArg();
+ $this->dps = new Predict_DeepStatic();
+
+ $this->select_ephemeris();
+ $this->sat_data_init_sat($this);
+ }
+
+ /* Selects the apropriate ephemeris type to be used */
+ /* for predictions according to the data in the TLE */
+ /* It also processes values in the tle set so that */
+ /* they are apropriate for the sgp4/sdp4 routines */
+ public function select_ephemeris()
+ {
+ /* Preprocess tle set */
+ $this->tle->xnodeo *= Predict::de2ra;
+ $this->tle->omegao *= Predict::de2ra;
+ $this->tle->xmo *= Predict::de2ra;
+ $this->tle->xincl *= Predict::de2ra;
+ $temp = Predict::twopi / Predict::xmnpda / Predict::xmnpda;
+
+ /* store mean motion before conversion */
+ $this->meanmo = $this->tle->xno;
+ $this->tle->xno = $this->tle->xno * $temp * Predict::xmnpda;
+ $this->tle->xndt2o *= $temp;
+ $this->tle->xndd6o = $this->tle->xndd6o * $temp / Predict::xmnpda;
+ $this->tle->bstar /= Predict::ae;
+
+ /* Period > 225 minutes is deep space */
+ $dd1 = Predict::xke / $this->tle->xno;
+ $dd2 = Predict::tothrd;
+ $a1 = pow($dd1, $dd2);
+ $r1 = cos($this->tle->xincl);
+ $dd1 = 1.0 - $this->tle->eo * $this->tle->eo;
+ $temp = Predict::ck2 * 1.5 * ($r1 * $r1 * 3.0 - 1.0) / pow($dd1, 1.5);
+ $del1 = $temp / ($a1 * $a1);
+ $ao = $a1 * (1.0 - $del1 * (Predict::tothrd * 0.5 + $del1 *
+ ($del1 * 1.654320987654321 + 1.0)));
+ $delo = $temp / ($ao * $ao);
+ $xnodp = $this->tle->xno / ($delo + 1.0);
+
+ /* Select a deep-space/near-earth ephemeris */
+ if (Predict::twopi / $xnodp / Predict::xmnpda >= .15625) {
+ $this->flags |= Predict_SGPSDP::DEEP_SPACE_EPHEM_FLAG;
+ } else {
+ $this->flags &= ~Predict_SGPSDP::DEEP_SPACE_EPHEM_FLAG;
+ }
+ }
+
+ /** Initialise satellite data.
+ * @param sat the satellite to initialise
+ * @param qth Optional QTH info, use (0,0) if NULL.
+ *
+ * This function calculates the satellite data at t = 0, ie. epoch time
+ * The function is called automatically by gtk_sat_data_read_sat.
+ */
+ public function sat_data_init_sat(Predict_Sat $sat, Predict_QTH $qth = null)
+ {
+ $obs_geodetic = new Predict_Geodetic();
+ $obs_set = new Predict_ObsSet();
+ $sat_geodetic = new Predict_Geodetic();
+ /* double jul_utc, age; */
+
+ $jul_utc = Predict_Time::Julian_Date_of_Epoch($sat->tle->epoch); // => tsince = 0.0
+ $sat->jul_epoch = $jul_utc;
+
+ /* initialise observer location */
+ if (null != $qth) {
+ $obs_geodetic->lon = $qth->lon * Predict::de2ra;
+ $obs_geodetic->lat = $qth->lat * Predict::de2ra;
+ $obs_geodetic->alt = $qth->alt / 1000.0;
+ $obs_geodetic->theta = 0;
+ } else {
+ $obs_geodetic->lon = 0.0;
+ $obs_geodetic->lat = 0.0;
+ $obs_geodetic->alt = 0.0;
+ $obs_geodetic->theta = 0;
+ }
+
+ /* execute computations */
+ $sdpsgp = Predict_SGPSDP::getInstance($sat);
+ if ($sat->flags & Predict_SGPSDP::DEEP_SPACE_EPHEM_FLAG) {
+ $sdpsgp->SDP4($sat, 0.0);
+ } else {
+ $sdpsgp->SGP4($sat, 0.0);
+ }
+
+ /* scale position and velocity to km and km/sec */
+ Predict_Math::Convert_Sat_State($sat->pos, $sat->vel);
+
+ /* get the velocity of the satellite */
+ $sat->vel->w = sqrt($sat->vel->x * $sat->vel->x + $sat->vel->y * $sat->vel->y + $sat->vel->z * $sat->vel->z);
+ $sat->velo = $sat->vel->w;
+ Predict_SGPObs::Calculate_Obs($jul_utc, $sat->pos, $sat->vel, $obs_geodetic, $obs_set);
+ Predict_SGPObs::Calculate_LatLonAlt($jul_utc, $sat->pos, $sat_geodetic);
+
+ while ($sat_geodetic->lon < -Predict::pi) {
+ $sat_geodetic->lon += Predict::twopi;
+ }
+
+ while ($sat_geodetic->lon > Predict::pi) {
+ $sat_geodetic->lon -= Predict::twopi;
+ }
+
+ $sat->az = Predict_Math::Degrees($obs_set->az);
+ $sat->el = Predict_Math::Degrees($obs_set->el);
+ $sat->range = $obs_set->range;
+ $sat->range_rate = $obs_set->range_rate;
+ $sat->ssplat = Predict_Math::Degrees($sat_geodetic->lat);
+ $sat->ssplon = Predict_Math::Degrees($sat_geodetic->lon);
+ $sat->alt = $sat_geodetic->alt;
+ $sat->ma = Predict_Math::Degrees($sat->phase);
+ $sat->ma *= 256.0 / 360.0;
+ $sat->footprint = 2.0 * Predict::xkmper * acos(Predict::xkmper / $sat->pos->w);
+ $age = 0.0;
+ $sat->orbit = floor(($sat->tle->xno * Predict::xmnpda / Predict::twopi +
+ $age * $sat->tle->bstar * Predict::ae) * $age +
+ $sat->tle->xmo / Predict::twopi) + $sat->tle->revnum - 1;
+
+ /* orbit type */
+ $sat->otype = $sat->get_orbit_type($sat);
+ }
+
+ public function get_orbit_type(Predict_Sat $sat)
+ {
+ $orbit = Predict_SGPSDP::ORBIT_TYPE_UNKNOWN;
+
+ if ($this->geostationary($sat)) {
+ $orbit = Predict_SGPSDP::ORBIT_TYPE_GEO;
+ } elseif ($this->decayed($sat)) {
+ $orbit = Predict_SGPSDP::ORBIT_TYPE_DECAYED;
+ } else {
+ $orbit = Predict_SGPSDP::ORBIT_TYPE_UNKNOWN;
+ }
+
+ return $orbit;
+ }
+
+ /** Determinte whether satellite is in geostationary orbit.
+ * @author John A. Magliacane, KD2BD
+ *
+ * @param sat pointer to satellite data
+ *
+ * @return true if the satellite appears to be in geostationary orbit,
+ * FALSE otherwise.
+ *
+ * A satellite is in geostationary orbit if
+ *
+ * fabs (sat.meanmotion - 1.0027) < 0.0002
+ *
+ * Note: Appearantly, the mean motion can deviate much more from 1.0027 than 0.0002
+ */
+ public function geostationary(Predict_Sat $sat)
+ {
+ if (abs($sat->meanmo - 1.0027) < 0.0002) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /** Determine whether satellite has decayed.
+ * @author John A. Magliacane, KD2BD
+ * @author Alexandru Csete, OZ9AEC
+ *
+ * @param sat pointer to satellite data
+ *
+ * @return true if the satellite appears to have decayed, FALSE otherwise
+ *
+ * @bug Modified version of the predict code but it is not tested.
+ *
+ * A satellite is decayed if
+ *
+ * satepoch + ((16.666666 - sat.meanmo) / (10.0*fabs(sat.drag))) < "now"
+ */
+ public function decayed(Predict_Sat $sat)
+ {
+ /* tle.xndt2o/(twopi/xmnpda/xmnpda) is the value before converted the
+ value matches up with the value in predict 2.2.3 */
+ /*** FIXME decayed is treated as a static quantity.
+ It is time dependent. Also sat->jul_utc is often zero
+ when this function is called
+ ***/
+ if ($sat->jul_epoch + ((16.666666 - $sat->meanmo) /
+ (10.0 * abs($sat->tle->xndt2o / (Predict::twopi / Predict::xmnpda / Predict::xmnpda)))) < $sat->jul_utc) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Experimental attempt at calculating apparent magnitude. Known intrinsic
+ * magnitudes are listed inside the function for now.
+ *
+ * @param float $time The daynum the satellite is calculated for
+ * @param Predict_QTH $qth The observer location
+ *
+ * @return null on failure, float otherwise
+ */
+ public function calculateApparentMagnitude($time, Predict_QTH $qth)
+ {
+ // Recorded intrinsic magnitudes and their respective
+ // illumination and distance from heavens-above.com
+ static $intrinsicMagnitudes = [
+ '25544' => [
+ 'mag' => -1.3,
+ 'illum' => .5,
+ 'distance' => 1000,
+ ],
+ ];
+
+ // Return null if we don't have a record of the intrinsic mag
+ if (!isset($intrinsicMagnitudes[$this->tle->catnr])) {
+ return null;
+ }
+ $imag = $intrinsicMagnitudes[$this->tle->catnr];
+
+ // Convert the observer's geodetic info to radians and km so
+ // we can compare vectors
+ $observerGeo = new Predict_Geodetic();
+ $observerGeo->lat = Predict_Math::Radians($qth->lat);
+ $observerGeo->lon = Predict_Math::Radians($qth->lon);
+ $observerGeo->alt = $qth->alt * 1000;
+
+ // Now determine the sun and observer positions
+ $observerPos = new Predict_Vector();
+ $observerVel = new Predict_Vector();
+ $solarVector = new Predict_Vector();
+ Predict_Solar::Calculate_Solar_Position($time, $solarVector);
+ Predict_SGPObs::Calculate_User_PosVel($time, $observerGeo, $observerPos, $observerVel);
+
+ // Determine the solar phase and and thus the percent illumination
+ $observerSatPos = new Predict_Vector();
+ Predict_Math::Vec_Sub($this->pos, $observerPos, $observerSatPos);
+ $phaseAngle = Predict_Math::Degrees(Predict_Math::Angle($solarVector, $observerSatPos));
+ $illum = $phaseAngle / 180;
+
+ $illuminationChange = $illum / $imag['illum'];
+ $inverseSquareOfDistanceChange = pow($imag['distance'] / $this->range, 2);
+ $changeInMagnitude = log(
+ $illuminationChange * $inverseSquareOfDistanceChange,
+ self::POGSONS_RATIO
+ );
+
+ return $imag['mag'] - $changeInMagnitude;
+ }
+}
diff --git a/lib/predict/Predict/Solar.php b/lib/predict/Predict/Solar.php
new file mode 100644
index 0000000..5b2c97f
--- /dev/null
+++ b/lib/predict/Predict/Solar.php
@@ -0,0 +1,106 @@
+x = $R * cos($Lsa);
+ $solar_vector->y = $R * sin($Lsa) * cos($eps);
+ $solar_vector->z = $R * sin($Lsa) * sin($eps);
+ $solar_vector->w = $R;
+ }
+
+ /* Calculates stellite's eclipse status and depth */
+ public static function Sat_Eclipsed(Predict_Vector $pos, Predict_Vector $sol, &$depth)
+ {
+ $Rho = new Predict_Vector();
+ $earth = new Predict_Vector();
+
+ /* Determine partial eclipse */
+ $sd_earth = Predict_Math::ArcSin(Predict::xkmper / $pos->w);
+ Predict_Math::Vec_Sub($sol, $pos, $Rho);
+ $sd_sun = Predict_Math::ArcSin(Predict::__sr__ / $Rho->w);
+ Predict_Math::Scalar_Multiply(-1, $pos, $earth);
+ $delta = Predict_Math::Angle($sol, $earth);
+ $depth = $sd_earth - $sd_sun - $delta;
+
+ if ($sd_earth < $sd_sun) {
+ return 0;
+ } elseif ($depth >= 0) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Finds the current location of the sun based on the observer location.
+ *
+ * @param Predict_QTH $qth The observer location
+ * @param int $daynum The daynum or null to use the current daynum
+ *
+ * @return Predict_ObsSet
+ */
+ public static function FindSun(Predict_QTH $qth, $daynum = null)
+ {
+ if (null === $daynum) {
+ $daynum = Predict_Time::get_current_daynum();
+ }
+
+ $obs_geodetic = new Predict_Geodetic();
+ $obs_geodetic->lon = $qth->lon * Predict::de2ra;
+ $obs_geodetic->lat = $qth->lat * Predict::de2ra;
+ $obs_geodetic->alt = $qth->alt / 1000.0;
+ $obs_geodetic->theta = 0;
+
+ $solar_vector = new Predict_Vector();
+ $zero_vector = new Predict_Vector();
+ $solar_set = new Predict_ObsSet();
+
+ self::Calculate_Solar_Position($daynum, $solar_vector);
+ Predict_SGPObs::Calculate_Obs(
+ $daynum,
+ $solar_vector,
+ $zero_vector,
+ $obs_geodetic,
+ $solar_set
+ );
+
+ $solar_set->az = Predict_Math::Degrees($solar_set->az);
+ $solar_set->el = Predict_Math::Degrees($solar_set->el);
+
+ return $solar_set;
+ }
+}
diff --git a/lib/predict/Predict/TLE.php b/lib/predict/Predict/TLE.php
new file mode 100644
index 0000000..6e37e02
--- /dev/null
+++ b/lib/predict/Predict/TLE.php
@@ -0,0 +1,228 @@
+Good_Elements($line1, $line2)) {
+ throw new Predict_Exception('Invalid TLE contents');
+ }
+
+ $this->header = $header;
+ $this->line1 = $line1;
+ $this->line2 = $line2;
+
+ /* Decode Card 1 * */
+ /* Satellite's catalogue number */
+ $this->catnr = (int) substr($line1, 2, 5);
+
+ /* International Designator for satellite */
+ $this->idesg = substr($line1, 9, 8);
+
+ /* Epoch time; this is the complete, unconverted epoch. */
+ /* Replace spaces with 0 before casting, as leading spaces are allowed */
+ $this->epoch = (float) str_replace(' ', '0', substr($line1, 18, 14));
+
+ /* Now, convert the epoch time into year, day
+ and fraction of day, according to:
+
+ YYDDD.FFFFFFFF
+ */
+
+ // Adjust for 2 digit year through 2056
+ $this->epoch_year = (int) substr($line1, 18, 2);
+ if ($this->epoch_year > 56) {
+ $this->epoch_year = $this->epoch_year + 1900;
+ } else {
+ $this->epoch_year = $this->epoch_year + 2000;
+ }
+
+ /* Epoch day */
+ $this->epoch_day = (int) substr($line1, 20, 3);
+
+ /* Epoch fraction of day */
+ $this->epoch_fod = (float) substr($line1, 23, 9);
+
+ /* Satellite's First Time Derivative */
+ $this->xndt2o = (float) substr($line1, 33, 10);
+
+ /* Satellite's Second Time Derivative */
+ $this->xndd6o = (float) (substr($line1, 44, 1).'.'.substr($line1, 45, 5).'E'.substr($line1, 50, 2));
+
+ /* Satellite's bstar drag term
+ FIXME: How about buff[0] ????
+ */
+ $this->bstar = (float) (substr($line1, 53, 1).'.'.substr($line1, 54, 5).'E'.substr($line1, 59, 2));
+
+ /* Element Number */
+ $this->elset = (int) substr($line1, 64, 4);
+
+ /* Decode Card 2 * */
+ /* Satellite's Orbital Inclination (degrees) */
+ $this->xincl = (float) substr($line2, 8, 8);
+
+ /* Satellite's RAAN (degrees) */
+ $this->xnodeo = (float) substr($line2, 17, 8);
+
+ /* Satellite's Orbital Eccentricity */
+ $this->eo = (float) ('.'.substr($line2, 26, 7));
+
+ /* Satellite's Argument of Perigee (degrees) */
+ $this->omegao = (float) substr($line2, 34, 8);
+
+ /* Satellite's Mean Anomaly of Orbit (degrees) */
+ $this->xmo = (float) substr($line2, 43, 8);
+
+ /* Satellite's Mean Motion (rev/day) */
+ $this->xno = (float) substr($line2, 52, 11);
+
+ /* Satellite's Revolution number at epoch */
+ $this->revnum = (float) substr($line2, 63, 5);
+ }
+
+ /* Calculates the checksum mod 10 of a line from a TLE set and */
+ /* returns true if it compares with checksum in column 68, else false. */
+ /* tle_set is a character string holding the two lines read */
+ /* from a text file containing NASA format Keplerian elements. */
+ /* NOTE!!! The stuff about two lines is not quite true.
+ The function assumes that tle_set[0] is the begining
+ of the line and that there are 68 elements - see the consumer
+ */
+ public function Checksum_Good($tle_set)
+ {
+ if (strlen($tle_set) < 69) {
+ return false;
+ }
+
+ $checksum = 0;
+
+ for ($i = 0; $i < 68; ++$i) {
+ if (($tle_set[$i] >= '0') && ($tle_set[$i] <= '9')) {
+ $value = $tle_set[$i] - '0';
+ } elseif ('-' == $tle_set[$i]) {
+ $value = 1;
+ } else {
+ $value = 0;
+ }
+
+ $checksum += $value;
+ }
+
+ $checksum %= 10;
+ $check_digit = $tle_set[68] - '0';
+
+ return $checksum == $check_digit;
+ }
+
+ /* Carries out various checks on a TLE set to verify its validity */
+ /* $line1 is the first line of the TLE, $line2 is the second line */
+ /* from a text file containing NASA format Keplerian elements. */
+ public function Good_Elements($line1, $line2)
+ {
+ /* Verify checksum of both lines of a TLE set */
+ if (!$this->Checksum_Good($line1) || !$this->Checksum_Good($line2)) {
+ return false;
+ }
+
+ /* Check the line number of each line */
+ if (('1' != $line1[0]) || ('2' != $line2[0])) {
+ return false;
+ }
+
+ /* Verify that Satellite Number is same in both lines */
+ if (0 != strncmp($line1[2], $line2[2], 5)) {
+ return false;
+ }
+
+ /* Check that various elements are in the right place */
+ if (('.' != $line1[23]) ||
+ ('.' != $line1[34]) ||
+ ('.' != $line2[11]) ||
+ ('.' != $line2[20]) ||
+ ('.' != $line2[37]) ||
+ ('.' != $line2[46]) ||
+ ('.' != $line2[54]) ||
+ (0 != strncmp(substr($line1, 61), ' 0 ', 3))) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * A function to allow checksum creation of a line. This is driven by
+ * the fact that some TLEs from SpaceTrack are missing checksum numbers.
+ * You can use this to create a checksum for a line, but you should
+ * probably have confidence that the TLE data itself is good. YMMV.
+ *
+ * @return string
+ *
+ * @throws Predict_Exception if the line is not exactly 68 chars
+ */
+ public static function createChecksum($line)
+ {
+ if (68 != strlen($line)) {
+ throw Predict_Exception('Invalid line, needs to e 68 chars');
+ }
+
+ $checksum = 0;
+
+ for ($i = 0; $i < 68; ++$i) {
+ if (($line[$i] >= '0') && ($line[$i] <= '9')) {
+ $value = (int) $line[$i];
+ } elseif ('-' == $line[$i]) {
+ $value = 1;
+ } else {
+ $value = 0;
+ }
+
+ $checksum += $value;
+ }
+
+ $checksum %= 10;
+
+ return $checksum;
+ }
+}
diff --git a/lib/predict/Predict/Time.php b/lib/predict/Predict/Time.php
new file mode 100644
index 0000000..de1f2d7
--- /dev/null
+++ b/lib/predict/Predict/Time.php
@@ -0,0 +1,237 @@
+ds50 = $jd - 2433281.5 + $UT;
+
+ return Predict_Math::FMod2p(6.3003880987 * $deep_arg->ds50 + 1.72944494);
+ }
+
+ /* See the ThetaG doc block above */
+ public static function ThetaG_JD($jd)
+ {
+ /* Reference: The 1992 Astronomical Almanac, page B6. */
+ $UT = Predict_Math::Frac($jd + 0.5);
+ $jd = $jd - $UT;
+ $TU = ($jd - 2451545.0) / 36525;
+ $GMST = 24110.54841 + $TU * (8640184.812866 + $TU * (0.093104 - $TU * 6.2E-6));
+ $GMST = Predict_Math::Modulus($GMST + Predict::secday * Predict::omega_E * $UT, Predict::secday);
+
+ return Predict::twopi * $GMST / Predict::secday;
+ }
+
+ /**
+ * Read the system clock and return the current Julian day. From phpPredict.
+ *
+ * @return float
+ */
+ public static function get_current_daynum()
+ {
+ // Gets the current decimal day number from microtime
+
+ list($usec, $sec) = explode(' ', microtime());
+
+ return self::unix2daynum($sec, $usec);
+ }
+
+ /**
+ * Converts a standard unix timestamp and optional
+ * milliseconds to a daynum.
+ *
+ * @param int $sec Seconds from the unix epoch
+ * @param int $usec Optional milliseconds
+ *
+ * @return float
+ */
+ public static function unix2daynum($sec, $usec = 0)
+ {
+ $time = ((($sec + $usec) / 86400.0) - 3651.0);
+
+ return $time + 2444238.5;
+ }
+
+ /* The function Delta_ET has been added to allow calculations on */
+ /* the position of the sun. It provides the difference between UT */
+ /* (approximately the same as UTC) and ET (now referred to as TDT). */
+ /* This function is based on a least squares fit of data from 1950 */
+ /* to 1991 and will need to be updated periodically. */
+ public static function Delta_ET($year)
+ {
+ /* Values determined using data from 1950-1991 in the 1990
+ Astronomical Almanac. See DELTA_ET.WQ1 for details. */
+
+ $delta_et = 26.465 + 0.747622 * ($year - 1950) +
+ 1.886913 * sin(Predict::twopi * ($year - 1975) / 33);
+
+ return $delta_et;
+ }
+
+ /**
+ * Converts a daynum to a unix timestamp. From phpPredict.
+ *
+ * @param float $dn Julian Daynum
+ *
+ * @return float
+ */
+ public static function daynum2unix($dn)
+ {
+ // Converts a daynum to a UNIX timestamp
+
+ return 86400.0 * ($dn - 2444238.5 + 3651.0);
+ }
+
+ /**
+ * Converts a daynum to a readable time format.
+ *
+ * @param float $dn The julian date
+ * @param string $zone The zone string, defaults to America/Los_Angeles
+ * @param string $format The date() function's format string. Defaults to m-d-Y H:i:s
+ *
+ * @return string
+ */
+ public static function daynum2readable($dn, $zone = 'America/Los_Angeles', $format = 'm-d-Y H:i:s')
+ {
+ $unix = self::daynum2unix($dn);
+ $date = new DateTime('@'.round($unix));
+ $dateTimezone = new DateTimeZone($zone);
+ $date->setTimezone($dateTimezone);
+
+ return $date->format($format);
+ }
+
+ public static function daynum2datetime($dn, $zone = 'UTC')
+ {
+ $unix = self::daynum2unix($dn);
+ $date = new DateTime('@'.round($unix));
+ $dateTimezone = new DateTimeZone($zone);
+ $date->setTimezone($dateTimezone);
+
+ return $date;
+ }
+
+ /**
+ * Returns the unix timestamp of a TLE's epoch.
+ *
+ * @param Predict_TLE $tle The TLE object
+ *
+ * @return int
+ */
+ public static function getEpochTimeStamp(Predict_TLE $tle)
+ {
+ $year = $tle->epoch_year;
+ $day = $tle->epoch_day;
+ $sec = round(86400 * $tle->epoch_fod);
+
+ $zone = new DateTimeZone('GMT');
+ $date = new DateTime();
+ $date->setTimezone($zone);
+ $date->setDate($year, 1, 1);
+ $date->setTime(0, 0, 0);
+
+ return $date->format('U') + (86400 * $day) + $sec - 86400;
+ }
+}
diff --git a/lib/predict/Predict/Vector.php b/lib/predict/Predict/Vector.php
new file mode 100644
index 0000000..8474905
--- /dev/null
+++ b/lib/predict/Predict/Vector.php
@@ -0,0 +1,13 @@
+save_run($xhprofData, $xhprofNameSpace);
+ }
+ register_shutdown_function('stop_xhprof_profiling');
+}
+
+$start = microtime(true);
+
+$predict = new Predict();
+$qth = new Predict_QTH();
+$qth->lat = 37.6550;
+$qth->lon = -122.4070;
+$qth->alt = 0;
+
+$tleFile = file('examples/iss.tle');
+$tle = new Predict_TLE($tleFile[0], $tleFile[1], $tleFile[2]);
+$sat = new Predict_Sat($tle);
+$now = Predict_Time::get_current_daynum();
+
+$results = $predict->get_passes($sat, $qth, $now, 10);
+
+echo 'Execution time: '.number_format((microtime(true) - $start) * 1000, 2)."ms\n";
+exit;
diff --git a/lib/predict/examples/findsun.php b/lib/predict/examples/findsun.php
new file mode 100644
index 0000000..2b33170
--- /dev/null
+++ b/lib/predict/examples/findsun.php
@@ -0,0 +1,29 @@
+lat = 37.786759;
+$qth->lon = -122.405162;
+$qth->alt = 10; // Altitude above sea level in meters
+
+$sunInfo = Predict_Solar::FindSun($qth, $daynum);
+
+$output = [
+ 'elevation' => $sunInfo->el,
+ 'azimuth' => $sunInfo->az,
+ 'timestamp' => $time,
+];
+
+// output results
+echo json_encode($output);
diff --git a/lib/predict/examples/iss.tle b/lib/predict/examples/iss.tle
new file mode 100644
index 0000000..e01670f
--- /dev/null
+++ b/lib/predict/examples/iss.tle
@@ -0,0 +1,3 @@
+ISS (ZARYA)
+1 25544U 98067A 21109.21251552 .00001445 00000-0 34486-4 0 9999
+2 25544 51.6452 274.4230 0002486 246.0034 286.0425 15.48900816279452
diff --git a/lib/predict/examples/solar_position.php b/lib/predict/examples/solar_position.php
new file mode 100644
index 0000000..017f585
--- /dev/null
+++ b/lib/predict/examples/solar_position.php
@@ -0,0 +1,43 @@
+lat);
+$solar_lon = Predict_Math::Degrees($solar_geodetic->lon);
+
+// Reverse values for night circle center
+$dark_lat = -$solar_lat;
+$dark_lon = -$solar_lon;
+
+$output = [
+ 'solar_lat' => $solar_lat,
+ 'solar_lon' => $solar_lon,
+ 'dark_lat' => $dark_lat,
+ 'dark_lon' => $dark_lon,
+ 'timestamp' => $time,
+];
+
+// output results
+var_dump(json_encode($output));
diff --git a/lib/predict/examples/visible_passes.php b/lib/predict/examples/visible_passes.php
new file mode 100644
index 0000000..320344c
--- /dev/null
+++ b/lib/predict/examples/visible_passes.php
@@ -0,0 +1,74 @@
+alt = 0; // Altitude in meters
+
+// South San Francisco, example west of the meridian
+$qth->lat = 37.6550; // Latitude North
+$qth->lon = -122.4070; // Longitude East
+
+// Munich, example east of the meridian
+// $qth->lat = 48.1505; // Lat North
+// $qth->lon = 11.5809; // Lon East
+
+// The iss.tle file is the first 3 lines of
+// http://celestrak.com/NORAD/elements/stations.txt
+// Make sure you update this content, it goes out of date within a day or two
+$tleFile = file('examples/iss.tle'); // Load up the ISS data file from NORAD
+$tle = new Predict_TLE($tleFile[0], $tleFile[1], $tleFile[2]); // Instantiate it
+$sat = new Predict_Sat($tle); // Load up the satellite data
+$now = Predict_Time::get_current_daynum(); // get the current time as Julian Date (daynum)
+
+// You can modify some preferences in Predict(), the defaults are below
+//
+// $predict->minEle = 10; // Minimum elevation for a pass
+// $predict->timeRes = 10; // Pass details: time resolution in seconds
+// $predict->numEntries = 20; // Pass details: number of entries per pass
+// $predict->threshold = -6; // Twilight threshold (sun must be at this lat or lower)
+
+// Get the passes and filter visible only, takes about 4 seconds for 10 days
+$results = $predict->get_passes($sat, $qth, $now, 10);
+$filtered = $predict->filterVisiblePasses($results);
+
+$zone = 'America/Los_Angeles'; // Pacific time zone
+$format = 'm-d-Y H:i:s'; // Time format from PHP's date() function
+
+// Format the output similar to the heavens-above.com website
+foreach ($filtered as $pass) {
+ echo 'AOS Daynum: '.$pass->visible_aos."\n";
+ echo 'AOS Time: '.Predict_Time::daynum2readable($pass->visible_aos, $zone, $format)."\n";
+ echo 'AOS Az: '.$predict->azDegreesToDirection($pass->visible_aos_az)."\n";
+ echo 'AOS El: '.round($pass->visible_aos_el)."\n";
+ echo 'Max Time: '.Predict_Time::daynum2readable($pass->visible_tca, $zone, $format)."\n";
+ echo 'Max Az: '.$predict->azDegreesToDirection($pass->visible_max_el_az)."\n";
+ echo 'Max El: '.round($pass->visible_max_el)."\n";
+ echo 'LOS Time: '.Predict_Time::daynum2readable($pass->visible_los, $zone, $format)."\n";
+ echo 'LOS Az: '.$predict->azDegreesToDirection($pass->visible_los_az)."\n";
+ echo 'LOS El: '.round($pass->visible_los_el)."\n";
+ echo 'Magnitude: '.number_format($pass->max_apparent_magnitude, 1)."\n";
+ echo "\n";
+}
+
+// How long did this take?
+echo 'Execution time: '.number_format((microtime(true) - $start) * 1000, 2)."ms\n";
+exit;
diff --git a/lib/predict/tests/Table.php b/lib/predict/tests/Table.php
new file mode 100644
index 0000000..63cf660
--- /dev/null
+++ b/lib/predict/tests/Table.php
@@ -0,0 +1,892 @@
+
+ * @author Jan Schneider
+ * @copyright 2002-2005 Richard Heyes
+ * @copyright 2006-2008 Jan Schneider
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
+ *
+ * @version CVS: $Id: Table.php 268934 2008-11-13 10:35:34Z yunosh $
+ *
+ * @see http://pear.php.net/package/Console_Table
+ */
+define('CONSOLE_TABLE_HORIZONTAL_RULE', 1);
+define('CONSOLE_TABLE_ALIGN_LEFT', -1);
+define('CONSOLE_TABLE_ALIGN_CENTER', 0);
+define('CONSOLE_TABLE_ALIGN_RIGHT', 1);
+define('CONSOLE_TABLE_BORDER_ASCII', -1);
+
+/**
+ * The main class.
+ *
+ * @category Console
+ *
+ * @author Jan Schneider
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
+ *
+ * @see http://pear.php.net/package/Console_Table
+ */
+class Console_Table
+{
+ /**
+ * The table headers.
+ *
+ * @var array
+ */
+ public $_headers = [];
+
+ /**
+ * The data of the table.
+ *
+ * @var array
+ */
+ public $_data = [];
+
+ /**
+ * The maximum number of columns in a row.
+ *
+ * @var int
+ */
+ public $_max_cols = 0;
+
+ /**
+ * The maximum number of rows in the table.
+ *
+ * @var int
+ */
+ public $_max_rows = 0;
+
+ /**
+ * Lengths of the columns, calculated when rows are added to the table.
+ *
+ * @var array
+ */
+ public $_cell_lengths = [];
+
+ /**
+ * Heights of the rows.
+ *
+ * @var array
+ */
+ public $_row_heights = [];
+
+ /**
+ * How many spaces to use to pad the table.
+ *
+ * @var int
+ */
+ public $_padding = 1;
+
+ /**
+ * Column filters.
+ *
+ * @var array
+ */
+ public $_filters = [];
+
+ /**
+ * Columns to calculate totals for.
+ *
+ * @var array
+ */
+ public $_calculateTotals;
+
+ /**
+ * Alignment of the columns.
+ *
+ * @var array
+ */
+ public $_col_align = [];
+
+ /**
+ * Default alignment of columns.
+ *
+ * @var int
+ */
+ public $_defaultAlign;
+
+ /**
+ * Character set of the data.
+ *
+ * @var string
+ */
+ public $_charset = 'utf-8';
+
+ /**
+ * Border character.
+ *
+ * @var string
+ */
+ public $_border = CONSOLE_TABLE_BORDER_ASCII;
+
+ /**
+ * Whether the data has ANSI colors.
+ *
+ * @var bool
+ */
+ public $_ansiColor = false;
+
+ /**
+ * Constructor.
+ *
+ * @param int $align Default alignment. One of
+ * CONSOLE_TABLE_ALIGN_LEFT,
+ * CONSOLE_TABLE_ALIGN_CENTER or
+ * CONSOLE_TABLE_ALIGN_RIGHT.
+ * @param string $border the character used for table borders or
+ * CONSOLE_TABLE_BORDER_ASCII
+ * @param int $padding how many spaces to use to pad the table
+ * @param string $charset a charset supported by the mbstring PHP
+ * extension
+ * @param bool $color whether the data contains ansi color codes
+ */
+ public function Console_Table($align = CONSOLE_TABLE_ALIGN_LEFT,
+ $border = CONSOLE_TABLE_BORDER_ASCII, $padding = 1,
+ $charset = null, $color = false)
+ {
+ $this->_defaultAlign = $align;
+ $this->_border = $border;
+ $this->_padding = $padding;
+ $this->_ansiColor = $color;
+ if ($this->_ansiColor) {
+ include_once 'Console/Color.php';
+ }
+ if (!empty($charset)) {
+ $this->setCharset($charset);
+ }
+ }
+
+ /**
+ * Converts an array to a table.
+ *
+ * @param array $headers headers for the table
+ * @param array $data a two dimensional array with the table
+ * data
+ * @param bool $returnObject whether to return the Console_Table object
+ * instead of the rendered table
+ *
+ * @static
+ *
+ * @return Console_Table|string a Console_Table object or the generated
+ * table
+ */
+ public function fromArray($headers, $data, $returnObject = false)
+ {
+ if (!is_array($headers) || !is_array($data)) {
+ return false;
+ }
+
+ $table = new Console_Table();
+ $table->setHeaders($headers);
+
+ foreach ($data as $row) {
+ $table->addRow($row);
+ }
+
+ return $returnObject ? $table : $table->getTable();
+ }
+
+ /**
+ * Adds a filter to a column.
+ *
+ * Filters are standard PHP callbacks which are run on the data before
+ * table generation is performed. Filters are applied in the order they
+ * are added. The callback function must accept a single argument, which
+ * is a single table cell.
+ *
+ * @param int $col column to apply filter to
+ * @param mixed &$callback PHP callback to apply
+ *
+ * @return void
+ */
+ public function addFilter($col, &$callback)
+ {
+ $this->_filters[] = [$col, &$callback];
+ }
+
+ /**
+ * Sets the charset of the provided table data.
+ *
+ * @param string $charset a charset supported by the mbstring PHP
+ * extension
+ *
+ * @return void
+ */
+ public function setCharset($charset)
+ {
+ $locale = setlocale(LC_CTYPE, 0);
+ setlocale(LC_CTYPE, 'en_US');
+ $this->_charset = strtolower($charset);
+ setlocale(LC_CTYPE, $locale);
+ }
+
+ /**
+ * Sets the alignment for the columns.
+ *
+ * @param int $col_id the column number
+ * @param int $align Alignment to set for this column. One of
+ * CONSOLE_TABLE_ALIGN_LEFT
+ * CONSOLE_TABLE_ALIGN_CENTER
+ * CONSOLE_TABLE_ALIGN_RIGHT.
+ *
+ * @return void
+ */
+ public function setAlign($col_id, $align = CONSOLE_TABLE_ALIGN_LEFT)
+ {
+ switch ($align) {
+ case CONSOLE_TABLE_ALIGN_CENTER:
+ $pad = STR_PAD_BOTH;
+ break;
+ case CONSOLE_TABLE_ALIGN_RIGHT:
+ $pad = STR_PAD_LEFT;
+ break;
+ default:
+ $pad = STR_PAD_RIGHT;
+ break;
+ }
+ $this->_col_align[$col_id] = $pad;
+ }
+
+ /**
+ * Specifies which columns are to have totals calculated for them and
+ * added as a new row at the bottom.
+ *
+ * @param array $cols array of column numbers (starting with 0)
+ *
+ * @return void
+ */
+ public function calculateTotalsFor($cols)
+ {
+ $this->_calculateTotals = $cols;
+ }
+
+ /**
+ * Sets the headers for the columns.
+ *
+ * @param array $headers the column headers
+ *
+ * @return void
+ */
+ public function setHeaders($headers)
+ {
+ $this->_headers = [array_values($headers)];
+ $this->_updateRowsCols($headers);
+ }
+
+ /**
+ * Adds a row to the table.
+ *
+ * @param array $row the row data to add
+ * @param bool $append whether to append or prepend the row
+ *
+ * @return void
+ */
+ public function addRow($row, $append = true)
+ {
+ if ($append) {
+ $this->_data[] = array_values($row);
+ } else {
+ array_unshift($this->_data, array_values($row));
+ }
+
+ $this->_updateRowsCols($row);
+ }
+
+ /**
+ * Inserts a row after a given row number in the table.
+ *
+ * If $row_id is not given it will prepend the row.
+ *
+ * @param array $row the data to insert
+ * @param int $row_id row number to insert before
+ *
+ * @return void
+ */
+ public function insertRow($row, $row_id = 0)
+ {
+ array_splice($this->_data, $row_id, 0, [$row]);
+
+ $this->_updateRowsCols($row);
+ }
+
+ /**
+ * Adds a column to the table.
+ *
+ * @param array $col_data the data of the column
+ * @param int $col_id the column index to populate
+ * @param int $row_id if starting row is not zero, specify it here
+ *
+ * @return void
+ */
+ public function addCol($col_data, $col_id = 0, $row_id = 0)
+ {
+ foreach ($col_data as $col_cell) {
+ $this->_data[$row_id++][$col_id] = $col_cell;
+ }
+
+ $this->_updateRowsCols();
+ $this->_max_cols = max($this->_max_cols, $col_id + 1);
+ }
+
+ /**
+ * Adds data to the table.
+ *
+ * @param array $data a two dimensional array with the table data
+ * @param int $col_id starting column number
+ * @param int $row_id starting row number
+ *
+ * @return void
+ */
+ public function addData($data, $col_id = 0, $row_id = 0)
+ {
+ foreach ($data as $row) {
+ if (CONSOLE_TABLE_HORIZONTAL_RULE === $row) {
+ $this->_data[$row_id] = CONSOLE_TABLE_HORIZONTAL_RULE;
+ ++$row_id;
+ continue;
+ }
+ $starting_col = $col_id;
+ foreach ($row as $cell) {
+ $this->_data[$row_id][$starting_col++] = $cell;
+ }
+ $this->_updateRowsCols();
+ $this->_max_cols = max($this->_max_cols, $starting_col);
+ ++$row_id;
+ }
+ }
+
+ /**
+ * Adds a horizontal seperator to the table.
+ *
+ * @return void
+ */
+ public function addSeparator()
+ {
+ $this->_data[] = CONSOLE_TABLE_HORIZONTAL_RULE;
+ }
+
+ /**
+ * Returns the generated table.
+ *
+ * @return string the generated table
+ */
+ public function getTable()
+ {
+ $this->_applyFilters();
+ $this->_calculateTotals();
+ $this->_validateTable();
+
+ return $this->_buildTable();
+ }
+
+ /**
+ * Calculates totals for columns.
+ *
+ * @return void
+ */
+ public function _calculateTotals()
+ {
+ if (empty($this->_calculateTotals)) {
+ return;
+ }
+
+ $this->addSeparator();
+
+ $totals = [];
+ foreach ($this->_data as $row) {
+ if (is_array($row)) {
+ foreach ($this->_calculateTotals as $columnID) {
+ $totals[$columnID] += $row[$columnID];
+ }
+ }
+ }
+
+ $this->_data[] = $totals;
+ $this->_updateRowsCols();
+ }
+
+ /**
+ * Applies any column filters to the data.
+ *
+ * @return void
+ */
+ public function _applyFilters()
+ {
+ if (empty($this->_filters)) {
+ return;
+ }
+
+ foreach ($this->_filters as $filter) {
+ $column = $filter[0];
+ $callback = $filter[1];
+
+ foreach ($this->_data as $row_id => $row_data) {
+ if (CONSOLE_TABLE_HORIZONTAL_RULE !== $row_data) {
+ $this->_data[$row_id][$column] =
+ call_user_func($callback, $row_data[$column]);
+ }
+ }
+ }
+ }
+
+ /**
+ * Ensures that column and row counts are correct.
+ *
+ * @return void
+ */
+ public function _validateTable()
+ {
+ if (!empty($this->_headers)) {
+ $this->_calculateRowHeight(-1, $this->_headers[0]);
+ }
+
+ for ($i = 0; $i < $this->_max_rows; ++$i) {
+ for ($j = 0; $j < $this->_max_cols; ++$j) {
+ if (!isset($this->_data[$i][$j]) &&
+ (!isset($this->_data[$i]) ||
+ CONSOLE_TABLE_HORIZONTAL_RULE !== $this->_data[$i])) {
+ $this->_data[$i][$j] = '';
+ }
+ }
+ $this->_calculateRowHeight($i, $this->_data[$i]);
+
+ if (CONSOLE_TABLE_HORIZONTAL_RULE !== $this->_data[$i]) {
+ ksort($this->_data[$i]);
+ }
+ }
+
+ $this->_splitMultilineRows();
+
+ // Update cell lengths.
+ for ($i = 0; $i < count($this->_headers); ++$i) {
+ $this->_calculateCellLengths($this->_headers[$i]);
+ }
+ for ($i = 0; $i < $this->_max_rows; ++$i) {
+ $this->_calculateCellLengths($this->_data[$i]);
+ }
+
+ ksort($this->_data);
+ }
+
+ /**
+ * Splits multiline rows into many smaller one-line rows.
+ *
+ * @return void
+ */
+ public function _splitMultilineRows()
+ {
+ ksort($this->_data);
+ $sections = [&$this->_headers, &$this->_data];
+ $max_rows = [count($this->_headers), $this->_max_rows];
+ $row_height_offset = [-1, 0];
+
+ for ($s = 0; $s <= 1; ++$s) {
+ $inserted = 0;
+ $new_data = $sections[$s];
+
+ for ($i = 0; $i < $max_rows[$s]; ++$i) {
+ // Process only rows that have many lines.
+ $height = $this->_row_heights[$i + $row_height_offset[$s]];
+ if ($height > 1) {
+ // Split column data into one-liners.
+ $split = [];
+ for ($j = 0; $j < $this->_max_cols; ++$j) {
+ $split[$j] = preg_split('/\r?\n|\r/',
+ $sections[$s][$i][$j]);
+ }
+
+ $new_rows = [];
+ // Construct new 'virtual' rows - insert empty strings for
+ // columns that have less lines that the highest one.
+ for ($i2 = 0; $i2 < $height; ++$i2) {
+ for ($j = 0; $j < $this->_max_cols; ++$j) {
+ $new_rows[$i2][$j] = !isset($split[$j][$i2])
+ ? ''
+ : $split[$j][$i2];
+ }
+ }
+
+ // Replace current row with smaller rows. $inserted is
+ // used to take account of bigger array because of already
+ // inserted rows.
+ array_splice($new_data, $i + $inserted, 1, $new_rows);
+ $inserted += count($new_rows) - 1;
+ }
+ }
+
+ // Has the data been modified?
+ if ($inserted > 0) {
+ $sections[$s] = $new_data;
+ $this->_updateRowsCols();
+ }
+ }
+ }
+
+ /**
+ * Builds the table.
+ *
+ * @return string the generated table string
+ */
+ public function _buildTable()
+ {
+ if (!count($this->_data)) {
+ return '';
+ }
+
+ $rule = CONSOLE_TABLE_BORDER_ASCII == $this->_border
+ ? '|'
+ : $this->_border;
+ $separator = $this->_getSeparator();
+
+ $return = [];
+ for ($i = 0; $i < count($this->_data); ++$i) {
+ for ($j = 0; $j < count($this->_data[$i]); ++$j) {
+ if (CONSOLE_TABLE_HORIZONTAL_RULE !== $this->_data[$i] &&
+ $this->_strlen($this->_data[$i][$j]) <
+ $this->_cell_lengths[$j]) {
+ $this->_data[$i][$j] = $this->_strpad($this->_data[$i][$j],
+ $this->_cell_lengths[$j],
+ ' ',
+ $this->_col_align[$j]);
+ }
+ }
+
+ if (CONSOLE_TABLE_HORIZONTAL_RULE !== $this->_data[$i]) {
+ $row_begin = $rule.str_repeat(' ', $this->_padding);
+ $row_end = str_repeat(' ', $this->_padding).$rule;
+ $implode_char = str_repeat(' ', $this->_padding).$rule
+ .str_repeat(' ', $this->_padding);
+ $return[] = $row_begin
+ .implode($implode_char, $this->_data[$i]).$row_end;
+ } elseif (!empty($separator)) {
+ $return[] = $separator;
+ }
+ }
+
+ $return = implode("\r\n", $return);
+ if (!empty($separator)) {
+ $return = $separator."\r\n".$return."\r\n".$separator;
+ }
+ $return .= "\r\n";
+
+ if (!empty($this->_headers)) {
+ $return = $this->_getHeaderLine()."\r\n".$return;
+ }
+
+ return $return;
+ }
+
+ /**
+ * Creates a horizontal separator for header separation and table
+ * start/end etc.
+ *
+ * @return string the horizontal separator
+ */
+ public function _getSeparator()
+ {
+ if (!$this->_border) {
+ return;
+ }
+
+ if (CONSOLE_TABLE_BORDER_ASCII == $this->_border) {
+ $rule = '-';
+ $sect = '+';
+ } else {
+ $rule = $sect = $this->_border;
+ }
+
+ $return = [];
+ foreach ($this->_cell_lengths as $cl) {
+ $return[] = str_repeat($rule, $cl);
+ }
+
+ $row_begin = $sect.str_repeat($rule, $this->_padding);
+ $row_end = str_repeat($rule, $this->_padding).$sect;
+ $implode_char = str_repeat($rule, $this->_padding).$sect
+ .str_repeat($rule, $this->_padding);
+
+ return $row_begin.implode($implode_char, $return).$row_end;
+ }
+
+ /**
+ * Returns the header line for the table.
+ *
+ * @return string the header line of the table
+ */
+ public function _getHeaderLine()
+ {
+ // Make sure column count is correct
+ for ($j = 0; $j < count($this->_headers); ++$j) {
+ for ($i = 0; $i < $this->_max_cols; ++$i) {
+ if (!isset($this->_headers[$j][$i])) {
+ $this->_headers[$j][$i] = '';
+ }
+ }
+ }
+
+ for ($j = 0; $j < count($this->_headers); ++$j) {
+ for ($i = 0; $i < count($this->_headers[$j]); ++$i) {
+ if ($this->_strlen($this->_headers[$j][$i]) <
+ $this->_cell_lengths[$i]) {
+ $this->_headers[$j][$i] =
+ $this->_strpad($this->_headers[$j][$i],
+ $this->_cell_lengths[$i],
+ ' ',
+ $this->_col_align[$i]);
+ }
+ }
+ }
+
+ $rule = CONSOLE_TABLE_BORDER_ASCII == $this->_border
+ ? '|'
+ : $this->_border;
+ $row_begin = $rule.str_repeat(' ', $this->_padding);
+ $row_end = str_repeat(' ', $this->_padding).$rule;
+ $implode_char = str_repeat(' ', $this->_padding).$rule
+ .str_repeat(' ', $this->_padding);
+
+ $separator = $this->_getSeparator();
+ if (!empty($separator)) {
+ $return[] = $separator;
+ }
+ for ($j = 0; $j < count($this->_headers); ++$j) {
+ $return[] = $row_begin
+ .implode($implode_char, $this->_headers[$j]).$row_end;
+ }
+
+ return implode("\r\n", $return);
+ }
+
+ /**
+ * Updates values for maximum columns and rows.
+ *
+ * @param array $rowdata data array of a single row
+ *
+ * @return void
+ */
+ public function _updateRowsCols($rowdata = [])
+ {
+ // Update maximum columns.
+ $this->_max_cols = max($this->_max_cols, count($rowdata));
+
+ // Update maximum rows.
+ ksort($this->_data);
+ $keys = array_keys($this->_data);
+ $this->_max_rows = end($keys) + 1;
+
+ switch ($this->_defaultAlign) {
+ case CONSOLE_TABLE_ALIGN_CENTER:
+ $pad = STR_PAD_BOTH;
+ break;
+ case CONSOLE_TABLE_ALIGN_RIGHT:
+ $pad = STR_PAD_LEFT;
+ break;
+ default:
+ $pad = STR_PAD_RIGHT;
+ break;
+ }
+
+ // Set default column alignments
+ for ($i = count($this->_col_align); $i < $this->_max_cols; ++$i) {
+ $this->_col_align[$i] = $pad;
+ }
+ }
+
+ /**
+ * Calculates the maximum length for each column of a row.
+ *
+ * @param array $row the row data
+ *
+ * @return void
+ */
+ public function _calculateCellLengths($row)
+ {
+ for ($i = 0; $i < count($row); ++$i) {
+ if (!isset($this->_cell_lengths[$i])) {
+ $this->_cell_lengths[$i] = 0;
+ }
+ $this->_cell_lengths[$i] = max($this->_cell_lengths[$i],
+ $this->_strlen($row[$i]));
+ }
+ }
+
+ /**
+ * Calculates the maximum height for all columns of a row.
+ *
+ * @param int $row_number the row number
+ * @param array $row the row data
+ *
+ * @return void
+ */
+ public function _calculateRowHeight($row_number, $row)
+ {
+ if (!isset($this->_row_heights[$row_number])) {
+ $this->_row_heights[$row_number] = 1;
+ }
+
+ // Do not process horizontal rule rows.
+ if (CONSOLE_TABLE_HORIZONTAL_RULE === $row) {
+ return;
+ }
+
+ for ($i = 0, $c = count($row); $i < $c; ++$i) {
+ $lines = preg_split('/\r?\n|\r/', $row[$i]);
+ $this->_row_heights[$row_number] = max($this->_row_heights[$row_number],
+ count($lines));
+ }
+ }
+
+ /**
+ * Returns the character length of a string.
+ *
+ * @param string $str a multibyte or singlebyte string
+ *
+ * @return int the string length
+ */
+ public function _strlen($str)
+ {
+ static $mbstring, $utf8;
+
+ // Strip ANSI color codes if requested.
+ if ($this->_ansiColor) {
+ $str = Console_Color::strip($str);
+ }
+
+ // Cache expensive function_exists() calls.
+ if (!isset($mbstring)) {
+ $mbstring = function_exists('mb_strlen');
+ }
+ if (!isset($utf8)) {
+ $utf8 = function_exists('utf8_decode');
+ }
+
+ if ($utf8 &&
+ ($this->_charset == strtolower('utf-8') ||
+ $this->_charset == strtolower('utf8'))) {
+ return strlen(utf8_decode($str));
+ }
+ if ($mbstring) {
+ return mb_strlen($str, $this->_charset);
+ }
+
+ return strlen($str);
+ }
+
+ /**
+ * Returns part of a string.
+ *
+ * @param string $string the string to be converted
+ * @param int $start the part's start position, zero based
+ * @param int $length the part's length
+ *
+ * @return string the string's part
+ */
+ public function _substr($string, $start, $length = null)
+ {
+ static $mbstring;
+
+ // Cache expensive function_exists() calls.
+ if (!isset($mbstring)) {
+ $mbstring = function_exists('mb_substr');
+ }
+
+ if (is_null($length)) {
+ $length = $this->_strlen($string);
+ }
+ if ($mbstring) {
+ $ret = @mb_substr($string, $start, $length, $this->_charset);
+ if (!empty($ret)) {
+ return $ret;
+ }
+ }
+
+ return substr($string, $start, $length);
+ }
+
+ /**
+ * Returns a string padded to a certain length with another string.
+ *
+ * This method behaves exactly like str_pad but is multibyte safe.
+ *
+ * @param string $input the string to be padded
+ * @param int $length the length of the resulting string
+ * @param string $pad The string to pad the input string with. Must
+ * be in the same charset like the input string.
+ * @param const $type The padding type. One of STR_PAD_LEFT,
+ * STR_PAD_RIGHT, or STR_PAD_BOTH.
+ *
+ * @return string the padded string
+ */
+ public function _strpad($input, $length, $pad = ' ', $type = STR_PAD_RIGHT)
+ {
+ $mb_length = $this->_strlen($input);
+ $sb_length = strlen($input);
+ $pad_length = $this->_strlen($pad);
+
+ /* Return if we already have the length. */
+ if ($mb_length >= $length) {
+ return $input;
+ }
+
+ /* Shortcut for single byte strings. */
+ if ($mb_length == $sb_length && $pad_length == strlen($pad)) {
+ return str_pad($input, $length, $pad, $type);
+ }
+
+ switch ($type) {
+ case STR_PAD_LEFT:
+ $left = $length - $mb_length;
+ $output = $this->_substr(str_repeat($pad, ceil($left / $pad_length)),
+ 0, $left, $this->_charset).$input;
+ break;
+ case STR_PAD_BOTH:
+ $left = floor(($length - $mb_length) / 2);
+ $right = ceil(($length - $mb_length) / 2);
+ $output = $this->_substr(str_repeat($pad, ceil($left / $pad_length)),
+ 0, $left, $this->_charset).
+ $input.
+ $this->_substr(str_repeat($pad, ceil($right / $pad_length)),
+ 0, $right, $this->_charset);
+ break;
+ case STR_PAD_RIGHT:
+ $right = $length - $mb_length;
+ $output = $input.
+ $this->_substr(str_repeat($pad, ceil($right / $pad_length)),
+ 0, $right, $this->_charset);
+ break;
+ }
+
+ return $output;
+ }
+}
diff --git a/lib/predict/tests/test-001.php b/lib/predict/tests/test-001.php
new file mode 100644
index 0000000..6ce83bc
--- /dev/null
+++ b/lib/predict/tests/test-001.php
@@ -0,0 +1,131 @@
+ 0.0,
+ 'x' => 2328.97048951,
+ 'y' => -5995.22076416,
+ 'z' => 1719.97067261,
+ 'vx' => 2.91207230,
+ 'vy' => -0.98341546,
+ 'vz' => -7.09081703,
+ ],
+ [
+ 'step' => 360.0,
+ 'x' => 2456.10705566,
+ 'y' => -6071.93853760,
+ 'z' => 1222.89727783,
+ 'vx' => 2.67938992,
+ 'vy' => -0.44829041,
+ 'vz' => -7.22879231,
+ ],
+ [
+ 'step' => 720.0,
+ 'x' => 2567.56195068,
+ 'y' => -6112.50384522,
+ 'z' => 713.96397400,
+ 'vx' => 2.44024599,
+ 'vy' => 0.09810869,
+ 'vz' => -7.31995916,
+ ],
+ [
+ 'step' => 1080.0,
+ 'x' => 2663.09078980,
+ 'y' => -6115.48229980,
+ 'z' => 196.39640427,
+ 'vx' => 2.19611958,
+ 'vy' => 0.65241995,
+ 'vz' => -7.36282432,
+ ],
+ [
+ 'step' => 1440.0,
+ 'x' => 2742.55133057,
+ 'y' => -6079.67144775,
+ 'z' => -326.38095856,
+ 'vx' => 1.94850229,
+ 'vy' => 1.21106251,
+ 'vz' => -7.35619372,
+ ],
+];
+
+$headers = [
+ 'step time',
+ 'label',
+ 'result',
+ 'expected',
+];
+
+$data = [];
+
+$file = file('tests/test-001.tle');
+$tle = new Predict_TLE($file[0], $file[1], $file[2]);
+$sat = new Predict_Sat($tle);
+$sgpsdp = new Predict_SGPSDP();
+
+$count = 0;
+foreach ($expected as $e) {
+ $sgpsdp->SGP4($sat, $e['step']);
+ Predict_Math::Convert_Sat_State($sat->pos, $sat->vel);
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = $e['step'];
+ $data[$count][1] = 'X';
+ $data[$count][2] = $sat->pos->x;
+ $data[$count][3] = $e['x'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'Y';
+ $data[$count][2] = $sat->pos->y;
+ $data[$count][3] = $e['y'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'Z';
+ $data[$count][2] = $sat->pos->z;
+ $data[$count][3] = $e['z'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'VX';
+ $data[$count][2] = $sat->vel->x;
+ $data[$count][3] = $e['vx'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'VY';
+ $data[$count][2] = $sat->vel->y;
+ $data[$count][3] = $e['vy'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'VZ';
+ $data[$count][2] = $sat->vel->z;
+ $data[$count][3] = $e['vz'];
+}
+// exit;
+
+$tbl = new Console_Table();
+$tbl->setHeaders($headers);
+$tbl->addData($data);
+
+echo 'DEEP_SPACE_EPHEM: '.($sat->flags & Predict_SGPSDP::DEEP_SPACE_EPHEM_FLAG)." (expected: 0)\n\n";
+
+echo $tbl->getTable();
+
+echo 'Execution time: '.number_format((microtime(true) - $start) * 1000, 2)."ms\n";
diff --git a/lib/predict/tests/test-001.tle b/lib/predict/tests/test-001.tle
new file mode 100644
index 0000000..2d8ac4e
--- /dev/null
+++ b/lib/predict/tests/test-001.tle
@@ -0,0 +1,3 @@
+TEST SAT SGP 001
+1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 9
+2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 103
diff --git a/lib/predict/tests/test-002.php b/lib/predict/tests/test-002.php
new file mode 100644
index 0000000..7bd08f4
--- /dev/null
+++ b/lib/predict/tests/test-002.php
@@ -0,0 +1,132 @@
+ 0.0,
+ 'x' => 7473.37066650,
+ 'y' => 428.95261765,
+ 'z' => 5828.74786377,
+ 'vx' => 5.1071513,
+ 'vy' => 6.44468284,
+ 'vz' => -0.18613096,
+ ],
+ [
+ 'step' => 360.0,
+ 'x' => -3305.22537232,
+ 'y' => 32410.86328125,
+ 'z' => -24697.17675781,
+ 'vx' => -1.30113538,
+ 'vy' => -1.15131518,
+ 'vz' => -0.28333528,
+ ],
+ [
+ 'step' => 720.0,
+ 'x' => 14271.28759766,
+ 'y' => 24110.46411133,
+ 'z' => -4725.76837158,
+ 'vx' => -0.32050445,
+ 'vy' => 2.67984074,
+ 'vz' => -2.08405289,
+ ],
+ [
+ 'step' => 1080.0,
+ 'x' => -9990.05883789,
+ 'y' => 22717.35522461,
+ 'z' => -23616.890662501,
+ 'vx' => -1.01667246,
+ 'vy' => -2.29026759,
+ 'vz' => 0.72892364,
+ ],
+ [
+ 'step' => 1440.0,
+ 'x' => 9787.86975097,
+ 'y' => 33753.34667969,
+ 'z' => -15030.81176758,
+ 'vx' => -1.09425966,
+ 'vy' => 0.92358845,
+ 'vz' => -1.52230928,
+ ],
+];
+
+$headers = [
+ 'step time',
+ 'label',
+ 'result',
+ 'expected',
+];
+
+$data = [];
+
+$file = file('tests/test-002.tle');
+$tle = new Predict_TLE($file[0], $file[1], $file[2]);
+$sat = new Predict_Sat($tle);
+$sgpsdp = new Predict_SGPSDP();
+
+$count = 0;
+foreach ($expected as $e) {
+ $sgpsdp->SGP4($sat, $e['step']);
+ Predict_Math::Convert_Sat_State($sat->pos, $sat->vel);
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = $e['step'];
+ $data[$count][1] = 'X';
+ $data[$count][2] = $sat->pos->x;
+ $data[$count][3] = $e['x'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'Y';
+ $data[$count][2] = $sat->pos->y;
+ $data[$count][3] = $e['y'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'Z';
+ $data[$count][2] = $sat->pos->z;
+ $data[$count][3] = $e['z'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'VX';
+ $data[$count][2] = $sat->vel->x;
+ $data[$count][3] = $e['vx'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'VY';
+ $data[$count][2] = $sat->vel->y;
+ $data[$count][3] = $e['vy'];
+
+ ++$count;
+ $data[$count] = [];
+ $data[$count][0] = '';
+ $data[$count][1] = 'VZ';
+ $data[$count][2] = $sat->vel->z;
+ $data[$count][3] = $e['vz'];
+}
+// exit;
+
+$tbl = new Console_Table();
+$tbl->setHeaders($headers);
+$tbl->addData($data);
+
+echo 'DEEP_SPACE_EPHEM: '.($sat->flags & Predict_SGPSDP::DEEP_SPACE_EPHEM_FLAG)." (expected: 64)\n\n";
+
+echo $tbl->getTable();
+
+echo 'Execution time: '.number_format((microtime(true) - $start) * 1000, 2)."ms\n";
diff --git a/lib/predict/tests/test-002.tle b/lib/predict/tests/test-002.tle
new file mode 100644
index 0000000..e7faff7
--- /dev/null
+++ b/lib/predict/tests/test-002.tle
@@ -0,0 +1,4 @@
+TEST SAT SDP 001
+1 11801U 80230.29629788 .01431103 00000-0 14311-1 0 2
+2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 2
+
diff --git a/tests/.gitignore b/migrations/.gitignore
similarity index 100%
rename from tests/.gitignore
rename to migrations/.gitignore
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..c125eb0
--- /dev/null
+++ b/package.json
@@ -0,0 +1,81 @@
+{
+ "name": "tle-frontend",
+ "author": "Ivan Stanojevic",
+ "email": "ivanstan@gmail.com",
+ "version": "0.1.0",
+ "private": true,
+ "license": "GNU GPLv3",
+ "dependencies": {
+ "@babel/polyfill": "^7.12.1",
+ "@date-io/date-fns": "1.x",
+ "@material-ui/core": "^4.11.3",
+ "@material-ui/data-grid": "^4.0.0-alpha.23",
+ "@material-ui/icons": "^4.11.2",
+ "@material-ui/lab": "^4.0.0-alpha.57",
+ "@material-ui/pickers": "^3.3.10",
+ "@sentry/react": "^6.2.5",
+ "@testing-library/jest-dom": "^5.11.4",
+ "@testing-library/react": "^11.1.0",
+ "@testing-library/user-event": "^12.1.10",
+ "@types/jest": "^26.0.15",
+ "@types/node": "^12.0.0",
+ "@types/react": "^17.0.0",
+ "@types/react-dom": "^17.0.0",
+ "@types/react-router-dom": "^5.1.7",
+ "chart.js": "^2.9.4",
+ "computed-async-mobx": "^7.0.1-beta.1",
+ "core-js": "^3.8.3",
+ "date-fns": "^2.23.0",
+ "json-loader": "^0.5.7",
+ "luxon": "^1.28.1",
+ "mobx": "^6.1.5",
+ "mobx-utils": "^6.0.4",
+ "react": "^17.0.1",
+ "react-chartjs-2": "^2.11.1",
+ "react-copy-to-clipboard": "^5.0.3",
+ "react-dom": "^17.0.1",
+ "react-full-page": "^0.1.11",
+ "react-google-maps": "^9.4.5",
+ "react-if": "^4.0.1",
+ "react-router": "^5.2.0",
+ "react-router-dom": "^5.2.0",
+ "react-scripts": "4.0.3",
+ "redoc": "^2.0.0-rc.48",
+ "satellite.js": "^4.1.3",
+ "styled-components": "^5.3.0",
+ "tle-client": "ivanstan/tle.js",
+ "typescript": "^4.1.2",
+ "web-vitals": "^1.0.1"
+ },
+ "scripts": {
+ "start": "react-app-rewired start",
+ "build": "react-app-rewired build",
+ "test": "react-app-rewired test",
+ "eject": "react-scripts eject",
+ "deploy": "sh bin/deploy-frontend"
+ },
+ "eslintConfig": {
+ "extends": [
+ "react-app",
+ "react-app/jest"
+ ]
+ },
+ "browserslist": {
+ "production": [
+ ">0.2%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 safari version"
+ ]
+ },
+ "devDependencies": {
+ "@types/luxon": "^1.26.4",
+ "@types/react-copy-to-clipboard": "^5.0.0",
+ "@types/styled-components": "^5.1.9",
+ "react-app-rewired": "^2.1.8"
+ }
+}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 5b7c820..3ec5168 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -2,17 +2,19 @@
+
-
+
@@ -21,11 +23,17 @@
-
-
- src
-
-
+
+
+ src
+
+
+
+ src/Migrations
+ src/DataFixtures
+ src/Kernel.php
+
+
diff --git a/pint.json b/pint.json
new file mode 100644
index 0000000..8f36a38
--- /dev/null
+++ b/pint.json
@@ -0,0 +1,3 @@
+{
+ "preset": "symfony"
+}
diff --git a/public/.htaccess b/public/.htaccess
index 37fbfb3..02aea7f 100644
--- a/public/.htaccess
+++ b/public/.htaccess
@@ -3,13 +3,13 @@
# mod_rewrite). Additionally, this reduces the matching process for the
# start page (path "/") because otherwise Apache will apply the rewriting rules
# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
-#DirectoryIndex index.php
+DirectoryIndex index.php
# By default, Apache does not evaluate symbolic links if you did not enable this
# feature in your server configuration. Uncomment the following line if you
# install assets as symlinks or if you experience problems related to symlinks
# when compiling LESS/Sass/CoffeScript assets.
-# Options FollowSymlinks
+# Options +FollowSymlinks
# Disabling MultiViews prevents unwanted negotiation, e.g. "/index" should not resolve
# to the front controller "/index.php" but be rewritten to "/index.php/index".
@@ -17,6 +17,37 @@
Options -MultiViews
+
+ # Compress HTML, CSS, JavaScript, Text, XML and fonts
+ AddOutputFilterByType DEFLATE application/javascript
+ AddOutputFilterByType DEFLATE application/rss+xml
+ AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
+ AddOutputFilterByType DEFLATE application/x-font
+ AddOutputFilterByType DEFLATE application/x-font-opentype
+ AddOutputFilterByType DEFLATE application/x-font-otf
+ AddOutputFilterByType DEFLATE application/x-font-truetype
+ AddOutputFilterByType DEFLATE application/x-font-ttf
+ AddOutputFilterByType DEFLATE application/x-javascript
+ AddOutputFilterByType DEFLATE application/xhtml+xml
+ AddOutputFilterByType DEFLATE application/xml
+ AddOutputFilterByType DEFLATE font/opentype
+ AddOutputFilterByType DEFLATE font/otf
+ AddOutputFilterByType DEFLATE font/ttf
+ AddOutputFilterByType DEFLATE image/svg+xml
+ AddOutputFilterByType DEFLATE image/x-icon
+ AddOutputFilterByType DEFLATE text/css
+ AddOutputFilterByType DEFLATE text/html
+ AddOutputFilterByType DEFLATE text/javascript
+ AddOutputFilterByType DEFLATE text/plain
+ AddOutputFilterByType DEFLATE text/xml
+
+ # Remove browser bugs (only needed for really old browsers)
+ BrowserMatch ^Mozilla/4 gzip-only-text/html
+ BrowserMatch ^Mozilla/4\.0[678] no-gzip
+ BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
+ Header append Vary User-Agent
+
+
RewriteEngine On
@@ -34,6 +65,9 @@
RewriteCond %{HTTP:Authorization} .+
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
+ RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
+ RewriteRule ^ https://%1%{REQUEST_URI} [R=302,L]
+
# Redirect to URI without front controller to prevent duplicate content
# (with and without `/index.php`). Only do this redirect on the initial
# rewrite by Apache and not on subsequent cycles. Otherwise we would get an
@@ -55,6 +89,8 @@
RewriteRule ^ %{ENV:BASE}/index.php [L]
+Header add Access-Control-Allow-Origin "*"
+
# When mod_rewrite is not available, we instruct a temporary redirect of
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..33601c5
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..e69de29
diff --git a/public/index.php b/public/index.php
index f094a9b..c0037a8 100644
--- a/public/index.php
+++ b/public/index.php
@@ -1,27 +1,9 @@
handle($request);
-$response->send();
-$kernel->terminate($request, $response);
+return static function (array $context) {
+ return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
+};
diff --git a/src/Command/CleanupCommand.php b/src/Command/CleanupCommand.php
new file mode 100644
index 0000000..4c7901a
--- /dev/null
+++ b/src/Command/CleanupCommand.php
@@ -0,0 +1,29 @@
+repository->removeBefore(
+ (new \DateTime())->sub(new \DateInterval('P2M'))
+ );
+
+ return Command::SUCCESS;
+ }
+}
diff --git a/src/Command/DoctrineReloadCommand.php b/src/Command/DoctrineReloadCommand.php
deleted file mode 100644
index 784de82..0000000
--- a/src/Command/DoctrineReloadCommand.php
+++ /dev/null
@@ -1,79 +0,0 @@
- 'Yes',
- 'n' => 'No',
- ];
-
- private static array $envs = [
- 'dev',
- 'test',
- ];
-
- private string $env;
-
- public function __construct($env)
- {
- parent::__construct();
- $this->env = $env;
- }
-
- protected function configure(): void
- {
- $this->setDescription('Purge database, execute migrations and load fixtures');
- }
-
- protected function execute(InputInterface $input, OutputInterface $output): int
- {
- $io = new SymfonyStyle($input, $output);
- $helper = $this->getHelper('question');
- $question = new ChoiceQuestion('All data will be lost. Do you wish to continue?', self::$choices, false);
-
- if (!\in_array($this->env, self::$envs, true)) {
- $io->warning('This is intended only for use in dev environment.');
-
- return 1;
- }
-
- $application = $this->getApplication();
-
- if ($application === null) {
- return 1;
- }
-
- if ($input->getOption('no-interaction') || $helper->ask($input, $output, $question) === 'y') {
- $application->setAutoExit(false);
-
- $io->writeln('Drop database');
- $options = ['command' => 'doctrine:database:drop', '--force' => true];
- $application->run(new ArrayInput($options));
-
- $io->writeln('Create database');
- $options = ['command' => 'doctrine:database:create', '--if-not-exists' => true];
- $application->run(new ArrayInput($options));
-
- $io->writeln('Execute migrations');
- $options = ['command' => 'doctrine:migration:migrate', '--no-interaction' => true];
- $application->run(new ArrayInput($options));
-
- $io->writeln('Load fixtures');
- $options = ['command' => 'doctrine:fixtures:load', '--no-interaction' => true];
- $application->run(new ArrayInput($options));
- }
-
- return 0;
- }
-}
diff --git a/src/Command/ImportTleCommand.php b/src/Command/ImportTleCommand.php
index 4d099ff..1733ce7 100644
--- a/src/Command/ImportTleCommand.php
+++ b/src/Command/ImportTleCommand.php
@@ -1,145 +1,181 @@
-em = $em;
- $this->repository = $repository;
- }
-
- /** @noinspection PhpMissingParentCallCommonInspection */
- protected function configure(): void
- {
- $this->setName('import:tle');
- }
-
- /** @noinspection PhpMissingParentCallCommonInspection */
- protected function execute(InputInterface $input, OutputInterface $output): int
- {
- $this->output = $output;
- $this->satellites = $this->repository->fetchAllIndexed();
-
- $totalInsert = 0;
- $totalUpdate = 0;
-
- $sources = Yaml::parseFile($this->getProjectDir() . self::SOURCE);
-
- $progressBar = new ProgressBar($output, \count($sources));
- $progressBar->start();
-
- foreach ($sources as $uri) {
- /** @noinspection DisconnectedForeachInstructionInspection */
- $progressBar->advance();
-
- $content = file_get_contents($uri);
-
- if (!$content) {
- continue;
- }
-
- $file = new TleFile($content);
-
- $insert = [];
- $update = [];
-
- foreach ($file->parse() as $tle) {
- if (\array_key_exists($tle->getId(), $this->satellites)) {
- $update[$tle->getId()] = $tle;
- } else {
- $insert[$tle->getId()] = $tle;
- }
- }
-
- $totalInsert += \count($insert);
- $totalUpdate += \count($update);
-
- $this->flush($insert, true);
- $this->flush($update);
-
- }
-
- $progressBar->finish();
- $output->writeln('');
- $output->writeln('');
-
- $table = new Table($output);
- $table
- ->setHeaders([
- 'Output'
- ])
- ->setStyle('box')
- ->setRows(
- [
- [
- 'TLE records persisted to database',
- $totalInsert,
- ],
- [
- 'TLE records updated in database',
- $totalUpdate,
- ],
- ]
- );
- $table->render();
-
- return 0;
- }
-
- protected function toPersistent(TleModel $model): Tle
- {
- $tle = new Tle();
- $tle->setId($model->getId());
- $tle->setLine1($model->getLine1());
- $tle->setLine2($model->getLine2());
- $tle->setName($model->getName());
-
- return $tle;
- }
-
- protected function flush(array $queue, $persistNew = null): void
- {
- $counter = 0;
- foreach ($queue as $model) {
- $tle = $this->toPersistent($model);
- $this->satellites[$model->getId()] = $tle;
-
- if ($persistNew) {
- $this->em->persist($tle);
- }
-
- if (($counter % self::BATCH_SIZE) === 0) {
- $this->em->flush();
- }
- ++$counter;
- }
- $this->em->flush();
- }
-}
+addOption(self::OPTION_NO_PROGRESS, null, InputOption::VALUE_OPTIONAL, 'Hide progress bar', false);
+ }
+
+ /** @noinspection PhpMissingParentCallCommonInspection */
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $showProgress = false === $input->getOption(self::OPTION_NO_PROGRESS);
+
+ $this->satellites = $this->repository->fetchAllIndexed();
+
+ $totalInsert = 0;
+ $totalUpdate = 0;
+
+ $sources = Yaml::parseFile($this->getProjectDir().self::SOURCE);
+
+ if ($showProgress) {
+ $progressBar = new ProgressBar($output, \count($sources));
+ $progressBar->start();
+ }
+
+ foreach ($sources as $uri) {
+ /* @noinspection DisconnectedForeachInstructionInspection */
+ if (isset($progressBar)) {
+ $progressBar->advance();
+ }
+
+ try {
+ $response = (new Client())->request('GET', $uri);
+ } catch (\Exception $exception) {
+ $message = \sprintf('Unable to fetch resource "%s" with exception message "%s"', $uri, $exception->getMessage());
+
+ $this->logger->error($message);
+ $output->writeln($message);
+ continue;
+ }
+
+ if (!$response->getBody()) {
+ $message = \sprintf('URI "%s" returned empty body, skipping', $uri);
+
+ $this->logger->error($message);
+ $output->writeln($message);
+ continue;
+ }
+
+ $file = new TleFile($response->getBody());
+
+ $insert = [];
+ $update = [];
+
+ foreach ($file->parse() as $tle) {
+ if (null === $tle) {
+ continue;
+ }
+
+ if (\array_key_exists($tle->getId(), $this->satellites)) {
+ $update[$tle->getId()] = $tle;
+ } else {
+ $insert[$tle->getId()] = $tle;
+ }
+ }
+
+ $totalInsert += \count($insert);
+ $totalUpdate += \count($update);
+
+ $this->flush($insert, true);
+ $this->flush($update);
+ }
+
+ if (isset($progressBar)) {
+ $progressBar->finish();
+ }
+ $output->writeln('');
+ $output->writeln('');
+
+ $table = new Table($output);
+ $table
+ ->setHeaders(
+ [
+ 'Output',
+ ]
+ )
+ ->setStyle('box')
+ ->setRows(
+ [
+ [
+ 'TLE records persisted to database',
+ $totalInsert,
+ ],
+ [
+ 'TLE records updated in database',
+ $totalUpdate,
+ ],
+ ]
+ );
+ $table->render();
+
+ return Command::SUCCESS;
+ }
+
+ protected function toPersistent(TleModel $model): Tle
+ {
+ $tle = new Tle();
+ $tle->setId($model->getId());
+ $tle->setLine1($model->getLine1());
+ $tle->setLine2($model->getLine2());
+ $tle->setName($model->getName());
+
+ return $tle;
+ }
+
+ protected function flush(array $queue, $persistNew = null): void
+ {
+ $counter = 0;
+ /** @var TleModel $model */
+ foreach ($queue as $model) {
+ if (!$persistNew) {
+ /** @var Tle $existing */
+ $existing = $this->satellites[$model->getId()];
+ $existing->setName($model->getName());
+ $existing->setId($model->getId());
+ $existing->setLine1($model->getLine1());
+ $existing->setLine2($model->getLine2());
+ }
+
+ if ($persistNew) {
+ $tle = $this->toPersistent($model);
+ $this->satellites[$model->getId()] = $tle;
+ $this->em->persist($tle);
+ }
+
+ if (($counter % self::BATCH_SIZE) === 0) {
+ $this->em->flush();
+ }
+ ++$counter;
+ }
+ $this->em->flush();
+ }
+}
diff --git a/src/Command/TleCalculate.php b/src/Command/TleCalculate.php
new file mode 100644
index 0000000..874f049
--- /dev/null
+++ b/src/Command/TleCalculate.php
@@ -0,0 +1,83 @@
+addOption(self::OPTION_TLE, 't', InputOption::VALUE_REQUIRED, 'Calculate only for specified record');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $builder = $this->entityManager
+ ->createQueryBuilder()
+ ->select('tle')
+ ->from(Tle::class, 'tle');
+
+ $tle = $input->getOption(self::OPTION_TLE);
+
+ if (null !== $tle) {
+ $builder->andWhere('tle.id = :tle');
+ $builder->setParameter('tle', $tle);
+ }
+
+ $repository = $this->entityManager->getRepository(TleInformation::class);
+
+ /** @var Tle $tle */
+ foreach ($builder->getQuery()->toIterable() as $i => $tle) {
+ $exists = true;
+
+ $tleInformation = $repository->find($tle->getId());
+
+ if (null === $tleInformation) {
+ $exists = false;
+ $tleInformation = new TleInformation($tle);
+ }
+
+ $tleModel = new \Ivanstan\Tle\Model\Tle($tle->getLine1(), $tle->getLine2(), $tle->getName());
+
+ $tleInformation->inclination = $tleModel->getInclination();
+ $tleInformation->eccentricity = $tleModel->eccentricity();
+ $tleInformation->period = $tleModel->period();
+ $tleInformation->geostationary = (new GeostationaryOrbitTleSpecification())->isSatisfiedBy($tleModel);
+ $tleInformation->raan = $tleModel->raan();
+ $tleInformation->semiMajorAxis = $tleModel->semiMajorAxis();
+
+ if (!$exists) {
+ $this->entityManager->persist($tleInformation);
+ }
+
+ if (($i % self::BATCH_SIZE) === 0) {
+ $this->entityManager->flush();
+ $this->entityManager->clear();
+ }
+ }
+
+ $this->entityManager->flush();
+
+ return Command::SUCCESS;
+ }
+}
diff --git a/src/Command/UpdateImportSources.php b/src/Command/UpdateImportSources.php
new file mode 100644
index 0000000..b75972b
--- /dev/null
+++ b/src/Command/UpdateImportSources.php
@@ -0,0 +1,150 @@
+io = new SymfonyStyle($input, $output);
+
+ $sourceFile = $this->getProjectDir().ImportTleCommand::SOURCE;
+
+ $this->sources = Yaml::parseFile($sourceFile);
+
+ $newSources = $this->getSources();
+
+ $diff = array_diff($newSources, $this->sources);
+
+ if (empty($diff)) {
+ $this->io->success('No new tle sources found');
+
+ return Command::SUCCESS;
+ }
+
+ $this->io->writeln('');
+ $this->io->writeln(\sprintf('Following new tle sources found and written to %s', $sourceFile));
+ $this->io->writeln('');
+ foreach ($diff as $url) {
+ $this->io->writeln($url);
+ }
+
+ $this->io->writeln('');
+
+ $sources = array_merge($this->sources, $diff);
+ sort($sources);
+
+ $yaml = Yaml::dump($sources);
+
+ file_put_contents($sourceFile, $yaml);
+
+ return Command::SUCCESS;
+ }
+
+ protected function getSources(): array
+ {
+ $result = [];
+
+ foreach (self::CATALOG as $catalog) {
+ $response = (new Client())->request('GET', $catalog);
+
+ $crawler = new Crawler($response->getBody()->getContents());
+
+ /** @var DOMElement $anchor */
+ foreach ($crawler->filter('a') as $anchor) {
+ $href = $anchor->getAttribute('href');
+ $path = parse_url($href, PHP_URL_PATH);
+
+ if (null === $path) {
+ continue;
+ }
+
+ $extension = pathinfo($path, PATHINFO_EXTENSION);
+
+ if ('txt' === $extension) {
+ if (null === parse_url($href, PHP_URL_HOST)) {
+ /* @noinspection PhpArrayKeyDoesNotMatchArrayShapeInspection */
+ if ('/' === $path[0]) {
+ $scheme = parse_url($catalog, PHP_URL_SCHEME);
+ $host = parse_url($catalog, PHP_URL_HOST);
+ $href = $scheme.'://'.$host.$href;
+ } else {
+ $href = $catalog.trim($href, '/');
+ }
+ }
+
+ if (!$this->isIgnored($href)) {
+ $this->io->writeln(\sprintf('Verifying url: %s', $href));
+ if ($this->isHealthy($href)) {
+ $result[] = $href;
+ }
+ }
+ }
+ }
+ }
+
+ return $result;
+ }
+
+ protected function isIgnored(string $url): bool
+ {
+ return in_array($url, self::IGNORED, false) || in_array($this->sources, self::IGNORED, false);
+ }
+
+ protected function isHealthy(string $url): bool
+ {
+ try {
+ $response = (new Client())->request('GET', $url);
+
+ return 200 === $response->getStatusCode();
+ } catch (\Exception) {
+ return false;
+ }
+ }
+}
diff --git a/src/Controller/AbstractApiController.php b/src/Controller/AbstractApiController.php
new file mode 100644
index 0000000..cbd1949
--- /dev/null
+++ b/src/Controller/AbstractApiController.php
@@ -0,0 +1,30 @@
+router = $router;
+ }
+
+ public function response(array $data): JsonResponse
+ {
+ return new JsonResponse(
+ $data,
+ Response::HTTP_OK,
+ );
+ }
+}
diff --git a/src/Controller/Api/AbstractApiController.php b/src/Controller/Api/AbstractApiController.php
deleted file mode 100644
index 90e4743..0000000
--- a/src/Controller/Api/AbstractApiController.php
+++ /dev/null
@@ -1,170 +0,0 @@
-serializer = $serializer;
- }
-
- /**
- * @required
- *
- * @param RouterInterface $router
- */
- public function setRouter(RouterInterface $router): void
- {
- $this->router = $router;
- }
-
- public function getSort(Request $request, string $default, array $available): string
- {
- if ($request->get(self::SORT_PARAM) && \in_array($request->get(self::SORT_PARAM), $available, true)) {
- $default = strtolower($request->get('sort'));
- }
-
- return $default;
- }
-
- public function getSortDirection(Request $request, string $default): string
- {
- if ($request->get(self::SORT_DIR_PARAM) && \in_array(
- $request->get(self::SORT_DIR_PARAM),
- self::$sortDirection,
- true
- )) {
- $default = strtolower($request->get(self::SORT_DIR_PARAM));
- }
-
- return $default;
- }
-
- public function getPageSize(Request $request, int $default = self::PAGE_SIZE): int
- {
- if ($request->get(self::PAGE_SIZE_PARAM) && \is_numeric($request->get(self::PAGE_SIZE_PARAM))) {
- $default = $request->get(self::PAGE_SIZE_PARAM);
- }
-
- return $default;
- }
-
- public function getPage(Request $request): int
- {
- $page = $request->get(self::PAGE_PARAM, 1);
-
- if ($page < 1) {
- throw new \LogicException('Page parameter must be greater than zero.');
- }
-
- return $page;
- }
-
- public function getPageOffset(int $page, int $pageSize): int
- {
- $offset = 0;
- if ($page > 1) {
- $offset = ($page - 1) * $pageSize;
- }
-
- return $offset;
- }
-
- public function getPagination(Request $request, int $total, int $pageSize): array
- {
- $params = $request->query->all();
-
- $page = $this->getPage($request);
- $pages = max(1, ceil($total / $pageSize));
-
- $nextPage = $page;
- if ($page < $pages) {
- $nextPage = $page + 1;
- }
-
- $previousPage = $page;
- if ($page > 1) {
- $previousPage = $page - 1;
- }
-
- $result = [
- '@id' => $this->router->generate(
- $request->attributes->get('_route'),
- array_merge($params, ['page' => $page]),
- UrlGeneratorInterface::ABSOLUTE_URL
- ),
- '@type' => 'PartialCollectionView',
- 'first' => $this->router->generate(
- $request->attributes->get('_route'),
- array_merge($params, ['page' => 1]),
- UrlGeneratorInterface::ABSOLUTE_URL
- ),
- 'previous' => $this->router->generate(
- $request->attributes->get('_route'),
- array_merge($params, ['page' => $previousPage]),
- UrlGeneratorInterface::ABSOLUTE_URL
- ),
- 'next' => $this->router->generate(
- $request->attributes->get('_route'),
- array_merge($params, ['page' => $nextPage]),
- UrlGeneratorInterface::ABSOLUTE_URL
- ),
- 'last' => $this->router->generate(
- $request->attributes->get('_route'),
- array_merge($params, ['page' => $pages]),
- UrlGeneratorInterface::ABSOLUTE_URL
- ),
- ];
-
- if ($page === 1) {
- unset($result['previous']);
- }
-
- if ($page === $nextPage) {
- unset($result['next']);
- }
-
- return $result;
- }
-
- public function response($response): Response
- {
- return new Response(
- $this->serializer->serialize($response, 'json'),
- Response::HTTP_OK,
- [
- 'Content-type' => 'application/json',
- 'Access-Control-Allow-Origin' => '*',
- ]
- );
- }
-}
diff --git a/src/Controller/Api/TleController.php b/src/Controller/Api/TleController.php
deleted file mode 100644
index 516f8ad..0000000
--- a/src/Controller/Api/TleController.php
+++ /dev/null
@@ -1,73 +0,0 @@
-findOneBy(['id' => $id]);
-
- if ($tle === null) {
- throw new NotFoundHttpException(\sprintf('Unable to find record with id %s', $id));
- }
-
- return $this->response($tle);
- }
-
- /**
- * @Route(name="tle_collection")
- */
- public function collection(Request $request, TleRepository $repository): Response
- {
- $search = $request->get(self::SEARCH_PARAM);
- $sort = $this->getSort($request, TleRepository::SORT_NAME, TleRepository::$sort);
- $sortDir = $this->getSortDirection($request, self::SORT_ASC);
- $pageSize = min($this->getPageSize($request, self::PAGE_SIZE), self::MAX_PAGE_SIZE);
-
- $collection = $repository->collection(
- $search,
- $sort,
- $sortDir,
- $pageSize,
- $this->getPageOffset($this->getPage($request), $pageSize)
- );
-
- return $this->response(
- [
- '@context' => 'http://www.w3.org/ns/hydra/context.jsonld',
- '@id' => $this->router->generate('tle_collection', [], UrlGeneratorInterface::ABSOLUTE_URL),
- '@type' => 'Collection',
- 'totalItems' => $collection->getTotal(),
- 'member' => $collection->getCollection(),
- 'parameters' => [
- self::SEARCH_PARAM => $search ?? '*',
- self::SORT_PARAM => $sort,
- self::SORT_DIR_PARAM => $sortDir,
- self::PAGE_PARAM => $this->getPage($request),
- self::PAGE_SIZE_PARAM => $pageSize,
- ],
- 'view' => $this->getPagination($request, $collection->getTotal(), $pageSize),
- ]
- );
- }
-}
diff --git a/src/Controller/ApiController.php b/src/Controller/ApiController.php
deleted file mode 100644
index af187a7..0000000
--- a/src/Controller/ApiController.php
+++ /dev/null
@@ -1,26 +0,0 @@
-getProjectDir() . '/config/custom/' . $name . '.json';
-
- $file = json_decode(file_get_contents($path), true, 512, JSON_THROW_ON_ERROR);
-
- return new JsonResponse($file, Response::HTTP_OK, ['Access-Control-Allow-Origin' => '*',]);
- }
-}
diff --git a/src/Controller/DocsController.php b/src/Controller/DocsController.php
new file mode 100644
index 0000000..3d1e582
--- /dev/null
+++ b/src/Controller/DocsController.php
@@ -0,0 +1,32 @@
+getProjectDir().'/public/index.html'));
+ }
+
+ #[Route('/api/tle.json', name: 'app_api_docs_json')]
+ public function getJson(): JsonResponse
+ {
+ return new JsonResponse($this->service->get('/etc/custom/tle.json'), Response::HTTP_OK, ['Access-Control-Allow-Origin' => '*']);
+ }
+}
diff --git a/src/Controller/FlyOverController.php b/src/Controller/FlyOverController.php
new file mode 100644
index 0000000..3ec5cb6
--- /dev/null
+++ b/src/Controller/FlyOverController.php
@@ -0,0 +1,131 @@
+ "\d+"])]
+ public function flyover(
+ FlyOverRequest $request
+ ): JsonResponse {
+ $observer = $request->getObserver();
+ $tle = $request->getTle();
+
+ $date = $request->getDateTime();
+
+ $this->service
+ ->setObserver($observer)
+ ->setTle($tle);
+
+ $results = $this->service->getPasses($date, $request->filterVisible());
+
+ $parameters = [
+ 'latitude' => $observer->latitude,
+ 'longitude' => $observer->longitude,
+ 'only_visible' => $request->filterVisible(),
+ 'date' => $date->format(DateTimeInterface::ATOM),
+ ];
+
+ $url = $this->router->generate(
+ 'tle_flyover',
+ [...$request->request->all(), 'id' => $request->getId(), ...$parameters],
+ UrlGeneratorInterface::ABSOLUTE_URL
+ );
+
+ $parameters['satelliteId'] = $request->getId();
+
+ $members = $this->normalizer->normalize($results, null, ['timezone' => $observer->getTimezone()]);
+
+ foreach ($members as $index => &$member) {
+ $item = [
+ '@id' => $this->generateUrl('tle_flyover_details', [
+ 'id' => $request->getId(),
+ 'passId' => $index + 1,
+ 'latitude' => $observer->latitude,
+ 'longitude' => $observer->longitude,
+ 'only_visible' => $request->filterVisible(),
+ 'date' => $date->format(DateTimeInterface::ATOM),
+ ], UrlGeneratorInterface::ABSOLUTE_URL),
+ ];
+
+ $member = $item + $member;
+ }
+
+ return $this->response(
+ [
+ '@context' => self::HYDRA_CONTEXT,
+ '@id' => $url,
+ '@type' => 'SatelliteFlyOverCollection',
+ 'observer' => $this->normalizer->normalize($observer),
+ 'tle' => $this->normalizer->normalize($tle),
+ 'member' => $members,
+ 'parameters' => $parameters,
+ ]
+ );
+ }
+
+ #[Route('/api/tle/{id}/flyover/{passId}', name: 'tle_flyover_details', requirements: ['id' => "\d+", 'passId' => "\d+"])]
+ public function flyoverDetails(
+ int $passId,
+ FlyOverRequest $request,
+ ): JsonResponse {
+ $observer = $request->getObserver();
+ $tle = $request->getTle();
+
+ $this->service
+ ->setObserver($observer)
+ ->setTle($tle);
+
+ $date = $request->getDateTime();
+
+ $results = $this->service->getPasses($date, $request->filterVisible());
+
+ $pass = $results[$passId - 1] ?? null;
+
+ if (null === $pass) {
+ throw new NotFoundHttpException('Unable to find requested flyover details');
+ }
+
+ $url = $this->router->generate(
+ 'tle_flyover_details',
+ [
+ ...$request->request->all(),
+ 'id' => $request->getId(),
+ 'passId' => $passId,
+ 'latitude' => $observer->latitude,
+ 'longitude' => $observer->longitude,
+ 'only_visible' => $request->filterVisible(),
+ 'date' => $date->format(DateTimeInterface::ATOM),
+ ],
+ UrlGeneratorInterface::ABSOLUTE_URL
+ );
+
+ return $this->response(
+ [
+ '@context' => self::HYDRA_CONTEXT,
+ '@id' => $url,
+ 'observer' => $this->normalizer->normalize($observer),
+ 'tle' => $this->normalizer->normalize($tle),
+ ...$this->normalizer->normalize($pass, null, ['timezone' => $observer->getTimezone(), 'details' => true]
+ ),
+ ]
+ );
+ }
+}
diff --git a/src/Controller/PropagateController.php b/src/Controller/PropagateController.php
new file mode 100644
index 0000000..26f996e
--- /dev/null
+++ b/src/Controller/PropagateController.php
@@ -0,0 +1,97 @@
+propagator = new \Predict_SGPSDP();
+ }
+
+ #[Route('/api/tle/{id}/propagate', name: 'tle_propagate', requirements: ['id' => "\d+"])]
+ public function propagate(
+ PropagateRequest $request,
+ NormalizerInterface $normalizer
+ ): JsonResponse {
+ $tle = $request->getTle();
+
+ $tleModel = new TleModel($tle->getLine1(), $tle->getLine2(), $tle->getName());
+ $sat = new \Predict_Sat(new \Predict_TLE($tle->getName(), $tle->getLine1(), $tle->getLine2()));
+
+ $datetime = $request->getDateTime();
+ $deltaT = ($datetime->getTimestamp() - $tleModel->epochDateTime()->getTimestamp()) / 60; // minutes
+
+ $algorithm = ($tleModel->period() / 60) > self::DEEP_SATELLITE_PERIOD ? PropagatorAlgorithm::SDP4 : PropagatorAlgorithm::SGP4;
+
+ $this->propagator->$algorithm($sat, $deltaT);
+
+ \Predict_Math::Convert_Sat_State($sat->pos, $sat->vel);
+
+ $sat_geodetic = new \Predict_Geodetic();
+ \Predict_SGPObs::Calculate_LatLonAlt(\Predict_Time::unix2daynum($datetime->getTimestamp()), $sat->pos, $sat_geodetic);
+
+ $sat_geodetic->lat = rad2deg($sat_geodetic->lat);
+ $sat_geodetic->lon = rad2deg($sat_geodetic->lon);
+
+ $parameters = [
+ 'date' => $datetime->format(\DateTimeInterface::ATOM),
+ ];
+
+ $url = $this->router->generate(
+ 'tle_propagate',
+ array_merge($request->request->all(), $parameters, ['id' => $request->getId()]),
+ UrlGeneratorInterface::ABSOLUTE_URL
+ );
+
+ $parameters['satelliteId'] = $request->getId();
+
+ $data = [
+ '@context' => self::HYDRA_CONTEXT,
+ '@id' => $url,
+ '@type' => 'SatellitePropagationResult',
+ 'tle' => $tle,
+ 'algorithm' => $algorithm,
+ 'vector' => [
+ 'reference_frame' => 'ECI',
+ 'position' => [
+ 'x' => $sat->pos->x,
+ 'y' => $sat->pos->y,
+ 'z' => $sat->pos->z,
+ 'r' => $sat->pos->w,
+ 'unit' => 'km',
+ ],
+ 'velocity' => [
+ 'x' => $sat->vel->x,
+ 'y' => $sat->vel->y,
+ 'z' => $sat->vel->z,
+ 'r' => $sat->vel->w,
+ 'unit' => 'km/s',
+ ],
+ ],
+ 'geodetic' => [
+ 'latitude' => $sat_geodetic->lat,
+ 'longitude' => $sat_geodetic->lon,
+ 'altitude' => $sat_geodetic->alt,
+ ],
+ 'parameters' => $parameters,
+ ];
+
+ return $this->response(
+ $normalizer->normalize($data)
+ );
+ }
+}
diff --git a/src/Controller/StatisticsController.php b/src/Controller/StatisticsController.php
new file mode 100644
index 0000000..8c42b6e
--- /dev/null
+++ b/src/Controller/StatisticsController.php
@@ -0,0 +1,66 @@
+setTime(0, 0);
+ $newerThan->modify('-3 days');
+
+ $qb = $em->createQueryBuilder();
+
+ $qb->select(
+ [
+ 'DATE_FORMAT(r.createdAt, \'%Y-%m-%d\') as date',
+ 'ROUND(CAST(DATE_FORMAT(r.createdAt, \'%H\') AS UNSIGNED) / :interval) as hour',
+ 'COUNT(r.id) as hits',
+ ]
+ );
+
+ $qb
+ ->from(Request::class, 'r')
+ ->where('r.createdAt > :newerThan')
+ ->setParameter('newerThan', $newerThan)
+ ->groupBy('date, hour')
+ ->setParameter('interval', self::INTERVAL);
+
+ /** @var Request[] $result */
+ $result = $qb->getQuery()->getResult();
+
+ $response = [];
+ foreach ($result as $key => &$item) {
+ if ('0' === $item['hour']) {
+ $previousKey = $key - 1;
+ if (isset($result[$previousKey])) {
+ $result[$previousKey]['hits'] = $item['hits'];
+ }
+
+ unset($result[$key]);
+ }
+
+ $date = new \DateTime($item['date']);
+ $date->setTime((int) $item['hour'] * self::INTERVAL, 0);
+
+ $response[$date->format(\DateTimeInterface::ATOM)] = $item['hits'];
+ }
+
+ return new JsonResponse(
+ $response,
+ Response::HTTP_OK,
+ );
+ }
+}
diff --git a/src/Controller/TleController.php b/src/Controller/TleController.php
new file mode 100644
index 0000000..e9d0a15
--- /dev/null
+++ b/src/Controller/TleController.php
@@ -0,0 +1,54 @@
+ "\d+"])]
+ public function record(
+ TleRequest $request,
+ NormalizerInterface $normalizer,
+ ): JsonResponse {
+ return $this->response(
+ [
+ '@context' => self::HYDRA_CONTEXT,
+ ...$normalizer->normalize($request->getTle(), null, [TleRequest::EXTRA_PARAM => $request->getExtra()]),
+ ]
+ );
+ }
+
+ #[Route('/', name: 'tle_collection')]
+ public function collection(
+ TleCollectionRequest $request,
+ NormalizerInterface $normalizer
+ ): JsonResponse {
+ $builder = $this->repository->collection(
+ $request->getSearch(),
+ $request->getSort(TleCollectionSortableFieldsEnum::POPULARITY),
+ $request->getSortDirection(),
+ $request->getFilters(),
+ );
+
+ $pagination = new QueryBuilderPaginator($builder);
+ $pagination->setFromRequest($request);
+
+ $response = $normalizer->normalize($pagination, null, [TleRequest::EXTRA_PARAM => $request->getExtra()]);
+ $response['parameters'] = $request->getParameters();
+
+ return $this->response($response);
+ }
+}
diff --git a/src/DataFixtures/TleFixtures.php b/src/DataFixtures/TleFixtures.php
index 9ab650c..3f751e9 100644
--- a/src/DataFixtures/TleFixtures.php
+++ b/src/DataFixtures/TleFixtures.php
@@ -1,43 +1,55 @@
-setId(self::$satelliteId);
- $tle->setName(self::$name);
- $tle->setLine1(self::$line1);
- $tle->setLine2(self::$line2);
-
- return $tle;
- }
-
- public function load(ObjectManager $manager): void
- {
- // create single record
- $manager->persist(self::create());
-
- // create additional nine records with dummy satelliteIds
- for ($satelliteId = 1; $satelliteId < 10; $satelliteId++) {
- $tle = self::create();
- $tle->setId($satelliteId);
-
- $manager->persist($tle);
- }
-
- $manager->flush();
- }
-}
+setId(self::$satelliteId);
+ $tle->setName(self::$name);
+ $tle->setLine1(self::$line1);
+ $tle->setLine2(self::$line2);
+
+ return $tle;
+ }
+
+ public static function createDeep(): Tle
+ {
+ $tle = new Tle();
+ $tle->setId(22049);
+ $tle->setName('GEOTAIL');
+ $tle->setLine1('1 22049U 92044A 21119.24930644 -.00001485 00000-0 00000+0 0 9990');
+ $tle->setLine2('2 22049 38.4941 42.7845 5317694 181.2241 357.6003 0.19228928 12156');
+
+ return $tle;
+ }
+
+ public function load(ObjectManager $manager): void
+ {
+ // create single record
+ $manager->persist(self::create());
+ $manager->persist(self::createDeep());
+
+ // create additional nine records with dummy satelliteIds
+ for ($satelliteId = 1; $satelliteId < 10; ++$satelliteId) {
+ $tle = self::create();
+ $tle->setId($satelliteId);
+
+ $manager->persist($tle);
+ }
+
+ $manager->flush();
+ }
+}
diff --git a/src/Entity/Attributes/TleOneToOneReference.php b/src/Entity/Attributes/TleOneToOneReference.php
new file mode 100644
index 0000000..7161451
--- /dev/null
+++ b/src/Entity/Attributes/TleOneToOneReference.php
@@ -0,0 +1,24 @@
+tle;
+ }
+
+ public function setTle(Tle $tle): void
+ {
+ $this->tle = $tle;
+ }
+}
diff --git a/src/Entity/Request.php b/src/Entity/Request.php
new file mode 100644
index 0000000..43f2642
--- /dev/null
+++ b/src/Entity/Request.php
@@ -0,0 +1,70 @@
+createdAt = DateTimeService::getCurrentUTC();
+ }
+
+ public function getTle(): Tle
+ {
+ return $this->tle;
+ }
+
+ public function setTle(Tle $tle): void
+ {
+ $this->tle = $tle;
+ }
+
+ public function getIp(): string
+ {
+ return $this->ip;
+ }
+
+ public function setIp(string $ip): void
+ {
+ $this->ip = $ip;
+ }
+
+ public function getReferer(): ?string
+ {
+ return $this->referer;
+ }
+
+ public function setReferer(?string $referer): void
+ {
+ $this->referer = $referer;
+ }
+}
diff --git a/src/Entity/Tle.php b/src/Entity/Tle.php
index 1fc8f78..87b30f8 100644
--- a/src/Entity/Tle.php
+++ b/src/Entity/Tle.php
@@ -1,34 +1,37 @@
-updatedAt = DateTimeService::getCurrentUTC();
- }
-}
+updatedAt = DateTimeService::getCurrentUTC();
+ }
+
+ public function getInfo(): ?TleInformation
+ {
+ return $this->info;
+ }
+}
diff --git a/src/Entity/TleInformation.php b/src/Entity/TleInformation.php
new file mode 100644
index 0000000..9e4bbec
--- /dev/null
+++ b/src/Entity/TleInformation.php
@@ -0,0 +1,39 @@
+ 0])]
+ public bool $geostationary = false;
+
+ public function __construct(Tle $tle)
+ {
+ $this->tle = $tle;
+ }
+}
diff --git a/src/Enum/PropagatorAlgorithm.php b/src/Enum/PropagatorAlgorithm.php
new file mode 100644
index 0000000..c451324
--- /dev/null
+++ b/src/Enum/PropagatorAlgorithm.php
@@ -0,0 +1,9 @@
+env = $env;
- }
-
- public static function getSubscribedEvents(): array
- {
- return [
- KernelEvents::EXCEPTION => 'onException',
- ];
- }
-
- public function onException(ExceptionEvent $event): void
- {
- $exception = $event->getThrowable();
-
- $path = $event->getRequest()->getPathInfo();
-
- if (strpos($path, self::API_PATH) === false) {
- return;
- }
-
- if ($exception instanceof NotFoundHttpException) {
- $this->setResponse($event, $exception->getMessage());
- }
-
- if ($exception instanceof AccessDeniedHttpException) {
- $this->setResponse($event, 'Forbidden');
- }
-
- if ($this->env === 'dev') {
- $this->setResponse($event, $exception->getMessage());
- }
- }
-
- private function setResponse(ExceptionEvent $event, string $message): void
- {
- $response = new JsonResponse(
- [
- 'response' => [
- 'message' => $message,
- ],
- ]
- );
-
- $event->setResponse($response);
- }
-}
diff --git a/src/Event/ApiLimiterSubscriber.php b/src/Event/ApiLimiterSubscriber.php
new file mode 100644
index 0000000..edb319a
--- /dev/null
+++ b/src/Event/ApiLimiterSubscriber.php
@@ -0,0 +1,79 @@
+limiter = $anonymousApiLimiter;
+ }
+
+ /**
+ * @codeCoverageIgnore
+ *
+ * @return string[]
+ */
+ public static function getSubscribedEvents(): array
+ {
+ return [
+ KernelEvents::REQUEST => 'onRequest',
+ ];
+ }
+
+ public function onRequest(RequestEvent $event): void
+ {
+ $refererHost = null;
+
+ if ($event->getRequest()->headers->has('referer')) {
+ $refererHost = parse_url($event->getRequest()->headers->get('referer'), PHP_URL_HOST);
+ }
+
+ if (!FeatureFlag::API_RATE_LIMITER || Route::PRODUCTION_HOST === $refererHost || !Route::inArray($event->getRequest(), self::ROUTES)) {
+ return;
+ }
+
+ $limit = $this->limiter->create($event->getRequest()->getClientIp())->consume();
+
+ if (false === $limit->isAccepted()) {
+ $headers = [
+ 'X-RateLimit-Remaining' => $limit->getRemainingTokens(),
+ 'X-RateLimit-Retry-After' => $limit->getRetryAfter()->format(\DateTimeInterface::ATOM),
+ 'X-RateLimit-Limit' => $limit->getLimit(),
+ ];
+
+ $event->setResponse(
+ new JsonResponse(
+ [
+ 'response' => [
+ 'message' => \sprintf('Too many requests. Retry after %s.', $limit->getRetryAfter()->format(\DateTimeInterface::ATOM)),
+ 'limit' => $limit->getLimit(),
+ 'remaining' => $limit->getRemainingTokens(),
+ ],
+ ],
+ Response::HTTP_TOO_MANY_REQUESTS,
+ $headers
+ ),
+ );
+ }
+ }
+}
diff --git a/src/Event/StatisticSubscriber.php b/src/Event/StatisticSubscriber.php
new file mode 100644
index 0000000..496e9f6
--- /dev/null
+++ b/src/Event/StatisticSubscriber.php
@@ -0,0 +1,60 @@
+ 'onKernelTerminate',
+ ];
+ }
+
+ public function onKernelTerminate(TerminateEvent $event): void
+ {
+ if (!Route::inArray($event->getRequest(), self::ROUTES)) {
+ return;
+ }
+
+ /** @var Tle|null $tle */
+ $tle = $this->tleRepository->find($event->getRequest()->get('id'));
+
+ if (null === $tle) {
+ return;
+ }
+
+ $request = new Request();
+ $request->setTle($tle);
+ $request->setIp($event->getRequest()->getClientIp());
+ $request->setReferer($event->getRequest()->headers->get('referer'));
+
+ $this->em->persist($request);
+ $this->em->flush();
+ }
+}
diff --git a/src/Field/IdField.php b/src/Field/IdField.php
index f45eadf..6de3150 100644
--- a/src/Field/IdField.php
+++ b/src/Field/IdField.php
@@ -1,24 +1,22 @@
-id;
- }
-
- public function setId(int $id): void
- {
- $this->id = $id;
- }
-}
+id;
+ }
+
+ public function setId(int $id): void
+ {
+ $this->id = $id;
+ }
+}
diff --git a/src/Field/NameField.php b/src/Field/NameField.php
deleted file mode 100644
index d07f3a1..0000000
--- a/src/Field/NameField.php
+++ /dev/null
@@ -1,23 +0,0 @@
-name;
- }
-
- public function setName(string $name): void
- {
- $this->name = $name;
- }
-}
diff --git a/src/Field/TleField.php b/src/Field/TleField.php
index 4b7555b..c844b99 100644
--- a/src/Field/TleField.php
+++ b/src/Field/TleField.php
@@ -1,38 +1,34 @@
-line1;
- }
-
- public function setLine1(string $line1): void
- {
- $this->line1 = $line1;
- }
-
- public function getLine2(): string
- {
- return $this->line2;
- }
-
- public function setLine2(string $line2): void
- {
- $this->line2 = $line2;
- }
-}
+line1;
+ }
+
+ public function setLine1(string $line1): void
+ {
+ $this->line1 = $line1;
+ }
+
+ public function getLine2(): string
+ {
+ return $this->line2;
+ }
+
+ public function setLine2(string $line2): void
+ {
+ $this->line2 = $line2;
+ }
+}
diff --git a/src/Kernel.php b/src/Kernel.php
index 5ffa385..59817ca 100644
--- a/src/Kernel.php
+++ b/src/Kernel.php
@@ -3,53 +3,15 @@
namespace App;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
-use Symfony\Component\Routing\RouteCollectionBuilder;
class Kernel extends BaseKernel
{
use MicroKernelTrait;
- private const CONFIG_EXTS = '.{php,xml,yaml,yml}';
-
- public function registerBundles(): iterable
- {
- $contents = require $this->getProjectDir().'/config/bundles.php';
- foreach ($contents as $class => $envs) {
- if ($envs[$this->environment] ?? $envs['all'] ?? false) {
- yield new $class();
- }
- }
- }
-
- public function getProjectDir(): string
- {
- return \dirname(__DIR__);
- }
-
- protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
- {
- $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php'));
- $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400);
- $container->setParameter('container.dumper.inline_factories', true);
- $confDir = $this->getProjectDir().'/config';
-
- $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob');
- $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob');
- $loader->load($confDir.'/{parameters}'.self::CONFIG_EXTS, 'glob');
- $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob');
- $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob');
- }
-
- protected function configureRoutes(RouteCollectionBuilder $routes): void
+ /** @noinspection PhpUnusedPrivateMethodInspection */
+ private function getConfigDir(): string
{
- $confDir = $this->getProjectDir().'/config';
-
- $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob');
- $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob');
- $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob');
+ return $this->getProjectDir().'/etc';
}
}
diff --git a/src/Migrations/Version20191217203053.php b/src/Migrations/Version20191217203053.php
index a34cb43..2244d28 100644
--- a/src/Migrations/Version20191217203053.php
+++ b/src/Migrations/Version20191217203053.php
@@ -2,33 +2,41 @@
declare(strict_types=1);
-namespace DoctrineMigrations;
+namespace App\Migrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
- * Auto-generated Migration: Please modify to your needs!
+ * @codeCoverageIgnore
*/
final class Version20191217203053 extends AbstractMigration
{
- public function getDescription() : string
+ public function isTransactional(): bool
{
- return '';
+ return false;
}
- public function up(Schema $schema) : void
+ /** @throws \Exception */
+ public function up(Schema $schema): void
{
- // this up() migration is auto-generated, please modify it to your needs
- $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
-
- $this->addSql('CREATE TABLE tle (id INT AUTO_INCREMENT NOT NULL, updated_at DATETIME NOT NULL, name VARCHAR(255) NOT NULL, line1 VARCHAR(255) NOT NULL, line2 VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
+ $this->abortIf(
+ 'mysql' !== $this->connection->getDatabasePlatform()->getName(),
+ 'Migration can only be executed safely on \'mysql\'.'
+ );
+
+ $this->addSql(
+ 'CREATE TABLE tle (id INT AUTO_INCREMENT NOT NULL, updated_at DATETIME NOT NULL, name VARCHAR(255) NOT NULL, line1 VARCHAR(255) NOT NULL, line2 VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'
+ );
}
- public function down(Schema $schema) : void
+ /** @throws \Exception */
+ public function down(Schema $schema): void
{
- // this down() migration is auto-generated, please modify it to your needs
- $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
+ $this->abortIf(
+ 'mysql' !== $this->connection->getDatabasePlatform()->getName(),
+ 'Migration can only be executed safely on \'mysql\'.'
+ );
$this->addSql('DROP TABLE tle');
}
diff --git a/src/Migrations/Version20210308195105.php b/src/Migrations/Version20210308195105.php
new file mode 100644
index 0000000..d61fd7f
--- /dev/null
+++ b/src/Migrations/Version20210308195105.php
@@ -0,0 +1,44 @@
+abortIf(
+ 'mysql' !== $this->connection->getDatabasePlatform()->getName(),
+ 'Migration can only be executed safely on \'mysql\'.'
+ );
+
+ $this->addSql('DROP TABLE statistic');
+ }
+
+ public function isTransactional(): bool
+ {
+ return false;
+ }
+
+ public function up(Schema $schema): void
+ {
+ // this up() migration is auto-generated, please modify it to your needs
+ $this->abortIf(
+ 'mysql' !== $this->connection->getDatabasePlatform()->getName(),
+ 'Migration can only be executed safely on \'mysql\'.'
+ );
+
+ $this->addSql(
+ 'CREATE TABLE statistic (tle_id INT NOT NULL, hits BIGINT NOT NULL, PRIMARY KEY(tle_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'
+ );
+ $this->addSql('ALTER TABLE statistic ADD CONSTRAINT FK_649B469CE84B6F2B FOREIGN KEY (tle_id) REFERENCES tle (id)');
+ }
+}
diff --git a/src/Migrations/Version20210322151101.php b/src/Migrations/Version20210322151101.php
new file mode 100644
index 0000000..9300bce
--- /dev/null
+++ b/src/Migrations/Version20210322151101.php
@@ -0,0 +1,31 @@
+abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('CREATE TABLE request (id INT AUTO_INCREMENT NOT NULL, tle_id INT NOT NULL, updated_at DATETIME NOT NULL, ip VARCHAR(255) NOT NULL, INDEX IDX_3B978F9FE84B6F2B (tle_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
+ $this->addSql('ALTER TABLE request ADD CONSTRAINT FK_3B978F9FE84B6F2B FOREIGN KEY (tle_id) REFERENCES tle (id)');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('DROP TABLE request');
+ }
+}
diff --git a/src/Migrations/Version20210331192030.php b/src/Migrations/Version20210331192030.php
new file mode 100644
index 0000000..90b34aa
--- /dev/null
+++ b/src/Migrations/Version20210331192030.php
@@ -0,0 +1,30 @@
+abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE request CHANGE updated_at created_at DATETIME NOT NULL');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE request CHANGE created_at updated_at DATETIME NOT NULL');
+ }
+}
diff --git a/src/Migrations/Version20210402050806.php b/src/Migrations/Version20210402050806.php
new file mode 100644
index 0000000..e65d2e6
--- /dev/null
+++ b/src/Migrations/Version20210402050806.php
@@ -0,0 +1,36 @@
+abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('CREATE TABLE tle_information (tle_id INT NOT NULL, eccentricity DOUBLE PRECISION DEFAULT NULL, inclination DOUBLE PRECISION DEFAULT NULL, PRIMARY KEY(tle_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
+ $this->addSql('ALTER TABLE tle_information ADD CONSTRAINT FK_E216A773E84B6F2B FOREIGN KEY (tle_id) REFERENCES tle (id)');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('DROP TABLE tle_information');
+ }
+}
diff --git a/src/Migrations/Version20210420125645.php b/src/Migrations/Version20210420125645.php
new file mode 100644
index 0000000..96d5812
--- /dev/null
+++ b/src/Migrations/Version20210420125645.php
@@ -0,0 +1,30 @@
+abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE tle_information ADD `period` DOUBLE PRECISION DEFAULT NULL');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE tle_information DROP `period`');
+ }
+}
diff --git a/src/Migrations/Version20210420170012.php b/src/Migrations/Version20210420170012.php
new file mode 100644
index 0000000..f63d129
--- /dev/null
+++ b/src/Migrations/Version20210420170012.php
@@ -0,0 +1,30 @@
+abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE tle_information ADD geostationary TINYINT(1) DEFAULT \'0\' NOT NULL');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE tle_information DROP geostationary');
+ }
+}
diff --git a/src/Migrations/Version20210426124814.php b/src/Migrations/Version20210426124814.php
new file mode 100644
index 0000000..f53ca37
--- /dev/null
+++ b/src/Migrations/Version20210426124814.php
@@ -0,0 +1,36 @@
+abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('DROP TABLE statistic');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('CREATE TABLE statistic (tle_id INT NOT NULL, hits BIGINT NOT NULL, PRIMARY KEY(tle_id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB COMMENT = \'\' ');
+ $this->addSql('ALTER TABLE statistic ADD CONSTRAINT FK_649B469CE84B6F2B FOREIGN KEY (tle_id) REFERENCES tle (id) ON UPDATE NO ACTION ON DELETE NO ACTION');
+ }
+}
diff --git a/src/Migrations/Version20210524103622.php b/src/Migrations/Version20210524103622.php
new file mode 100644
index 0000000..7fbf3d0
--- /dev/null
+++ b/src/Migrations/Version20210524103622.php
@@ -0,0 +1,30 @@
+abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE tle_information ADD raan DOUBLE PRECISION DEFAULT NULL, ADD semi_major_axis DOUBLE PRECISION DEFAULT NULL');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE tle_information DROP raan, DROP semi_major_axis');
+ }
+}
diff --git a/src/Migrations/Version20210605124127.php b/src/Migrations/Version20210605124127.php
new file mode 100644
index 0000000..8e592b5
--- /dev/null
+++ b/src/Migrations/Version20210605124127.php
@@ -0,0 +1,35 @@
+abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE request ADD referer VARCHAR(255) DEFAULT NULL');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+ $this->addSql('ALTER TABLE request DROP referer');
+ }
+}
diff --git a/src/Normalizer/ObserverNormalizer.php b/src/Normalizer/ObserverNormalizer.php
new file mode 100644
index 0000000..2ea7d44
--- /dev/null
+++ b/src/Normalizer/ObserverNormalizer.php
@@ -0,0 +1,32 @@
+ 'Observer',
+ ...$this->normalizer->normalize($object),
+ ];
+ }
+
+ public function supportsNormalization($data, string $format = null): bool
+ {
+ return $data instanceof Observer;
+ }
+}
diff --git a/src/Normalizer/SatellitePassNormalizer.php b/src/Normalizer/SatellitePassNormalizer.php
new file mode 100644
index 0000000..edde636
--- /dev/null
+++ b/src/Normalizer/SatellitePassNormalizer.php
@@ -0,0 +1,63 @@
+ $details ? 'SatelliteFlyOverDetails' : 'SatelliteFlyOver',
+ 'aos' => [
+ 'date' => \Predict_Time::daynum2datetime($object->visible_aos ?? $object->aos, $timezone)->format(
+ \DateTimeInterface::ATOM
+ ),
+ 'azimuth' => round($object->visible_aos_az ?? null, 2),
+ 'elevation' => round($object->visible_aos_el ?? null, 2),
+ ],
+ 'max' => [
+ 'date' => \Predict_Time::daynum2datetime($object->visible_tca ?? $object->tca, $timezone)->format(
+ \DateTimeInterface::ATOM
+ ),
+ 'azimuth' => round($object->visible_max_el_az ?? null, 2),
+ 'elevation' => round($object->visible_max_el ?? null, 2),
+ ],
+ 'los' => [
+ 'date' => \Predict_Time::daynum2datetime($object->visible_los ?? $object->los, $timezone)->format(
+ \DateTimeInterface::ATOM
+ ),
+ 'azimuth' => round($object->visible_los_az ?? $object->los_az, 2),
+ 'elevation' => round($object->visible_los_el ?? null, 2),
+ ],
+ ];
+
+ if ($details) {
+ foreach ($object->details as $item) {
+ $result['details'][] = [
+ 'azimuth' => $item->az,
+ 'elevation' => $item->el,
+ ];
+ }
+ }
+
+ return $result;
+ }
+
+ public function supportsNormalization($data, string $format = null): bool
+ {
+ return $data instanceof \Predict_Pass;
+ }
+}
diff --git a/src/Normalizer/TleModelNormalizer.php b/src/Normalizer/TleModelNormalizer.php
new file mode 100644
index 0000000..8226715
--- /dev/null
+++ b/src/Normalizer/TleModelNormalizer.php
@@ -0,0 +1,60 @@
+router->generate('tle_record', ['id' => $object->getId()], UrlGeneratorInterface::ABSOLUTE_URL);
+
+ $model = new TleModel($object->getLine1(), $object->getLine2(), $object->getName());
+
+ $isExtra = ($context[TleRequest::EXTRA_PARAM] ?? null) === true;
+
+ $normalized = [
+ '@id' => $id,
+ '@type' => 'Tle',
+ 'satelliteId' => $model->getId(),
+ 'name' => $model->getName(),
+ 'date' => $model->epochDateTime()->format(\DateTimeInterface::ATOM),
+ 'line1' => $model->getLine1(),
+ 'line2' => $model->getLine2(),
+ ];
+
+ if ($isExtra && $object->getInfo()) {
+ $normalized['extra'] = [
+ TleCollectionSortableFieldsEnum::ECCENTRICITY => $object->getInfo()->eccentricity,
+ TleCollectionSortableFieldsEnum::INCLINATION => $object->getInfo()->inclination,
+ TleCollectionSortableFieldsEnum::PERIOD => $object->getInfo()->period,
+ TleCollectionSortableFieldsEnum::RAAN => $object->getInfo()->raan,
+ TleCollectionSortableFieldsEnum::SEMI_MAJOR_AXIS => $object->getInfo()->semiMajorAxis,
+ ];
+
+ $normalized['orbit'] = [
+ 'geostationary' => $object->getInfo()->geostationary,
+ ];
+ }
+
+ return $normalized;
+ }
+
+ public function supportsNormalization($data, string $format = null): bool
+ {
+ return $data instanceof Tle;
+ }
+}
diff --git a/src/Repository/RequestRepository.php b/src/Repository/RequestRepository.php
new file mode 100644
index 0000000..b7d9a6e
--- /dev/null
+++ b/src/Repository/RequestRepository.php
@@ -0,0 +1,27 @@
+_em->createQueryBuilder();
+
+ $builder
+ ->delete(Request::class, 'r')
+ ->where('r.createdAt < :date')
+ ->setParameter('date', $dateTime);
+
+ $builder->getQuery()->execute();
+ }
+}
diff --git a/src/Repository/TleInformationRepository.php b/src/Repository/TleInformationRepository.php
new file mode 100644
index 0000000..daea987
--- /dev/null
+++ b/src/Repository/TleInformationRepository.php
@@ -0,0 +1,15 @@
+createQueryBuilder('tle', 'tle.id')
- ->getQuery()
- ->getResult();
- }
-
- public function collection(
- ?string $search,
- string $sort,
- string $sortDir,
- int $pageSize,
- int $offset
- ): PaginationCollection
- {
- $builder = $this->createQueryBuilder('tle');
-
- // search
- if ($search) {
- $builder
- ->where(
- $builder->expr()->orX(
- $builder->expr()->like('tle.id', ':search'),
- $builder->expr()->like('tle.name', ':search')
- )
- )
- ->setParameter('search', '%'.$search.'%');
- }
-
- // get total
- $total = \count($builder->getQuery()->getResult());
-
- // sort
- $builder->orderBy('tle.'.$sort, $sortDir);
-
- // limit
- $builder->setMaxResults($pageSize);
- $builder->setFirstResult($offset);
-
- $collection = new PaginationCollection();
-
- $collection->setCollection($builder->getQuery()->getResult());
- $collection->setTotal($total);
-
- return $collection;
- }
-}
+createQueryBuilder('tle', 'tle.id')
+ ->getQuery()
+ ->getResult();
+ }
+
+ public function collection(
+ ?string $search,
+ string $sort,
+ string $sortDir,
+ array $filters,
+ ): QueryBuilder {
+ $builder = $this->createQueryBuilder('tle');
+
+ $builder->select('tle');
+ $builder->leftJoin(TleInformation::class, 'info', Expr\Join::WITH, 'info.tle = tle.id');
+
+ $builder = $this->search($builder, ['tle.id', 'tle.name'], $search);
+
+ // filters
+ foreach ($filters as $index => $filter) {
+ if (Filter::FILTER_TYPE_ARRAY === $filter->type) {
+ $paramName = \sprintf('param_%d', $index);
+
+ $builder
+ ->andWhere(\sprintf('%s IN (:%s)', $this->getSortTableColumnMapping($filter->filter), $paramName))
+ ->setParameter($paramName, $filter->value);
+
+ continue;
+ }
+
+ $placeholder = \sprintf('filter_%s_%d', $filter->filter, $index);
+ $builder->andWhere(\sprintf('info.%s %s :%s', $filter->filter, $filter->sqlOperator, $placeholder));
+ $builder->setParameter($placeholder, $filter->value);
+ }
+
+ // sort
+ if (TleCollectionSortableFieldsEnum::POPULARITY === $sort) {
+ $before = (new \DateTime())->sub(new \DateInterval('P7D'));
+ $builder->leftJoin(Request::class, 's', Expr\Join::WITH, 's.tle = tle.id AND s.createdAt < :date');
+ $builder->setParameter('date', $before);
+ $builder->groupBy('tle.id');
+ $builder->addOrderBy('COUNT(s.id)', $sortDir);
+ } else {
+ $builder->addOrderBy($this->getSortTableColumnMapping($sort), $sortDir);
+ }
+
+ return $builder;
+ }
+
+ private function getSortTableColumnMapping(string $sort): ?string
+ {
+ return match ($sort) {
+ TleCollectionSortableFieldsEnum::ID, TleCollectionSortableFieldsEnum::SATELLITE_ID => 'tle.id',
+ TleCollectionSortableFieldsEnum::NAME => 'tle.name',
+ TleCollectionSortableFieldsEnum::POPULARITY => null,
+ TleCollectionSortableFieldsEnum::INCLINATION => 'info.inclination',
+ TleCollectionSortableFieldsEnum::ECCENTRICITY => 'info.eccentricity',
+ TleCollectionSortableFieldsEnum::PERIOD => 'info.period',
+ TleCollectionSortableFieldsEnum::SEMI_MAJOR_AXIS => 'info.semiMajorAxis',
+ TleCollectionSortableFieldsEnum::RAAN => 'info.raan',
+ };
+ }
+}
diff --git a/src/Request/DateTimeDependantRequest.php b/src/Request/DateTimeDependantRequest.php
new file mode 100644
index 0000000..57a21df
--- /dev/null
+++ b/src/Request/DateTimeDependantRequest.php
@@ -0,0 +1,15 @@
+get($name, DateTimeService::getCurrentUTC()->format(\DateTimeInterface::ATOM));
+
+ return \DateTime::createFromFormat(\DateTimeInterface::ATOM, str_replace(' ', '+', $date));
+ }
+}
diff --git a/src/Request/FlyOverRequest.php b/src/Request/FlyOverRequest.php
new file mode 100644
index 0000000..9bd1dfe
--- /dev/null
+++ b/src/Request/FlyOverRequest.php
@@ -0,0 +1,30 @@
+get('only_visible', true);
+ }
+
+ public function getObserver(): Observer
+ {
+ try {
+ return new Observer(
+ (float) $this->get('latitude', 0),
+ (float) $this->get('longitude', 0),
+ 0,
+ $this->getDateTime(),
+ );
+ } catch (\InvalidArgumentException $exception) {
+ throw new BadRequestHttpException($exception->getMessage());
+ }
+ }
+}
diff --git a/src/Request/PropagateRequest.php b/src/Request/PropagateRequest.php
new file mode 100644
index 0000000..a64d960
--- /dev/null
+++ b/src/Request/PropagateRequest.php
@@ -0,0 +1,8 @@
+ Filter::FILTER_TYPE_FLOAT,
+ TleCollectionSortableFieldsEnum::INCLINATION => Filter::FILTER_TYPE_FLOAT,
+ TleCollectionSortableFieldsEnum::PERIOD => Filter::FILTER_TYPE_FLOAT,
+ TleCollectionSortableFieldsEnum::SATELLITE_ID => Filter::FILTER_TYPE_ARRAY,
+ ];
+
+ public static array $sortFields = [
+ 'id',
+ 'name',
+ 'popularity',
+ 'inclination',
+ 'eccentricity',
+ 'period',
+ 'raan',
+ 'satellite_id',
+ 'semi_major_axis',
+ ];
+
+ protected ?array $filters = null;
+
+ public function validate(ValidatorInterface $validator): ConstraintViolationListInterface
+ {
+ $violations = $this->validateExtraParam($validator);
+ $violations->addAll(parent::validate($validator));
+
+ return $violations;
+ }
+
+ public function getSatelliteIdsFilter(): array
+ {
+ return $this->get(TleCollectionSortableFieldsEnum::SATELLITE_ID, []);
+ }
+
+ /**
+ * @return Filter[]
+ */
+ public function getFilters(array $filters = self::COLLECTION_FILTERS): array
+ {
+ if (null !== $this->filters) {
+ return $this->filters;
+ }
+
+ $result = [];
+
+ foreach ($filters as $filter => $type) {
+ $values = $this->get($filter, []);
+
+ if (Filter::FILTER_TYPE_ARRAY === $type && !empty($values)) {
+ $result[] = new Filter($filter, $type, Filter::OPERATOR_EQUAL, $values);
+
+ continue;
+ }
+
+ foreach ($values as $operator => $value) {
+ $result[] = new Filter($filter, $type, $operator, $value);
+ }
+ }
+
+ $this->filters = $result;
+
+ return $this->filters;
+ }
+
+ public function getParameters(): array
+ {
+ $parameters = [
+ self::$searchParam => $this->getSearch() ?? '*',
+ self::$sortParam => $this->getSort(TleCollectionSortableFieldsEnum::POPULARITY),
+ self::$sortDirParam => $this->getSortDirection(),
+ self::$pageParam => $this->getPage(),
+ self::$pageSizeParam => $this->getPageSize(),
+ ];
+
+ foreach ($this->getFilters() as $filter) {
+ if (TleCollectionSortableFieldsEnum::SATELLITE_ID === $filter->filter) {
+ continue;
+ }
+ $parameters[\sprintf('%s[%s]', $filter->filter, $filter->operator)] = $filter->value;
+ }
+
+ foreach ($this->getSatelliteIdsFilter() as $index => $satelliteId) {
+ $name = \sprintf('%s[%d]', TleCollectionSortableFieldsEnum::SATELLITE_ID, $index);
+ $parameters[$name] = $satelliteId;
+ }
+
+ return $parameters;
+ }
+}
diff --git a/src/Request/TleRequest.php b/src/Request/TleRequest.php
new file mode 100644
index 0000000..be9d22e
--- /dev/null
+++ b/src/Request/TleRequest.php
@@ -0,0 +1,52 @@
+repository = $repository;
+ }
+
+ public function getId(): int
+ {
+ return $this->attributes->get('id');
+ }
+
+ public function validate(ValidatorInterface $validator): ConstraintViolationListInterface
+ {
+ $violations = $this->validateExtraParam($validator);
+ $violations->addAll(parent::validate($validator));
+
+ return $violations;
+ }
+
+ public function getTle(): Tle
+ {
+ /** @var Tle $tle */
+ $tle = $this->repository->findOneBy(['id' => $this->getId()]);
+
+ if (null === $tle) {
+ throw new NotFoundHttpException(\sprintf('Unable to find record with id %s', $this->getId()));
+ }
+
+ return $tle;
+ }
+}
diff --git a/src/Request/TleRequestTrait.php b/src/Request/TleRequestTrait.php
new file mode 100644
index 0000000..df2f2dd
--- /dev/null
+++ b/src/Request/TleRequestTrait.php
@@ -0,0 +1,32 @@
+get(TleRequest::EXTRA_PARAM, false);
+ }
+
+ public function validate(ValidatorInterface $validator): ConstraintViolationListInterface
+ {
+ return $validator->validate(
+ $this->query->all(),
+ new Assert\Collection(
+ [
+ 'allowExtraFields' => true,
+ 'allowMissingFields' => true,
+ 'fields' => [
+ TleRequest::EXTRA_PARAM => new Assert\Optional(new Assert\Choice(Filter::BOOLEAN_VALUES)),
+ ],
+ ]
+ )
+ );
+ }
+}
diff --git a/src/Serializer/TleModelNormalizer.php b/src/Serializer/TleModelNormalizer.php
deleted file mode 100644
index 0e8bedd..0000000
--- a/src/Serializer/TleModelNormalizer.php
+++ /dev/null
@@ -1,47 +0,0 @@
-router = $router;
- }
-
- /**
- * @param TleModel $model
- * @param null $format
- * @param array $context
- *
- * @return array|bool|float|int|string
- */
- public function normalize($entity, string $format = null, array $context = [])
- {
- $id = $this->router->generate('tle_record', ['id' => $entity->getId()], UrlGeneratorInterface::ABSOLUTE_URL);
-
- $model = new TleModel($entity->getLine1(), $entity->getLine2(), $entity->getName());
-
- return [
- '@id' => $id,
- '@type' => 'TleModel',
- 'satelliteId' => $model->getId(),
- 'name' => $model->getName(),
- 'date' => $model->getDate(),
- 'line1' => $model->getLine1(),
- 'line2' => $model->getLine2(),
- ];
- }
-
- public function supportsNormalization($data, string $format = null): bool
- {
- return $data instanceof Tle;
- }
-}
diff --git a/src/Service/ApiDocService.php b/src/Service/ApiDocService.php
new file mode 100644
index 0000000..c2a6193
--- /dev/null
+++ b/src/Service/ApiDocService.php
@@ -0,0 +1,49 @@
+cache = new FilesystemAdapter();
+ }
+
+ public function get(string $file): array
+ {
+ $result = $this->cache->getItem('tle_api_doc');
+ $result->expiresAfter(new \DateInterval('PT30M'));
+
+ if ($result->isHit()) {
+ return $result->get();
+ }
+
+ $data = $this->build($file);
+
+ $result->set($data);
+
+ return $data;
+ }
+
+ protected function build(string $file): array
+ {
+ $docs = json_decode(
+ file_get_contents($this->getProjectDir().$file),
+ true,
+ JSON_THROW_ON_ERROR,
+ JSON_THROW_ON_ERROR
+ );
+
+ $docs['info']['version'] = $this->bag->get('version');
+
+ return $docs;
+ }
+}
diff --git a/src/Service/DateTimeService.php b/src/Service/DateTimeService.php
deleted file mode 100644
index b0245b6..0000000
--- a/src/Service/DateTimeService.php
+++ /dev/null
@@ -1,13 +0,0 @@
-projectDir = $projectDir;
- }
-
- public function getProjectDir(): string
- {
- return $this->projectDir;
- }
-}
diff --git a/src/Service/FlyOverService.php b/src/Service/FlyOverService.php
new file mode 100644
index 0000000..ab04803
--- /dev/null
+++ b/src/Service/FlyOverService.php
@@ -0,0 +1,54 @@
+predict = new \Predict();
+ $this->qth = new \Predict_QTH();
+ }
+
+ public function setTle(Tle $tle): self
+ {
+ $this->sat = new \Predict_Sat(
+ new \Predict_TLE($tle->getName(), $tle->getLine1(), $tle->getLine2())
+ );
+
+ return $this;
+ }
+
+ public function setObserver(Observer $observer): self
+ {
+ $this->qth->lat = $observer->latitude;
+ $this->qth->lon = $observer->longitude;
+ $this->qth->alt = $observer->altitude;
+
+ return $this;
+ }
+
+ public function getPasses(\DateTime $date, bool $filterVisible): array
+ {
+ $this->predict->minEle = 10; // Minimum elevation for a pass
+ $this->predict->timeRes = 10; // Pass details: time resolution in seconds
+ $this->predict->numEntries = 20; // Pass details: number of entries per pass
+ $this->predict->threshold = -6; // Twilight threshold (sun must be at this lat or lower)
+
+ // Get the passes and filter visible only, takes about 4 seconds for 10 days
+ $passes = $this->predict->get_passes($this->sat, $this->qth, \Predict_Time::unix2daynum($date->getTimestamp()), 10);
+
+ if ($filterVisible) {
+ return $this->predict->filterVisiblePasses($passes);
+ }
+
+ return $passes;
+ }
+}
diff --git a/src/Service/Route.php b/src/Service/Route.php
new file mode 100644
index 0000000..d25ed5b
--- /dev/null
+++ b/src/Service/Route.php
@@ -0,0 +1,15 @@
+get('_route'), $routes, false);
+ }
+}
diff --git a/src/Service/SentryCallbackBeforeSend.php b/src/Service/SentryCallbackBeforeSend.php
new file mode 100644
index 0000000..a086de2
--- /dev/null
+++ b/src/Service/SentryCallbackBeforeSend.php
@@ -0,0 +1,26 @@
+getExceptions();
+
+ foreach ($exceptions as $exception) {
+ if (in_array($exception->getType(), self::SKIP)) {
+ return null;
+ }
+ }
+
+ return $event;
+ }
+}
diff --git a/src/Service/TleFile.php b/src/Service/TleFile.php
deleted file mode 100644
index 37c917e..0000000
--- a/src/Service/TleFile.php
+++ /dev/null
@@ -1,44 +0,0 @@
-content = $content;
- }
-
- /**
- * @return TleModel[]
- */
- public function parse(): array
- {
- $data = explode("\n", $this->content);
- $data = array_filter($data);
- $raw = array_chunk($data, 3);
-
- $result = [];
- foreach ($raw as $key => $item) {
- if (!isset($item[0], $item[1], $item[2])) {
- $result[$key] = null;
- continue;
- }
-
- $result[$key] = new TleModel($this->trim($item[1]), $this->trim($item[2]), $this->trim($item[0]));
- }
-
- return $result;
- }
-
- protected function trim(string $string): string
- {
- $string = str_replace(["/\r\n/", "/\r/", "/\n/"], '', $string);
-
- return trim($string);
- }
-}
\ No newline at end of file
diff --git a/src/Service/Traits/FileSystemAwareTrait.php b/src/Service/Traits/FileSystemAwareTrait.php
deleted file mode 100644
index d2a1959..0000000
--- a/src/Service/Traits/FileSystemAwareTrait.php
+++ /dev/null
@@ -1,23 +0,0 @@
-fileManager = $manager;
- }
-
- public function getProjectDir(): string
- {
- return $this->fileManager->getProjectDir();
- }
-}
diff --git a/src/ViewModel/Filter.php b/src/ViewModel/Filter.php
new file mode 100644
index 0000000..f47207d
--- /dev/null
+++ b/src/ViewModel/Filter.php
@@ -0,0 +1,85 @@
+';
+ public const OPERATOR_GREATER_THEN_EQUAL = '>=';
+ public const OPERATOR_LESS_THEN = '<';
+ public const OPERATOR_LESS_THEN_EQUAL = '<=';
+ public const REST_OPERATOR_GREATER_THEN = 'gt';
+ public const REST_OPERATOR_GREATER_THEN_EQUAL = 'gte';
+ public const REST_OPERATOR_LESS_THEN = 'lt';
+ public const REST_OPERATOR_LESS_THEN_EQUAL = 'lte';
+
+ public const BOOLEAN_VALUES = [
+ '1',
+ '0',
+ ];
+
+ public const FILTER_FLOAT_OPERATORS = [
+ self::FILTER_TYPE_FLOAT => [
+ self::REST_OPERATOR_GREATER_THEN => self::OPERATOR_GREATER_THEN,
+ self::REST_OPERATOR_GREATER_THEN_EQUAL => self::OPERATOR_GREATER_THEN_EQUAL,
+ self::REST_OPERATOR_LESS_THEN => self::OPERATOR_LESS_THEN,
+ self::REST_OPERATOR_LESS_THEN_EQUAL => self::OPERATOR_LESS_THEN_EQUAL,
+ ],
+ ];
+
+ public mixed $value;
+ public string $sqlOperator;
+
+ public function __construct(public string $filter, public string $type, public string $operator, mixed $value)
+ {
+ $this->value = $this->validateValue($value);
+ $this->sqlOperator = $this->validateOperator();
+ }
+
+ protected function validateOperator(): string
+ {
+ if (self::FILTER_TYPE_FLOAT === $this->type) {
+ $operators = self::FILTER_FLOAT_OPERATORS[self::FILTER_TYPE_FLOAT];
+ if (!array_key_exists($this->operator, $operators)) {
+ throw new BadRequestHttpException(\sprintf('Operator for filter \'%s\' should be one of the following %s, \'%s\' provided', $this->filter, implode(', ', array_keys($operators)), $this->operator));
+ }
+
+ return $operators[$this->operator];
+ }
+
+ if (self::FILTER_TYPE_ARRAY === $this->type) {
+ return self::OPERATOR_EQUAL;
+ }
+
+ return '';
+ }
+
+ protected function validateValue(mixed $value): array|null|float
+ {
+ if (self::FILTER_TYPE_FLOAT === $this->type) {
+ $value = (float) $value;
+
+ if (!is_float($value)) {
+ throw new \InvalidArgumentException(\sprintf('Filter %s value should be %s', $this->filter, $this->type));
+ }
+
+ return $value;
+ }
+
+ if (self::FILTER_TYPE_ARRAY === $this->type) {
+ if (!is_array($value)) {
+ throw new \InvalidArgumentException(\sprintf('Filter %s value should be %s', $this->filter, $this->type));
+ }
+
+ return $value;
+ }
+
+ return null;
+ }
+}
diff --git a/src/ViewModel/LatLng.php b/src/ViewModel/LatLng.php
new file mode 100644
index 0000000..fc0620a
--- /dev/null
+++ b/src/ViewModel/LatLng.php
@@ -0,0 +1,41 @@
+latitude > 90 || $this->latitude < -90) {
+ throw new \InvalidArgumentException('Invalid latitude value');
+ }
+
+ if ($this->longitude > 180 || $this->longitude < -180) {
+ throw new \InvalidArgumentException('Invalid longitude value');
+ }
+ }
+
+ public function getTimezone(): ?string
+ {
+ $diffs = [];
+ foreach (DateTimeZone::listIdentifiers() as $timezoneID) {
+ $timezone = new DateTimeZone($timezoneID);
+ $location = $timezone->getLocation();
+ $tLat = $location['latitude'];
+ $tLng = $location['longitude'];
+ $diffLat = abs($this->latitude - $tLat);
+ $diffLng = abs($this->longitude - $tLng);
+ $diff = $diffLat + $diffLng;
+ $diffs[$timezoneID] = $diff;
+ }
+
+ $timezone = array_keys($diffs, min($diffs));
+
+ return $timezone[0] ?? null;
+ }
+}
diff --git a/src/ViewModel/Model/PaginationCollection.php b/src/ViewModel/Model/PaginationCollection.php
deleted file mode 100644
index ff56696..0000000
--- a/src/ViewModel/Model/PaginationCollection.php
+++ /dev/null
@@ -1,30 +0,0 @@
-collection;
- }
-
- public function setCollection(array $collection): void
- {
- $this->collection = $collection;
- }
-
- public function getTotal(): int
- {
- return $this->total;
- }
-
- public function setTotal(int $total): void
- {
- $this->total = $total;
- }
-}
diff --git a/src/ViewModel/Model/TleModel.php b/src/ViewModel/Model/TleModel.php
deleted file mode 100644
index 5409119..0000000
--- a/src/ViewModel/Model/TleModel.php
+++ /dev/null
@@ -1,217 +0,0 @@
-line1 = $line1;
- $this->line2 = $line2;
- $this->name = $name;
- }
-
- public function getId(): int
- {
- return (int)substr($this->line1, 2, 6);
- }
-
- public function getClassification(): string
- {
- return $this->line1[7];
- }
-
- public function getName(): string
- {
- return $this->name;
- }
-
- public function launchYear(?bool $fourDigits = null): int
- {
- $year = (int)trim(substr($this->line1, 9, 2));
-
- if ($fourDigits ?? true) {
- $this->formatYear($year);
- }
-
- return $year;
- }
-
- public function launchNumberOfYear(): int
- {
- return (int)trim(substr($this->line1, 12, 2));
- }
-
- public function epoch(): string
- {
- return trim(substr($this->line1, 18, 14));
- }
-
- public function launchPiece(): string
- {
- return trim(substr($this->line1, 14, 2));
- }
-
- public function bstar(): string
- {
- return trim(substr($this->line1, 53, 8));
- }
-
- public function elementNumber(): int
- {
- return (int)trim(substr($this->line1, 64, 4));
- }
-
- public function inclination(): float
- {
- return (float)trim(substr($this->line2, 8, 8));
- }
-
- public function raan(): float
- {
- return (float)trim(substr($this->line2, 17, 8));
- }
-
- public function eccentricity(): float
- {
- return (float)('.' . trim(substr($this->line2, 26, 7)));
- }
-
- public function meanAnomaly(): float
- {
- return (float)trim(substr($this->line2, 43, 8));
- }
-
- public function argumentOfPerigee(): float
- {
- return (float)trim(substr($this->line2, 34, 8));
- }
-
- public function meanMotion(): float
- {
- return (float)trim(substr($this->line2, 52, 11));
- }
-
- public function getDate(): string
- {
- $year = (int)trim(substr($this->line1, 18, 2));
- $year = $this->formatYear($year);
-
- $date = new \DateTime();
- $timezone = new \DateTimeZone('UTC');
-
- $epoch = (float)trim(substr($this->line1, 20, 12));
- $days = (int)$epoch;
-
- $date
- ->setTimezone($timezone)
- ->setDate($year, 1, $days);
-
- $faction = round($epoch - $days, 8);
-
- $faction *= 24; // hours
- $hours = round($faction);
- $faction -= $hours;
-
- $faction *= 60; // minutes
- $minutes = round($faction);
- $faction -= $minutes;
-
- $faction *= 60; // seconds
- $seconds = round($faction);
- $faction -= $seconds;
-
- $faction *= 1000; // milliseconds
- $milliseconds = round($faction);
-
- $date->setTime($hours, $minutes, $seconds, $milliseconds);
-
- return $date->format('c');
- }
-
- public function getChecksum(int $lineNumber): int
- {
- $line = $this->getLineByNumber($lineNumber);
-
- return (int)trim(substr($line, 68));
- }
-
- public function calculateChecksum(int $lineNumber): int
- {
- $line = $this->getLineByNumber($lineNumber);
-
- return $this->checksum($line);
- }
-
- public function verify(): bool
- {
- if (self::LINE1 !== (int)$this->line1[0] || self::LINE2 !== (int)$this->line2[0]) {
- return false;
- }
-
- if ($this->getChecksum(self::LINE1) !== $this->calculateChecksum(self::LINE1)) {
- return false;
- }
-
- if ($this->getChecksum(self::LINE2) !== $this->calculateChecksum(self::LINE2)) {
- return false;
- }
-
- return true;
- }
-
- private function formatYear(int $twoDigitYear): int
- {
- if ($twoDigitYear < 57) {
- $twoDigitYear += 2000;
- } else {
- $twoDigitYear += 1900;
- }
-
- return $twoDigitYear;
- }
-
- private function getLineByNumber(int $lineNumber): string
- {
- if (self::LINE1 === $lineNumber) {
- return $this->line1;
- }
-
- if (self::LINE2 === $lineNumber) {
- return $this->line2;
- }
-
- throw new \InvalidArgumentException(\sprintf('Invalid line number %d', $lineNumber));
- }
-
- private function checksum(string $line): int
- {
- $line = substr($line, 0, -1); // remove checksum
- $length = \strlen($line);
- $sum = 0;
- for ($i = 0; $i < $length; $i++) {
- if ($line[$i] === '-') {
- ++$sum;
- continue;
- }
-
- if (is_numeric($line[$i])) {
- $sum += $line[$i];
- }
- }
- return $sum % 10;
- }
-}
diff --git a/src/ViewModel/Observer.php b/src/ViewModel/Observer.php
new file mode 100644
index 0000000..5bf3b8c
--- /dev/null
+++ b/src/ViewModel/Observer.php
@@ -0,0 +1,18 @@
+date = $dateTime ?? new \DateTime('now', new \DateTimeZone($this->getTimezone()));
+ }
+}
diff --git a/static/favicon.ico b/static/favicon.ico
new file mode 100644
index 0000000..c50dde6
Binary files /dev/null and b/static/favicon.ico differ
diff --git a/static/images/logo.svg b/static/images/logo.svg
new file mode 100644
index 0000000..a8d9550
--- /dev/null
+++ b/static/images/logo.svg
@@ -0,0 +1,9 @@
+
+
+
+
+ logo
+
+
+
+
diff --git a/static/images/observer.svg b/static/images/observer.svg
new file mode 100644
index 0000000..253ec81
--- /dev/null
+++ b/static/images/observer.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/static/images/satellite.svg b/static/images/satellite.svg
new file mode 100644
index 0000000..c61c644
--- /dev/null
+++ b/static/images/satellite.svg
@@ -0,0 +1,4 @@
+
+
+
diff --git a/static/index.html b/static/index.html
new file mode 100644
index 0000000..0ea2118
--- /dev/null
+++ b/static/index.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TLE API
+
+
+
+
+
+ You need to enable JavaScript to run this app.
+
+
+
+
diff --git a/static/logo192.png b/static/logo192.png
new file mode 100644
index 0000000..bc75d81
Binary files /dev/null and b/static/logo192.png differ
diff --git a/static/logo512.png b/static/logo512.png
new file mode 100644
index 0000000..8bedce4
Binary files /dev/null and b/static/logo512.png differ
diff --git a/static/manifest.json b/static/manifest.json
new file mode 100644
index 0000000..d343090
--- /dev/null
+++ b/static/manifest.json
@@ -0,0 +1,25 @@
+{
+ "short_name": "TLE API",
+ "name": "TLE API",
+ "icons": [
+ {
+ "src": "favicon.ico",
+ "sizes": "64x64 32x32 24x24 16x16",
+ "type": "image/x-icon"
+ },
+ {
+ "src": "logo192.png",
+ "type": "image/png",
+ "sizes": "192x192"
+ },
+ {
+ "src": "logo512.png",
+ "type": "image/png",
+ "sizes": "512x512"
+ }
+ ],
+ "start_url": ".",
+ "display": "standalone",
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff"
+}
diff --git a/static/robots.txt b/static/robots.txt
new file mode 100644
index 0000000..e9e57dc
--- /dev/null
+++ b/static/robots.txt
@@ -0,0 +1,3 @@
+# https://www.robotstxt.org/robotstxt.html
+User-agent: *
+Disallow:
diff --git a/symfony.lock b/symfony.lock
index 1a49a6f..0315ce1 100644
--- a/symfony.lock
+++ b/symfony.lock
@@ -1,11 +1,20 @@
{
+ "beberlei/doctrineextensions": {
+ "version": "v1.3.0"
+ },
+ "clue/stream-filter": {
+ "version": "v1.5.0"
+ },
+ "composer/package-versions-deprecated": {
+ "version": "1.11.99.4"
+ },
"doctrine/annotations": {
- "version": "1.0",
+ "version": "1.13",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "1.0",
- "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672"
+ "ref": "a2759dd6123694c8d901d0ec80006e044c2e6457"
},
"files": [
"config/routes/annotations.yaml"
@@ -26,44 +35,48 @@
"doctrine/dbal": {
"version": "v2.10.0"
},
+ "doctrine/deprecations": {
+ "version": "v0.5.3"
+ },
"doctrine/doctrine-bundle": {
- "version": "2.0",
+ "version": "2.5",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
- "version": "2.0",
- "ref": "a9f2463b9f73efe74482f831f03a204a41328555"
+ "version": "2.4",
+ "ref": "f98f1affe028f8153a459d15f220ada3826b5aa2"
},
"files": [
"config/packages/doctrine.yaml",
"config/packages/prod/doctrine.yaml",
+ "config/packages/test/doctrine.yaml",
"src/Entity/.gitignore",
"src/Repository/.gitignore"
]
},
"doctrine/doctrine-fixtures-bundle": {
- "version": "3.0",
+ "version": "3.4",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "3.0",
- "ref": "fc52d86631a6dfd9fdf3381d0b7e3df2069e51b3"
+ "ref": "1f5514cfa15b947298df4d771e694e578d4c204d"
},
"files": [
"src/DataFixtures/AppFixtures.php"
]
},
"doctrine/doctrine-migrations-bundle": {
- "version": "1.2",
+ "version": "3.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
- "version": "1.2",
- "ref": "c1431086fec31f17fbcfe6d6d7e92059458facc1"
+ "version": "3.1",
+ "ref": "ee609429c9ee23e22d6fa5728211768f51ed2818"
},
"files": [
"config/packages/doctrine_migrations.yaml",
- "src/Migrations/.gitignore"
+ "migrations/.gitignore"
]
},
"doctrine/event-manager": {
@@ -87,14 +100,53 @@
"doctrine/persistence": {
"version": "1.3.3"
},
- "doctrine/reflection": {
- "version": "v1.0.0"
+ "doctrine/sql-formatter": {
+ "version": "1.1.1"
+ },
+ "friendsofphp/proxy-manager-lts": {
+ "version": "v1.0.5"
+ },
+ "guzzlehttp/guzzle": {
+ "version": "6.5.2"
+ },
+ "guzzlehttp/promises": {
+ "version": "v1.3.1"
+ },
+ "guzzlehttp/psr7": {
+ "version": "1.6.1"
+ },
+ "http-interop/http-factory-guzzle": {
+ "version": "1.0.0"
+ },
+ "ivanstan/symfony-support": {
+ "version": "dev-master"
+ },
+ "ivanstan/tle-php": {
+ "version": "1.0"
},
"jdorn/sql-formatter": {
"version": "v1.2.17"
},
- "nikic/php-parser": {
- "version": "v4.3.0"
+ "jean85/pretty-package-versions": {
+ "version": "2.0.3"
+ },
+ "laminas/laminas-code": {
+ "version": "3.4.1"
+ },
+ "laminas/laminas-eventmanager": {
+ "version": "3.3.0"
+ },
+ "laminas/laminas-zendframework-bridge": {
+ "version": "1.1.1"
+ },
+ "laravel/pint": {
+ "version": "v1.2.0"
+ },
+ "monolog/monolog": {
+ "version": "2.2.0"
+ },
+ "myclabs/php-enum": {
+ "version": "1.7.2"
},
"ocramius/package-versions": {
"version": "1.5.1"
@@ -105,6 +157,36 @@
"php": {
"version": "7.4"
},
+ "php-http/client-common": {
+ "version": "2.3.0"
+ },
+ "php-http/discovery": {
+ "version": "1.13.0"
+ },
+ "php-http/httplug": {
+ "version": "2.2.0"
+ },
+ "php-http/message": {
+ "version": "1.11.0"
+ },
+ "php-http/message-factory": {
+ "version": "v1.0.2"
+ },
+ "php-http/promise": {
+ "version": "1.1.0"
+ },
+ "phpdocumentor/reflection-common": {
+ "version": "2.2.0"
+ },
+ "phpdocumentor/reflection-docblock": {
+ "version": "5.3.0"
+ },
+ "phpdocumentor/type-resolver": {
+ "version": "1.5.1"
+ },
+ "phpstan/phpdoc-parser": {
+ "version": "1.2.0"
+ },
"psr/cache": {
"version": "1.0.1"
},
@@ -114,19 +196,52 @@
"psr/event-dispatcher": {
"version": "1.0.0"
},
+ "psr/http-client": {
+ "version": "1.0.1"
+ },
+ "psr/http-factory": {
+ "version": "1.0.1"
+ },
+ "psr/http-message": {
+ "version": "1.0.1"
+ },
"psr/log": {
"version": "1.1.2"
},
+ "ralouphie/getallheaders": {
+ "version": "3.0.3"
+ },
+ "roave/security-advisories": {
+ "version": "dev-master"
+ },
+ "sentry/sdk": {
+ "version": "3.1.0"
+ },
+ "sentry/sentry": {
+ "version": "3.2.0"
+ },
+ "sentry/sentry-symfony": {
+ "version": "3.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes-contrib",
+ "branch": "master",
+ "version": "3.0",
+ "ref": "9746f0823302d7980e5273ef7a69ef3f5ac80914"
+ },
+ "files": [
+ "config/packages/sentry.yaml"
+ ]
+ },
"symfony/apache-pack": {
"version": "1.0",
"recipe": {
"repo": "github.com/symfony/recipes-contrib",
"branch": "master",
"version": "1.0",
- "ref": "410b9325a37ef86f1e47262c61738f6202202bca"
+ "ref": "9d254a22efca7264203eea98b866f16f944b2f09"
},
"files": [
- ".htaccess"
+ "public/.htaccess"
]
},
"symfony/asset": {
@@ -145,21 +260,26 @@
"version": "v5.0.1"
},
"symfony/console": {
- "version": "4.4",
+ "version": "6.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
- "version": "4.4",
- "ref": "fead3ab2e80622c61d13dac0d21a3430a45efae8"
+ "version": "5.3",
+ "ref": "da0c8be8157600ad34f10ff0c9cc91232522e047"
},
"files": [
- "bin/console",
- "config/bootstrap.php"
+ "bin/console"
]
},
+ "symfony/css-selector": {
+ "version": "v5.2.4"
+ },
"symfony/dependency-injection": {
"version": "v5.0.1"
},
+ "symfony/deprecation-contracts": {
+ "version": "v2.2.0"
+ },
"symfony/doctrine-bridge": {
"version": "v5.0.1"
},
@@ -185,124 +305,189 @@
"version": "v5.0.1"
},
"symfony/flex": {
- "version": "1.0",
+ "version": "1.17",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "1.0",
- "ref": "19fa03bacd9a6619583d1e4939da4388df22984d"
+ "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e"
},
"files": [
".env"
]
},
"symfony/framework-bundle": {
- "version": "4.4",
+ "version": "6.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
- "version": "4.4",
- "ref": "23ecaccc551fe2f74baf613811ae529eb07762fa"
+ "version": "5.4",
+ "ref": "d4131812e20853626928e73d3effef44014944c0"
},
"files": [
- "config/bootstrap.php",
"config/packages/cache.yaml",
"config/packages/framework.yaml",
- "config/packages/test/framework.yaml",
- "config/routes/dev/framework.yaml",
+ "config/preload.php",
+ "config/routes/framework.yaml",
"config/services.yaml",
"public/index.php",
"src/Controller/.gitignore",
"src/Kernel.php"
]
},
+ "symfony/http-client": {
+ "version": "v5.2.6"
+ },
+ "symfony/http-client-contracts": {
+ "version": "v2.3.1"
+ },
"symfony/http-foundation": {
"version": "v5.0.1"
},
"symfony/http-kernel": {
"version": "v5.0.1"
},
- "symfony/maker-bundle": {
- "version": "1.0",
+ "symfony/lock": {
+ "version": "6.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
- "version": "1.0",
- "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f"
- }
+ "version": "5.2",
+ "ref": "a1c8800e40ae735206bb14586fdd6c4630a51b8d"
+ },
+ "files": [
+ "config/packages/lock.yaml"
+ ]
},
- "symfony/mime": {
- "version": "v5.0.1"
+ "symfony/monolog-bridge": {
+ "version": "v5.2.5"
+ },
+ "symfony/monolog-bundle": {
+ "version": "3.7",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.7",
+ "ref": "a7bace7dbc5a7ed5608dbe2165e0774c87175fe6"
+ },
+ "files": [
+ "config/packages/dev/monolog.yaml",
+ "config/packages/prod/deprecations.yaml",
+ "config/packages/prod/monolog.yaml",
+ "config/packages/test/monolog.yaml"
+ ]
+ },
+ "symfony/options-resolver": {
+ "version": "v5.2.4"
},
"symfony/orm-pack": {
- "version": "v1.0.7"
+ "version": "v2.1.0"
+ },
+ "symfony/password-hasher": {
+ "version": "v5.3.0"
},
"symfony/phpunit-bridge": {
- "version": "4.3",
+ "version": "5.4",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
- "version": "4.3",
- "ref": "170be6250b77b421f02e986e2853df86c7bd6516"
+ "version": "5.3",
+ "ref": "97cb3dc7b0f39c7cfc4b7553504c9d7b7795de96"
},
"files": [
".env.test",
"bin/phpunit",
- "config/bootstrap.php",
"phpunit.xml.dist",
- "tests/.gitignore"
+ "tests/bootstrap.php"
]
},
+ "symfony/polyfill-intl-grapheme": {
+ "version": "v1.22.1"
+ },
"symfony/polyfill-intl-idn": {
"version": "v1.13.1"
},
+ "symfony/polyfill-intl-normalizer": {
+ "version": "v1.20.0"
+ },
"symfony/polyfill-mbstring": {
"version": "v1.13.1"
},
- "symfony/polyfill-php73": {
- "version": "v1.13.1"
+ "symfony/polyfill-php80": {
+ "version": "v1.20.0"
+ },
+ "symfony/polyfill-php81": {
+ "version": "v1.23.0"
+ },
+ "symfony/polyfill-uuid": {
+ "version": "v1.22.1"
+ },
+ "symfony/property-access": {
+ "version": "v5.2.4"
+ },
+ "symfony/property-info": {
+ "version": "v5.2.4"
+ },
+ "symfony/proxy-manager-bridge": {
+ "version": "v5.3.4"
+ },
+ "symfony/psr-http-message-bridge": {
+ "version": "v2.1.0"
+ },
+ "symfony/rate-limiter": {
+ "version": "v5.3.0"
},
"symfony/routing": {
- "version": "4.2",
+ "version": "6.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
- "version": "4.2",
- "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7"
+ "version": "6.0",
+ "ref": "ab9ad892b7bba7ac584f6dc2ccdb659d358c63c5"
},
"files": [
- "config/packages/prod/routing.yaml",
"config/packages/routing.yaml",
"config/routes.yaml"
]
},
+ "symfony/runtime": {
+ "version": "v5.3.4"
+ },
+ "symfony/security-core": {
+ "version": "v5.2.6"
+ },
"symfony/serializer": {
"version": "v5.0.2"
},
+ "symfony/serializer-pack": {
+ "version": "v1.0.4"
+ },
"symfony/service-contracts": {
"version": "v2.0.1"
},
"symfony/stopwatch": {
"version": "v5.0.1"
},
+ "symfony/string": {
+ "version": "v5.2.3"
+ },
"symfony/translation-contracts": {
- "version": "v2.0.1"
+ "version": "v2.4.0"
},
- "symfony/twig-bridge": {
- "version": "v5.0.1"
+ "symfony/twig-pack": {
+ "version": "v1.0.2"
},
- "symfony/twig-bundle": {
- "version": "5.0",
+ "symfony/validator": {
+ "version": "4.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
- "version": "5.0",
- "ref": "fab9149bbaa4d5eca054ed93f9e1b66cc500895d"
+ "version": "4.3",
+ "ref": "3eb8df139ec05414489d55b97603c5f6ca0c44cb"
},
"files": [
- "config/packages/test/twig.yaml",
- "config/packages/twig.yaml",
- "templates/base.html.twig"
+ "config/packages/test/validator.yaml",
+ "config/packages/validator.yaml"
]
},
"symfony/var-dumper": {
@@ -314,8 +499,11 @@
"symfony/yaml": {
"version": "v5.0.1"
},
- "twig/twig": {
- "version": "v3.0.0"
+ "webimpress/safe-writer": {
+ "version": "2.0.0"
+ },
+ "webmozart/assert": {
+ "version": "1.10.0"
},
"zendframework/zend-code": {
"version": "3.4.1"
diff --git a/templates/base-empty.html.twig b/templates/base-empty.html.twig
deleted file mode 100644
index 5ecab0c..0000000
--- a/templates/base-empty.html.twig
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- {% block head %}
-
-
- {% block title %}{{ app_name }}{% endblock %}
- {% block stylesheets %}
-{# #}
-
- {% endblock %}
- {% endblock %}
-
-
- {% block body %}
- {% block javascripts %}
-
-
- {% endblock %}
- {% endblock %}
-
-
diff --git a/templates/base.html.twig b/templates/base.html.twig
deleted file mode 100644
index 043f42d..0000000
--- a/templates/base.html.twig
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- {% block title %}Welcome!{% endblock %}
- {% block stylesheets %}{% endblock %}
-
-
- {% block body %}{% endblock %}
- {% block javascripts %}{% endblock %}
-
-
diff --git a/templates/pages/api/docs.html.twig b/templates/pages/api/docs.html.twig
deleted file mode 100644
index 770fac5..0000000
--- a/templates/pages/api/docs.html.twig
+++ /dev/null
@@ -1,9 +0,0 @@
-{% extends 'base-empty.html.twig' %}
-
-{% block title %} API Documentation | {{ parent() }}{% endblock %}
-
-{% block body %}
-
- {{ parent() }}
-{% endblock %}
-
diff --git a/tests/AbstractWebTestCase.php b/tests/AbstractWebTestCase.php
index 71b7270..41d9f61 100644
--- a/tests/AbstractWebTestCase.php
+++ b/tests/AbstractWebTestCase.php
@@ -1,39 +1,39 @@
-request('GET', $this->buildUrl($url, $params));
-
- return self::$client->getResponse();
- }
-
- protected function toArray(Response $response): array
- {
- return json_decode($response->getContent(), true, 512, JSON_THROW_ON_ERROR);
- }
-
- private function buildUrl(string $url, array $params = []): string
- {
- if (!empty($params)) {
- $url .= '?' . http_build_query($params);
- }
-
- return $url;
- }
-}
+request('GET', $this->buildUrl($url, $params));
+
+ return self::$client->getResponse();
+ }
+
+ protected function toArray(Response $response): array
+ {
+ return json_decode($response->getContent(), true, 512, JSON_THROW_ON_ERROR);
+ }
+
+ private function buildUrl(string $url, array $params = []): string
+ {
+ if (!empty($params)) {
+ $url .= '?'.http_build_query($params);
+ }
+
+ return $url;
+ }
+}
diff --git a/tests/AssertionTrait.php b/tests/AssertionTrait.php
new file mode 100644
index 0000000..2e0462a
--- /dev/null
+++ b/tests/AssertionTrait.php
@@ -0,0 +1,33 @@
+getLine1(), $tle->getLine2(), $tle->getName());
+
+ self::assertEquals('http://localhost/api/tle/'.$tle->getId(), $response['@id']);
+ self::assertEquals('Tle', $response['@type']);
+ self::assertEquals($tle->getId(), $response['satelliteId']);
+ self::assertEquals($tle->getName(), $response['name']);
+ self::assertEquals($model->epochDateTime()->format(\DateTimeInterface::ATOM), $response['date']);
+ self::assertEquals($tle->getLine1(), $response['line1']);
+ self::assertEquals($tle->getLine2(), $response['line2']);
+ }
+
+ public function assertObserverCorrect(array $expected, array $actual): void
+ {
+ self::assertEquals(
+ [
+ '@type' => 'Observer',
+ 'altitude' => 0,
+ ...$expected,
+ ],
+ $actual
+ );
+ }
+}
diff --git a/tests/CollectionTest.php b/tests/Controller/CollectionTest.php
similarity index 52%
rename from tests/CollectionTest.php
rename to tests/Controller/CollectionTest.php
index 5feec34..c6c8c25 100644
--- a/tests/CollectionTest.php
+++ b/tests/Controller/CollectionTest.php
@@ -1,56 +1,55 @@
1,
'expected' => [
- '@id' => 'http://localhost/api/tle?page=1&page-size=2',
+ '@id' => 'http://localhost/api/tle/?page=1&page-size=2',
'@type' => 'PartialCollectionView',
- 'first' => 'http://localhost/api/tle?page=1&page-size=2',
- 'next' => 'http://localhost/api/tle?page=2&page-size=2',
- 'last' => 'http://localhost/api/tle?page=5&page-size=2'
- ]
+ 'first' => 'http://localhost/api/tle/?page=1&page-size=2',
+ 'next' => 'http://localhost/api/tle/?page=2&page-size=2',
+ 'last' => 'http://localhost/api/tle/?page=6&page-size=2',
+ ],
],
[
'page' => 3,
'expected' => [
- '@id' => 'http://localhost/api/tle?page=3&page-size=2',
+ '@id' => 'http://localhost/api/tle/?page=3&page-size=2',
'@type' => 'PartialCollectionView',
- 'first' => 'http://localhost/api/tle?page=1&page-size=2',
- 'previous' => 'http://localhost/api/tle?page=2&page-size=2',
- 'next' => 'http://localhost/api/tle?page=4&page-size=2',
- 'last' => 'http://localhost/api/tle?page=5&page-size=2'
- ]
+ 'first' => 'http://localhost/api/tle/?page=1&page-size=2',
+ 'previous' => 'http://localhost/api/tle/?page=2&page-size=2',
+ 'next' => 'http://localhost/api/tle/?page=4&page-size=2',
+ 'last' => 'http://localhost/api/tle/?page=6&page-size=2',
+ ],
],
[
'page' => 5,
'expected' => [
- '@id' => 'http://localhost/api/tle?page=5&page-size=2',
+ '@id' => 'http://localhost/api/tle/?page=5&page-size=2',
'@type' => 'PartialCollectionView',
- 'first' => 'http://localhost/api/tle?page=1&page-size=2',
- 'previous' => 'http://localhost/api/tle?page=4&page-size=2',
- 'last' => 'http://localhost/api/tle?page=5&page-size=2'
- ]
+ 'first' => 'http://localhost/api/tle/?page=1&page-size=2',
+ 'previous' => 'http://localhost/api/tle/?page=4&page-size=2',
+ 'next' => 'http://localhost/api/tle/?page=6&page-size=2',
+ 'last' => 'http://localhost/api/tle/?page=6&page-size=2',
+ ],
],
[
'page' => 7,
'expected' => [
- '@id' => 'http://localhost/api/tle?page=7&page-size=2',
+ '@id' => 'http://localhost/api/tle/?page=7&page-size=2',
'@type' => 'PartialCollectionView',
- 'first' => 'http://localhost/api/tle?page=1&page-size=2',
- 'previous' => 'http://localhost/api/tle?page=6&page-size=2',
- 'last' => 'http://localhost/api/tle?page=5&page-size=2'
- ]
- ]
+ 'first' => 'http://localhost/api/tle/?page=1&page-size=2',
+ 'previous' => 'http://localhost/api/tle/?page=6&page-size=2',
+ 'last' => 'http://localhost/api/tle/?page=6&page-size=2',
+ ],
+ ],
];
public function testPaginationWorks(): void
@@ -69,36 +68,32 @@ public function testPaginationWorks(): void
public function testPaginationError(): void
{
- $this->expectException(LogicException::class);
$response = $this->getCollection(-1, 2);
self::assertEquals(
- Response::HTTP_INTERNAL_SERVER_ERROR,
+ Response::HTTP_BAD_REQUEST,
$response->getStatusCode(),
- 'Assert HTTP 500 is returned for page -1'
+ 'Assert HTTP 400 is returned for page -1'
);
- $this->expectException(LogicException::class);
$response = $this->getCollection(0, 2);
self::assertEquals(
- Response::HTTP_INTERNAL_SERVER_ERROR,
+ Response::HTTP_BAD_REQUEST,
$response->getStatusCode(),
- 'Assert HTTP 500 is returned for page 0'
+ 'Assert HTTP 400 is returned for page 0'
);
- $this->expectException(LogicException::class);
$response = $this->getCollection(1, -1);
self::assertEquals(
- Response::HTTP_INTERNAL_SERVER_ERROR,
+ Response::HTTP_BAD_REQUEST,
$response->getStatusCode(),
- 'Assert HTTP 500 is returned for page size -1'
+ 'Assert HTTP 400 is returned for page size -1'
);
- $this->expectException(LogicException::class);
$response = $this->getCollection(1, 0);
self::assertEquals(
- Response::HTTP_INTERNAL_SERVER_ERROR,
+ Response::HTTP_BAD_REQUEST,
$response->getStatusCode(),
- 'Assert HTTP 500 is returned for page size 0'
+ 'Assert HTTP 400 is returned for page size 0'
);
}
@@ -106,10 +101,11 @@ private function assertViewIsCorrect($expected, $actual): void
{
foreach ($actual as $key => $value) {
self::assertArrayHasKey($key, $expected, \sprintf('Assert view has key %s', $key));
- self::assertEquals($value, $expected[$key], \sprintf('Assert value of key %s is correct', $key));
+ self::assertEquals($expected[$key], $value, \sprintf('Assert value of key %s is correct', $key));
}
}
+ /** @noinspection PhpSameParameterValueInspection */
private function getCollectionContent(int $page, int $pageSize): array
{
return $this->toArray(
@@ -120,11 +116,11 @@ private function getCollectionContent(int $page, int $pageSize): array
private function getCollection(int $page, int $pageSize): Response
{
return $this->get(
- '/api/tle',
+ '/api/tle/',
[
'page' => $page,
'page-size' => $pageSize,
]
);
}
-}
\ No newline at end of file
+}
diff --git a/tests/DocumentationTest.php b/tests/Controller/DocsControllerTest.php
similarity index 54%
rename from tests/DocumentationTest.php
rename to tests/Controller/DocsControllerTest.php
index fc3997a..d777a1d 100644
--- a/tests/DocumentationTest.php
+++ b/tests/Controller/DocsControllerTest.php
@@ -1,38 +1,33 @@
get('/api/tle/docs');
-
- self::assertEquals(200, $response->getStatusCode(), 'Assert documentation is available');
- }
-
- public function testDocumentationIsCorrect(): void
- {
- $response = $this->get('/api/tle/json');
+ $response = $this->get('/api/tle.json');
- self::assertEquals(200, $response->getStatusCode(), 'Assert json documentation is available');
+ self::assertEquals(Response::HTTP_OK, $response->getStatusCode(), 'Assert json documentation is available');
$response = $this->toArray($response);
$collectionSchema = $response['paths']['/api/tle']['get']['responses'][200]['content']['application/json']['schema']['properties'];
$paginationSchema = $response['components']['schemas']['Pagination']['properties'];
- $tleSchema = $response['components']['schemas']['TLE']['allOf'][0]['properties'];
+ $tleSchema = $response['components']['schemas']['TleModel']['allOf'][0]['properties'];
$tle = TleFixtures::create();
- $response = $this->toArray($this->get('/api/tle/' . $tle->getId()));
+ $response = $this->toArray($this->get('/api/tle/'.$tle->getId()));
self::assertCount(\count($tleSchema), $response);
self::assertEquals(array_keys($tleSchema), array_keys($response));
- $response = $this->toArray($this->get('/api/tle', ['page-size' => 2, 'page' => 2]));
+ $response = $this->toArray($this->get('/api/tle/', ['page-size' => 2, 'page' => 2]));
self::assertCount(\count($paginationSchema), $response['view']);
self::assertEquals(array_keys($paginationSchema), array_keys($response['view']));
@@ -40,4 +35,11 @@ public function testDocumentationIsCorrect(): void
self::assertCount(\count($response), $collectionSchema);
self::assertEquals(array_keys($response), array_keys($collectionSchema));
}
-}
\ No newline at end of file
+
+ public function testHomepage(): void
+ {
+ $response = $this->get('/api/tle/docs');
+
+ self::assertEmpty($response->getContent());
+ }
+}
diff --git a/tests/Controller/FlyOverControllerTest.php b/tests/Controller/FlyOverControllerTest.php
new file mode 100644
index 0000000..a5a54e6
--- /dev/null
+++ b/tests/Controller/FlyOverControllerTest.php
@@ -0,0 +1,344 @@
+get(
+ '/api/tle/'.$tle->getId().'/flyover',
+ [
+ 'latitude' => 45,
+ 'longitude' => 0,
+ 'date' => '2022-01-11T00:00:00+00:00',
+ ]
+ );
+
+ self::assertEquals(Response::HTTP_OK, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('https://www.w3.org/ns/hydra/context.jsonld', $response['@context']);
+ self::assertEquals(
+ 'http://localhost/api/tle/43550/flyover?latitude=45&longitude=0&only_visible=1&date=2022-01-11T00:00:00%2B00:00',
+ $response['@id']
+ );
+ self::assertEquals('SatelliteFlyOverCollection', $response['@type']);
+
+ $this->assertObserverCorrect(
+ [
+ 'timezone' => 'Europe/Andorra',
+ 'date' => '2022-01-11T00:00:00+00:00',
+ 'latitude' => 45,
+ 'longitude' => 0,
+ ],
+ $response['observer']
+ );
+
+ $this->assertTle($tle, $response['tle']);
+
+ self::assertEquals(
+ [
+ [
+ '@id' => 'http://localhost/api/tle/43550/flyover/1?latitude=45&longitude=0&only_visible=1&date=2022-01-11T00:00:00%2B00:00',
+ '@type' => 'SatelliteFlyOver',
+ 'aos' => [
+ 'date' => '2022-01-12T07:55:40+01:00',
+ 'azimuth' => 165.39,
+ 'elevation' => 11.43,
+ ],
+ 'max' => [
+ 'date' => '2022-01-12T07:56:14+01:00',
+ 'azimuth' => 140.13,
+ 'elevation' => 13.02,
+ ],
+ 'los' => [
+ 'date' => '2022-01-12T07:56:49+01:00',
+ 'azimuth' => 115.18,
+ 'elevation' => 11.3,
+ ],
+ ],
+ [
+ '@id' => 'http://localhost/api/tle/43550/flyover/2?latitude=45&longitude=0&only_visible=1&date=2022-01-11T00:00:00%2B00:00',
+ '@type' => 'SatelliteFlyOver',
+ 'aos' => [
+ 'date' => '2022-01-15T07:22:39+01:00',
+ 'azimuth' => 143.3,
+ 'elevation' => 58.7,
+ ],
+ 'max' => [
+ 'date' => '2022-01-15T07:22:39+01:00',
+ 'azimuth' => 58.7,
+ 'elevation' => 58.7,
+ ],
+ 'los' => [
+ 'date' => '2022-01-15T07:23:53+01:00',
+ 'azimuth' => 67.42,
+ 'elevation' => 12.3,
+ ],
+ ],
+ [
+ '@id' => 'http://localhost/api/tle/43550/flyover/3?latitude=45&longitude=0&only_visible=1&date=2022-01-11T00:00:00%2B00:00',
+ '@type' => 'SatelliteFlyOver',
+ 'aos' => [
+ 'date' => '2022-01-17T07:30:30+01:00',
+ 'azimuth' => 13.11,
+ 'elevation' => 15.04,
+ ],
+ 'max' => [
+ 'date' => '2022-01-17T07:30:30+01:00',
+ 'azimuth' => 15.04,
+ 'elevation' => 15.04,
+ ],
+ 'los' => [
+ 'date' => '2022-01-17T07:30:48+01:00',
+ 'azimuth' => 24.33,
+ 'elevation' => 12.23,
+ ],
+ ],
+ ],
+ $response['member']
+ );
+
+ self::assertEquals(
+ [
+ 'latitude' => 45,
+ 'longitude' => 0,
+ 'only_visible' => true,
+ 'date' => '2022-01-11T00:00:00+00:00',
+ 'satelliteId' => 43550,
+ ],
+ $response['parameters']
+ );
+
+ return $response;
+ }
+
+ /**
+ * @depends testFlyOverForSatellite
+ */
+ public function testFlyOverDetails(array $data): void
+ {
+ $response = $this->get($data['member'][0]['@id']);
+
+ self::assertEquals(Response::HTTP_OK, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('https://www.w3.org/ns/hydra/context.jsonld', $response['@context']);
+ self::assertEquals(
+ 'http://localhost/api/tle/43550/flyover/1?latitude=45&longitude=0&only_visible=1&date=2022-01-11T00:00:00%2B00:00',
+ $response['@id']
+ );
+
+ $this->assertObserverCorrect(
+ [
+ 'timezone' => 'Europe/Andorra',
+ 'date' => '2022-01-11T00:00:00+00:00',
+ 'latitude' => 45,
+ 'longitude' => 0,
+ ],
+ $response['observer']
+ );
+
+ $this->assertTle(TleFixtures::create(), $response['tle']);
+
+ self::assertEquals('SatelliteFlyOverDetails', $response['@type']);
+ self::assertEquals(
+ [
+ 'date' => '2022-01-12T07:55:40+01:00',
+ 'azimuth' => 165.39,
+ 'elevation' => 11.43,
+ ],
+ $response['aos']
+ );
+ self::assertEquals(
+ [
+ 'date' => '2022-01-12T07:56:14+01:00',
+ 'azimuth' => 140.13,
+ 'elevation' => 13.02,
+ ],
+ $response['max']
+ );
+ self::assertEquals(
+ [
+ 'date' => '2022-01-12T07:56:49+01:00',
+ 'azimuth' => 115.18,
+ 'elevation' => 11.3,
+ ],
+ $response['los']
+ );
+
+ self::assertEquals(
+ [
+ [
+ 'azimuth' => 207.65669959435,
+ 'elevation' => 0.0047869592920753,
+ ],
+ [
+ 'azimuth' => 205.38477921994,
+ 'elevation' => 1.0912635294549,
+ ],
+ [
+ 'azimuth' => 202.65595508189,
+ 'elevation' => 2.2651771539291,
+ ],
+ [
+ 'azimuth' => 199.33469704804,
+ 'elevation' => 3.5438021529901,
+ ],
+ [
+ 'azimuth' => 195.23705191884,
+ 'elevation' => 4.9443077838983,
+ ],
+ [
+ 'azimuth' => 190.11679092622,
+ 'elevation' => 6.4773095713303,
+ ],
+ [
+ 'azimuth' => 183.65932836183,
+ 'elevation' => 8.1311877732861,
+ ],
+ [
+ 'azimuth' => 175.50942605954,
+ 'elevation' => 9.8398778133251,
+ ],
+ [
+ 'azimuth' => 165.38832703269,
+ 'elevation' => 11.433463880821,
+ ],
+ [
+ 'azimuth' => 153.35761135124,
+ 'elevation' => 12.609105694977,
+ ],
+ [
+ 'azimuth' => 140.12610595023,
+ 'elevation' => 13.022338671373,
+ ],
+ [
+ 'azimuth' => 126.98711086195,
+ 'elevation' => 12.525560688957,
+ ],
+ [
+ 'azimuth' => 115.18410828561,
+ 'elevation' => 11.301953434457,
+ ],
+ [
+ 'azimuth' => 105.33145147768,
+ 'elevation' => 9.7004916046037,
+ ],
+ [
+ 'azimuth' => 97.426469426974,
+ 'elevation' => 8.0082733487551,
+ ],
+ [
+ 'azimuth' => 91.16864583908,
+ 'elevation' => 6.3798579196494,
+ ],
+ [
+ 'azimuth' => 86.20406033951,
+ 'elevation' => 4.8728059546152,
+ ],
+ [
+ 'azimuth' => 82.226671257738,
+ 'elevation' => 3.4953715898431,
+ ],
+ [
+ 'azimuth' => 78.999104073798,
+ 'elevation' => 2.2361396455495,
+ ],
+ [
+ 'azimuth' => 76.344581280163,
+ 'elevation' => 1.0781611811795,
+ ],
+ ],
+ $response['details']
+ );
+ }
+
+ public function testLatitudeAbove90(): void
+ {
+ $tle = TleFixtures::create();
+
+ $response = $this->get(
+ '/api/tle/'.$tle->getId().'/flyover',
+ [
+ 'latitude' => 100,
+ 'longitude' => 0,
+ ]
+ );
+
+ self::assertEquals(Response::HTTP_BAD_REQUEST, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('Invalid latitude value', $response['response']['message']);
+ }
+
+ public function testLatitudeBellow90(): void
+ {
+ $tle = TleFixtures::create();
+
+ $response = $this->get(
+ '/api/tle/'.$tle->getId().'/flyover',
+ [
+ 'latitude' => -100,
+ 'longitude' => 0,
+ ]
+ );
+
+ self::assertEquals(Response::HTTP_BAD_REQUEST, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('Invalid latitude value', $response['response']['message']);
+ }
+
+ public function testLongitudeAbove180(): void
+ {
+ $tle = TleFixtures::create();
+
+ $response = $this->get(
+ '/api/tle/'.$tle->getId().'/flyover',
+ [
+ 'latitude' => 0,
+ 'longitude' => 190,
+ ]
+ );
+
+ self::assertEquals(Response::HTTP_BAD_REQUEST, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('Invalid longitude value', $response['response']['message']);
+ }
+
+ public function testLongitudeBellow180(): void
+ {
+ $tle = TleFixtures::create();
+
+ $response = $this->get(
+ '/api/tle/'.$tle->getId().'/flyover',
+ [
+ 'latitude' => 0,
+ 'longitude' => -190,
+ ]
+ );
+
+ self::assertEquals(Response::HTTP_BAD_REQUEST, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('Invalid longitude value', $response['response']['message']);
+ }
+}
diff --git a/tests/Controller/PropagateControllerTest.php b/tests/Controller/PropagateControllerTest.php
new file mode 100644
index 0000000..21947f6
--- /dev/null
+++ b/tests/Controller/PropagateControllerTest.php
@@ -0,0 +1,111 @@
+get('/api/tle/0/propagate');
+
+ self::assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('Unable to find record with id 0', $response['response']['message']);
+ }
+
+ public function testPropagateSGP4(): void
+ {
+ $tle = TleFixtures::create();
+
+ $response = $this->get(
+ '/api/tle/'.$tle->getId().'/propagate',
+ [
+ 'date' => '2021-04-26T17:49:45+02:00',
+ ]
+ );
+
+ self::assertEquals(Response::HTTP_OK, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('https://www.w3.org/ns/hydra/context.jsonld', $response['@context']);
+ self::assertEquals('http://localhost/api/tle/43550/propagate?date=2021-04-26T17:49:45%2B02:00', $response['@id']);
+ self::assertEquals('SatellitePropagationResult', $response['@type']);
+
+ self::assertArrayHasKey('tle', $response);
+
+ self::assertEquals('SGP4', $response['algorithm']);
+
+ self::assertEquals('ECI', $response['vector']['reference_frame']);
+
+ self::assertEquals(3731.3677738358, $response['vector']['position']['x']);
+ self::assertEquals(-3929.0247024138, $response['vector']['position']['y']);
+ self::assertEquals(-3820.6175474185, $response['vector']['position']['z']);
+ self::assertEquals(6630.0421581948, $response['vector']['position']['r']);
+ self::assertEquals('km', $response['vector']['position']['unit']);
+
+ self::assertEquals(2.2692661551689, $response['vector']['velocity']['x']);
+ self::assertEquals(6.1586427245624, $response['vector']['velocity']['y']);
+ self::assertEquals(-4.1239106928913, $response['vector']['velocity']['z']);
+ self::assertEquals(7.7514571852487, $response['vector']['velocity']['r']);
+ self::assertEquals('km/s', $response['vector']['velocity']['unit']);
+
+ self::assertEquals(-35.362152001955, $response['geodetic']['latitude']);
+ self::assertEquals(221.21616992358, $response['geodetic']['longitude']);
+ self::assertEquals(259.03105001661, $response['geodetic']['altitude']);
+
+ self::assertEquals(43550, $response['parameters']['satelliteId']);
+ self::assertEquals('2021-04-26T17:49:45+02:00', $response['parameters']['date']);
+ }
+
+ public function testPropagateSDP4(): void
+ {
+ $tle = TleFixtures::createDeep();
+
+ $response = $this->get(
+ '/api/tle/'.$tle->getId().'/propagate',
+ [
+ 'date' => '2021-04-26T17:49:45+02:00',
+ ]
+ );
+
+ self::assertEquals(Response::HTTP_OK, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('https://www.w3.org/ns/hydra/context.jsonld', $response['@context']);
+ self::assertEquals('http://localhost/api/tle/22049/propagate?date=2021-04-26T17:49:45%2B02:00', $response['@id']);
+ self::assertEquals('SatellitePropagationResult', $response['@type']);
+
+ self::assertArrayHasKey('tle', $response);
+
+ self::assertEquals('SDP4', $response['algorithm']);
+
+ self::assertEquals('ECI', $response['vector']['reference_frame']);
+
+ self::assertEquals(142825.54086031896, $response['vector']['position']['x']);
+ self::assertEquals(133973.34798843606, $response['vector']['position']['y']);
+ self::assertEquals(1303.6185230048, $response['vector']['position']['z']);
+ self::assertEquals(195830.7751976863, $response['vector']['position']['r']);
+ self::assertEquals('km', $response['vector']['position']['unit']);
+
+ self::assertEquals(-0.51310326492624, $response['vector']['velocity']['x']);
+ self::assertEquals(0.5491989174236, $response['vector']['velocity']['y']);
+ self::assertEquals(0.60190735910381, $response['vector']['velocity']['z']);
+ self::assertEquals(0.96290543685273, $response['vector']['velocity']['r']);
+ self::assertEquals('km/s', $response['vector']['velocity']['unit']);
+
+ self::assertEquals(0.38149611267203, $response['geodetic']['latitude']);
+ self::assertEquals(310.86248495862, $response['geodetic']['longitude']);
+ self::assertEquals(189452.64114393186, $response['geodetic']['altitude']);
+
+ self::assertEquals(22049, $response['parameters']['satelliteId']);
+ self::assertEquals('2021-04-26T17:49:45+02:00', $response['parameters']['date']);
+ }
+}
diff --git a/tests/Controller/StatisticsControllerTest.php b/tests/Controller/StatisticsControllerTest.php
new file mode 100644
index 0000000..86e91a4
--- /dev/null
+++ b/tests/Controller/StatisticsControllerTest.php
@@ -0,0 +1,16 @@
+get('/api/tle/hits');
+
+ self::assertEquals(Response::HTTP_OK, $response->getStatusCode());
+ }
+}
diff --git a/tests/Controller/TleControllerTest.php b/tests/Controller/TleControllerTest.php
new file mode 100644
index 0000000..c779312
--- /dev/null
+++ b/tests/Controller/TleControllerTest.php
@@ -0,0 +1,57 @@
+ 'tle:calculate',
+ '--tle' => TleFixtures::createDeep()->getId(),
+ ]
+ );
+
+ $application = new Application(static::$kernel);
+ $application->setAutoExit(false);
+ $application->run($input, new BufferedOutput());
+ }
+
+ public function testTleExtraFieldsMissingData(): void
+ {
+ $tle = TleFixtures::createDeep();
+
+ $response = $this->get('/api/tle/'.$tle->getId(), ['extra' => 1]);
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('https://www.w3.org/ns/hydra/context.jsonld', $response['@context']);
+
+ $this->assertTle($tle, $response);
+ }
+
+ public function testTleExtraFields(): void
+ {
+ $tle = TleFixtures::create();
+
+ $response = $this->get('/api/tle/'.$tle->getId(), ['extra' => 1]);
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('https://www.w3.org/ns/hydra/context.jsonld', $response['@context']);
+
+ $this->assertTle($tle, $response);
+ }
+}
diff --git a/tests/ErrorPageTest.php b/tests/ErrorPageTest.php
index fc7d0de..cef7da3 100644
--- a/tests/ErrorPageTest.php
+++ b/tests/ErrorPageTest.php
@@ -2,20 +2,26 @@
namespace App\Tests;
+use Symfony\Component\HttpFoundation\Response;
+
class ErrorPageTest extends AbstractWebTestCase
{
public function test404(): void
{
$response = $this->get('/noop');
- self::assertEquals($response->getStatusCode(), 404, 'Assert page not found returns HTTP 404');
+ self::assertEquals(
+ Response::HTTP_NOT_FOUND,
+ $response->getStatusCode(),
+ 'Assert page not found returns HTTP 404'
+ );
$response = $this->toArray($response);
self::assertEquals(
- 'No route found for "GET /noop"',
+ 'No route found for "GET http://localhost/noop"',
$response['response']['message'],
'Assert correct response message'
);
}
-}
\ No newline at end of file
+}
diff --git a/tests/Service/SentryCallbackTest.php b/tests/Service/SentryCallbackTest.php
new file mode 100644
index 0000000..7893922
--- /dev/null
+++ b/tests/Service/SentryCallbackTest.php
@@ -0,0 +1,43 @@
+setExceptions(
+ [
+ new ExceptionDataBag(new NotFoundHttpException()),
+ ]
+ );
+
+ self::assertNull($callback($event));
+ }
+
+ public function testOtherExceptionsForwarded(): void
+ {
+ $callback = new SentryCallbackBeforeSend();
+
+ $event = Event::createTransaction();
+
+ $event->setExceptions(
+ [
+ new ExceptionDataBag(new \Exception()),
+ ]
+ );
+
+ /* @noinspection GetClassUsageInspection */
+ self::assertEquals(Event::class, get_class($callback($event)));
+ }
+}
diff --git a/tests/TleModelTest.php b/tests/TleModelTest.php
deleted file mode 100644
index de2a94b..0000000
--- a/tests/TleModelTest.php
+++ /dev/null
@@ -1,64 +0,0 @@
-getLine1(), $entity->getLine2(), $entity->getName());
-
- static::assertEquals(
- TleFixtures::$date,
- $tle->getDate(),
- 'Failed asserting TLE returned correct date'
- );
-
- static::assertEquals(
- 0,
- $tle->getChecksum(TleModel::LINE1),
- 'Failed asserting TLE checksum for line1 is correct'
- );
-
- static::assertEquals(
- 4,
- $tle->getChecksum(TleModel::LINE2),
- 'Failed asserting TLE checksum for line2 is correct'
- );
-
- static::assertEquals(
- 0,
- $tle->calculateChecksum(TleModel::LINE1),
- 'Failed asserting TLE calculated checksum for line1 is correct'
- );
-
- static::assertEquals(
- 4,
- $tle->calculateChecksum(TleModel::LINE2),
- 'Failed asserting TLE calculated checksum for line2 is correct'
- );
-
- static::assertEquals(
- true,
- $tle->verify(),
- 'Failed asserting that TLE is correct'
- );
-
- static::assertEquals(
- 43550,
- $tle->getId(),
- 'Failed asserting that TLE Satellite/Catalog number is correct'
- );
-
- static::assertEquals(
- 'U',
- $tle->getClassification(),
- 'Failed asserting that TLE classification is correct'
- );
- }
-}
diff --git a/tests/TleTest.php b/tests/TleTest.php
index 3829923..38a15bc 100644
--- a/tests/TleTest.php
+++ b/tests/TleTest.php
@@ -1,84 +1,212 @@
-get('/api/tle/'.$tle->getId());
-
- self::assertEquals(200, $response->getStatusCode());
-
- $response = $this->toArray($response);
-
- self::assertArrayHasKey('@id', $response);
- self::assertArrayHasKey('@type', $response);
- self::assertArrayHasKey('satelliteId', $response);
- self::assertArrayHasKey('name', $response);
- self::assertArrayHasKey('date', $response);
- self::assertArrayHasKey('line1', $response);
- self::assertArrayHasKey('line2', $response);
-
- self::assertEquals('http://localhost/api/tle/'.$tle->getId(), $response['@id']);
- self::assertEquals('TleModel', $response['@type']);
- self::assertEquals($tle->getId(), $response['satelliteId']);
- self::assertEquals($tle->getName(), $response['name']);
- self::assertEquals(TleFixtures::$date, $response['date']);
- self::assertEquals($tle->getLine1(), $response['line1']);
- self::assertEquals($tle->getLine2(), $response['line2']);
- }
-
- public function testTleCollectionRecord(): void
- {
- $pageSize = 2;
-
- $response = $this->get(
- '/api/tle',
- [
- 'page-size' => $pageSize,
- ]
- );
-
- self::assertEquals(200, $response->getStatusCode());
-
- $response = $this->toArray($response);
-
- self::assertArrayHasKey('@context', $response);
- self::assertEquals($response['@context'], 'http://www.w3.org/ns/hydra/context.jsonld');
-
- self::assertArrayHasKey('@id', $response);
- self::assertEquals($response['@id'], 'http://localhost/api/tle');
-
- self::assertArrayHasKey('@type', $response);
- self::assertEquals($response['@type'], 'Collection');
-
- self::assertArrayHasKey('totalItems', $response);
- self::assertEquals($response['totalItems'], 10);
-
- self::assertArrayHasKey('member', $response);
- self::assertEquals(\count($response['member']), $pageSize);
-
- self::assertArrayHasKey('parameters', $response);
- $parameters = $response['parameters'];
-
- self::assertArrayHasKey('search', $parameters);
- self::assertEquals($parameters['search'], '*');
-
- self::assertArrayHasKey('sort', $parameters);
- self::assertEquals($parameters['sort'], 'name');
-
- self::assertArrayHasKey('sort-dir', $parameters);
- self::assertEquals($parameters['sort-dir'], 'asc');
-
- self::assertArrayHasKey('page', $parameters);
- self::assertEquals($parameters['page'], 1);
-
- self::assertArrayHasKey('page-size', $parameters);
- self::assertEquals($parameters['page-size'], $pageSize);
- }
-}
+get('/api/tle/'.$tle->getId());
+
+ self::assertEquals(Response::HTTP_OK, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertArrayHasKey('@id', $response);
+ self::assertArrayHasKey('@type', $response);
+ self::assertArrayHasKey('name', $response);
+ self::assertArrayHasKey('date', $response);
+ self::assertArrayHasKey('line1', $response);
+ self::assertArrayHasKey('line2', $response);
+
+ self::assertEquals('http://localhost/api/tle/'.$tle->getId(), $response['@id']);
+ self::assertEquals('Tle', $response['@type']);
+ self::assertEquals($tle->getName(), $response['name']);
+ self::assertEquals(TleFixtures::$date, $response['date']);
+ self::assertEquals($tle->getLine1(), $response['line1']);
+ self::assertEquals($tle->getLine2(), $response['line2']);
+ }
+
+ public function testTleRecordNotFound(): void
+ {
+ $response = $this->get('/api/tle/0');
+ self::assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
+ }
+
+ public function testTleCollectionRecord(): void
+ {
+ $pageSize = 2;
+
+ $response = $this->get(
+ '/api/tle/',
+ [
+ 'page-size' => $pageSize,
+ ]
+ );
+
+ self::assertEquals(Response::HTTP_OK, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertArrayHasKey('@context', $response);
+ self::assertEquals('https://www.w3.org/ns/hydra/context.jsonld', $response['@context']);
+
+ self::assertArrayHasKey('@id', $response);
+ self::assertEquals('http://localhost/api/tle/', $response['@id']);
+
+ self::assertArrayHasKey('@type', $response);
+ self::assertEquals('Tle[]', $response['@type']);
+
+ self::assertArrayHasKey('totalItems', $response);
+ self::assertEquals(11, $response['totalItems']);
+
+ self::assertArrayHasKey('member', $response);
+ self::assertEquals(\count($response['member']), $pageSize);
+
+ self::assertArrayHasKey('parameters', $response);
+ $parameters = $response['parameters'];
+
+ self::assertArrayHasKey('search', $parameters);
+ self::assertEquals('*', $parameters['search']);
+
+ self::assertArrayHasKey('sort', $parameters);
+ self::assertEquals('popularity', $parameters['sort']);
+
+ self::assertArrayHasKey('sort-dir', $parameters);
+ self::assertEquals('desc', $parameters['sort-dir']);
+
+ self::assertArrayHasKey('page', $parameters);
+ self::assertEquals(1, $parameters['page']);
+
+ self::assertArrayHasKey('page-size', $parameters);
+ self::assertEquals($parameters['page-size'], $pageSize);
+ }
+
+ public function testTleCollectionExtra(): void
+ {
+ $response = $this->get(
+ '/api/tle/',
+ [
+ 'extra' => 1,
+ 'search' => 22049,
+ ]
+ );
+
+ $response = $this->toArray($response);
+
+ self::assertArrayHasKey('extra', $response['member'][0]);
+ }
+
+ public function testFloatFilter(): void
+ {
+ $response = $this->get(
+ '/api/tle/',
+ [
+ 'extra' => 1,
+ 'eccentricity[gt]' => .2,
+ ]
+ );
+
+ $response = $this->toArray($response);
+
+ self::assertEquals(.2, $response['parameters']['eccentricity[gt]']);
+ self::assertGreaterThan(.2, $response['member'][0]['extra']['eccentricity']);
+ }
+
+ public function testInvalidFloatFilterOperator(): void
+ {
+ $response = $this->get(
+ '/api/tle/',
+ [
+ 'eccentricity[=>]' => .2,
+ ]
+ );
+
+ $response = $this->toArray($response);
+
+ self::assertEquals("Operator for filter 'eccentricity' should be one of the following gt, gte, lt, lte, '=>' provided", $response['response']['message']);
+ }
+
+ public function testArrayFilter(): void
+ {
+ $response = $this->get(
+ '/api/tle/',
+ [
+ 'satellite_id[]' => 22049,
+ ]
+ );
+
+ $response = $this->toArray($response);
+
+ self::assertEquals(22049, $response['member'][0]['satelliteId']);
+ }
+
+ public function testArrayInvalidFilter(): void
+ {
+ $response = $this->get(
+ '/api/tle/',
+ [
+ 'satellite_id' => 22049,
+ ]
+ );
+
+ self::assertEquals(Response::HTTP_INTERNAL_SERVER_ERROR, $response->getStatusCode());
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('Filter satellite_id value should be array', $response['response']['message']);
+ }
+
+ public function testCollectionSortEccentricity(): void
+ {
+ $response = $this->get(
+ '/api/tle/',
+ [
+ 'sort' => 'eccentricity',
+ 'sort-dir' => 'desc',
+ ]
+ );
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('eccentricity', $response['parameters']['sort']);
+ self::assertEquals('desc', $response['parameters']['sort-dir']);
+ }
+
+ public function testCollectionSortPeriod(): void
+ {
+ $response = $this->get(
+ '/api/tle/',
+ [
+ 'sort' => 'period',
+ 'sort-dir' => 'desc',
+ ]
+ );
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('period', $response['parameters']['sort']);
+ self::assertEquals('desc', $response['parameters']['sort-dir']);
+ }
+
+ public function testCollectionSortSemiMajorAxis(): void
+ {
+ $response = $this->get(
+ '/api/tle/',
+ [
+ 'sort' => 'semi_major_axis',
+ 'sort-dir' => 'desc',
+ ]
+ );
+
+ $response = $this->toArray($response);
+
+ self::assertEquals('semi_major_axis', $response['parameters']['sort']);
+ self::assertEquals('desc', $response['parameters']['sort-dir']);
+ }
+}
diff --git a/config/bootstrap.php b/tests/bootstrap.php
similarity index 61%
rename from config/bootstrap.php
rename to tests/bootstrap.php
index 1a0c60f..9b227dc 100644
--- a/config/bootstrap.php
+++ b/tests/bootstrap.php
@@ -1,34 +1,41 @@
bootEnv(dirname(__DIR__).'/.env');
+// }
// Load cached env vars if the .env.local.php file exists
// Run "composer dump-env prod" to create it (requires symfony/flex >=1.2)
-if (is_array($env = @include dirname(__DIR__) . '/.env.local.php')
+if (is_array($env = @include dirname(__DIR__).'/.env.local.php')
&& ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV']
) {
foreach ($env as $k => $v) {
- $_ENV[$k] = $_ENV[$k] ?? (isset($_SERVER[$k]) && 0 !== strpos($k, 'HTTP_') ? $_SERVER[$k] : $v);
+ $_ENV[$k] = $_ENV[$k] ?? (isset($_SERVER[$k]) && 0 !== strncmp($k, 'HTTP_', 5) ? $_SERVER[$k] : $v);
}
-} elseif (!class_exists(Dotenv::class)) {
- throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.');
-} else {
+} elseif (class_exists(Dotenv::class)) {
// load all the .env files
- (new Dotenv(false))->loadEnv(dirname(__DIR__) . '/.env');
+ (new Dotenv())->loadEnv(dirname(__DIR__).'/.env');
+} else {
+ throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.');
}
if ('test' === $_SERVER['APP_ENV']) {
$kernel = new Kernel($_SERVER['APP_ENV'], true); // create a "test" kernel
$kernel->boot();
- $command = new DoctrineReloadCommand($_SERVER['APP_ENV']);
+ $command = new DoctrineReloadCommand(new ParameterBag(['kernel.environment' => $_SERVER['APP_ENV']]));
(new Application($kernel))->add($command);
$command->run(
@@ -46,4 +53,4 @@
$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev';
$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
$_SERVER['APP_DEBUG'] =
-$_ENV['APP_DEBUG'] = (int)$_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
+$_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..eef6a35
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,27 @@
+{
+ "compilerOptions": {
+ "experimentalDecorators": true,
+ "target": "es5",
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noFallthroughCasesInSwitch": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx"
+ },
+ "include": [
+ "client"
+ ]
+}
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..72d408b
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,12744 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/code-frame@7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
+ integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
+"@babel/code-frame@7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
+ integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
+ integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
+ dependencies:
+ "@babel/highlight" "^7.12.13"
+
+"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.4":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.4.tgz#45720fe0cecf3fd42019e1d12cc3d27fadc98d58"
+ integrity sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ==
+
+"@babel/core@7.12.3":
+ version "7.12.3"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8"
+ integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/generator" "^7.12.1"
+ "@babel/helper-module-transforms" "^7.12.1"
+ "@babel/helpers" "^7.12.1"
+ "@babel/parser" "^7.12.3"
+ "@babel/template" "^7.10.4"
+ "@babel/traverse" "^7.12.1"
+ "@babel/types" "^7.12.1"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.1"
+ json5 "^2.1.2"
+ lodash "^4.17.19"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
+"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.4":
+ version "7.14.3"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38"
+ integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/generator" "^7.14.3"
+ "@babel/helper-compilation-targets" "^7.13.16"
+ "@babel/helper-module-transforms" "^7.14.2"
+ "@babel/helpers" "^7.14.0"
+ "@babel/parser" "^7.14.3"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.14.2"
+ "@babel/types" "^7.14.2"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ semver "^6.3.0"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.12.1", "@babel/generator@^7.12.13", "@babel/generator@^7.14.2", "@babel/generator@^7.14.3":
+ version "7.14.3"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91"
+ integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==
+ dependencies:
+ "@babel/types" "^7.14.2"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
+"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
+ integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc"
+ integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.14.4":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz#33ebd0ffc34248051ee2089350a929ab02f2a516"
+ integrity sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA==
+ dependencies:
+ "@babel/compat-data" "^7.14.4"
+ "@babel/helper-validator-option" "^7.12.17"
+ browserslist "^4.16.6"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.3", "@babel/helper-create-class-features-plugin@^7.14.4":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.4.tgz#abf888d836a441abee783c75229279748705dc42"
+ integrity sha512-idr3pthFlDCpV+p/rMgGLGYIVtazeatrSOQk8YzO2pAepIjQhCN3myeihVg58ax2bbbGK9PUE1reFi7axOYIOw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-function-name" "^7.14.2"
+ "@babel/helper-member-expression-to-functions" "^7.13.12"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.14.4"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+
+"@babel/helper-create-regexp-features-plugin@^7.12.13":
+ version "7.14.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz#149aa6d78c016e318c43e2409a0ae9c136a86688"
+ integrity sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ regexpu-core "^4.7.1"
+
+"@babel/helper-define-polyfill-provider@^0.2.2":
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6"
+ integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.13.0"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/traverse" "^7.13.0"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+ semver "^6.1.2"
+
+"@babel/helper-explode-assignable-expression@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f"
+ integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==
+ dependencies:
+ "@babel/types" "^7.13.0"
+
+"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2"
+ integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.12.13"
+ "@babel/template" "^7.12.13"
+ "@babel/types" "^7.14.2"
+
+"@babel/helper-get-function-arity@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
+ integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-hoist-variables@^7.13.0":
+ version "7.13.16"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz#1b1651249e94b51f8f0d33439843e33e39775b30"
+ integrity sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==
+ dependencies:
+ "@babel/traverse" "^7.13.15"
+ "@babel/types" "^7.13.16"
+
+"@babel/helper-member-expression-to-functions@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72"
+ integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==
+ dependencies:
+ "@babel/types" "^7.13.12"
+
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977"
+ integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==
+ dependencies:
+ "@babel/types" "^7.13.12"
+
+"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5"
+ integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==
+ dependencies:
+ "@babel/helper-module-imports" "^7.13.12"
+ "@babel/helper-replace-supers" "^7.13.12"
+ "@babel/helper-simple-access" "^7.13.12"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ "@babel/helper-validator-identifier" "^7.14.0"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.14.2"
+ "@babel/types" "^7.14.2"
+
+"@babel/helper-optimise-call-expression@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
+ integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
+ integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
+
+"@babel/helper-remap-async-to-generator@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209"
+ integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-wrap-function" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
+"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.4":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz#b2ab16875deecfff3ddfcd539bc315f72998d836"
+ integrity sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.13.12"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/traverse" "^7.14.2"
+ "@babel/types" "^7.14.4"
+
+"@babel/helper-simple-access@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6"
+ integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==
+ dependencies:
+ "@babel/types" "^7.13.12"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
+ integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
+ dependencies:
+ "@babel/types" "^7.12.1"
+
+"@babel/helper-split-export-declaration@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
+ integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0":
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288"
+ integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==
+
+"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
+ integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
+
+"@babel/helper-wrap-function@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4"
+ integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==
+ dependencies:
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
+"@babel/helpers@^7.12.1", "@babel/helpers@^7.14.0":
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62"
+ integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==
+ dependencies:
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.14.0"
+ "@babel/types" "^7.14.0"
+
+"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13":
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf"
+ integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.14.0"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3", "@babel/parser@^7.7.0":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.4.tgz#a5c560d6db6cd8e6ed342368dea8039232cbab18"
+ integrity sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a"
+ integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+ "@babel/plugin-proposal-optional-chaining" "^7.13.12"
+
+"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz#3a2085abbf5d5f962d480dbc81347385ed62eb1e"
+ integrity sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
+"@babel/plugin-proposal-class-properties@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de"
+ integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.12.1"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37"
+ integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-proposal-class-static-block@^7.14.3":
+ version "7.14.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz#5a527e2cae4a4753119c3a3e7f64ecae8ccf1360"
+ integrity sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.14.3"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-class-static-block" "^7.12.13"
+
+"@babel/plugin-proposal-decorators@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f"
+ integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.12.1"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-decorators" "^7.12.1"
+
+"@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz#01ebabd7c381cff231fa43e302939a9de5be9d9f"
+ integrity sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
+"@babel/plugin-proposal-export-namespace-from@^7.12.1", "@babel/plugin-proposal-export-namespace-from@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz#62542f94aa9ce8f6dba79eec698af22112253791"
+ integrity sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz#830b4e2426a782e8b2878fbfe2cba85b70cbf98c"
+ integrity sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
+"@babel/plugin-proposal-logical-assignment-operators@^7.12.1", "@babel/plugin-proposal-logical-assignment-operators@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz#222348c080a1678e0e74ea63fe76f275882d1fd7"
+ integrity sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c"
+ integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz#425b11dc62fc26939a2ab42cbba680bdf5734546"
+ integrity sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-proposal-numeric-separator@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6"
+ integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-numeric-separator@^7.12.1", "@babel/plugin-proposal-numeric-separator@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz#82b4cc06571143faf50626104b335dd71baa4f9e"
+ integrity sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.14.4":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.4.tgz#0e2b4de419915dc0b409378e829412e2031777c4"
+ integrity sha512-AYosOWBlyyXEagrPRfLJ1enStufsr7D1+ddpj8OLi9k7B6+NdZ0t/9V7Fh+wJ4g2Jol8z2JkgczYqtWrZd4vbA==
+ dependencies:
+ "@babel/compat-data" "^7.14.4"
+ "@babel/helper-compilation-targets" "^7.14.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.14.2"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz#150d4e58e525b16a9a1431bd5326c4eed870d717"
+ integrity sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-proposal-optional-chaining@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797"
+ integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.0"
+
+"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz#df8171a8b9c43ebf4c1dabe6311b432d83e1b34e"
+ integrity sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787"
+ integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-proposal-private-property-in-object@^7.14.0":
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636"
+ integrity sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-create-class-features-plugin" "^7.14.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.0"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba"
+ integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4":
+ version "7.8.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-bigint@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
+ integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-class-static-block@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz#8e3d674b0613e67975ceac2776c97b60cafc5c9c"
+ integrity sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-decorators@^7.12.1":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648"
+ integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.3"
+
+"@babel/plugin-syntax-flow@^7.12.1":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86"
+ integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-import-meta@^7.8.3":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
+ integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-jsx@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15"
+ integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-private-property-in-object@^7.14.0":
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz#762a4babec61176fec6c88480dec40372b140c0b"
+ integrity sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178"
+ integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-typescript@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474"
+ integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae"
+ integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f"
+ integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
+
+"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4"
+ integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.14.4":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.4.tgz#caf140b0b2e2462c509553d140e6d0abefb61ed8"
+ integrity sha512-5KdpkGxsZlTk+fPleDtGKsA+pon28+ptYmMO8GBSa5fHERCJWAzj50uAfCKBqq42HO+Zot6JF1x37CRprwmN4g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.14.4":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.4.tgz#a83c15503fc71a0f99e876fdce7dadbc6575ec3a"
+ integrity sha512-p73t31SIj6y94RDVX57rafVjttNr8MvKEgs5YFatNB/xC68zM3pyosuOEcQmYsYlyQaGY9R7rAULVRcat5FKJQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-function-name" "^7.14.2"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-replace-supers" "^7.14.4"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed"
+ integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.14.4":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.4.tgz#acbec502e9951f30f4441eaca1d2f29efade59ed"
+ integrity sha512-JyywKreTCGTUsL1OKu1A3ms/R1sTP0WxbpXlALeGzF53eB3bxtNkYdMj9SDgK7g6ImPy76J5oYYKoTtQImlhQA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad"
+ integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de"
+ integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1"
+ integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-flow-strip-types@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4"
+ integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-flow" "^7.12.1"
+
+"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062"
+ integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051"
+ integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==
+ dependencies:
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9"
+ integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40"
+ integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz#6622806fe1a7c07a1388444222ef9535f2ca17b0"
+ integrity sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.14.2"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.14.0":
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161"
+ integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.14.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-simple-access" "^7.13.12"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3"
+ integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.13.0"
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-validator-identifier" "^7.12.11"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.14.0":
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34"
+ integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.14.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9"
+ integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+
+"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c"
+ integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7"
+ integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.12.13"
+
+"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.14.2":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31"
+ integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81"
+ integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-react-constant-elements@^7.12.1":
+ version "7.13.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz#0208b1d942bf939cd4f7aa5b255d42602aa4a920"
+ integrity sha512-SNJU53VM/SjQL0bZhyU+f4kJQz7bQQajnrZRSaU21hruG/NWY41AEM9AWXeXX90pYr/C2yAmTgI6yW3LlLrAUQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-react-display-name@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d"
+ integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.12.13":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.2.tgz#2e854544d42ab3bb9c21f84e153d62e800fbd593"
+ integrity sha512-zCubvP+jjahpnFJvPaHPiGVfuVUjXHhFvJKQdNnsmSsiU9kR/rCZ41jHc++tERD2zV+p7Hr6is+t5b6iWTCqSw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-react-jsx-development@^7.12.1", "@babel/plugin-transform-react-jsx-development@^7.12.17":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447"
+ integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==
+ dependencies:
+ "@babel/plugin-transform-react-jsx" "^7.12.17"
+
+"@babel/plugin-transform-react-jsx-self@^7.12.1":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60"
+ integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-react-jsx-source@^7.12.1":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.2.tgz#2620b57e7de775c0687f65d464026d15812941da"
+ integrity sha512-OMorspVyjxghAjzgeAWc6O7W7vHbJhV69NeTGdl9Mxgz6PaweAuo7ffB9T5A1OQ9dGcw0As4SYMUhyNC4u7mVg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12":
+ version "7.14.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.3.tgz#0e26597805cf0862da735f264550933c38babb66"
+ integrity sha512-uuxuoUNVhdgYzERiHHFkE4dWoJx+UFVyuAl0aqN8P2/AKFHwqgUC5w2+4/PjpKXJsFgBlYAFXlUmDQ3k3DUkXw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-module-imports" "^7.13.12"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-jsx" "^7.12.13"
+ "@babel/types" "^7.14.2"
+
+"@babel/plugin-transform-react-pure-annotations@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42"
+ integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.13.15":
+ version "7.13.15"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39"
+ integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==
+ dependencies:
+ regenerator-transform "^0.14.2"
+
+"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695"
+ integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-runtime@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5"
+ integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.12.1"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ resolve "^1.8.1"
+ semver "^5.5.1"
+
+"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad"
+ integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd"
+ integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+
+"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f"
+ integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d"
+ integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f"
+ integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-typescript@^7.12.1":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.4.tgz#1c48829fa6d5f2de646060cd08abb6cda4b521a7"
+ integrity sha512-WYdcGNEO7mCCZ2XzRlxwGj3PgeAr50ifkofOUC/+IN/GzKLB+biDPVBUAQN2C/dVZTvEXCp80kfQ1FFZPrwykQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.14.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-typescript" "^7.12.13"
+
+"@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74"
+ integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac"
+ integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/polyfill@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.12.1.tgz#1f2d6371d1261bbd961f3c5d5909150e12d0bd96"
+ integrity sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==
+ dependencies:
+ core-js "^2.6.5"
+ regenerator-runtime "^0.13.4"
+
+"@babel/preset-env@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2"
+ integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==
+ dependencies:
+ "@babel/compat-data" "^7.12.1"
+ "@babel/helper-compilation-targets" "^7.12.1"
+ "@babel/helper-module-imports" "^7.12.1"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-validator-option" "^7.12.1"
+ "@babel/plugin-proposal-async-generator-functions" "^7.12.1"
+ "@babel/plugin-proposal-class-properties" "^7.12.1"
+ "@babel/plugin-proposal-dynamic-import" "^7.12.1"
+ "@babel/plugin-proposal-export-namespace-from" "^7.12.1"
+ "@babel/plugin-proposal-json-strings" "^7.12.1"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
+ "@babel/plugin-proposal-numeric-separator" "^7.12.1"
+ "@babel/plugin-proposal-object-rest-spread" "^7.12.1"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.12.1"
+ "@babel/plugin-proposal-optional-chaining" "^7.12.1"
+ "@babel/plugin-proposal-private-methods" "^7.12.1"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.12.1"
+ "@babel/plugin-syntax-async-generators" "^7.8.0"
+ "@babel/plugin-syntax-class-properties" "^7.12.1"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.0"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-json-strings" "^7.8.0"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.0"
+ "@babel/plugin-syntax-top-level-await" "^7.12.1"
+ "@babel/plugin-transform-arrow-functions" "^7.12.1"
+ "@babel/plugin-transform-async-to-generator" "^7.12.1"
+ "@babel/plugin-transform-block-scoped-functions" "^7.12.1"
+ "@babel/plugin-transform-block-scoping" "^7.12.1"
+ "@babel/plugin-transform-classes" "^7.12.1"
+ "@babel/plugin-transform-computed-properties" "^7.12.1"
+ "@babel/plugin-transform-destructuring" "^7.12.1"
+ "@babel/plugin-transform-dotall-regex" "^7.12.1"
+ "@babel/plugin-transform-duplicate-keys" "^7.12.1"
+ "@babel/plugin-transform-exponentiation-operator" "^7.12.1"
+ "@babel/plugin-transform-for-of" "^7.12.1"
+ "@babel/plugin-transform-function-name" "^7.12.1"
+ "@babel/plugin-transform-literals" "^7.12.1"
+ "@babel/plugin-transform-member-expression-literals" "^7.12.1"
+ "@babel/plugin-transform-modules-amd" "^7.12.1"
+ "@babel/plugin-transform-modules-commonjs" "^7.12.1"
+ "@babel/plugin-transform-modules-systemjs" "^7.12.1"
+ "@babel/plugin-transform-modules-umd" "^7.12.1"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1"
+ "@babel/plugin-transform-new-target" "^7.12.1"
+ "@babel/plugin-transform-object-super" "^7.12.1"
+ "@babel/plugin-transform-parameters" "^7.12.1"
+ "@babel/plugin-transform-property-literals" "^7.12.1"
+ "@babel/plugin-transform-regenerator" "^7.12.1"
+ "@babel/plugin-transform-reserved-words" "^7.12.1"
+ "@babel/plugin-transform-shorthand-properties" "^7.12.1"
+ "@babel/plugin-transform-spread" "^7.12.1"
+ "@babel/plugin-transform-sticky-regex" "^7.12.1"
+ "@babel/plugin-transform-template-literals" "^7.12.1"
+ "@babel/plugin-transform-typeof-symbol" "^7.12.1"
+ "@babel/plugin-transform-unicode-escapes" "^7.12.1"
+ "@babel/plugin-transform-unicode-regex" "^7.12.1"
+ "@babel/preset-modules" "^0.1.3"
+ "@babel/types" "^7.12.1"
+ core-js-compat "^3.6.2"
+ semver "^5.5.0"
+
+"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.8.4":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.4.tgz#73fc3228c59727e5e974319156f304f0d6685a2d"
+ integrity sha512-GwMMsuAnDtULyOtuxHhzzuSRxFeP0aR/LNzrHRzP8y6AgDNgqnrfCCBm/1cRdTU75tRs28Eh76poHLcg9VF0LA==
+ dependencies:
+ "@babel/compat-data" "^7.14.4"
+ "@babel/helper-compilation-targets" "^7.14.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-validator-option" "^7.12.17"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12"
+ "@babel/plugin-proposal-async-generator-functions" "^7.14.2"
+ "@babel/plugin-proposal-class-properties" "^7.13.0"
+ "@babel/plugin-proposal-class-static-block" "^7.14.3"
+ "@babel/plugin-proposal-dynamic-import" "^7.14.2"
+ "@babel/plugin-proposal-export-namespace-from" "^7.14.2"
+ "@babel/plugin-proposal-json-strings" "^7.14.2"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.14.2"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.2"
+ "@babel/plugin-proposal-numeric-separator" "^7.14.2"
+ "@babel/plugin-proposal-object-rest-spread" "^7.14.4"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.14.2"
+ "@babel/plugin-proposal-optional-chaining" "^7.14.2"
+ "@babel/plugin-proposal-private-methods" "^7.13.0"
+ "@babel/plugin-proposal-private-property-in-object" "^7.14.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.12.13"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-class-static-block" "^7.12.13"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.0"
+ "@babel/plugin-syntax-top-level-await" "^7.12.13"
+ "@babel/plugin-transform-arrow-functions" "^7.13.0"
+ "@babel/plugin-transform-async-to-generator" "^7.13.0"
+ "@babel/plugin-transform-block-scoped-functions" "^7.12.13"
+ "@babel/plugin-transform-block-scoping" "^7.14.4"
+ "@babel/plugin-transform-classes" "^7.14.4"
+ "@babel/plugin-transform-computed-properties" "^7.13.0"
+ "@babel/plugin-transform-destructuring" "^7.14.4"
+ "@babel/plugin-transform-dotall-regex" "^7.12.13"
+ "@babel/plugin-transform-duplicate-keys" "^7.12.13"
+ "@babel/plugin-transform-exponentiation-operator" "^7.12.13"
+ "@babel/plugin-transform-for-of" "^7.13.0"
+ "@babel/plugin-transform-function-name" "^7.12.13"
+ "@babel/plugin-transform-literals" "^7.12.13"
+ "@babel/plugin-transform-member-expression-literals" "^7.12.13"
+ "@babel/plugin-transform-modules-amd" "^7.14.2"
+ "@babel/plugin-transform-modules-commonjs" "^7.14.0"
+ "@babel/plugin-transform-modules-systemjs" "^7.13.8"
+ "@babel/plugin-transform-modules-umd" "^7.14.0"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13"
+ "@babel/plugin-transform-new-target" "^7.12.13"
+ "@babel/plugin-transform-object-super" "^7.12.13"
+ "@babel/plugin-transform-parameters" "^7.14.2"
+ "@babel/plugin-transform-property-literals" "^7.12.13"
+ "@babel/plugin-transform-regenerator" "^7.13.15"
+ "@babel/plugin-transform-reserved-words" "^7.12.13"
+ "@babel/plugin-transform-shorthand-properties" "^7.12.13"
+ "@babel/plugin-transform-spread" "^7.13.0"
+ "@babel/plugin-transform-sticky-regex" "^7.12.13"
+ "@babel/plugin-transform-template-literals" "^7.13.0"
+ "@babel/plugin-transform-typeof-symbol" "^7.12.13"
+ "@babel/plugin-transform-unicode-escapes" "^7.12.13"
+ "@babel/plugin-transform-unicode-regex" "^7.12.13"
+ "@babel/preset-modules" "^0.1.4"
+ "@babel/types" "^7.14.4"
+ babel-plugin-polyfill-corejs2 "^0.2.0"
+ babel-plugin-polyfill-corejs3 "^0.2.0"
+ babel-plugin-polyfill-regenerator "^0.2.0"
+ core-js-compat "^3.9.0"
+ semver "^6.3.0"
+
+"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4":
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
+ integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
+"@babel/preset-react@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c"
+ integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-transform-react-display-name" "^7.12.1"
+ "@babel/plugin-transform-react-jsx" "^7.12.1"
+ "@babel/plugin-transform-react-jsx-development" "^7.12.1"
+ "@babel/plugin-transform-react-jsx-self" "^7.12.1"
+ "@babel/plugin-transform-react-jsx-source" "^7.12.1"
+ "@babel/plugin-transform-react-pure-annotations" "^7.12.1"
+
+"@babel/preset-react@^7.12.5":
+ version "7.13.13"
+ resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.13.13.tgz#fa6895a96c50763fe693f9148568458d5a839761"
+ integrity sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-validator-option" "^7.12.17"
+ "@babel/plugin-transform-react-display-name" "^7.12.13"
+ "@babel/plugin-transform-react-jsx" "^7.13.12"
+ "@babel/plugin-transform-react-jsx-development" "^7.12.17"
+ "@babel/plugin-transform-react-pure-annotations" "^7.12.1"
+
+"@babel/preset-typescript@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b"
+ integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-transform-typescript" "^7.12.1"
+
+"@babel/runtime-corejs3@^7.10.2":
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz#6bf5fbc0b961f8e3202888cb2cd0fb7a0a9a3f66"
+ integrity sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==
+ dependencies:
+ core-js-pure "^3.0.0"
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740"
+ integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d"
+ integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6"
+ integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.6.0":
+ version "7.14.8"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446"
+ integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
+ integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/parser" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.7.0":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b"
+ integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/generator" "^7.14.2"
+ "@babel/helper-function-name" "^7.14.2"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ "@babel/parser" "^7.14.2"
+ "@babel/types" "^7.14.2"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/traverse@^7.4.5":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0"
+ integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/generator" "^7.12.13"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ "@babel/parser" "^7.12.13"
+ "@babel/types" "^7.12.13"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.19"
+
+"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.14.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.4.tgz#bfd6980108168593b38b3eb48a24aa026b919bc0"
+ integrity sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.14.0"
+ to-fast-properties "^2.0.0"
+
+"@bcoe/v8-coverage@^0.2.3":
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
+ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
+
+"@cnakazawa/watch@^1.0.3":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
+ integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==
+ dependencies:
+ exec-sh "^0.3.2"
+ minimist "^1.2.0"
+
+"@csstools/convert-colors@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
+ integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==
+
+"@csstools/normalize.css@^10.1.0":
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18"
+ integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==
+
+"@date-io/core@1.x", "@date-io/core@^1.3.13":
+ version "1.3.13"
+ resolved "https://registry.yarnpkg.com/@date-io/core/-/core-1.3.13.tgz#90c71da493f20204b7a972929cc5c482d078b3fa"
+ integrity sha512-AlEKV7TxjeK+jxWVKcCFrfYAk8spX9aCyiToFIiLPtfQbsjmRGLIhb5VZgptQcJdHtLXo7+m0DuurwFgUToQuA==
+
+"@date-io/date-fns@1.x":
+ version "1.3.13"
+ resolved "https://registry.yarnpkg.com/@date-io/date-fns/-/date-fns-1.3.13.tgz#7798844041640ab393f7e21a7769a65d672f4735"
+ integrity sha512-yXxGzcRUPcogiMj58wVgFjc9qUYrCnnU9eLcyNbsQCmae4jPuZCDoIBR21j8ZURsM7GRtU62VOw5yNd4dDHunA==
+ dependencies:
+ "@date-io/core" "^1.3.13"
+
+"@emotion/hash@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
+ integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
+
+"@emotion/is-prop-valid@^0.8.8":
+ version "0.8.8"
+ resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a"
+ integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==
+ dependencies:
+ "@emotion/memoize" "0.7.4"
+
+"@emotion/memoize@0.7.4":
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb"
+ integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==
+
+"@emotion/stylis@^0.8.4":
+ version "0.8.5"
+ resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04"
+ integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==
+
+"@emotion/unitless@^0.7.4":
+ version "0.7.5"
+ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
+ integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
+
+"@eslint/eslintrc@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14"
+ integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.1.1"
+ espree "^7.3.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.2.1"
+ js-yaml "^3.13.1"
+ minimatch "^3.0.4"
+ strip-json-comments "^3.1.1"
+
+"@exodus/schemasafe@^1.0.0-rc.2":
+ version "1.0.0-rc.3"
+ resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.0.0-rc.3.tgz#dda2fbf3dafa5ad8c63dadff7e01d3fdf4736025"
+ integrity sha512-GoXw0U2Qaa33m3eUcxuHnHpNvHjNlLo0gtV091XBpaRINaB4X6FGCG5XKxSFNFiPpugUDqNruHzaqpTdDm4AOg==
+
+"@hapi/address@2.x.x":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
+ integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==
+
+"@hapi/bourne@1.x.x":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a"
+ integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==
+
+"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0":
+ version "8.5.1"
+ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06"
+ integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==
+
+"@hapi/joi@^15.1.0":
+ version "15.1.1"
+ resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7"
+ integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==
+ dependencies:
+ "@hapi/address" "2.x.x"
+ "@hapi/bourne" "1.x.x"
+ "@hapi/hoek" "8.x.x"
+ "@hapi/topo" "3.x.x"
+
+"@hapi/topo@3.x.x":
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29"
+ integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==
+ dependencies:
+ "@hapi/hoek" "^8.3.0"
+
+"@istanbuljs/load-nyc-config@^1.0.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
+ integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
+ dependencies:
+ camelcase "^5.3.1"
+ find-up "^4.1.0"
+ get-package-type "^0.1.0"
+ js-yaml "^3.13.1"
+ resolve-from "^5.0.0"
+
+"@istanbuljs/schema@^0.1.2":
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
+ integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
+
+"@jest/console@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2"
+ integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ jest-message-util "^26.6.2"
+ jest-util "^26.6.2"
+ slash "^3.0.0"
+
+"@jest/core@^26.6.0", "@jest/core@^26.6.3":
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad"
+ integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/reporters" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.4"
+ jest-changed-files "^26.6.2"
+ jest-config "^26.6.3"
+ jest-haste-map "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-regex-util "^26.0.0"
+ jest-resolve "^26.6.2"
+ jest-resolve-dependencies "^26.6.3"
+ jest-runner "^26.6.3"
+ jest-runtime "^26.6.3"
+ jest-snapshot "^26.6.2"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
+ jest-watcher "^26.6.2"
+ micromatch "^4.0.2"
+ p-each-series "^2.1.0"
+ rimraf "^3.0.0"
+ slash "^3.0.0"
+ strip-ansi "^6.0.0"
+
+"@jest/environment@^26.6.0", "@jest/environment@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c"
+ integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==
+ dependencies:
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ jest-mock "^26.6.2"
+
+"@jest/fake-timers@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad"
+ integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@sinonjs/fake-timers" "^6.0.1"
+ "@types/node" "*"
+ jest-message-util "^26.6.2"
+ jest-mock "^26.6.2"
+ jest-util "^26.6.2"
+
+"@jest/globals@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a"
+ integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==
+ dependencies:
+ "@jest/environment" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ expect "^26.6.2"
+
+"@jest/reporters@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6"
+ integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==
+ dependencies:
+ "@bcoe/v8-coverage" "^0.2.3"
+ "@jest/console" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ chalk "^4.0.0"
+ collect-v8-coverage "^1.0.0"
+ exit "^0.1.2"
+ glob "^7.1.2"
+ graceful-fs "^4.2.4"
+ istanbul-lib-coverage "^3.0.0"
+ istanbul-lib-instrument "^4.0.3"
+ istanbul-lib-report "^3.0.0"
+ istanbul-lib-source-maps "^4.0.0"
+ istanbul-reports "^3.0.2"
+ jest-haste-map "^26.6.2"
+ jest-resolve "^26.6.2"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
+ slash "^3.0.0"
+ source-map "^0.6.0"
+ string-length "^4.0.1"
+ terminal-link "^2.0.0"
+ v8-to-istanbul "^7.0.0"
+ optionalDependencies:
+ node-notifier "^8.0.0"
+
+"@jest/source-map@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535"
+ integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==
+ dependencies:
+ callsites "^3.0.0"
+ graceful-fs "^4.2.4"
+ source-map "^0.6.0"
+
+"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18"
+ integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ collect-v8-coverage "^1.0.0"
+
+"@jest/test-sequencer@^26.6.3":
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17"
+ integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==
+ dependencies:
+ "@jest/test-result" "^26.6.2"
+ graceful-fs "^4.2.4"
+ jest-haste-map "^26.6.2"
+ jest-runner "^26.6.3"
+ jest-runtime "^26.6.3"
+
+"@jest/transform@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b"
+ integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/types" "^26.6.2"
+ babel-plugin-istanbul "^6.0.0"
+ chalk "^4.0.0"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.2.4"
+ jest-haste-map "^26.6.2"
+ jest-regex-util "^26.0.0"
+ jest-util "^26.6.2"
+ micromatch "^4.0.2"
+ pirates "^4.0.1"
+ slash "^3.0.0"
+ source-map "^0.6.1"
+ write-file-atomic "^3.0.0"
+
+"@jest/types@^26.6.0", "@jest/types@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e"
+ integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^15.0.0"
+ chalk "^4.0.0"
+
+"@material-ui/core@^4.11.3":
+ version "4.11.3"
+ resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.3.tgz#f22e41775b0bd075e36a7a093d43951bf7f63850"
+ integrity sha512-Adt40rGW6Uds+cAyk3pVgcErpzU/qxc7KBR94jFHBYretU4AtWZltYcNsbeMn9tXL86jjVL1kuGcIHsgLgFGRw==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@material-ui/styles" "^4.11.3"
+ "@material-ui/system" "^4.11.3"
+ "@material-ui/types" "^5.1.0"
+ "@material-ui/utils" "^4.11.2"
+ "@types/react-transition-group" "^4.2.0"
+ clsx "^1.0.4"
+ hoist-non-react-statics "^3.3.2"
+ popper.js "1.16.1-lts"
+ prop-types "^15.7.2"
+ react-is "^16.8.0 || ^17.0.0"
+ react-transition-group "^4.4.0"
+
+"@material-ui/data-grid@^4.0.0-alpha.23":
+ version "4.0.0-alpha.23"
+ resolved "https://registry.yarnpkg.com/@material-ui/data-grid/-/data-grid-4.0.0-alpha.23.tgz#0f6d0f99810873f7aec67f0b1663ea1b040cd383"
+ integrity sha512-7y2+J8b1TTaZOhVY9DVa/6PWSvLpE50p0a7Y76oJTmmT3SYJBSLLiTLBskUwMrs+FLD+b6yCNqZlKIALZZj47Q==
+ dependencies:
+ "@material-ui/utils" "^5.0.0-alpha.14"
+ prop-types "^15.7.2"
+ reselect "^4.0.0"
+
+"@material-ui/icons@^4.11.2":
+ version "4.11.2"
+ resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-4.11.2.tgz#b3a7353266519cd743b6461ae9fdfcb1b25eb4c5"
+ integrity sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+
+"@material-ui/lab@^4.0.0-alpha.57":
+ version "4.0.0-alpha.57"
+ resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.57.tgz#e8961bcf6449e8a8dabe84f2700daacfcafbf83a"
+ integrity sha512-qo/IuIQOmEKtzmRD2E4Aa6DB4A87kmY6h0uYhjUmrrgmEAgbbw9etXpWPVXuRK6AGIQCjFzV6WO2i21m1R4FCw==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@material-ui/utils" "^4.11.2"
+ clsx "^1.0.4"
+ prop-types "^15.7.2"
+ react-is "^16.8.0 || ^17.0.0"
+
+"@material-ui/pickers@^3.3.10":
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/@material-ui/pickers/-/pickers-3.3.10.tgz#f1b0f963348cc191645ef0bdeff7a67c6aa25485"
+ integrity sha512-hS4pxwn1ZGXVkmgD4tpFpaumUaAg2ZzbTrxltfC5yPw4BJV+mGkfnQOB4VpWEYZw2jv65Z0wLwDE/piQiPPZ3w==
+ dependencies:
+ "@babel/runtime" "^7.6.0"
+ "@date-io/core" "1.x"
+ "@types/styled-jsx" "^2.2.8"
+ clsx "^1.0.2"
+ react-transition-group "^4.0.0"
+ rifm "^0.7.0"
+
+"@material-ui/styles@^4.11.3":
+ version "4.11.3"
+ resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.3.tgz#1b8d97775a4a643b53478c895e3f2a464e8916f2"
+ integrity sha512-HzVzCG+PpgUGMUYEJ2rTEmQYeonGh41BYfILNFb/1ueqma+p1meSdu4RX6NjxYBMhf7k+jgfHFTTz+L1SXL/Zg==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@emotion/hash" "^0.8.0"
+ "@material-ui/types" "^5.1.0"
+ "@material-ui/utils" "^4.11.2"
+ clsx "^1.0.4"
+ csstype "^2.5.2"
+ hoist-non-react-statics "^3.3.2"
+ jss "^10.5.1"
+ jss-plugin-camel-case "^10.5.1"
+ jss-plugin-default-unit "^10.5.1"
+ jss-plugin-global "^10.5.1"
+ jss-plugin-nested "^10.5.1"
+ jss-plugin-props-sort "^10.5.1"
+ jss-plugin-rule-value-function "^10.5.1"
+ jss-plugin-vendor-prefixer "^10.5.1"
+ prop-types "^15.7.2"
+
+"@material-ui/system@^4.11.3":
+ version "4.11.3"
+ resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.11.3.tgz#466bc14c9986798fd325665927c963eb47cc4143"
+ integrity sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@material-ui/utils" "^4.11.2"
+ csstype "^2.5.2"
+ prop-types "^15.7.2"
+
+"@material-ui/types@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2"
+ integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==
+
+"@material-ui/utils@^4.11.2":
+ version "4.11.2"
+ resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.11.2.tgz#f1aefa7e7dff2ebcb97d31de51aecab1bb57540a"
+ integrity sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ prop-types "^15.7.2"
+ react-is "^16.8.0 || ^17.0.0"
+
+"@material-ui/utils@^5.0.0-alpha.14":
+ version "5.0.0-alpha.28"
+ resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-5.0.0-alpha.28.tgz#31b665eec75c88d3f27a0d32eeee4db8d7e76817"
+ integrity sha512-WNdnF6EapcQ0x1pcQp/jiQwtKiDipg0awnljQpffEfc+mUhDcwebLsNsglo0++J2ZGXs5DeXIXBXN73MWFD52A==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@types/prop-types" "^15.7.3"
+ "@types/react-is" "^16.7.1 || ^17.0.0"
+ prop-types "^15.7.2"
+ react-is "^17.0.0"
+
+"@nodelib/fs.scandir@2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
+ integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.4"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
+ integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
+ integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.4"
+ fastq "^1.6.0"
+
+"@npmcli/move-file@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674"
+ integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
+ dependencies:
+ mkdirp "^1.0.4"
+ rimraf "^3.0.2"
+
+"@pmmmwh/react-refresh-webpack-plugin@0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766"
+ integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==
+ dependencies:
+ ansi-html "^0.0.7"
+ error-stack-parser "^2.0.6"
+ html-entities "^1.2.1"
+ native-url "^0.2.6"
+ schema-utils "^2.6.5"
+ source-map "^0.7.3"
+
+"@redocly/react-dropdown-aria@^2.0.11":
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/@redocly/react-dropdown-aria/-/react-dropdown-aria-2.0.11.tgz#532b864b329237e646abe45d0f8edc923e77370a"
+ integrity sha512-rmuSC2JFFl4DkPDdGVrmffT9KcbG2AB5jvhxPIrOc1dO9mHRMUUftQY35KZlvWqqSSqVn+AM+J9dhiTo1ZqR8A==
+
+"@rollup/plugin-node-resolve@^7.1.1":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca"
+ integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==
+ dependencies:
+ "@rollup/pluginutils" "^3.0.8"
+ "@types/resolve" "0.0.8"
+ builtin-modules "^3.1.0"
+ is-module "^1.0.0"
+ resolve "^1.14.2"
+
+"@rollup/plugin-replace@^2.3.1":
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a"
+ integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==
+ dependencies:
+ "@rollup/pluginutils" "^3.1.0"
+ magic-string "^0.25.7"
+
+"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
+ integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
+ dependencies:
+ "@types/estree" "0.0.39"
+ estree-walker "^1.0.1"
+ picomatch "^2.2.2"
+
+"@scarf/scarf@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.1.0.tgz#b84b4a91cd938a688d36245b7a7db6fbc476a499"
+ integrity sha512-b2iE8kjjzzUo2WZ0xuE2N77kfnTds7ClrDxcz3Atz7h2XrNVoAPUoT75i7CY0st5x++70V91Y+c6RpBX9MX7Jg==
+
+"@sentry/browser@6.2.5":
+ version "6.2.5"
+ resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.2.5.tgz#35e259e16521d26f348a06b31eb495e0033111d6"
+ integrity sha512-nlvaE+D7oaj4MxoY9ikw+krQDOjftnDYJQnOwOraXPk7KYM6YwmkakLuE+x/AkaH3FQVTQF330VAa9d6SWETlA==
+ dependencies:
+ "@sentry/core" "6.2.5"
+ "@sentry/types" "6.2.5"
+ "@sentry/utils" "6.2.5"
+ tslib "^1.9.3"
+
+"@sentry/core@6.2.5":
+ version "6.2.5"
+ resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.2.5.tgz#e75093f8598becc0a4a0be927f32f7ac49e8588f"
+ integrity sha512-I+AkgIFO6sDUoHQticP6I27TT3L+i6TUS03in3IEtpBcSeP2jyhlxI8l/wdA7gsBqUPdQ4GHOOaNgtFIcr8qag==
+ dependencies:
+ "@sentry/hub" "6.2.5"
+ "@sentry/minimal" "6.2.5"
+ "@sentry/types" "6.2.5"
+ "@sentry/utils" "6.2.5"
+ tslib "^1.9.3"
+
+"@sentry/hub@6.2.5":
+ version "6.2.5"
+ resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.2.5.tgz#324cae0c90d736cd1032e94104bf3f18becec4d6"
+ integrity sha512-YlEFdEhcfqpl2HC+/dWXBsBJEljyMzFS7LRRjCk8QANcOdp9PhwQjwebUB4/ulOBjHPP2WZk7fBBd/IKDasTUg==
+ dependencies:
+ "@sentry/types" "6.2.5"
+ "@sentry/utils" "6.2.5"
+ tslib "^1.9.3"
+
+"@sentry/minimal@6.2.5":
+ version "6.2.5"
+ resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.2.5.tgz#3e963e868bfa68e97581403521fd4e09a8965b02"
+ integrity sha512-RKP4Qx3p7Cv0oX1cPKAkNVFYM7p2k1t32cNk1+rrVQS4hwlJ7Eg6m6fsqsO+85jd6Ne/FnyYsfo9cDD3ImTlWQ==
+ dependencies:
+ "@sentry/hub" "6.2.5"
+ "@sentry/types" "6.2.5"
+ tslib "^1.9.3"
+
+"@sentry/react@^6.2.5":
+ version "6.2.5"
+ resolved "https://registry.yarnpkg.com/@sentry/react/-/react-6.2.5.tgz#c9bc01332ac5f75eb76937ae7d91b6bb43d5b996"
+ integrity sha512-uYsLHUYMya2H9WtF5Eoy9WQ2SnuMDsW2q9kDpdW1A59kCKp4O1t6qEVvDyxkz8r+Mk+OhjmFdbX4F/H8KZMVBQ==
+ dependencies:
+ "@sentry/browser" "6.2.5"
+ "@sentry/minimal" "6.2.5"
+ "@sentry/types" "6.2.5"
+ "@sentry/utils" "6.2.5"
+ hoist-non-react-statics "^3.3.2"
+ tslib "^1.9.3"
+
+"@sentry/types@6.2.5":
+ version "6.2.5"
+ resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.2.5.tgz#34b75285b149e0b9bc5fd54fcc2c445d978c7f2e"
+ integrity sha512-1Sux6CLYrV9bETMsGP/HuLFLouwKoX93CWzG8BjMueW+Di0OGxZphYjXrGuDs8xO8bAKEVGCHgVQdcB2jevS0w==
+
+"@sentry/utils@6.2.5":
+ version "6.2.5"
+ resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.2.5.tgz#be90d056b09ed1216097d7a29e3e81ba39238e1b"
+ integrity sha512-fJoLUZHrd5MPylV1dT4qL74yNFDl1Ur/dab+pKNSyvnHPnbZ/LRM7aJ8VaRY/A7ZdpRowU+E14e/Yeem2c6gtQ==
+ dependencies:
+ "@sentry/types" "6.2.5"
+ tslib "^1.9.3"
+
+"@sinonjs/commons@^1.7.0":
+ version "1.8.3"
+ resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
+ integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==
+ dependencies:
+ type-detect "4.0.8"
+
+"@sinonjs/fake-timers@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40"
+ integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==
+ dependencies:
+ "@sinonjs/commons" "^1.7.0"
+
+"@surma/rollup-plugin-off-main-thread@^1.1.1":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58"
+ integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==
+ dependencies:
+ ejs "^2.6.1"
+ magic-string "^0.25.0"
+
+"@svgr/babel-plugin-add-jsx-attribute@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906"
+ integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==
+
+"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef"
+ integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==
+
+"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd"
+ integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==
+
+"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897"
+ integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==
+
+"@svgr/babel-plugin-svg-dynamic-title@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7"
+ integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==
+
+"@svgr/babel-plugin-svg-em-dimensions@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0"
+ integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==
+
+"@svgr/babel-plugin-transform-react-native-svg@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80"
+ integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==
+
+"@svgr/babel-plugin-transform-svg-component@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a"
+ integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==
+
+"@svgr/babel-preset@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327"
+ integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==
+ dependencies:
+ "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0"
+ "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0"
+ "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1"
+ "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1"
+ "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0"
+ "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0"
+ "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0"
+ "@svgr/babel-plugin-transform-svg-component" "^5.5.0"
+
+"@svgr/core@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579"
+ integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==
+ dependencies:
+ "@svgr/plugin-jsx" "^5.5.0"
+ camelcase "^6.2.0"
+ cosmiconfig "^7.0.0"
+
+"@svgr/hast-util-to-babel-ast@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461"
+ integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==
+ dependencies:
+ "@babel/types" "^7.12.6"
+
+"@svgr/plugin-jsx@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000"
+ integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@svgr/babel-preset" "^5.5.0"
+ "@svgr/hast-util-to-babel-ast" "^5.5.0"
+ svg-parser "^2.0.2"
+
+"@svgr/plugin-svgo@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246"
+ integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==
+ dependencies:
+ cosmiconfig "^7.0.0"
+ deepmerge "^4.2.2"
+ svgo "^1.2.2"
+
+"@svgr/webpack@5.5.0":
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640"
+ integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@babel/plugin-transform-react-constant-elements" "^7.12.1"
+ "@babel/preset-env" "^7.12.1"
+ "@babel/preset-react" "^7.12.5"
+ "@svgr/core" "^5.5.0"
+ "@svgr/plugin-jsx" "^5.5.0"
+ "@svgr/plugin-svgo" "^5.5.0"
+ loader-utils "^2.0.0"
+
+"@testing-library/dom@^7.28.1":
+ version "7.29.4"
+ resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.29.4.tgz#1647c2b478789621ead7a50614ad81ab5ae5b86c"
+ integrity sha512-CtrJRiSYEfbtNGtEsd78mk1n1v2TUbeABlNIcOCJdDfkN5/JTOwQEbbQpoSRxGqzcWPgStMvJ4mNolSuBRv1NA==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/runtime" "^7.12.5"
+ "@types/aria-query" "^4.2.0"
+ aria-query "^4.2.2"
+ chalk "^4.1.0"
+ dom-accessibility-api "^0.5.4"
+ lz-string "^1.4.4"
+ pretty-format "^26.6.2"
+
+"@testing-library/jest-dom@^5.11.4":
+ version "5.11.9"
+ resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.9.tgz#e6b3cd687021f89f261bd53cbe367041fbd3e975"
+ integrity sha512-Mn2gnA9d1wStlAIT2NU8J15LNob0YFBVjs2aEQ3j8rsfRQo+lAs7/ui1i2TGaJjapLmuNPLTsrm+nPjmZDwpcQ==
+ dependencies:
+ "@babel/runtime" "^7.9.2"
+ "@types/testing-library__jest-dom" "^5.9.1"
+ aria-query "^4.2.2"
+ chalk "^3.0.0"
+ css "^3.0.0"
+ css.escape "^1.5.1"
+ lodash "^4.17.15"
+ redent "^3.0.0"
+
+"@testing-library/react@^11.1.0":
+ version "11.2.5"
+ resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.5.tgz#ae1c36a66c7790ddb6662c416c27863d87818eb9"
+ integrity sha512-yEx7oIa/UWLe2F2dqK0FtMF9sJWNXD+2PPtp39BvE0Kh9MJ9Kl0HrZAgEuhUJR+Lx8Di6Xz+rKwSdEPY2UV8ZQ==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ "@testing-library/dom" "^7.28.1"
+
+"@testing-library/user-event@^12.1.10":
+ version "12.6.3"
+ resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.6.3.tgz#4a77c56a48823cf8adebd0f57670e4a89c24d058"
+ integrity sha512-PCmbUKofE4SXA7l8jphZAbvv5H3c4ix34xPZ/GNe99fASX//msJRgiMbHIBP+GwRfgVG9c7zmkODSPu2X2vNRw==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+
+"@tootallnate/once@1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
+ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+
+"@types/aria-query@^4.2.0":
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b"
+ integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg==
+
+"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
+ version "7.1.14"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402"
+ integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
+"@types/babel__generator@*":
+ version "7.6.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8"
+ integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be"
+ integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6":
+ version "7.11.1"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.1.tgz#654f6c4f67568e24c23b367e947098c6206fa639"
+ integrity sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==
+ dependencies:
+ "@babel/types" "^7.3.0"
+
+"@types/eslint@^7.2.6":
+ version "7.2.12"
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.12.tgz#fefaa48a4db2415b621fe315e4baeedde525927e"
+ integrity sha512-HjikV/jX6e0Pg4DcB+rtOBKSrG6w5IaxWpmi3efL/eLxMz5lZTK+W1DKERrX5a+mNzL78axfsDNXu7JHFP4uLg==
+ dependencies:
+ "@types/estree" "*"
+ "@types/json-schema" "*"
+
+"@types/estree@*":
+ version "0.0.47"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4"
+ integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==
+
+"@types/estree@0.0.39":
+ version "0.0.39"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
+ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
+
+"@types/glob@^7.1.1":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
+ integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
+ dependencies:
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/graceful-fs@^4.1.2":
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15"
+ integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==
+ dependencies:
+ "@types/node" "*"
+
+"@types/history@*":
+ version "4.7.8"
+ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934"
+ integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==
+
+"@types/hoist-non-react-statics@*":
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
+ integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
+ dependencies:
+ "@types/react" "*"
+ hoist-non-react-statics "^3.3.0"
+
+"@types/html-minifier-terser@^5.0.0":
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50"
+ integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==
+
+"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
+ integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
+
+"@types/istanbul-lib-report@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
+ integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
+ dependencies:
+ "@types/istanbul-lib-coverage" "*"
+
+"@types/istanbul-reports@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821"
+ integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==
+ dependencies:
+ "@types/istanbul-lib-report" "*"
+
+"@types/jest@*", "@types/jest@^26.0.15":
+ version "26.0.20"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307"
+ integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA==
+ dependencies:
+ jest-diff "^26.0.0"
+ pretty-format "^26.0.0"
+
+"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
+ version "7.0.7"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
+ integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
+
+"@types/json5@^0.0.29":
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
+ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
+
+"@types/luxon@^1.26.4":
+ version "1.26.4"
+ resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.26.4.tgz#77bbd5a1aa74ca31edff2aee4f8313ea0d93ca5c"
+ integrity sha512-OIvbVLZQUjyZofqSFpre2VsgvKy0V0JQdRgN0k3H1DTGRdxHiaQjT16+H2gyuhAS9r8B2PQEwrSiqP6/Zka3pQ==
+
+"@types/minimatch@*":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21"
+ integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==
+
+"@types/node@*":
+ version "15.6.1"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.1.tgz#32d43390d5c62c5b6ec486a9bc9c59544de39a08"
+ integrity sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==
+
+"@types/node@^12.0.0":
+ version "12.19.16"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.16.tgz#15753af35cbef636182d8d8ca55b37c8583cecb3"
+ integrity sha512-7xHmXm/QJ7cbK2laF+YYD7gb5MggHIIQwqyjin3bpEGiSuvScMQ5JZZXPvRipi1MwckTQbJZROMns/JxdnIL1Q==
+
+"@types/node@^13.11.1":
+ version "13.13.41"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.41.tgz#045a4981318d31a581650ce70f340a32c3461198"
+ integrity sha512-qLT9IvHiXJfdrje9VmsLzun7cQ65obsBTmtU3EOnCSLFOoSHx1hpiRHoBnpdbyFqnzqdUUIv81JcEJQCB8un9g==
+
+"@types/normalize-package-data@^2.4.0":
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
+ integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
+
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+"@types/prettier@^2.0.0":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0"
+ integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==
+
+"@types/prop-types@*", "@types/prop-types@^15.7.3":
+ version "15.7.3"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
+ integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
+
+"@types/q@^1.5.1":
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
+ integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
+
+"@types/react-copy-to-clipboard@^5.0.0":
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.0.tgz#38b035ca0c28334d3e0efaf3f319b81eea9690cd"
+ integrity sha512-faUg6Kx3Dfv0MBIcs+xzIptlRtjEVSaNjqyC14YAp4UwSiTHghnKtBOt9ERRTZZJfoJgnw10tomVaqG86GzdAw==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-dom@^17.0.0":
+ version "17.0.0"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.0.tgz#b3b691eb956c4b3401777ee67b900cb28415d95a"
+ integrity sha512-lUqY7OlkF/RbNtD5nIq7ot8NquXrdFrjSOR6+w9a9RFQevGi1oZO1dcJbXMeONAPKtZ2UrZOEJ5UOCVsxbLk/g==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-is@^16.7.1 || ^17.0.0":
+ version "17.0.0"
+ resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.0.tgz#6b60190ae60591ae0c83d6f3854e61e08f5a7976"
+ integrity sha512-A0DQ1YWZ0RG2+PV7neAotNCIh8gZ3z7tQnDJyS2xRPDNtAtSPcJ9YyfMP8be36Ha0kQRzbZCrrTMznA4blqO5g==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-router-dom@^5.1.7":
+ version "5.1.7"
+ resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.7.tgz#a126d9ea76079ffbbdb0d9225073eb5797ab7271"
+ integrity sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg==
+ dependencies:
+ "@types/history" "*"
+ "@types/react" "*"
+ "@types/react-router" "*"
+
+"@types/react-router@*":
+ version "5.1.11"
+ resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.11.tgz#b01ce4cb21bf7d6b32edc862fc1e2c0088044b5b"
+ integrity sha512-ofHbZMlp0Y2baOHgsWBQ4K3AttxY61bDMkwTiBOkPg7U6C/3UwwB5WaIx28JmSVi/eX3uFEMRo61BV22fDQIvg==
+ dependencies:
+ "@types/history" "*"
+ "@types/react" "*"
+
+"@types/react-transition-group@^4.2.0":
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.0.tgz#882839db465df1320e4753e6e9f70ca7e9b4d46d"
+ integrity sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*", "@types/react@^17.0.0":
+ version "17.0.1"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.1.tgz#eb1f1407dea8da3bc741879c1192aa703ab9975b"
+ integrity sha512-w8t9f53B2ei4jeOqf/gxtc2Sswnc3LBK5s0DyJcg5xd10tMHXts2N31cKjWfH9IC/JvEPa/YF1U4YeP1t4R6HQ==
+ dependencies:
+ "@types/prop-types" "*"
+ csstype "^3.0.2"
+
+"@types/resolve@0.0.8":
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
+ integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/source-list-map@*":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
+ integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==
+
+"@types/stack-utils@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff"
+ integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==
+
+"@types/styled-components@^5.1.9":
+ version "5.1.9"
+ resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.9.tgz#00d3d84b501420521c4db727e3c195459f87a6cf"
+ integrity sha512-kbEG6YlwK8rucITpKEr6pA4Ho9KSQHUUOzZ9lY3va1mtcjvS3D0wDciFyHEiNHKLL/npZCKDQJqm0x44sPO9oA==
+ dependencies:
+ "@types/hoist-non-react-statics" "*"
+ "@types/react" "*"
+ csstype "^3.0.2"
+
+"@types/styled-jsx@^2.2.8":
+ version "2.2.9"
+ resolved "https://registry.yarnpkg.com/@types/styled-jsx/-/styled-jsx-2.2.9.tgz#e50b3f868c055bcbf9bc353eca6c10fdad32a53f"
+ integrity sha512-W/iTlIkGEyTBGTEvZCey8EgQlQ5l0DwMqi3iOXlLs2kyBwYTXHKEiU6IZ5EwoRwngL8/dGYuzezSup89ttVHLw==
+ dependencies:
+ "@types/react" "*"
+
+"@types/tapable@^1", "@types/tapable@^1.0.5":
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4"
+ integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ==
+
+"@types/testing-library__jest-dom@^5.9.1":
+ version "5.9.5"
+ resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz#5bf25c91ad2d7b38f264b12275e5c92a66d849b0"
+ integrity sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ==
+ dependencies:
+ "@types/jest" "*"
+
+"@types/uglify-js@*":
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124"
+ integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q==
+ dependencies:
+ source-map "^0.6.1"
+
+"@types/webpack-sources@*":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10"
+ integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==
+ dependencies:
+ "@types/node" "*"
+ "@types/source-list-map" "*"
+ source-map "^0.7.3"
+
+"@types/webpack@^4.41.8":
+ version "4.41.29"
+ resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.29.tgz#2e66c1de8223c440366469415c50a47d97625773"
+ integrity sha512-6pLaORaVNZxiB3FSHbyBiWM7QdazAWda1zvAq4SbZObZqHSDbWLi62iFdblVea6SK9eyBIVp5yHhKt/yNQdR7Q==
+ dependencies:
+ "@types/node" "*"
+ "@types/tapable" "^1"
+ "@types/uglify-js" "*"
+ "@types/webpack-sources" "*"
+ anymatch "^3.0.0"
+ source-map "^0.6.0"
+
+"@types/yargs-parser@*":
+ version "20.2.0"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9"
+ integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==
+
+"@types/yargs@^15.0.0":
+ version "15.0.13"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc"
+ integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==
+ dependencies:
+ "@types/yargs-parser" "*"
+
+"@typescript-eslint/eslint-plugin@^4.5.0":
+ version "4.25.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz#d82657b6ab4caa4c3f888ff923175fadc2f31f2a"
+ integrity sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "4.25.0"
+ "@typescript-eslint/scope-manager" "4.25.0"
+ debug "^4.1.1"
+ functional-red-black-tree "^1.0.1"
+ lodash "^4.17.15"
+ regexpp "^3.0.0"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/experimental-utils@4.25.0", "@typescript-eslint/experimental-utils@^4.0.1":
+ version "4.25.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.25.0.tgz#b2febcfa715d2c1806fd5f0335193a6cd270df54"
+ integrity sha512-f0doRE76vq7NEEU0tw+ajv6CrmPelw5wLoaghEHkA2dNLFb3T/zJQqGPQ0OYt5XlZaS13MtnN+GTPCuUVg338w==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/scope-manager" "4.25.0"
+ "@typescript-eslint/types" "4.25.0"
+ "@typescript-eslint/typescript-estree" "4.25.0"
+ eslint-scope "^5.0.0"
+ eslint-utils "^2.0.0"
+
+"@typescript-eslint/experimental-utils@^3.10.1":
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686"
+ integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/types" "3.10.1"
+ "@typescript-eslint/typescript-estree" "3.10.1"
+ eslint-scope "^5.0.0"
+ eslint-utils "^2.0.0"
+
+"@typescript-eslint/parser@^4.5.0":
+ version "4.25.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.25.0.tgz#6b2cb6285aa3d55bfb263c650739091b0f19aceb"
+ integrity sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg==
+ dependencies:
+ "@typescript-eslint/scope-manager" "4.25.0"
+ "@typescript-eslint/types" "4.25.0"
+ "@typescript-eslint/typescript-estree" "4.25.0"
+ debug "^4.1.1"
+
+"@typescript-eslint/scope-manager@4.25.0":
+ version "4.25.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.25.0.tgz#9d86a5bcc46ef40acd03d85ad4e908e5aab8d4ca"
+ integrity sha512-2NElKxMb/0rya+NJG1U71BuNnp1TBd1JgzYsldsdA83h/20Tvnf/HrwhiSlNmuq6Vqa0EzidsvkTArwoq+tH6w==
+ dependencies:
+ "@typescript-eslint/types" "4.25.0"
+ "@typescript-eslint/visitor-keys" "4.25.0"
+
+"@typescript-eslint/types@3.10.1":
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727"
+ integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==
+
+"@typescript-eslint/types@4.25.0":
+ version "4.25.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.25.0.tgz#0e444a5c5e3c22d7ffa5e16e0e60510b3de5af87"
+ integrity sha512-+CNINNvl00OkW6wEsi32wU5MhHti2J25TJsJJqgQmJu3B3dYDBcmOxcE5w9cgoM13TrdE/5ND2HoEnBohasxRQ==
+
+"@typescript-eslint/typescript-estree@3.10.1":
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853"
+ integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==
+ dependencies:
+ "@typescript-eslint/types" "3.10.1"
+ "@typescript-eslint/visitor-keys" "3.10.1"
+ debug "^4.1.1"
+ glob "^7.1.6"
+ is-glob "^4.0.1"
+ lodash "^4.17.15"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/typescript-estree@4.25.0":
+ version "4.25.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz#942e4e25888736bff5b360d9b0b61e013d0cfa25"
+ integrity sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==
+ dependencies:
+ "@typescript-eslint/types" "4.25.0"
+ "@typescript-eslint/visitor-keys" "4.25.0"
+ debug "^4.1.1"
+ globby "^11.0.1"
+ is-glob "^4.0.1"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/visitor-keys@3.10.1":
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931"
+ integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+"@typescript-eslint/visitor-keys@4.25.0":
+ version "4.25.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz#863e7ed23da4287c5b469b13223255d0fde6aaa7"
+ integrity sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg==
+ dependencies:
+ "@typescript-eslint/types" "4.25.0"
+ eslint-visitor-keys "^2.0.0"
+
+"@webassemblyjs/ast@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
+ integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+
+"@webassemblyjs/floating-point-hex-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
+ integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
+
+"@webassemblyjs/helper-api-error@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
+ integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
+
+"@webassemblyjs/helper-buffer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
+ integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
+
+"@webassemblyjs/helper-code-frame@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
+ integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/helper-fsm@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
+ integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
+
+"@webassemblyjs/helper-module-context@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
+ integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+
+"@webassemblyjs/helper-wasm-bytecode@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
+ integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
+
+"@webassemblyjs/helper-wasm-section@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
+ integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+
+"@webassemblyjs/ieee754@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
+ integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
+ integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
+ integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
+
+"@webassemblyjs/wasm-edit@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
+ integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/helper-wasm-section" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-opt" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/wasm-gen@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
+ integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wasm-opt@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
+ integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+
+"@webassemblyjs/wasm-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
+ integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wast-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
+ integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/floating-point-hex-parser" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-code-frame" "1.9.0"
+ "@webassemblyjs/helper-fsm" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
+ integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abab@^2.0.3, abab@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
+ integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
+
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+ integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
+ dependencies:
+ mime-types "~2.1.24"
+ negotiator "0.6.2"
+
+acorn-globals@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
+ integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-walk "^7.1.1"
+
+acorn-jsx@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
+ integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
+
+acorn-walk@^7.1.1:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
+ integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+
+acorn@^6.4.1:
+ version "6.4.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
+ integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
+
+acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0:
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+acorn@^8.2.4:
+ version "8.2.4"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0"
+ integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==
+
+address@1.1.2, address@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
+ integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==
+
+adjust-sourcemap-loader@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e"
+ integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==
+ dependencies:
+ loader-utils "^2.0.0"
+ regex-parser "^2.2.11"
+
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
+ajv-errors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+
+ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+
+ajv@^5.5.2:
+ version "5.5.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
+ integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=
+ dependencies:
+ co "^4.6.0"
+ fast-deep-equal "^1.0.0"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.3.0"
+
+ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ajv@^8.0.1:
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b"
+ integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
+alphanum-sort@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+ integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
+
+ansi-colors@^3.0.0:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
+ integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
+
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-escapes@^4.2.1, ansi-escapes@^4.3.1:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
+ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ dependencies:
+ type-fest "^0.21.3"
+
+ansi-html@0.0.7, ansi-html@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
+ integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-regex@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+aria-query@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
+ integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
+ dependencies:
+ "@babel/runtime" "^7.10.2"
+ "@babel/runtime-corejs3" "^7.10.2"
+
+arity-n@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745"
+ integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U=
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+
+array-flatten@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
+ integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
+
+array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a"
+ integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.2"
+ get-intrinsic "^1.1.1"
+ is-string "^1.0.5"
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+array.prototype.flat@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123"
+ integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+
+array.prototype.flatmap@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9"
+ integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+ function-bind "^1.1.1"
+
+arrify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
+ integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
+
+asap@~2.0.3, asap@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
+ integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
+
+asn1.js@^5.2.0:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
+ integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ safer-buffer "^2.1.0"
+
+assert@^1.1.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
+ integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
+ dependencies:
+ object-assign "^4.1.1"
+ util "0.10.3"
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+ast-types-flow@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
+ integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
+
+astral-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+ integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+
+async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
+
+async-limiter@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
+ integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+
+async@^2.6.2:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+ integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
+ dependencies:
+ lodash "^4.17.14"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+autoprefixer@^9.6.1:
+ version "9.8.6"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f"
+ integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==
+ dependencies:
+ browserslist "^4.12.0"
+ caniuse-lite "^1.0.30001109"
+ colorette "^1.2.1"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ postcss "^7.0.32"
+ postcss-value-parser "^4.1.0"
+
+axe-core@^4.0.2:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.2.1.tgz#2e50bcf10ee5b819014f6e342e41e45096239e34"
+ integrity sha512-evY7DN8qSIbsW2H/TWQ1bX3sXN1d4MNb5Vb4n7BzPuCwRHdkZ1H2eNLuSh73EoQqkGKUtju2G2HCcjCfhvZIAA==
+
+axobject-query@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
+ integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
+
+babel-eslint@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
+ integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.7.0"
+ "@babel/traverse" "^7.7.0"
+ "@babel/types" "^7.7.0"
+ eslint-visitor-keys "^1.0.0"
+ resolve "^1.12.0"
+
+babel-extract-comments@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21"
+ integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==
+ dependencies:
+ babylon "^6.18.0"
+
+babel-jest@^26.6.0, babel-jest@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056"
+ integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==
+ dependencies:
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/babel__core" "^7.1.7"
+ babel-plugin-istanbul "^6.0.0"
+ babel-preset-jest "^26.6.2"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ slash "^3.0.0"
+
+babel-loader@8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3"
+ integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==
+ dependencies:
+ find-cache-dir "^2.1.0"
+ loader-utils "^1.4.0"
+ mkdirp "^0.5.3"
+ pify "^4.0.1"
+ schema-utils "^2.6.5"
+
+babel-plugin-dynamic-import-node@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
+ dependencies:
+ object.assign "^4.1.0"
+
+babel-plugin-istanbul@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765"
+ integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@istanbuljs/load-nyc-config" "^1.0.0"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-instrument "^4.0.0"
+ test-exclude "^6.0.0"
+
+babel-plugin-jest-hoist@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d"
+ integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==
+ dependencies:
+ "@babel/template" "^7.3.3"
+ "@babel/types" "^7.3.3"
+ "@types/babel__core" "^7.0.0"
+ "@types/babel__traverse" "^7.0.6"
+
+babel-plugin-macros@2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
+ integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ cosmiconfig "^6.0.0"
+ resolve "^1.12.0"
+
+babel-plugin-named-asset-import@^0.3.7:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd"
+ integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==
+
+babel-plugin-polyfill-corejs2@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327"
+ integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==
+ dependencies:
+ "@babel/compat-data" "^7.13.11"
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
+ semver "^6.1.1"
+
+babel-plugin-polyfill-corejs3@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz#7424a1682ee44baec817327710b1b094e5f8f7f5"
+ integrity sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
+ core-js-compat "^3.9.1"
+
+babel-plugin-polyfill-regenerator@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077"
+ integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
+
+"babel-plugin-styled-components@>= 1.12.0":
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.13.2.tgz#ebe0e6deff51d7f93fceda1819e9b96aeb88278d"
+ integrity sha512-Vb1R3d4g+MUfPQPVDMCGjm3cDocJEUTR7Xq7QS95JWWeksN1wdFRYpD2kulDgI3Huuaf1CZd+NK4KQmqUFh5dA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-module-imports" "^7.0.0"
+ babel-plugin-syntax-jsx "^6.18.0"
+ lodash "^4.17.11"
+
+babel-plugin-syntax-jsx@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
+ integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
+
+babel-plugin-syntax-object-rest-spread@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
+ integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=
+
+babel-plugin-transform-object-rest-spread@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
+ integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=
+ dependencies:
+ babel-plugin-syntax-object-rest-spread "^6.8.0"
+ babel-runtime "^6.26.0"
+
+babel-plugin-transform-react-remove-prop-types@0.4.24:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a"
+ integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==
+
+babel-preset-current-node-syntax@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
+ integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
+ dependencies:
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-bigint" "^7.8.3"
+ "@babel/plugin-syntax-class-properties" "^7.8.3"
+ "@babel/plugin-syntax-import-meta" "^7.8.3"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.8.3"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-top-level-await" "^7.8.3"
+
+babel-preset-jest@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee"
+ integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==
+ dependencies:
+ babel-plugin-jest-hoist "^26.6.2"
+ babel-preset-current-node-syntax "^1.0.0"
+
+babel-preset-react-app@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz#689b60edc705f8a70ce87f47ab0e560a317d7045"
+ integrity sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg==
+ dependencies:
+ "@babel/core" "7.12.3"
+ "@babel/plugin-proposal-class-properties" "7.12.1"
+ "@babel/plugin-proposal-decorators" "7.12.1"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "7.12.1"
+ "@babel/plugin-proposal-numeric-separator" "7.12.1"
+ "@babel/plugin-proposal-optional-chaining" "7.12.1"
+ "@babel/plugin-transform-flow-strip-types" "7.12.1"
+ "@babel/plugin-transform-react-display-name" "7.12.1"
+ "@babel/plugin-transform-runtime" "7.12.1"
+ "@babel/preset-env" "7.12.1"
+ "@babel/preset-react" "7.12.1"
+ "@babel/preset-typescript" "7.12.1"
+ "@babel/runtime" "7.12.1"
+ babel-plugin-macros "2.8.0"
+ babel-plugin-transform-react-remove-prop-types "0.4.24"
+
+babel-runtime@^6.11.6, babel-runtime@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+ integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.11.0"
+
+babylon@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
+ integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base64-js@^1.0.2:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+batch@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
+ integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
+
+better-ajv-errors@^0.6.1, better-ajv-errors@^0.6.7:
+ version "0.6.7"
+ resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-0.6.7.tgz#b5344af1ce10f434fe02fc4390a5a9c811e470d1"
+ integrity sha512-PYgt/sCzR4aGpyNy5+ViSQ77ognMnWq7745zM+/flYO4/Yisdtp9wDQW2IKCyVYPUxQt3E/b5GBSwfhd1LPdlg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/runtime" "^7.0.0"
+ chalk "^2.4.1"
+ core-js "^3.2.1"
+ json-to-ast "^2.0.3"
+ jsonpointer "^4.0.1"
+ leven "^3.1.0"
+
+bfj@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2"
+ integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==
+ dependencies:
+ bluebird "^3.5.5"
+ check-types "^11.1.1"
+ hoopy "^0.1.4"
+ tryer "^1.0.1"
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^1.0.0:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bindings@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
+ integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
+ dependencies:
+ file-uri-to-path "1.0.0"
+
+bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
+ version "4.12.0"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
+ integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+bn.js@^5.0.0, bn.js@^5.1.1:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
+ integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
+
+body-parser@1.19.0:
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
+ integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
+ dependencies:
+ bytes "3.1.0"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "~1.1.2"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ on-finished "~2.3.0"
+ qs "6.7.0"
+ raw-body "2.4.0"
+ type-is "~1.6.17"
+
+bonjour@^3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
+ integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
+ dependencies:
+ array-flatten "^2.1.0"
+ deep-equal "^1.0.1"
+ dns-equal "^1.0.0"
+ dns-txt "^2.0.2"
+ multicast-dns "^6.0.1"
+ multicast-dns-service-types "^1.1.0"
+
+boolbase@^1.0.0, boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^2.3.1, braces@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.1, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1, brorand@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+
+browser-process-hrtime@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
+ integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
+ integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
+ dependencies:
+ bn.js "^5.0.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3"
+ integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==
+ dependencies:
+ bn.js "^5.1.1"
+ browserify-rsa "^4.0.1"
+ create-hash "^1.2.0"
+ create-hmac "^1.1.7"
+ elliptic "^6.5.3"
+ inherits "^2.0.4"
+ parse-asn1 "^5.1.5"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
+
+browserify-zlib@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+browserslist@4.14.2:
+ version "4.14.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce"
+ integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==
+ dependencies:
+ caniuse-lite "^1.0.30001125"
+ electron-to-chromium "^1.3.564"
+ escalade "^3.0.2"
+ node-releases "^1.1.61"
+
+browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4.6.2, browserslist@^4.6.4:
+ version "4.16.6"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2"
+ integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==
+ dependencies:
+ caniuse-lite "^1.0.30001219"
+ colorette "^1.2.2"
+ electron-to-chromium "^1.3.723"
+ escalade "^3.1.1"
+ node-releases "^1.1.71"
+
+bser@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
+ integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
+ dependencies:
+ node-int64 "^0.4.0"
+
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+buffer-indexof@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
+ integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@^4.3.0:
+ version "4.9.2"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
+ integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
+ integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+bytes@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+ integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
+
+bytes@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+ integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+
+cacache@^12.0.2:
+ version "12.0.4"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
+ integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cacache@^15.0.5:
+ version "15.2.0"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.2.0.tgz#73af75f77c58e72d8c630a7a2858cb18ef523389"
+ integrity sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==
+ dependencies:
+ "@npmcli/move-file" "^1.0.1"
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ glob "^7.1.4"
+ infer-owner "^1.0.4"
+ lru-cache "^6.0.0"
+ minipass "^3.1.1"
+ minipass-collect "^1.0.2"
+ minipass-flush "^1.0.5"
+ minipass-pipeline "^1.2.2"
+ mkdirp "^1.0.3"
+ p-map "^4.0.0"
+ promise-inflight "^1.0.1"
+ rimraf "^3.0.2"
+ ssri "^8.0.1"
+ tar "^6.0.2"
+ unique-filename "^1.1.1"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+call-me-maybe@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
+ integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
+
+caller-callsite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
+ integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
+ dependencies:
+ callsites "^2.0.0"
+
+caller-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
+ integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
+ dependencies:
+ caller-callsite "^2.0.0"
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+ integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camel-case@^4.1.1:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
+ integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
+ dependencies:
+ pascal-case "^3.1.2"
+ tslib "^2.0.3"
+
+camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^6.0.0, camelcase@^6.1.0, camelcase@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
+ integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
+
+camelize@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b"
+ integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=
+
+can-use-dom@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a"
+ integrity sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=
+
+caniuse-api@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-lite "^1.0.0"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001219:
+ version "1.0.30001230"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz#8135c57459854b2240b57a4a6786044bdc5a9f71"
+ integrity sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==
+
+capture-exit@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
+ integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==
+ dependencies:
+ rsvp "^4.8.4"
+
+case-sensitive-paths-webpack-plugin@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7"
+ integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==
+
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
+ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
+ integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
+ integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+change-emitter@^0.1.2:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515"
+ integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=
+
+char-regex@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
+ integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
+
+chart.js@^2.9.4:
+ version "2.9.4"
+ resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.4.tgz#0827f9563faffb2dc5c06562f8eb10337d5b9684"
+ integrity sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==
+ dependencies:
+ chartjs-color "^2.1.0"
+ moment "^2.10.2"
+
+chartjs-color-string@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz#1df096621c0e70720a64f4135ea171d051402f71"
+ integrity sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==
+ dependencies:
+ color-name "^1.0.0"
+
+chartjs-color@^2.1.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.4.1.tgz#6118bba202fe1ea79dd7f7c0f9da93467296c3b0"
+ integrity sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==
+ dependencies:
+ chartjs-color-string "^0.6.0"
+ color-convert "^1.9.3"
+
+check-types@^11.1.1:
+ version "11.1.2"
+ resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
+ integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==
+
+chokidar@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
+ integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+chokidar@^3.4.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
+ integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.5.0"
+ optionalDependencies:
+ fsevents "~2.3.1"
+
+chownr@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+chownr@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
+ integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
+
+chrome-trace-event@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
+ integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
+
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+cjs-module-lexer@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f"
+ integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+classnames@^2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
+ integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
+
+clean-css@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
+ integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==
+ dependencies:
+ source-map "~0.6.0"
+
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+clipboard@^2.0.0:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376"
+ integrity sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==
+ dependencies:
+ good-listener "^1.2.2"
+ select "^1.1.2"
+ tiny-emitter "^2.0.0"
+
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
+cliui@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
+ integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^7.0.0"
+
+clsx@^1.0.2, clsx@^1.0.4, clsx@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
+ integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
+
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+ integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+
+coa@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
+ dependencies:
+ "@types/q" "^1.5.1"
+ chalk "^2.4.1"
+ q "^1.1.2"
+
+code-error-fragment@0.0.230:
+ version "0.0.230"
+ resolved "https://registry.yarnpkg.com/code-error-fragment/-/code-error-fragment-0.0.230.tgz#d736d75c832445342eca1d1fedbf17d9618b14d7"
+ integrity sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==
+
+collect-v8-coverage@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
+ integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@^1.0.0, color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^1.5.4:
+ version "1.5.5"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014"
+ integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color@^3.0.0:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
+ integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==
+ dependencies:
+ color-convert "^1.9.1"
+ color-string "^1.5.4"
+
+colorette@^1.2.1, colorette@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
+ integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
+
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
+ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+
+common-tags@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
+ integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+compose-function@3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f"
+ integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=
+ dependencies:
+ arity-n "^1.0.4"
+
+compressible@~2.0.16:
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
+ integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
+ dependencies:
+ mime-db ">= 1.43.0 < 2"
+
+compression@^1.7.4:
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+ integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
+ dependencies:
+ accepts "~1.3.5"
+ bytes "3.0.0"
+ compressible "~2.0.16"
+ debug "2.6.9"
+ on-headers "~1.0.2"
+ safe-buffer "5.1.2"
+ vary "~1.1.2"
+
+computed-async-mobx@^7.0.1-beta.1:
+ version "7.0.1-beta.1"
+ resolved "https://registry.yarnpkg.com/computed-async-mobx/-/computed-async-mobx-7.0.1-beta.1.tgz#8e1c7157f2ae9d8561d18341d46c0be3eedb4cf2"
+ integrity sha512-mj0XkU88wi1aaJ0BNJz0JWtpe9uNxzLZHUUPV+MtoQeCTeyElrPxuDCFGyB3UnYr32UmstlTnwttWfznacQX1A==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.5.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+confusing-browser-globals@^1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59"
+ integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==
+
+connect-history-api-fallback@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
+ integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
+
+console-browserify@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
+ integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+content-disposition@0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+ integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
+ dependencies:
+ safe-buffer "5.1.2"
+
+content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+
+convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+convert-source-map@^0.3.3:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190"
+ integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA=
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+
+cookie@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
+ integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+copy-to-clipboard@^3:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"
+ integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==
+ dependencies:
+ toggle-selection "^1.0.6"
+
+core-js-compat@^3.6.2, core-js-compat@^3.9.0, core-js-compat@^3.9.1:
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.13.0.tgz#a88f5fa81d8e9b15d7f98abc4447a4dfca2a358f"
+ integrity sha512-jhbI2zpVskgfDC9mGRaDo1gagd0E0i/kYW0+WvibL/rafEHKAHO653hEXIxJHqRlRLITluXtRH3AGTL5qJmifQ==
+ dependencies:
+ browserslist "^4.16.6"
+ semver "7.0.0"
+
+core-js-pure@^3.0.0:
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.13.0.tgz#9d267fb47d1d7046cfbc05e7b67bb235b6735355"
+ integrity sha512-7VTvXbsMxROvzPAVczLgfizR8CyYnvWPrb1eGrtlZAJfjQWEHLofVfCKljLHdpazTfpaziRORwUH/kfGDKvpdA==
+
+core-js@^1.0.0:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
+ integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
+
+core-js@^2.4.0, core-js@^2.6.5:
+ version "2.6.12"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
+ integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
+
+core-js@^3.2.1, core-js@^3.8.3:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.3.tgz#c21906e1f14f3689f93abcc6e26883550dd92dd0"
+ integrity sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==
+
+core-js@^3.6.5:
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.13.0.tgz#58ca436bf01d6903aee3d364089868d0d89fe58d"
+ integrity sha512-iWDbiyha1M5vFwPFmQnvRv+tJzGbFAm6XimJUT0NgHYW3xZEs1SkCAcasWSVFxpI2Xb/V1DDJckq3v90+bQnog==
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cosmiconfig@^5.0.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
+ dependencies:
+ import-fresh "^2.0.0"
+ is-directory "^0.3.1"
+ js-yaml "^3.13.1"
+ parse-json "^4.0.0"
+
+cosmiconfig@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
+ integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.1.0"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.7.2"
+
+cosmiconfig@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3"
+ integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
+create-ecdh@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
+ integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.5.3"
+
+create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+cross-spawn@^6.0.0:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+crypto-browserify@^3.11.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+ randomfill "^1.0.3"
+
+crypto-random-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+ integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
+
+css-blank-pseudo@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5"
+ integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==
+ dependencies:
+ postcss "^7.0.5"
+
+css-color-keywords@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
+ integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=
+
+css-color-names@0.0.4, css-color-names@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+ integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
+
+css-declaration-sorter@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
+ integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
+ dependencies:
+ postcss "^7.0.1"
+ timsort "^0.3.0"
+
+css-has-pseudo@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee"
+ integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==
+ dependencies:
+ postcss "^7.0.6"
+ postcss-selector-parser "^5.0.0-rc.4"
+
+css-loader@4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e"
+ integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==
+ dependencies:
+ camelcase "^6.0.0"
+ cssesc "^3.0.0"
+ icss-utils "^4.1.1"
+ loader-utils "^2.0.0"
+ postcss "^7.0.32"
+ postcss-modules-extract-imports "^2.0.0"
+ postcss-modules-local-by-default "^3.0.3"
+ postcss-modules-scope "^2.2.0"
+ postcss-modules-values "^3.0.0"
+ postcss-value-parser "^4.1.0"
+ schema-utils "^2.7.1"
+ semver "^7.3.2"
+
+css-prefers-color-scheme@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4"
+ integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==
+ dependencies:
+ postcss "^7.0.5"
+
+css-select-base-adapter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
+
+css-select@^2.0.0, css-select@^2.0.2:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
+ integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^3.2.1"
+ domutils "^1.7.0"
+ nth-check "^1.0.2"
+
+css-to-react-native@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756"
+ integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==
+ dependencies:
+ camelize "^1.0.0"
+ css-color-keywords "^1.0.0"
+ postcss-value-parser "^4.0.2"
+
+css-tree@1.0.0-alpha.37:
+ version "1.0.0-alpha.37"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
+ integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
+ dependencies:
+ mdn-data "2.0.4"
+ source-map "^0.6.1"
+
+css-tree@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
+css-vendor@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d"
+ integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==
+ dependencies:
+ "@babel/runtime" "^7.8.3"
+ is-in-browser "^1.0.2"
+
+css-what@^3.2.1:
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
+ integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
+
+css.escape@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
+ integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
+
+css@^2.0.0:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929"
+ integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==
+ dependencies:
+ inherits "^2.0.3"
+ source-map "^0.6.1"
+ source-map-resolve "^0.5.2"
+ urix "^0.1.0"
+
+css@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d"
+ integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==
+ dependencies:
+ inherits "^2.0.4"
+ source-map "^0.6.1"
+ source-map-resolve "^0.6.0"
+
+cssdb@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0"
+ integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==
+
+cssesc@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
+ integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssnano-preset-default@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff"
+ integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==
+ dependencies:
+ css-declaration-sorter "^4.0.1"
+ cssnano-util-raw-cache "^4.0.1"
+ postcss "^7.0.0"
+ postcss-calc "^7.0.1"
+ postcss-colormin "^4.0.3"
+ postcss-convert-values "^4.0.1"
+ postcss-discard-comments "^4.0.2"
+ postcss-discard-duplicates "^4.0.2"
+ postcss-discard-empty "^4.0.1"
+ postcss-discard-overridden "^4.0.1"
+ postcss-merge-longhand "^4.0.11"
+ postcss-merge-rules "^4.0.3"
+ postcss-minify-font-values "^4.0.2"
+ postcss-minify-gradients "^4.0.2"
+ postcss-minify-params "^4.0.2"
+ postcss-minify-selectors "^4.0.2"
+ postcss-normalize-charset "^4.0.1"
+ postcss-normalize-display-values "^4.0.2"
+ postcss-normalize-positions "^4.0.2"
+ postcss-normalize-repeat-style "^4.0.2"
+ postcss-normalize-string "^4.0.2"
+ postcss-normalize-timing-functions "^4.0.2"
+ postcss-normalize-unicode "^4.0.1"
+ postcss-normalize-url "^4.0.1"
+ postcss-normalize-whitespace "^4.0.2"
+ postcss-ordered-values "^4.1.2"
+ postcss-reduce-initial "^4.0.3"
+ postcss-reduce-transforms "^4.0.2"
+ postcss-svgo "^4.0.3"
+ postcss-unique-selectors "^4.0.1"
+
+cssnano-util-get-arguments@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
+ integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
+
+cssnano-util-get-match@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
+ integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
+
+cssnano-util-raw-cache@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
+ integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
+ dependencies:
+ postcss "^7.0.0"
+
+cssnano-util-same-parent@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
+ integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
+
+cssnano@^4.1.10:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99"
+ integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ cssnano-preset-default "^4.0.8"
+ is-resolvable "^1.0.0"
+ postcss "^7.0.0"
+
+csso@^4.0.2:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
+cssom@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
+ integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+
+cssom@~0.3.6:
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+cssstyle@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
+ integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+ dependencies:
+ cssom "~0.3.6"
+
+csstype@^2.5.2:
+ version "2.6.14"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.14.tgz#004822a4050345b55ad4dcc00be1d9cf2f4296de"
+ integrity sha512-2mSc+VEpGPblzAxyeR+vZhJKgYg0Og0nnRi7pmRXFYYxSfnOnW8A5wwQb4n4cE2nIOzqKOAzLCaEX6aBmNEv8A==
+
+csstype@^3.0.2:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef"
+ integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw==
+
+cyclist@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
+ integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
+
+d@1, d@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
+ integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
+ dependencies:
+ es5-ext "^0.10.50"
+ type "^1.0.1"
+
+damerau-levenshtein@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d"
+ integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==
+
+data-urls@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
+ integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
+ dependencies:
+ abab "^2.0.3"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.0.0"
+
+date-fns@^2.23.0:
+ version "2.23.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.23.0.tgz#4e886c941659af0cf7b30fafdd1eaa37e88788a9"
+ integrity sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA==
+
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+ integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
+ dependencies:
+ ms "2.1.2"
+
+debug@^3.1.1, debug@^3.2.6, debug@^3.2.7:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decimal.js@^10.2.1:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3"
+ integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==
+
+decko@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decko/-/decko-1.2.0.tgz#fd43c735e967b8013306884a56fbe665996b6817"
+ integrity sha1-/UPHNelnuAEzBohKVvvmZZlraBc=
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+ integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+
+deep-equal@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
+ integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
+ dependencies:
+ is-arguments "^1.0.4"
+ is-date-object "^1.0.1"
+ is-regex "^1.0.4"
+ object-is "^1.0.1"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.2.0"
+
+deep-is@^0.1.3, deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+deepmerge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
+default-gateway@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
+ integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
+ dependencies:
+ execa "^1.0.0"
+ ip-regex "^2.1.0"
+
+define-properties@^1.1.2, define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+del@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
+ integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ globby "^6.1.0"
+ is-path-cwd "^2.0.0"
+ is-path-in-cwd "^2.0.0"
+ p-map "^2.0.0"
+ pify "^4.0.1"
+ rimraf "^2.6.3"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegate@^3.1.2:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
+ integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+des.js@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
+ integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detect-newline@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
+ integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
+
+detect-node@^2.0.4:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
+ integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
+
+detect-port-alt@1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275"
+ integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==
+ dependencies:
+ address "^1.0.1"
+ debug "^2.6.0"
+
+diff-sequences@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"
+ integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==
+
+diffie-hellman@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+dns-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
+ integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
+
+dns-packet@^1.3.1:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f"
+ integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
+ dependencies:
+ ip "^1.1.0"
+ safe-buffer "^5.0.1"
+
+dns-txt@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
+ integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
+ dependencies:
+ buffer-indexof "^1.0.0"
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-accessibility-api@^0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166"
+ integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==
+
+dom-converter@^0.2:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
+ integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
+ dependencies:
+ utila "~0.4"
+
+dom-helpers@^5.0.1:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b"
+ integrity sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==
+ dependencies:
+ "@babel/runtime" "^7.8.7"
+ csstype "^3.0.2"
+
+dom-serializer@0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
+domain-browser@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+domelementtype@1, domelementtype@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domelementtype@^2.0.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
+ integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
+
+domexception@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
+ integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
+ dependencies:
+ webidl-conversions "^5.0.0"
+
+domhandler@^2.3.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+ integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
+ dependencies:
+ domelementtype "1"
+
+dompurify@^2.0.12:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.6.tgz#54945dc5c0b45ce5ae228705777e8e59d7b2edc4"
+ integrity sha512-7b7ZArhhH0SP6W2R9cqK6RjaU82FZ2UPM7RO8qN1b1wyvC/NY1FNWcX1Pu00fFOAnzEORtwXe4bPaClg6pUybQ==
+
+domutils@^1.5.1, domutils@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+dot-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
+ integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
+ dependencies:
+ no-case "^3.0.4"
+ tslib "^2.0.3"
+
+dot-prop@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
+ integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+ dependencies:
+ is-obj "^2.0.0"
+
+dotenv-expand@5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
+ integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
+
+dotenv@8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
+ integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
+
+duplexer@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+ejs@^2.6.1:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
+ integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
+
+electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.723:
+ version "1.3.742"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.742.tgz#7223215acbbd3a5284962ebcb6df85d88b95f200"
+ integrity sha512-ihL14knI9FikJmH2XUIDdZFWJxvr14rPSdOhJ7PpS27xbz8qmaRwCwyg/bmFwjWKmWK9QyamiCZVCvXm5CH//Q==
+
+elliptic@^6.5.3:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
+ integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
+ dependencies:
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
+
+emittery@^0.7.1:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82"
+ integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.0.0:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+encoding@^0.1.11:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
+ integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
+ dependencies:
+ iconv-lite "^0.6.2"
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^4.3.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec"
+ integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.5.0"
+ tapable "^1.0.0"
+
+enquirer@^2.3.5:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
+ integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ dependencies:
+ ansi-colors "^4.1.1"
+
+entities@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+ integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+errno@^0.1.3, errno@~0.1.7:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+error-stack-parser@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8"
+ integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==
+ dependencies:
+ stackframe "^1.1.1"
+
+es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2:
+ version "1.18.3"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0"
+ integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==
+ dependencies:
+ call-bind "^1.0.2"
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ get-intrinsic "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.2"
+ is-callable "^1.2.3"
+ is-negative-zero "^2.0.1"
+ is-regex "^1.1.3"
+ is-string "^1.0.6"
+ object-inspect "^1.10.3"
+ object-keys "^1.1.1"
+ object.assign "^4.1.2"
+ string.prototype.trimend "^1.0.4"
+ string.prototype.trimstart "^1.0.4"
+ unbox-primitive "^1.0.1"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es5-ext@^0.10.35, es5-ext@^0.10.50:
+ version "0.10.53"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1"
+ integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==
+ dependencies:
+ es6-iterator "~2.0.3"
+ es6-symbol "~3.1.3"
+ next-tick "~1.0.0"
+
+es6-iterator@2.0.3, es6-iterator@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+ integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
+ dependencies:
+ d "1"
+ es5-ext "^0.10.35"
+ es6-symbol "^3.1.1"
+
+es6-promise@^3.2.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
+ integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=
+
+es6-symbol@^3.1.1, es6-symbol@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
+ integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
+ dependencies:
+ d "^1.0.1"
+ ext "^1.1.2"
+
+escalade@^3.0.2, escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+escodegen@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
+ integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^5.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+eslint-config-react-app@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e"
+ integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==
+ dependencies:
+ confusing-browser-globals "^1.0.10"
+
+eslint-import-resolver-node@^0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
+ integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
+ dependencies:
+ debug "^2.6.9"
+ resolve "^1.13.1"
+
+eslint-module-utils@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233"
+ integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==
+ dependencies:
+ debug "^3.2.7"
+ pkg-dir "^2.0.0"
+
+eslint-plugin-flowtype@^5.2.0:
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.7.2.tgz#482a42fe5d15ee614652ed256d37543d584d7bc0"
+ integrity sha512-7Oq/N0+3nijBnYWQYzz/Mp/7ZCpwxYvClRyW/PLAmimY9uLCBvoXsNsERcJdkKceyOjgRbFhhxs058KTrne9Mg==
+ dependencies:
+ lodash "^4.17.15"
+ string-natural-compare "^3.0.1"
+
+eslint-plugin-import@^2.22.1:
+ version "2.23.3"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.3.tgz#8a1b073289fff03c4af0f04b6df956b7d463e191"
+ integrity sha512-wDxdYbSB55F7T5CC7ucDjY641VvKmlRwT0Vxh7PkY1mI4rclVRFWYfsrjDgZvwYYDZ5ee0ZtfFKXowWjqvEoRQ==
+ dependencies:
+ array-includes "^3.1.3"
+ array.prototype.flat "^1.2.4"
+ debug "^2.6.9"
+ doctrine "^2.1.0"
+ eslint-import-resolver-node "^0.3.4"
+ eslint-module-utils "^2.6.1"
+ find-up "^2.0.0"
+ has "^1.0.3"
+ is-core-module "^2.4.0"
+ minimatch "^3.0.4"
+ object.values "^1.1.3"
+ pkg-up "^2.0.0"
+ read-pkg-up "^3.0.0"
+ resolve "^1.20.0"
+ tsconfig-paths "^3.9.0"
+
+eslint-plugin-jest@^24.1.0:
+ version "24.3.6"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz#5f0ca019183c3188c5ad3af8e80b41de6c8e9173"
+ integrity sha512-WOVH4TIaBLIeCX576rLcOgjNXqP+jNlCiEmRgFTfQtJ52DpwnIQKAVGlGPAN7CZ33bW6eNfHD6s8ZbEUTQubJg==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "^4.0.1"
+
+eslint-plugin-jsx-a11y@^6.3.1:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd"
+ integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==
+ dependencies:
+ "@babel/runtime" "^7.11.2"
+ aria-query "^4.2.2"
+ array-includes "^3.1.1"
+ ast-types-flow "^0.0.7"
+ axe-core "^4.0.2"
+ axobject-query "^2.2.0"
+ damerau-levenshtein "^1.0.6"
+ emoji-regex "^9.0.0"
+ has "^1.0.3"
+ jsx-ast-utils "^3.1.0"
+ language-tags "^1.0.5"
+
+eslint-plugin-react-hooks@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556"
+ integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==
+
+eslint-plugin-react@^7.21.5:
+ version "7.23.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz#2d2291b0f95c03728b55869f01102290e792d494"
+ integrity sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==
+ dependencies:
+ array-includes "^3.1.3"
+ array.prototype.flatmap "^1.2.4"
+ doctrine "^2.1.0"
+ has "^1.0.3"
+ jsx-ast-utils "^2.4.1 || ^3.0.0"
+ minimatch "^3.0.4"
+ object.entries "^1.1.3"
+ object.fromentries "^2.0.4"
+ object.values "^1.1.3"
+ prop-types "^15.7.2"
+ resolve "^2.0.0-next.3"
+ string.prototype.matchall "^4.0.4"
+
+eslint-plugin-testing-library@^3.9.2:
+ version "3.10.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz#609ec2b0369da7cf2e6d9edff5da153cc31d87bd"
+ integrity sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "^3.10.1"
+
+eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^5.0.0, eslint-scope@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^2.0.0, eslint-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
+ integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+eslint-visitor-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
+ integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
+
+eslint-webpack-plugin@^2.5.2:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz#473b84932f1a8e2c2b8e66a402d0497bf440b986"
+ integrity sha512-7rYh0m76KyKSDE+B+2PUQrlNS4HJ51t3WKpkJg6vo2jFMbEPTG99cBV0Dm7LXSHucN4WGCG65wQcRiTFrj7iWw==
+ dependencies:
+ "@types/eslint" "^7.2.6"
+ arrify "^2.0.1"
+ jest-worker "^26.6.2"
+ micromatch "^4.0.2"
+ normalize-path "^3.0.0"
+ schema-utils "^3.0.0"
+
+eslint@^7.11.0:
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.27.0.tgz#665a1506d8f95655c9274d84bd78f7166b07e9c7"
+ integrity sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==
+ dependencies:
+ "@babel/code-frame" "7.12.11"
+ "@eslint/eslintrc" "^0.4.1"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ enquirer "^2.3.5"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^5.1.1"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^2.0.0"
+ espree "^7.3.1"
+ esquery "^1.4.0"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^13.6.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ progress "^2.0.0"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
+ table "^6.0.9"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^7.3.0, espree@^7.3.1:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
+ integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+ dependencies:
+ acorn "^7.4.0"
+ acorn-jsx "^5.3.1"
+ eslint-visitor-keys "^1.3.0"
+
+esprima@^4.0.0, esprima@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
+ integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.1.0, esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+
+estree-walker@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
+ integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
+
+estree-walker@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
+ integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+eventemitter3@^4.0.0, eventemitter3@^4.0.4:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
+events@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
+eventsource@^1.0.7:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf"
+ integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==
+ dependencies:
+ original "^1.0.0"
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+exec-sh@^0.3.2:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc"
+ integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
+ integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
+ dependencies:
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
+exit@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+ integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+expect@^26.6.0, expect@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417"
+ integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ ansi-styles "^4.0.0"
+ jest-get-type "^26.3.0"
+ jest-matcher-utils "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-regex-util "^26.0.0"
+
+express@^4.17.1:
+ version "4.17.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
+ integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
+ dependencies:
+ accepts "~1.3.7"
+ array-flatten "1.1.1"
+ body-parser "1.19.0"
+ content-disposition "0.5.3"
+ content-type "~1.0.4"
+ cookie "0.4.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "~1.1.2"
+ fresh "0.5.2"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.5"
+ qs "6.7.0"
+ range-parser "~1.2.1"
+ safe-buffer "5.1.2"
+ send "0.17.1"
+ serve-static "1.14.1"
+ setprototypeof "1.1.1"
+ statuses "~1.5.0"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+ext@^1.1.2:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244"
+ integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==
+ dependencies:
+ type "^2.0.0"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+fast-deep-equal@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
+ integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^3.1.1:
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661"
+ integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.0"
+ merge2 "^1.3.0"
+ micromatch "^4.0.2"
+ picomatch "^2.2.1"
+
+fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fast-safe-stringify@^2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743"
+ integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==
+
+fastq@^1.6.0:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858"
+ integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==
+ dependencies:
+ reusify "^1.0.4"
+
+faye-websocket@^0.11.3:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
+ integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+fb-watchman@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
+ integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==
+ dependencies:
+ bser "2.1.1"
+
+fbjs@^0.8.1:
+ version "0.8.17"
+ resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
+ integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
+ dependencies:
+ core-js "^1.0.0"
+ isomorphic-fetch "^2.1.1"
+ loose-envify "^1.0.0"
+ object-assign "^4.1.0"
+ promise "^7.1.1"
+ setimmediate "^1.0.5"
+ ua-parser-js "^0.7.18"
+
+figgy-pudding@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+file-loader@6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa"
+ integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
+file-uri-to-path@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
+ integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
+
+filesize@6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00"
+ integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
+ unpipe "~1.0.0"
+
+find-cache-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
+
+find-cache-dir@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
+ integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^3.0.2"
+ pkg-dir "^4.1.0"
+
+find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+find-up@^2.0.0, find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+flat-cache@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
+ integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ dependencies:
+ flatted "^3.1.0"
+ rimraf "^3.0.2"
+
+flatted@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
+ integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
+
+flatten@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b"
+ integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+follow-redirects@^1.0.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43"
+ integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+foreach@^2.0.4:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+ integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
+
+fork-ts-checker-webpack-plugin@4.1.6:
+ version "4.1.6"
+ resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5"
+ integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ chalk "^2.4.1"
+ micromatch "^3.1.10"
+ minimatch "^3.0.4"
+ semver "^5.6.0"
+ tapable "^1.0.0"
+ worker-rpc "^0.1.0"
+
+form-data@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
+ integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+format-util@^1.0.3:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271"
+ integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==
+
+forwarded@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+ integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-extra@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
+ integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^9.0.1:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fs-minipass@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
+ integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
+ dependencies:
+ minipass "^3.0.0"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.2.7:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
+ integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
+ dependencies:
+ bindings "^1.5.0"
+ nan "^2.12.1"
+
+fsevents@^2.1.2, fsevents@^2.1.3, fsevents@~2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.1, get-caller-file@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+
+get-package-type@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
+ integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
+
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+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.7"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
+ integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-modules@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^12.1.0:
+ version "12.4.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
+ integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
+ dependencies:
+ type-fest "^0.8.1"
+
+globals@^13.6.0:
+ version "13.9.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb"
+ integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==
+ dependencies:
+ type-fest "^0.20.2"
+
+globby@11.0.1:
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
+ integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
+globby@^11.0.1:
+ version "11.0.3"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb"
+ integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
+globby@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+ integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+good-listener@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
+ integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=
+ dependencies:
+ delegate "^3.1.2"
+
+google-maps-infobox@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/google-maps-infobox/-/google-maps-infobox-2.0.0.tgz#1ea6de93c0cdf4138c2d586331835c83dcc59dc2"
+ integrity sha512-hTuWmWZZSOxf5D/z7l3/hTF1grgRvLG53BEKMdjiKOG+FcK/kH7vqseUeyIU9Zj2ZIqKTOaro0nknxpAuRq4Vw==
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
+ version "4.2.6"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
+ integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
+
+grapheme-splitter@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
+ integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
+growly@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+ integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
+
+gzip-size@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
+ integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
+ dependencies:
+ duplexer "^0.1.1"
+ pify "^4.0.1"
+
+handle-thing@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
+ integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
+
+harmony-reflect@^1.4.6:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710"
+ integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==
+
+has-bigints@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
+ integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-symbols@^1.0.1, has-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
+ integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.0, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-base@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
+ integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
+ dependencies:
+ inherits "^2.0.4"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+he@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+hex-color-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
+ integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+
+history@^4.9.0:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
+ integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ loose-envify "^1.2.0"
+ resolve-pathname "^3.0.0"
+ tiny-invariant "^1.0.2"
+ tiny-warning "^1.0.0"
+ value-equal "^1.0.1"
+
+hmac-drbg@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hoist-non-react-statics@^2.3.1:
+ version "2.5.5"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
+ integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==
+
+hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
+hoopy@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
+ integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
+
+hosted-git-info@^2.1.4:
+ version "2.8.9"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+
+hpack.js@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+ integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
+ dependencies:
+ inherits "^2.0.1"
+ obuf "^1.0.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.1.0"
+
+hsl-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
+ integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
+
+hsla-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
+ integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
+
+html-encoding-sniffer@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
+ integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
+ dependencies:
+ whatwg-encoding "^1.0.5"
+
+html-entities@^1.2.1, html-entities@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc"
+ integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
+
+html-escaper@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
+ integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
+
+html-minifier-terser@^5.0.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054"
+ integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==
+ dependencies:
+ camel-case "^4.1.1"
+ clean-css "^4.2.3"
+ commander "^4.1.1"
+ he "^1.2.0"
+ param-case "^3.0.3"
+ relateurl "^0.2.7"
+ terser "^4.6.3"
+
+html-webpack-plugin@4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c"
+ integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==
+ dependencies:
+ "@types/html-minifier-terser" "^5.0.0"
+ "@types/tapable" "^1.0.5"
+ "@types/webpack" "^4.41.8"
+ html-minifier-terser "^5.0.1"
+ loader-utils "^1.2.3"
+ lodash "^4.17.15"
+ pretty-error "^2.1.1"
+ tapable "^1.1.3"
+ util.promisify "1.0.0"
+
+htmlparser2@^3.10.1:
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+ integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
+ dependencies:
+ domelementtype "^1.3.1"
+ domhandler "^2.3.0"
+ domutils "^1.5.1"
+ entities "^1.1.1"
+ inherits "^2.0.1"
+ readable-stream "^3.1.1"
+
+http-deceiver@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+ integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
+
+http-errors@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
+ integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
+http-errors@~1.7.2:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
+ integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-parser-js@>=0.5.1:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
+ integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==
+
+http-proxy-agent@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
+ integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+ dependencies:
+ "@tootallnate/once" "1"
+ agent-base "6"
+ debug "4"
+
+http-proxy-middleware@0.19.1:
+ version "0.19.1"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
+ integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
+ dependencies:
+ http-proxy "^1.17.0"
+ is-glob "^4.0.0"
+ lodash "^4.17.11"
+ micromatch "^3.1.10"
+
+http-proxy@^1.17.0:
+ version "1.18.1"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
+ dependencies:
+ eventemitter3 "^4.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
+
+http2-client@^1.2.5:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.3.tgz#90fc15d646cca86956b156d07c83947d57d659a9"
+ integrity sha512-nUxLymWQ9pzkzTmir24p2RtsgruLmhje7lH3hLX1IpwvyTg77fW+1brenPPP3USAR+rQ36p5sTA/x7sjCJVkAA==
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+ integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
+
+https-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
+ integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
+human-signals@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
+ integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+hyphenate-style-name@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d"
+ integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==
+
+iconv-lite@0.4.24:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01"
+ integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+icss-utils@^4.0.0, icss-utils@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
+ integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==
+ dependencies:
+ postcss "^7.0.14"
+
+identity-obj-proxy@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14"
+ integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=
+ dependencies:
+ harmony-reflect "^1.4.6"
+
+ieee754@^1.1.4:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.4:
+ version "5.1.8"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
+ integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+
+immer@8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656"
+ integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==
+
+import-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
+ integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=
+ dependencies:
+ import-from "^2.1.0"
+
+import-fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
+ integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
+ dependencies:
+ caller-path "^2.0.0"
+ resolve-from "^3.0.0"
+
+import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-from@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
+ integrity sha1-M1238qev/VOqpHHUuAId7ja387E=
+ dependencies:
+ resolve-from "^3.0.0"
+
+import-local@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+ dependencies:
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
+import-local@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
+ integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
+ dependencies:
+ pkg-dir "^4.2.0"
+ resolve-cwd "^3.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indefinite-observable@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400"
+ integrity sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ==
+ dependencies:
+ symbol-observable "1.2.0"
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+ integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
+
+infer-owner@^1.0.3, infer-owner@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+ini@^1.3.5:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
+internal-ip@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
+ integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
+ dependencies:
+ default-gateway "^4.2.0"
+ ipaddr.js "^1.9.0"
+
+internal-slot@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
+ integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
+ dependencies:
+ get-intrinsic "^1.1.0"
+ has "^1.0.3"
+ side-channel "^1.0.4"
+
+invariant@^2.2.1:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
+ip-regex@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
+ integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
+
+ip@^1.1.0, ip@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+ integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
+
+ipaddr.js@1.9.1, ipaddr.js@^1.9.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-absolute-url@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+ integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
+
+is-absolute-url@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
+ integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-arguments@^1.0.4:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
+ integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
+ dependencies:
+ call-bind "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
+is-bigint@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a"
+ integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-boolean-object@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8"
+ integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-callable@^1.1.4, is-callable@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
+ integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
+
+is-ci@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+ integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+ dependencies:
+ ci-info "^2.0.0"
+
+is-color-stop@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
+ integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
+ dependencies:
+ css-color-names "^0.0.4"
+ hex-color-regex "^1.1.0"
+ hsl-regex "^1.0.0"
+ hsla-regex "^1.0.0"
+ rgb-regex "^1.0.1"
+ rgba-regex "^1.0.0"
+
+is-core-module@^2.0.0, is-core-module@^2.2.0, is-core-module@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1"
+ integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==
+ dependencies:
+ has "^1.0.3"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5"
+ integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+ integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+
+is-docker@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-generator-fn@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
+ integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-in-browser@^1.0.2, is-in-browser@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835"
+ integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=
+
+is-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
+ integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
+
+is-negative-zero@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
+ integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
+
+is-number-object@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb"
+ integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-path-cwd@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
+ integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
+
+is-path-in-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
+ integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
+ dependencies:
+ is-path-inside "^2.1.0"
+
+is-path-inside@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
+ integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
+ dependencies:
+ path-is-inside "^1.0.2"
+
+is-plain-obj@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-potential-custom-element-name@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
+ integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
+
+is-regex@^1.0.4, is-regex@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f"
+ integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==
+ dependencies:
+ call-bind "^1.0.2"
+ has-symbols "^1.0.2"
+
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+is-resolvable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-root@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
+ integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==
+
+is-stream@^1.0.1, is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
+ integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+
+is-string@^1.0.5, is-string@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f"
+ integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-typedarray@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
+
+is-wsl@^2.1.1, is-wsl@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+isomorphic-fetch@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
+ integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
+ dependencies:
+ node-fetch "^1.0.1"
+ whatwg-fetch ">=0.10.0"
+
+istanbul-lib-coverage@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec"
+ integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==
+
+istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d"
+ integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
+ dependencies:
+ "@babel/core" "^7.7.5"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-coverage "^3.0.0"
+ semver "^6.3.0"
+
+istanbul-lib-report@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
+ integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
+ dependencies:
+ istanbul-lib-coverage "^3.0.0"
+ make-dir "^3.0.0"
+ supports-color "^7.1.0"
+
+istanbul-lib-source-maps@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9"
+ integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==
+ dependencies:
+ debug "^4.1.1"
+ istanbul-lib-coverage "^3.0.0"
+ source-map "^0.6.1"
+
+istanbul-reports@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b"
+ integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==
+ dependencies:
+ html-escaper "^2.0.0"
+ istanbul-lib-report "^3.0.0"
+
+jest-changed-files@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0"
+ integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ execa "^4.0.0"
+ throat "^5.0.0"
+
+jest-circus@26.6.0:
+ version "26.6.0"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705"
+ integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng==
+ dependencies:
+ "@babel/traverse" "^7.1.0"
+ "@jest/environment" "^26.6.0"
+ "@jest/test-result" "^26.6.0"
+ "@jest/types" "^26.6.0"
+ "@types/babel__traverse" "^7.0.4"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ co "^4.6.0"
+ dedent "^0.7.0"
+ expect "^26.6.0"
+ is-generator-fn "^2.0.0"
+ jest-each "^26.6.0"
+ jest-matcher-utils "^26.6.0"
+ jest-message-util "^26.6.0"
+ jest-runner "^26.6.0"
+ jest-runtime "^26.6.0"
+ jest-snapshot "^26.6.0"
+ jest-util "^26.6.0"
+ pretty-format "^26.6.0"
+ stack-utils "^2.0.2"
+ throat "^5.0.0"
+
+jest-cli@^26.6.0:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a"
+ integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==
+ dependencies:
+ "@jest/core" "^26.6.3"
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ chalk "^4.0.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.4"
+ import-local "^3.0.2"
+ is-ci "^2.0.0"
+ jest-config "^26.6.3"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
+ prompts "^2.0.1"
+ yargs "^15.4.1"
+
+jest-config@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349"
+ integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/test-sequencer" "^26.6.3"
+ "@jest/types" "^26.6.2"
+ babel-jest "^26.6.3"
+ chalk "^4.0.0"
+ deepmerge "^4.2.2"
+ glob "^7.1.1"
+ graceful-fs "^4.2.4"
+ jest-environment-jsdom "^26.6.2"
+ jest-environment-node "^26.6.2"
+ jest-get-type "^26.3.0"
+ jest-jasmine2 "^26.6.3"
+ jest-regex-util "^26.0.0"
+ jest-resolve "^26.6.2"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
+ micromatch "^4.0.2"
+ pretty-format "^26.6.2"
+
+jest-diff@^26.0.0, jest-diff@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394"
+ integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^26.6.2"
+ jest-get-type "^26.3.0"
+ pretty-format "^26.6.2"
+
+jest-docblock@^26.0.0:
+ version "26.0.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5"
+ integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==
+ dependencies:
+ detect-newline "^3.0.0"
+
+jest-each@^26.6.0, jest-each@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb"
+ integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ chalk "^4.0.0"
+ jest-get-type "^26.3.0"
+ jest-util "^26.6.2"
+ pretty-format "^26.6.2"
+
+jest-environment-jsdom@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e"
+ integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==
+ dependencies:
+ "@jest/environment" "^26.6.2"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ jest-mock "^26.6.2"
+ jest-util "^26.6.2"
+ jsdom "^16.4.0"
+
+jest-environment-node@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c"
+ integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==
+ dependencies:
+ "@jest/environment" "^26.6.2"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ jest-mock "^26.6.2"
+ jest-util "^26.6.2"
+
+jest-get-type@^26.3.0:
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0"
+ integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==
+
+jest-haste-map@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa"
+ integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/graceful-fs" "^4.1.2"
+ "@types/node" "*"
+ anymatch "^3.0.3"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.2.4"
+ jest-regex-util "^26.0.0"
+ jest-serializer "^26.6.2"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
+ micromatch "^4.0.2"
+ sane "^4.0.3"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^2.1.2"
+
+jest-jasmine2@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd"
+ integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==
+ dependencies:
+ "@babel/traverse" "^7.1.0"
+ "@jest/environment" "^26.6.2"
+ "@jest/source-map" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ co "^4.6.0"
+ expect "^26.6.2"
+ is-generator-fn "^2.0.0"
+ jest-each "^26.6.2"
+ jest-matcher-utils "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-runtime "^26.6.3"
+ jest-snapshot "^26.6.2"
+ jest-util "^26.6.2"
+ pretty-format "^26.6.2"
+ throat "^5.0.0"
+
+jest-leak-detector@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af"
+ integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==
+ dependencies:
+ jest-get-type "^26.3.0"
+ pretty-format "^26.6.2"
+
+jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a"
+ integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^26.6.2"
+ jest-get-type "^26.3.0"
+ pretty-format "^26.6.2"
+
+jest-message-util@^26.6.0, jest-message-util@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07"
+ integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@jest/types" "^26.6.2"
+ "@types/stack-utils" "^2.0.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ micromatch "^4.0.2"
+ pretty-format "^26.6.2"
+ slash "^3.0.0"
+ stack-utils "^2.0.2"
+
+jest-mock@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302"
+ integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+
+jest-pnp-resolver@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
+ integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
+
+jest-regex-util@^26.0.0:
+ version "26.0.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28"
+ integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==
+
+jest-resolve-dependencies@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6"
+ integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ jest-regex-util "^26.0.0"
+ jest-snapshot "^26.6.2"
+
+jest-resolve@26.6.0:
+ version "26.6.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1"
+ integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ==
+ dependencies:
+ "@jest/types" "^26.6.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ jest-pnp-resolver "^1.2.2"
+ jest-util "^26.6.0"
+ read-pkg-up "^7.0.1"
+ resolve "^1.17.0"
+ slash "^3.0.0"
+
+jest-resolve@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507"
+ integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ jest-pnp-resolver "^1.2.2"
+ jest-util "^26.6.2"
+ read-pkg-up "^7.0.1"
+ resolve "^1.18.1"
+ slash "^3.0.0"
+
+jest-runner@^26.6.0, jest-runner@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159"
+ integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/environment" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ emittery "^0.7.1"
+ exit "^0.1.2"
+ graceful-fs "^4.2.4"
+ jest-config "^26.6.3"
+ jest-docblock "^26.0.0"
+ jest-haste-map "^26.6.2"
+ jest-leak-detector "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-resolve "^26.6.2"
+ jest-runtime "^26.6.3"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
+ source-map-support "^0.5.6"
+ throat "^5.0.0"
+
+jest-runtime@^26.6.0, jest-runtime@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b"
+ integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/environment" "^26.6.2"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/globals" "^26.6.2"
+ "@jest/source-map" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/yargs" "^15.0.0"
+ chalk "^4.0.0"
+ cjs-module-lexer "^0.6.0"
+ collect-v8-coverage "^1.0.0"
+ exit "^0.1.2"
+ glob "^7.1.3"
+ graceful-fs "^4.2.4"
+ jest-config "^26.6.3"
+ jest-haste-map "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-mock "^26.6.2"
+ jest-regex-util "^26.0.0"
+ jest-resolve "^26.6.2"
+ jest-snapshot "^26.6.2"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
+ slash "^3.0.0"
+ strip-bom "^4.0.0"
+ yargs "^15.4.1"
+
+jest-serializer@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1"
+ integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==
+ dependencies:
+ "@types/node" "*"
+ graceful-fs "^4.2.4"
+
+jest-snapshot@^26.6.0, jest-snapshot@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84"
+ integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==
+ dependencies:
+ "@babel/types" "^7.0.0"
+ "@jest/types" "^26.6.2"
+ "@types/babel__traverse" "^7.0.4"
+ "@types/prettier" "^2.0.0"
+ chalk "^4.0.0"
+ expect "^26.6.2"
+ graceful-fs "^4.2.4"
+ jest-diff "^26.6.2"
+ jest-get-type "^26.3.0"
+ jest-haste-map "^26.6.2"
+ jest-matcher-utils "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-resolve "^26.6.2"
+ natural-compare "^1.4.0"
+ pretty-format "^26.6.2"
+ semver "^7.3.2"
+
+jest-util@^26.6.0, jest-util@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1"
+ integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ is-ci "^2.0.0"
+ micromatch "^4.0.2"
+
+jest-validate@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec"
+ integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ camelcase "^6.0.0"
+ chalk "^4.0.0"
+ jest-get-type "^26.3.0"
+ leven "^3.1.0"
+ pretty-format "^26.6.2"
+
+jest-watch-typeahead@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63"
+ integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg==
+ dependencies:
+ ansi-escapes "^4.3.1"
+ chalk "^4.0.0"
+ jest-regex-util "^26.0.0"
+ jest-watcher "^26.3.0"
+ slash "^3.0.0"
+ string-length "^4.0.1"
+ strip-ansi "^6.0.0"
+
+jest-watcher@^26.3.0, jest-watcher@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975"
+ integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==
+ dependencies:
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ jest-util "^26.6.2"
+ string-length "^4.0.1"
+
+jest-worker@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5"
+ integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==
+ dependencies:
+ merge-stream "^2.0.0"
+ supports-color "^6.1.0"
+
+jest-worker@^26.5.0, jest-worker@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
+ integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^7.0.0"
+
+jest@26.6.0:
+ version "26.6.0"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25"
+ integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==
+ dependencies:
+ "@jest/core" "^26.6.0"
+ import-local "^3.0.2"
+ jest-cli "^26.6.0"
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.12.1, js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsdom@^16.4.0:
+ version "16.6.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac"
+ integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==
+ dependencies:
+ abab "^2.0.5"
+ acorn "^8.2.4"
+ acorn-globals "^6.0.0"
+ cssom "^0.4.4"
+ cssstyle "^2.3.0"
+ data-urls "^2.0.0"
+ decimal.js "^10.2.1"
+ domexception "^2.0.1"
+ escodegen "^2.0.0"
+ form-data "^3.0.0"
+ html-encoding-sniffer "^2.0.1"
+ http-proxy-agent "^4.0.1"
+ https-proxy-agent "^5.0.0"
+ is-potential-custom-element-name "^1.0.1"
+ nwsapi "^2.2.0"
+ parse5 "6.0.1"
+ saxes "^5.0.1"
+ symbol-tree "^3.2.4"
+ tough-cookie "^4.0.0"
+ w3c-hr-time "^1.0.2"
+ w3c-xmlserializer "^2.0.0"
+ webidl-conversions "^6.1.0"
+ whatwg-encoding "^1.0.5"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.5.0"
+ ws "^7.4.5"
+ xml-name-validator "^3.0.0"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+json-loader@^0.5.7:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
+ integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==
+
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-pointer@^0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.1.tgz#3c6caa6ac139e2599f5a1659d39852154015054d"
+ integrity sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q==
+ dependencies:
+ foreach "^2.0.4"
+
+json-schema-ref-parser@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-6.1.0.tgz#30af34aeab5bee0431da805dac0eb21b574bf63d"
+ integrity sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==
+ dependencies:
+ call-me-maybe "^1.0.1"
+ js-yaml "^3.12.1"
+ ono "^4.0.11"
+
+json-schema-traverse@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
+ integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json-to-ast@^2.0.3:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/json-to-ast/-/json-to-ast-2.1.0.tgz#041a9fcd03c0845036acb670d29f425cea4faaf9"
+ integrity sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==
+ dependencies:
+ code-error-fragment "0.0.230"
+ grapheme-splitter "^1.0.4"
+
+json3@^3.3.3:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
+ integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+json5@^2.1.2:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonpointer@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.1.0.tgz#501fb89986a2389765ba09e6053299ceb4f2c2cc"
+ integrity sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==
+
+jss-plugin-camel-case@^10.5.1:
+ version "10.5.1"
+ resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.5.1.tgz#427b24a9951b4c2eaa7e3d5267acd2e00b0934f9"
+ integrity sha512-9+oymA7wPtswm+zxVti1qiowC5q7bRdCJNORtns2JUj/QHp2QPXYwSNRD8+D2Cy3/CEMtdJzlNnt5aXmpS6NAg==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ hyphenate-style-name "^1.0.3"
+ jss "10.5.1"
+
+jss-plugin-default-unit@^10.5.1:
+ version "10.5.1"
+ resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.5.1.tgz#2be385d71d50aee2ee81c2a9ac70e00592ed861b"
+ integrity sha512-D48hJBc9Tj3PusvlillHW8Fz0y/QqA7MNmTYDQaSB/7mTrCZjt7AVRROExoOHEtd2qIYKOYJW3Jc2agnvsXRlQ==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.5.1"
+
+jss-plugin-global@^10.5.1:
+ version "10.5.1"
+ resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.5.1.tgz#0e1793dea86c298360a7e2004721351653c7e764"
+ integrity sha512-jX4XpNgoaB8yPWw/gA1aPXJEoX0LNpvsROPvxlnYe+SE0JOhuvF7mA6dCkgpXBxfTWKJsno7cDSCgzHTocRjCQ==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.5.1"
+
+jss-plugin-nested@^10.5.1:
+ version "10.5.1"
+ resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.5.1.tgz#8753a80ad31190fb6ac6fdd39f57352dcf1295bb"
+ integrity sha512-xXkWKOCljuwHNjSYcXrCxBnjd8eJp90KVFW1rlhvKKRXnEKVD6vdKXYezk2a89uKAHckSvBvBoDGsfZrldWqqQ==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.5.1"
+ tiny-warning "^1.0.2"
+
+jss-plugin-props-sort@^10.5.1:
+ version "10.5.1"
+ resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.5.1.tgz#ab1c167fd2d4506fb6a1c1d66c5f3ef545ff1cd8"
+ integrity sha512-t+2vcevNmMg4U/jAuxlfjKt46D/jHzCPEjsjLRj/J56CvP7Iy03scsUP58Iw8mVnaV36xAUZH2CmAmAdo8994g==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.5.1"
+
+jss-plugin-rule-value-function@^10.5.1:
+ version "10.5.1"
+ resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.5.1.tgz#37f4030523fb3032c8801fab48c36c373004de7e"
+ integrity sha512-3gjrSxsy4ka/lGQsTDY8oYYtkt2esBvQiceGBB4PykXxHoGRz14tbCK31Zc6DHEnIeqsjMUGbq+wEly5UViStQ==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.5.1"
+ tiny-warning "^1.0.2"
+
+jss-plugin-vendor-prefixer@^10.5.1:
+ version "10.5.1"
+ resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.5.1.tgz#45a183a3a0eb097bdfab0986b858d99920c0bbd8"
+ integrity sha512-cLkH6RaPZWHa1TqSfd2vszNNgxT1W0omlSjAd6hCFHp3KIocSrW21gaHjlMU26JpTHwkc+tJTCQOmE/O1A4FKQ==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ css-vendor "^2.0.8"
+ jss "10.5.1"
+
+jss@10.5.1, jss@^10.5.1:
+ version "10.5.1"
+ resolved "https://registry.yarnpkg.com/jss/-/jss-10.5.1.tgz#93e6b2428c840408372d8b548c3f3c60fa601c40"
+ integrity sha512-hbbO3+FOTqVdd7ZUoTiwpHzKXIo5vGpMNbuXH1a0wubRSWLWSBvwvaq4CiHH/U42CmjOnp6lVNNs/l+Z7ZdDmg==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ csstype "^3.0.2"
+ indefinite-observable "^2.0.1"
+ is-in-browser "^1.1.3"
+ tiny-warning "^1.0.2"
+
+"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82"
+ integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==
+ dependencies:
+ array-includes "^3.1.2"
+ object.assign "^4.1.2"
+
+killable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
+ integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+kleur@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+ integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
+
+klona@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
+ integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
+
+language-subtag-registry@~0.3.2:
+ version "0.3.21"
+ resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a"
+ integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==
+
+language-tags@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
+ integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=
+ dependencies:
+ language-subtag-registry "~0.3.2"
+
+last-call-webpack-plugin@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
+ integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==
+ dependencies:
+ lodash "^4.17.5"
+ webpack-sources "^1.1.0"
+
+leven@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
+ integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+lines-and-columns@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
+ integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
+loader-runner@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
+ integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+
+loader-utils@1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
+ integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^2.0.0"
+ json5 "^1.0.1"
+
+loader-utils@2.0.0, loader-utils@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
+ integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^2.1.2"
+
+loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+lodash._reinterpolate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
+ integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash.template@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
+ integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+ lodash.templatesettings "^4.0.0"
+
+lodash.templatesettings@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
+ integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+
+lodash.truncate@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
+ integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+
+"lodash@>=3.5 <5", lodash@^4.16.2, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5, lodash@^4.7.0:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+loglevel@^1.6.8:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
+ integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lower-case@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
+ integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
+ dependencies:
+ tslib "^2.0.3"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+lunr@2.3.8:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.8.tgz#a8b89c31f30b5a044b97d2d28e2da191b6ba2072"
+ integrity sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==
+
+luxon@^1.28.1:
+ version "1.28.1"
+ resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.1.tgz#528cdf3624a54506d710290a2341aa8e6e6c61b0"
+ integrity sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==
+
+lz-string@^1.4.4:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
+ integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
+
+magic-string@^0.25.0, magic-string@^0.25.7:
+ version "0.25.7"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
+ integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
+ dependencies:
+ sourcemap-codec "^1.4.4"
+
+make-dir@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-dir@^3.0.0, make-dir@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+makeerror@1.0.x:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+ integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
+ dependencies:
+ tmpl "1.0.x"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+mark.js@^8.11.1:
+ version "8.11.1"
+ resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5"
+ integrity sha1-GA8fnr74sOY45BZq1S24eb6y/8U=
+
+marked@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e"
+ integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==
+
+marker-clusterer-plus@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/marker-clusterer-plus/-/marker-clusterer-plus-2.1.4.tgz#f8eff74d599dab3b7d0e3fed5264ea0e704f5d67"
+ integrity sha1-+O/3TVmdqzt9Dj/tUmTqDnBPXWc=
+
+markerwithlabel@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/markerwithlabel/-/markerwithlabel-2.0.2.tgz#fa6aee4abb0ee553e24e2b708226858f58b8729e"
+ integrity sha512-C/cbm1A0h/u54gwHk5ZJNdUU3V3+1BbCpRPMsMyFA7vF4yL+aB4rWpxACz29TpQ+cTg6/iQroExh0PMSRGtQFg==
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
+mdn-data@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
+ integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+
+memoize-one@~5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0"
+ integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==
+
+memory-fs@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+memory-fs@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
+ integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+
+microevent.ts@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0"
+ integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==
+
+micromatch@^3.1.10, micromatch@^3.1.4:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+micromatch@^4.0.2:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
+ integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.2.3"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime-db@1.47.0, "mime-db@>= 1.43.0 < 2":
+ version "1.47.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
+ integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
+
+mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24:
+ version "2.1.30"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
+ integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==
+ dependencies:
+ mime-db "1.47.0"
+
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^2.4.4:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe"
+ integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+min-indent@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
+ integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
+
+mini-create-react-context@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e"
+ integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==
+ dependencies:
+ "@babel/runtime" "^7.12.1"
+ tiny-warning "^1.0.3"
+
+mini-css-extract-plugin@0.11.3:
+ version "0.11.3"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6"
+ integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA==
+ dependencies:
+ loader-utils "^1.1.0"
+ normalize-url "1.9.1"
+ schema-utils "^1.0.0"
+ webpack-sources "^1.1.0"
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
+
+minimatch@3.0.4, minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+minipass-collect@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
+ integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-flush@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
+ integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-pipeline@^1.2.2:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
+ integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass@^3.0.0, minipass@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
+ integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
+ dependencies:
+ yallist "^4.0.0"
+
+minizlib@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
+ integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
+ dependencies:
+ minipass "^3.0.0"
+ yallist "^4.0.0"
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+mkdirp@^1.0.3, mkdirp@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+mobx-react-lite@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz#331d7365a6b053378dfe9c087315b4e41c5df69f"
+ integrity sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g==
+
+mobx-react@^7.0.5:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-7.1.0.tgz#d947cada3cfad294b4b6f692e969c242b9c16eaf"
+ integrity sha512-DxvA6VXmnZ+N9f/UTtolWtdRnAAQY2iHWTSPLktfpj8NKlXUe4dabBAjuXrBcZUM8GjLWnxD1ZEjssXq1M0RAw==
+ dependencies:
+ mobx-react-lite "^3.2.0"
+
+mobx-utils@^6.0.4:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/mobx-utils/-/mobx-utils-6.0.4.tgz#5283a466ece8de0ac36ae3cfa1b1c032ec302b37"
+ integrity sha512-CcTgFcCWN78eyRXU7OiKfhIVDEWFFoKdpfj49GIVcWykIQ4deXnaRnnKHElbVYFFgz1TOs8a3bDAq7qsSe864A==
+
+mobx@^6.1.5:
+ version "6.3.2"
+ resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.3.2.tgz#125590961f702a572c139ab69392bea416d2e51b"
+ integrity sha512-xGPM9dIE1qkK9Nrhevp0gzpsmELKU4MFUJRORW/jqxVFIHHWIoQrjDjL8vkwoJYY3C2CeVJqgvl38hgKTalTWg==
+
+moment@^2.10.2:
+ version "2.29.1"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
+ integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+multicast-dns-service-types@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
+ integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
+
+multicast-dns@^6.0.1:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
+ integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
+ dependencies:
+ dns-packet "^1.3.1"
+ thunky "^1.0.2"
+
+nan@^2.12.1:
+ version "2.14.2"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
+ integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
+
+nanoid@^3.1.23:
+ version "3.1.23"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
+ integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+native-url@^0.2.6:
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae"
+ integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==
+ dependencies:
+ querystring "^0.2.0"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+negotiator@0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
+
+neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+next-tick@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
+ integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+no-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
+ integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
+ dependencies:
+ lower-case "^2.0.2"
+ tslib "^2.0.3"
+
+node-fetch-h2@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac"
+ integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==
+ dependencies:
+ http2-client "^1.2.5"
+
+node-fetch@^1.0.1:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
+ integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
+ dependencies:
+ encoding "^0.1.11"
+ is-stream "^1.0.1"
+
+node-forge@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
+ integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
+
+node-int64@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+ integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
+
+node-libs-browser@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
+ integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.2.0"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^3.0.0"
+ https-browserify "^1.0.0"
+ os-browserify "^0.3.0"
+ path-browserify "0.0.1"
+ process "^0.11.10"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.3.3"
+ stream-browserify "^2.0.1"
+ stream-http "^2.7.2"
+ string_decoder "^1.0.0"
+ timers-browserify "^2.0.4"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.11.0"
+ vm-browserify "^1.0.1"
+
+node-modules-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
+ integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
+
+node-notifier@^8.0.0:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5"
+ integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==
+ dependencies:
+ growly "^1.3.0"
+ is-wsl "^2.2.0"
+ semver "^7.3.2"
+ shellwords "^0.1.1"
+ uuid "^8.3.0"
+ which "^2.0.2"
+
+node-readfiles@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d"
+ integrity sha1-271K8SE04uY1wkXvk//Pb2BnOl0=
+ dependencies:
+ es6-promise "^3.2.1"
+
+node-releases@^1.1.61, node-releases@^1.1.71:
+ version "1.1.72"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe"
+ integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
+
+normalize-url@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+ integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=
+ dependencies:
+ object-assign "^4.0.1"
+ prepend-http "^1.0.0"
+ query-string "^4.1.0"
+ sort-keys "^1.0.0"
+
+normalize-url@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
+ integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+npm-run-path@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+nth-check@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
+
+num2fraction@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+ integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
+
+nwsapi@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
+ integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
+
+oas-kit-common@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535"
+ integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==
+ dependencies:
+ fast-safe-stringify "^2.0.7"
+
+oas-linter@^3.1.3:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.1.tgz#1a6d9117d146805b58e56df479861de0293b6e5b"
+ integrity sha512-e5G6bbq3Nrfxm+SDPR5AiZ6n2smVUmhLA1OgI2/Bl8e2ywfWsKw/yuqrwiXXiNHb1wdM/GyPMX6QjCGJODlaaA==
+ dependencies:
+ "@exodus/schemasafe" "^1.0.0-rc.2"
+ should "^13.2.1"
+ yaml "^1.10.0"
+
+oas-resolver@^2.4.3:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.4.tgz#81fa1aaa7e2387ab2dba1045827e9d7b79822326"
+ integrity sha512-1vIj5Wkjmi+kZj5sFamt95LkuXoalmoKUohtaUQoCQZjLfPFaY8uZ7nw6IZaWuE6eLON2b6xrXhxD4hiTdYl0g==
+ dependencies:
+ node-fetch-h2 "^2.3.0"
+ oas-kit-common "^1.0.8"
+ reftools "^1.1.8"
+ yaml "^1.10.0"
+ yargs "^16.1.1"
+
+oas-schema-walker@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22"
+ integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==
+
+oas-validator@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-4.0.8.tgz#4f1a4d6bd9e030ad07db03fd7a7bc3a91aabcc7d"
+ integrity sha512-bIt8erTyclF7bkaySTtQ9sppqyVc+mAlPi7vPzCLVHJsL9nrivQjc/jHLX/o+eGbxHd6a6YBwuY/Vxa6wGsiuw==
+ dependencies:
+ ajv "^5.5.2"
+ better-ajv-errors "^0.6.7"
+ call-me-maybe "^1.0.1"
+ oas-kit-common "^1.0.8"
+ oas-linter "^3.1.3"
+ oas-resolver "^2.4.3"
+ oas-schema-walker "^1.1.5"
+ reftools "^1.1.5"
+ should "^13.2.1"
+ yaml "^1.8.3"
+
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-inspect@^1.10.3, object-inspect@^1.9.0:
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369"
+ integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==
+
+object-is@^1.0.1:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.0, object.assign@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+object.entries@^1.1.0, object.entries@^1.1.3:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd"
+ integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.2"
+
+object.fromentries@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8"
+ integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.2"
+ has "^1.0.3"
+
+object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7"
+ integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.2"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+object.values@^1.1.0, object.values@^1.1.3:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30"
+ integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.2"
+
+obuf@^1.0.0, obuf@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
+ integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+on-headers@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+ono@^4.0.11:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/ono/-/ono-4.0.11.tgz#c7f4209b3e396e8a44ef43b9cedc7f5d791d221d"
+ integrity sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==
+ dependencies:
+ format-util "^1.0.3"
+
+open@^7.0.2:
+ version "7.4.2"
+ resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
+ integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
+ dependencies:
+ is-docker "^2.0.0"
+ is-wsl "^2.1.1"
+
+openapi-sampler@^1.0.0-beta.18:
+ version "1.0.0-beta.18"
+ resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.0.0-beta.18.tgz#9e0845616a669e048860625ea5c10d0f554f1b53"
+ integrity sha512-nG/0kvvSY5FbrU5A+Dbp1xTQN++7pKIh87/atryZlxrzDuok5Y6TCbpxO1jYqpUKLycE4ReKGHCywezngG6xtQ==
+ dependencies:
+ json-pointer "^0.6.0"
+
+opn@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
+ integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
+ dependencies:
+ is-wsl "^1.1.0"
+
+optimize-css-assets-webpack-plugin@5.0.4:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90"
+ integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==
+ dependencies:
+ cssnano "^4.1.10"
+ last-call-webpack-plugin "^3.0.0"
+
+optionator@^0.8.1:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
+ integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.6"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ word-wrap "~1.2.3"
+
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
+original@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
+ integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==
+ dependencies:
+ url-parse "^1.4.3"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+ integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
+
+p-each-series@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a"
+ integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-limit@^2.0.0, p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-map@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
+p-retry@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328"
+ integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==
+ dependencies:
+ retry "^0.12.0"
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pako@~1.0.5:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
+parallel-transform@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
+ dependencies:
+ cyclist "^1.0.1"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+param-case@^3.0.3:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
+ integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
+ dependencies:
+ dot-case "^3.0.4"
+ tslib "^2.0.3"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-asn1@^5.0.0, parse-asn1@^5.1.5:
+ version "5.1.6"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
+ integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
+ dependencies:
+ asn1.js "^5.2.0"
+ browserify-aes "^1.0.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+ safe-buffer "^5.1.1"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+parse5@6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+parseurl@~1.3.2, parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascal-case@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
+ integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
+ dependencies:
+ no-case "^3.0.4"
+ tslib "^2.0.3"
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-is-inside@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+
+path-to-regexp@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
+ integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
+ dependencies:
+ isarray "0.0.1"
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+pbkdf2@^3.0.3:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
+ integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+perfect-scrollbar@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz#821d224ed8ff61990c23f26db63048cdc75b6b83"
+ integrity sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA==
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
+ integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pirates@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
+ integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
+ dependencies:
+ node-modules-regexp "^1.0.0"
+
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+ dependencies:
+ find-up "^2.1.0"
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+pkg-dir@^4.1.0, pkg-dir@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+pkg-up@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5"
+ integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==
+ dependencies:
+ find-up "^3.0.0"
+
+pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f"
+ integrity sha1-yBmscoBZpGHKscOImivjxJoATX8=
+ dependencies:
+ find-up "^2.1.0"
+
+pnp-webpack-plugin@1.6.4:
+ version "1.6.4"
+ resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149"
+ integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==
+ dependencies:
+ ts-pnp "^1.1.6"
+
+polished@^3.6.5:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/polished/-/polished-3.7.0.tgz#ece3368df30d33082bc8a957aa212d3f98119278"
+ integrity sha512-1tnvQ2wsxfR/DyPE2Xu9sRbnLAwXAarCWiZJ8Hfirw59bTigqjbzEWSAmzYizT6ocQW995V8n7RP48jq50DjJA==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ "@scarf/scarf" "^1.1.0"
+
+popper.js@1.16.1-lts:
+ version "1.16.1-lts"
+ resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1-lts.tgz#cf6847b807da3799d80ee3d6d2f90df8a3f50b05"
+ integrity sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==
+
+portfinder@^1.0.26:
+ version "1.0.28"
+ resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
+ integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
+ dependencies:
+ async "^2.6.2"
+ debug "^3.1.1"
+ mkdirp "^0.5.5"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+postcss-attribute-case-insensitive@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880"
+ integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==
+ dependencies:
+ postcss "^7.0.2"
+ postcss-selector-parser "^6.0.2"
+
+postcss-browser-comments@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9"
+ integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==
+ dependencies:
+ postcss "^7"
+
+postcss-calc@^7.0.1:
+ version "7.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e"
+ integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==
+ dependencies:
+ postcss "^7.0.27"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.0.2"
+
+postcss-color-functional-notation@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0"
+ integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==
+ dependencies:
+ postcss "^7.0.2"
+ postcss-values-parser "^2.0.0"
+
+postcss-color-gray@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547"
+ integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==
+ dependencies:
+ "@csstools/convert-colors" "^1.4.0"
+ postcss "^7.0.5"
+ postcss-values-parser "^2.0.0"
+
+postcss-color-hex-alpha@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388"
+ integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==
+ dependencies:
+ postcss "^7.0.14"
+ postcss-values-parser "^2.0.1"
+
+postcss-color-mod-function@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d"
+ integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==
+ dependencies:
+ "@csstools/convert-colors" "^1.4.0"
+ postcss "^7.0.2"
+ postcss-values-parser "^2.0.0"
+
+postcss-color-rebeccapurple@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77"
+ integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==
+ dependencies:
+ postcss "^7.0.2"
+ postcss-values-parser "^2.0.0"
+
+postcss-colormin@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
+ integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
+ dependencies:
+ browserslist "^4.0.0"
+ color "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-convert-values@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
+ integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-custom-media@^7.0.8:
+ version "7.0.8"
+ resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c"
+ integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==
+ dependencies:
+ postcss "^7.0.14"
+
+postcss-custom-properties@^8.0.11:
+ version "8.0.11"
+ resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97"
+ integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==
+ dependencies:
+ postcss "^7.0.17"
+ postcss-values-parser "^2.0.1"
+
+postcss-custom-selectors@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba"
+ integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==
+ dependencies:
+ postcss "^7.0.2"
+ postcss-selector-parser "^5.0.0-rc.3"
+
+postcss-dir-pseudo-class@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2"
+ integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==
+ dependencies:
+ postcss "^7.0.2"
+ postcss-selector-parser "^5.0.0-rc.3"
+
+postcss-discard-comments@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
+ integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-duplicates@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
+ integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-empty@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
+ integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-overridden@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
+ integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-double-position-gradients@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e"
+ integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==
+ dependencies:
+ postcss "^7.0.5"
+ postcss-values-parser "^2.0.0"
+
+postcss-env-function@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7"
+ integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==
+ dependencies:
+ postcss "^7.0.2"
+ postcss-values-parser "^2.0.0"
+
+postcss-flexbugs-fixes@4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690"
+ integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==
+ dependencies:
+ postcss "^7.0.26"
+
+postcss-focus-visible@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e"
+ integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-focus-within@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680"
+ integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-font-variant@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641"
+ integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-gap-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715"
+ integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-image-set-function@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288"
+ integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==
+ dependencies:
+ postcss "^7.0.2"
+ postcss-values-parser "^2.0.0"
+
+postcss-initial@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53"
+ integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-lab-function@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e"
+ integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==
+ dependencies:
+ "@csstools/convert-colors" "^1.4.0"
+ postcss "^7.0.2"
+ postcss-values-parser "^2.0.0"
+
+postcss-load-config@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a"
+ integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ import-cwd "^2.0.0"
+
+postcss-loader@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d"
+ integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==
+ dependencies:
+ loader-utils "^1.1.0"
+ postcss "^7.0.0"
+ postcss-load-config "^2.0.0"
+ schema-utils "^1.0.0"
+
+postcss-logical@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5"
+ integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-media-minmax@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5"
+ integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-merge-longhand@^4.0.11:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
+ integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
+ dependencies:
+ css-color-names "0.0.4"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ stylehacks "^4.0.0"
+
+postcss-merge-rules@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
+ integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ cssnano-util-same-parent "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+ vendors "^1.0.0"
+
+postcss-minify-font-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
+ integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-gradients@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
+ integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ is-color-stop "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-params@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
+ integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ browserslist "^4.0.0"
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
+ integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+postcss-modules-extract-imports@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
+ integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
+ dependencies:
+ postcss "^7.0.5"
+
+postcss-modules-local-by-default@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0"
+ integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==
+ dependencies:
+ icss-utils "^4.1.1"
+ postcss "^7.0.32"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.1.0"
+
+postcss-modules-scope@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee"
+ integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==
+ dependencies:
+ postcss "^7.0.6"
+ postcss-selector-parser "^6.0.0"
+
+postcss-modules-values@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10"
+ integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
+ dependencies:
+ icss-utils "^4.0.0"
+ postcss "^7.0.6"
+
+postcss-nesting@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052"
+ integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-normalize-charset@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
+ integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-normalize-display-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
+ integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-positions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
+ integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-repeat-style@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
+ integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-string@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
+ integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
+ dependencies:
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-timing-functions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
+ integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-unicode@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
+ integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-url@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
+ integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-whitespace@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
+ integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize@8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776"
+ integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==
+ dependencies:
+ "@csstools/normalize.css" "^10.1.0"
+ browserslist "^4.6.2"
+ postcss "^7.0.17"
+ postcss-browser-comments "^3.0.0"
+ sanitize.css "^10.0.0"
+
+postcss-ordered-values@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
+ integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-overflow-shorthand@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30"
+ integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-page-break@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf"
+ integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-place@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62"
+ integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==
+ dependencies:
+ postcss "^7.0.2"
+ postcss-values-parser "^2.0.0"
+
+postcss-preset-env@6.7.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5"
+ integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==
+ dependencies:
+ autoprefixer "^9.6.1"
+ browserslist "^4.6.4"
+ caniuse-lite "^1.0.30000981"
+ css-blank-pseudo "^0.1.4"
+ css-has-pseudo "^0.10.0"
+ css-prefers-color-scheme "^3.1.1"
+ cssdb "^4.4.0"
+ postcss "^7.0.17"
+ postcss-attribute-case-insensitive "^4.0.1"
+ postcss-color-functional-notation "^2.0.1"
+ postcss-color-gray "^5.0.0"
+ postcss-color-hex-alpha "^5.0.3"
+ postcss-color-mod-function "^3.0.3"
+ postcss-color-rebeccapurple "^4.0.1"
+ postcss-custom-media "^7.0.8"
+ postcss-custom-properties "^8.0.11"
+ postcss-custom-selectors "^5.1.2"
+ postcss-dir-pseudo-class "^5.0.0"
+ postcss-double-position-gradients "^1.0.0"
+ postcss-env-function "^2.0.2"
+ postcss-focus-visible "^4.0.0"
+ postcss-focus-within "^3.0.0"
+ postcss-font-variant "^4.0.0"
+ postcss-gap-properties "^2.0.0"
+ postcss-image-set-function "^3.0.1"
+ postcss-initial "^3.0.0"
+ postcss-lab-function "^2.0.1"
+ postcss-logical "^3.0.0"
+ postcss-media-minmax "^4.0.0"
+ postcss-nesting "^7.0.0"
+ postcss-overflow-shorthand "^2.0.0"
+ postcss-page-break "^2.0.0"
+ postcss-place "^4.0.1"
+ postcss-pseudo-class-any-link "^6.0.0"
+ postcss-replace-overflow-wrap "^3.0.0"
+ postcss-selector-matches "^4.0.0"
+ postcss-selector-not "^4.0.0"
+
+postcss-pseudo-class-any-link@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1"
+ integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==
+ dependencies:
+ postcss "^7.0.2"
+ postcss-selector-parser "^5.0.0-rc.3"
+
+postcss-reduce-initial@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
+ integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+
+postcss-reduce-transforms@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
+ integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-replace-overflow-wrap@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c"
+ integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-safe-parser@5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d"
+ integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ==
+ dependencies:
+ postcss "^8.1.0"
+
+postcss-selector-matches@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff"
+ integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==
+ dependencies:
+ balanced-match "^1.0.0"
+ postcss "^7.0.2"
+
+postcss-selector-not@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf"
+ integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==
+ dependencies:
+ balanced-match "^1.0.0"
+ postcss "^7.0.2"
+
+postcss-selector-parser@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270"
+ integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
+ dependencies:
+ dot-prop "^5.2.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
+ integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
+ dependencies:
+ cssesc "^2.0.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
+ version "6.0.6"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea"
+ integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-svgo@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e"
+ integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ svgo "^1.0.0"
+
+postcss-unique-selectors@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
+ integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ postcss "^7.0.0"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.0:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
+ integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
+
+postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
+ integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
+
+postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f"
+ integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==
+ dependencies:
+ flatten "^1.0.2"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss@7.0.21:
+ version "7.0.21"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17"
+ integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==
+ dependencies:
+ chalk "^2.4.2"
+ source-map "^0.6.1"
+ supports-color "^6.1.0"
+
+postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
+ version "7.0.35"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
+ integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
+ dependencies:
+ chalk "^2.4.2"
+ source-map "^0.6.1"
+ supports-color "^6.1.0"
+
+postcss@^8.1.0:
+ version "8.3.0"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f"
+ integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ==
+ dependencies:
+ colorette "^1.2.2"
+ nanoid "^3.1.23"
+ source-map-js "^0.6.2"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+ integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+prepend-http@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+
+pretty-bytes@^5.3.0:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
+ integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
+
+pretty-error@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6"
+ integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==
+ dependencies:
+ lodash "^4.17.20"
+ renderkid "^2.0.4"
+
+pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"
+ integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ ansi-regex "^5.0.0"
+ ansi-styles "^4.0.0"
+ react-is "^17.0.1"
+
+prismjs@^1.22.0:
+ version "1.23.0"
+ resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.23.0.tgz#d3b3967f7d72440690497652a9d40ff046067f33"
+ integrity sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA==
+ optionalDependencies:
+ clipboard "^2.0.0"
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+promise@^7.1.1:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
+ integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
+ dependencies:
+ asap "~2.0.3"
+
+promise@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e"
+ integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==
+ dependencies:
+ asap "~2.0.6"
+
+prompts@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7"
+ integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.5"
+
+prompts@^2.0.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61"
+ integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.5"
+
+prop-types@^15.5.0, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2:
+ version "15.7.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
+ integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.8.1"
+
+proxy-addr@~2.0.5:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
+ integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
+ dependencies:
+ forwarded "~0.1.2"
+ ipaddr.js "1.9.1"
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
+psl@^1.1.33:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+
+public-encrypt@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+ safe-buffer "^5.1.2"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+q@^1.1.2:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
+qs@6.7.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
+ integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
+
+query-string@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+ integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s=
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+querystring@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd"
+ integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==
+
+querystringify@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
+ integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+raf@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
+ integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
+ dependencies:
+ performance-now "^2.1.0"
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@^1.2.1, range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
+ integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
+ dependencies:
+ bytes "3.1.0"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+react-app-polyfill@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf"
+ integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA==
+ dependencies:
+ core-js "^3.6.5"
+ object-assign "^4.1.1"
+ promise "^8.1.0"
+ raf "^3.4.1"
+ regenerator-runtime "^0.13.7"
+ whatwg-fetch "^3.4.1"
+
+react-app-rewired@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.1.8.tgz#e192f93b98daf96889418d33d3e86cf863812b56"
+ integrity sha512-wjXPdKPLscA7mn0I1de1NHrbfWdXz4S1ladaGgHVKdn1hTgKK5N6EdGIJM0KrS6bKnJBj7WuqJroDTsPKKr66Q==
+ dependencies:
+ semver "^5.6.0"
+
+react-chartjs-2@^2.11.1:
+ version "2.11.1"
+ resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-2.11.1.tgz#a78d0df05fc8bc8ffcd4c4ab5b89a25dd2ca3278"
+ integrity sha512-G7cNq/n2Bkh/v4vcI+GKx7Q1xwZexKYhOSj2HmrFXlvNeaURWXun6KlOUpEQwi1cv9Tgs4H3kGywDWMrX2kxfA==
+ dependencies:
+ lodash "^4.17.19"
+ prop-types "^15.7.2"
+
+react-copy-to-clipboard@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.3.tgz#2a0623b1115a1d8c84144e9434d3342b5af41ab4"
+ integrity sha512-9S3j+m+UxDZOM0Qb8mhnT/rMR0NGSrj9A/073yz2DSxPMYhmYFBMYIdI2X4o8AjOjyFsSNxDRnCX6s/gRxpriw==
+ dependencies:
+ copy-to-clipboard "^3"
+ prop-types "^15.5.8"
+
+react-dev-utils@^11.0.3:
+ version "11.0.4"
+ resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a"
+ integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==
+ dependencies:
+ "@babel/code-frame" "7.10.4"
+ address "1.1.2"
+ browserslist "4.14.2"
+ chalk "2.4.2"
+ cross-spawn "7.0.3"
+ detect-port-alt "1.1.6"
+ escape-string-regexp "2.0.0"
+ filesize "6.1.0"
+ find-up "4.1.0"
+ fork-ts-checker-webpack-plugin "4.1.6"
+ global-modules "2.0.0"
+ globby "11.0.1"
+ gzip-size "5.1.1"
+ immer "8.0.1"
+ is-root "2.1.0"
+ loader-utils "2.0.0"
+ open "^7.0.2"
+ pkg-up "3.1.0"
+ prompts "2.4.0"
+ react-error-overlay "^6.0.9"
+ recursive-readdir "2.2.2"
+ shell-quote "1.7.2"
+ strip-ansi "6.0.0"
+ text-table "0.2.0"
+
+react-dom@^17.0.1:
+ version "17.0.1"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6"
+ integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ scheduler "^0.20.1"
+
+react-error-overlay@^6.0.9:
+ version "6.0.9"
+ resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
+ integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==
+
+react-full-page@^0.1.11:
+ version "0.1.11"
+ resolved "https://registry.yarnpkg.com/react-full-page/-/react-full-page-0.1.11.tgz#1b74fc4d746fb9de4b1a2b026084a82a1858dbd2"
+ integrity sha512-8pSXt2Ik799DWtXqS4746T+OnHEFadOF5gNQ10as6CIwgpGwaMAV0NJ7ItXUfEYAX1E/ky0A/mjeWfvjjldfHQ==
+ dependencies:
+ core-js "^3.6.5"
+
+react-google-maps@^9.4.5:
+ version "9.4.5"
+ resolved "https://registry.yarnpkg.com/react-google-maps/-/react-google-maps-9.4.5.tgz#920c199bdc925e0ce93880edffb09428d263aafa"
+ integrity sha512-8z5nX9DxIcBCXuEiurmRT1VXVwnzx0C6+3Es6lxB2/OyY2SLax2/LcDu6Aldxnl3HegefTL7NJzGeaKAJ61pOA==
+ dependencies:
+ babel-runtime "^6.11.6"
+ can-use-dom "^0.1.0"
+ google-maps-infobox "^2.0.0"
+ invariant "^2.2.1"
+ lodash "^4.16.2"
+ marker-clusterer-plus "^2.1.4"
+ markerwithlabel "^2.0.1"
+ prop-types "^15.5.8"
+ recompose "^0.26.0"
+ scriptjs "^2.5.8"
+ warning "^3.0.0"
+
+react-if@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/react-if/-/react-if-4.0.1.tgz#fd60599f585a55d417d94f9a576047869994fcae"
+ integrity sha512-TyfDGdBrIAHntLM5YkRbszeqcyzucB3m2ddF46XH10wTZ8SE2ZjNPD8qNphTJ+7j36SZ4qMvqmlMntcsczLAXQ==
+
+react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+"react-is@^16.8.0 || ^17.0.0":
+ version "17.0.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339"
+ integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==
+
+react-is@^17.0.0, react-is@^17.0.1:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
+ integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+
+react-refresh@^0.8.3:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"
+ integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==
+
+react-router-dom@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662"
+ integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ history "^4.9.0"
+ loose-envify "^1.3.1"
+ prop-types "^15.6.2"
+ react-router "5.2.0"
+ tiny-invariant "^1.0.2"
+ tiny-warning "^1.0.0"
+
+react-router@5.2.0, react-router@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293"
+ integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ history "^4.9.0"
+ hoist-non-react-statics "^3.1.0"
+ loose-envify "^1.3.1"
+ mini-create-react-context "^0.4.0"
+ path-to-regexp "^1.7.0"
+ prop-types "^15.6.2"
+ react-is "^16.6.0"
+ tiny-invariant "^1.0.2"
+ tiny-warning "^1.0.0"
+
+react-scripts@4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345"
+ integrity sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A==
+ dependencies:
+ "@babel/core" "7.12.3"
+ "@pmmmwh/react-refresh-webpack-plugin" "0.4.3"
+ "@svgr/webpack" "5.5.0"
+ "@typescript-eslint/eslint-plugin" "^4.5.0"
+ "@typescript-eslint/parser" "^4.5.0"
+ babel-eslint "^10.1.0"
+ babel-jest "^26.6.0"
+ babel-loader "8.1.0"
+ babel-plugin-named-asset-import "^0.3.7"
+ babel-preset-react-app "^10.0.0"
+ bfj "^7.0.2"
+ camelcase "^6.1.0"
+ case-sensitive-paths-webpack-plugin "2.3.0"
+ css-loader "4.3.0"
+ dotenv "8.2.0"
+ dotenv-expand "5.1.0"
+ eslint "^7.11.0"
+ eslint-config-react-app "^6.0.0"
+ eslint-plugin-flowtype "^5.2.0"
+ eslint-plugin-import "^2.22.1"
+ eslint-plugin-jest "^24.1.0"
+ eslint-plugin-jsx-a11y "^6.3.1"
+ eslint-plugin-react "^7.21.5"
+ eslint-plugin-react-hooks "^4.2.0"
+ eslint-plugin-testing-library "^3.9.2"
+ eslint-webpack-plugin "^2.5.2"
+ file-loader "6.1.1"
+ fs-extra "^9.0.1"
+ html-webpack-plugin "4.5.0"
+ identity-obj-proxy "3.0.0"
+ jest "26.6.0"
+ jest-circus "26.6.0"
+ jest-resolve "26.6.0"
+ jest-watch-typeahead "0.6.1"
+ mini-css-extract-plugin "0.11.3"
+ optimize-css-assets-webpack-plugin "5.0.4"
+ pnp-webpack-plugin "1.6.4"
+ postcss-flexbugs-fixes "4.2.1"
+ postcss-loader "3.0.0"
+ postcss-normalize "8.0.1"
+ postcss-preset-env "6.7.0"
+ postcss-safe-parser "5.0.2"
+ prompts "2.4.0"
+ react-app-polyfill "^2.0.0"
+ react-dev-utils "^11.0.3"
+ react-refresh "^0.8.3"
+ resolve "1.18.1"
+ resolve-url-loader "^3.1.2"
+ sass-loader "^10.0.5"
+ semver "7.3.2"
+ style-loader "1.3.0"
+ terser-webpack-plugin "4.2.3"
+ ts-pnp "1.2.0"
+ url-loader "4.1.1"
+ webpack "4.44.2"
+ webpack-dev-server "3.11.1"
+ webpack-manifest-plugin "2.2.0"
+ workbox-webpack-plugin "5.1.4"
+ optionalDependencies:
+ fsevents "^2.1.3"
+
+react-tabs@^3.1.1:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-3.2.0.tgz#0fd8d595ef26d3684da876c27a3cc90392dffb40"
+ integrity sha512-q7oNapNRoYTQq8gDhApXwdBheuuN5qQ4YvUaQUAkb6OSSttJulBAvxJ0FS6W5uojvMxbbIZKu1f2I+GXISoLjw==
+ dependencies:
+ clsx "^1.1.0"
+ prop-types "^15.5.0"
+
+react-transition-group@^4.0.0:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470"
+ integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ dom-helpers "^5.0.1"
+ loose-envify "^1.4.0"
+ prop-types "^15.6.2"
+
+react-transition-group@^4.4.0:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9"
+ integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ dom-helpers "^5.0.1"
+ loose-envify "^1.4.0"
+ prop-types "^15.6.2"
+
+react@^17.0.1:
+ version "17.0.1"
+ resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127"
+ integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
+read-pkg-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
+ integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^3.0.0"
+
+read-pkg-up@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
+ integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
+ dependencies:
+ find-up "^4.1.0"
+ read-pkg "^5.2.0"
+ type-fest "^0.8.1"
+
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+ integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
+read-pkg@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
+ integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
+ dependencies:
+ "@types/normalize-package-data" "^2.4.0"
+ normalize-package-data "^2.5.0"
+ parse-json "^5.0.0"
+ type-fest "^0.6.0"
+
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+readdirp@~3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
+ integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
+ dependencies:
+ picomatch "^2.2.1"
+
+recompose@^0.26.0:
+ version "0.26.0"
+ resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.26.0.tgz#9babff039cb72ba5bd17366d55d7232fbdfb2d30"
+ integrity sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==
+ dependencies:
+ change-emitter "^0.1.2"
+ fbjs "^0.8.1"
+ hoist-non-react-statics "^2.3.1"
+ symbol-observable "^1.0.4"
+
+recursive-readdir@2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f"
+ integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==
+ dependencies:
+ minimatch "3.0.4"
+
+redent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
+ integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
+ dependencies:
+ indent-string "^4.0.0"
+ strip-indent "^3.0.0"
+
+redoc@^2.0.0-rc.48:
+ version "2.0.0-rc.48"
+ resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.0.0-rc.48.tgz#5303cff67af5cba8a2b48dc1347a9854d45be835"
+ integrity sha512-shArJWhNG2gQ0XKxW8WcfG8peNOtxbZ86CqxgrR9P7MnE5ESAo559CH/PSlezePeVLpcC0C9tcimOfSN5MaAvA==
+ dependencies:
+ "@redocly/react-dropdown-aria" "^2.0.11"
+ "@types/node" "^13.11.1"
+ classnames "^2.2.6"
+ decko "^1.2.0"
+ dompurify "^2.0.12"
+ eventemitter3 "^4.0.4"
+ json-pointer "^0.6.0"
+ json-schema-ref-parser "^6.1.0"
+ lunr "2.3.8"
+ mark.js "^8.11.1"
+ marked "^0.7.0"
+ memoize-one "~5.1.1"
+ mobx-react "^7.0.5"
+ openapi-sampler "^1.0.0-beta.18"
+ perfect-scrollbar "^1.4.0"
+ polished "^3.6.5"
+ prismjs "^1.22.0"
+ prop-types "^15.7.2"
+ react-tabs "^3.1.1"
+ slugify "^1.4.4"
+ stickyfill "^1.1.1"
+ swagger2openapi "^6.2.1"
+ tslib "^2.0.0"
+ url-template "^2.0.8"
+
+reftools@^1.1.5, reftools@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.8.tgz#cc08fd67eb913d779fd330657d010cc080c7d643"
+ integrity sha512-Yvz9NH8uFHzD/AXX82Li1GdAP6FzDBxEZw+njerNBBQv/XHihqsWAjNfXtaq4QD2l4TEZVnp4UbktdYSegAM3g==
+
+regenerate-unicode-properties@^8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
+ integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
+ dependencies:
+ regenerate "^1.4.0"
+
+regenerate@^1.4.0:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
+
+regenerator-runtime@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+ integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+
+regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
+ integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
+
+regenerator-transform@^0.14.2:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regex-parser@^2.2.11:
+ version "2.2.11"
+ resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58"
+ integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==
+
+regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
+ integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+regexpp@^3.0.0, regexpp@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
+ integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+
+regexpu-core@^4.7.1:
+ version "4.7.1"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
+ integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
+ dependencies:
+ regenerate "^1.4.0"
+ regenerate-unicode-properties "^8.2.0"
+ regjsgen "^0.5.1"
+ regjsparser "^0.6.4"
+ unicode-match-property-ecmascript "^1.0.4"
+ unicode-match-property-value-ecmascript "^1.2.0"
+
+regjsgen@^0.5.1:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
+
+regjsparser@^0.6.4:
+ version "0.6.9"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6"
+ integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==
+ dependencies:
+ jsesc "~0.5.0"
+
+relateurl@^0.2.7:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+ integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+renderkid@^2.0.4:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5"
+ integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==
+ dependencies:
+ css-select "^2.0.2"
+ dom-converter "^0.2"
+ htmlparser2 "^3.10.1"
+ lodash "^4.17.20"
+ strip-ansi "^3.0.0"
+
+repeat-element@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9"
+ integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
+
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
+
+reselect@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7"
+ integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+ integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-cwd@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
+ integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
+ dependencies:
+ resolve-from "^5.0.0"
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-from@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
+resolve-pathname@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
+ integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
+
+resolve-url-loader@^3.1.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.3.tgz#49ec68340f67d8d2ab6b401948d5def3ab2d0367"
+ integrity sha512-WbDSNFiKPPLem1ln+EVTE+bFUBdTTytfQZWbmghroaFNFaAVmGq0Saqw6F/306CwgPXsGwXVxbODE+3xAo/YbA==
+ dependencies:
+ adjust-sourcemap-loader "3.0.0"
+ camelcase "5.3.1"
+ compose-function "3.0.3"
+ convert-source-map "1.7.0"
+ es6-iterator "2.0.3"
+ loader-utils "1.2.3"
+ postcss "7.0.21"
+ rework "1.0.1"
+ rework-visit "1.0.0"
+ source-map "0.6.1"
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@1.18.1:
+ version "1.18.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130"
+ integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==
+ dependencies:
+ is-core-module "^2.0.0"
+ path-parse "^1.0.6"
+
+resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.8.1:
+ version "1.20.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+ dependencies:
+ is-core-module "^2.2.0"
+ path-parse "^1.0.6"
+
+resolve@^2.0.0-next.3:
+ version "2.0.0-next.3"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46"
+ integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==
+ dependencies:
+ is-core-module "^2.2.0"
+ path-parse "^1.0.6"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+retry@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+ integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rework-visit@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a"
+ integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo=
+
+rework@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7"
+ integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=
+ dependencies:
+ convert-source-map "^0.3.3"
+ css "^2.0.0"
+
+rgb-regex@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
+ integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
+
+rgba-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
+ integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
+
+rifm@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/rifm/-/rifm-0.7.0.tgz#debe951a9c83549ca6b33e5919f716044c2230be"
+ integrity sha512-DSOJTWHD67860I5ojetXdEQRIBvF6YcpNe53j0vn1vp9EUb9N80EiZTxgP+FkDKorWC8PZw052kTF4C1GOivCQ==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+
+rimraf@^2.5.4, rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^3.0.0, rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+rollup-plugin-babel@^4.3.3:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb"
+ integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ rollup-pluginutils "^2.8.1"
+
+rollup-plugin-terser@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413"
+ integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ jest-worker "^24.9.0"
+ rollup-pluginutils "^2.8.2"
+ serialize-javascript "^4.0.0"
+ terser "^4.6.2"
+
+rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2:
+ version "2.8.2"
+ resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
+ integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
+ dependencies:
+ estree-walker "^0.6.1"
+
+rollup@^1.31.1:
+ version "1.32.1"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4"
+ integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==
+ dependencies:
+ "@types/estree" "*"
+ "@types/node" "*"
+ acorn "^7.1.0"
+
+rsvp@^4.8.4:
+ version "4.8.5"
+ resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
+ integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
+safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sane@^4.0.3:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded"
+ integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==
+ dependencies:
+ "@cnakazawa/watch" "^1.0.3"
+ anymatch "^2.0.0"
+ capture-exit "^2.0.0"
+ exec-sh "^0.3.2"
+ execa "^1.0.0"
+ fb-watchman "^2.0.0"
+ micromatch "^3.1.4"
+ minimist "^1.1.1"
+ walker "~1.0.5"
+
+sanitize.css@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a"
+ integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==
+
+sass-loader@^10.0.5:
+ version "10.2.0"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.0.tgz#3d64c1590f911013b3fa48a0b22a83d5e1494716"
+ integrity sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw==
+ dependencies:
+ klona "^2.0.4"
+ loader-utils "^2.0.0"
+ neo-async "^2.6.2"
+ schema-utils "^3.0.0"
+ semver "^7.3.2"
+
+satellite.js@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/satellite.js/-/satellite.js-4.1.3.tgz#a47382d5319efe672bf379d716a67110ca2990c4"
+ integrity sha512-l65XHxmT4n31DSGQy/jnu/sLfKn42g862h1p9NyalOEYCpEsplFAqUIT4+euK0AByizZML2Zkjbl0HWI79KC0A==
+
+sax@~1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+saxes@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
+ integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
+ dependencies:
+ xmlchars "^2.2.0"
+
+scheduler@^0.20.1:
+ version "0.20.1"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c"
+ integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
+schema-utils@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-errors "^1.0.0"
+ ajv-keywords "^3.1.0"
+
+schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
+ integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
+ dependencies:
+ "@types/json-schema" "^7.0.5"
+ ajv "^6.12.4"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef"
+ integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==
+ dependencies:
+ "@types/json-schema" "^7.0.6"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+scriptjs@^2.5.8:
+ version "2.5.9"
+ resolved "https://registry.yarnpkg.com/scriptjs/-/scriptjs-2.5.9.tgz#343915cd2ec2ed9bfdde2b9875cd28f59394b35f"
+ integrity sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==
+
+select-hose@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
+ integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
+
+select@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
+ integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=
+
+selfsigned@^1.10.8:
+ version "1.10.11"
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9"
+ integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==
+ dependencies:
+ node-forge "^0.10.0"
+
+"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+
+semver@7.3.2:
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
+ integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
+
+semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^7.2.1, semver@^7.3.2:
+ version "7.3.5"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
+ dependencies:
+ lru-cache "^6.0.0"
+
+send@0.17.1:
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+ integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "~1.7.2"
+ mime "1.6.0"
+ ms "2.1.1"
+ on-finished "~2.3.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
+
+serialize-javascript@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
+ integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
+ dependencies:
+ randombytes "^2.1.0"
+
+serialize-javascript@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4"
+ integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==
+ dependencies:
+ randombytes "^2.1.0"
+
+serve-index@^1.9.1:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
+ integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
+ dependencies:
+ accepts "~1.3.4"
+ batch "0.6.1"
+ debug "2.6.9"
+ escape-html "~1.0.3"
+ http-errors "~1.6.2"
+ mime-types "~2.1.17"
+ parseurl "~1.3.2"
+
+serve-static@1.14.1:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+ integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.17.1"
+
+set-blocking@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4, setimmediate@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+setprototypeof@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+ integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+
+setprototypeof@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+ integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shallowequal@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
+ integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+shell-quote@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
+ integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
+
+shellwords@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
+ integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
+
+should-equal@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3"
+ integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==
+ dependencies:
+ should-type "^1.4.0"
+
+should-format@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1"
+ integrity sha1-m/yPdPo5IFxT04w01xcwPidxJPE=
+ dependencies:
+ should-type "^1.3.0"
+ should-type-adaptors "^1.0.1"
+
+should-type-adaptors@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a"
+ integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==
+ dependencies:
+ should-type "^1.3.0"
+ should-util "^1.0.0"
+
+should-type@^1.3.0, should-type@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3"
+ integrity sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=
+
+should-util@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28"
+ integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==
+
+should@^13.2.1:
+ version "13.2.3"
+ resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10"
+ integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==
+ dependencies:
+ should-equal "^2.0.0"
+ should-format "^3.0.3"
+ should-type "^1.4.0"
+ should-type-adaptors "^1.0.1"
+ should-util "^1.0.0"
+
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+ integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
+
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
+ dependencies:
+ is-arrayish "^0.3.1"
+
+sisteransi@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
+ integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+ integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+slugify@^1.4.4:
+ version "1.4.6"
+ resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.6.tgz#ef288d920a47fb01c2be56b3487b6722f5e34ace"
+ integrity sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ==
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+sockjs-client@^1.5.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6"
+ integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==
+ dependencies:
+ debug "^3.2.6"
+ eventsource "^1.0.7"
+ faye-websocket "^0.11.3"
+ inherits "^2.0.4"
+ json3 "^3.3.3"
+ url-parse "^1.5.1"
+
+sockjs@^0.3.21:
+ version "0.3.21"
+ resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417"
+ integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==
+ dependencies:
+ faye-websocket "^0.11.3"
+ uuid "^3.4.0"
+ websocket-driver "^0.7.4"
+
+sort-keys@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+ integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
+ dependencies:
+ is-plain-obj "^1.0.0"
+
+source-list-map@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-js@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
+ integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
+
+source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
+ integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-resolve@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
+ integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+
+source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19:
+ version "0.5.19"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+ integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
+ integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
+
+source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.5.0, source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.7.3, source-map@~0.7.2:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
+sourcemap-codec@^1.4.4:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+spdx-correct@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f"
+ integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==
+
+spdy-transport@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
+ integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
+ dependencies:
+ debug "^4.1.0"
+ detect-node "^2.0.4"
+ hpack.js "^2.1.6"
+ obuf "^1.1.2"
+ readable-stream "^3.0.6"
+ wbuf "^1.7.3"
+
+spdy@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
+ integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
+ dependencies:
+ debug "^4.1.0"
+ handle-thing "^2.0.0"
+ http-deceiver "^1.2.7"
+ select-hose "^2.0.0"
+ spdy-transport "^3.0.0"
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+ssri@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5"
+ integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+ssri@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
+ integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
+ dependencies:
+ minipass "^3.1.1"
+
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+stack-utils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277"
+ integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==
+ dependencies:
+ escape-string-regexp "^2.0.0"
+
+stackframe@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
+ integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+stickyfill@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stickyfill/-/stickyfill-1.1.1.tgz#39413fee9d025c74a7e59ceecb23784cc0f17f02"
+ integrity sha1-OUE/7p0CXHSn5ZzuyyN4TMDxfwI=
+
+stream-browserify@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
+ integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-http@^2.7.2:
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+ integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
+
+string-length@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
+ integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==
+ dependencies:
+ char-regex "^1.0.2"
+ strip-ansi "^6.0.0"
+
+string-natural-compare@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
+ integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
+
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
+ integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
+
+string.prototype.matchall@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da"
+ integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.2"
+ get-intrinsic "^1.1.1"
+ has-symbols "^1.0.2"
+ internal-slot "^1.0.3"
+ regexp.prototype.flags "^1.3.1"
+ side-channel "^1.0.4"
+
+string.prototype.trimend@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
+ integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+string.prototype.trimstart@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
+ integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+string_decoder@^1.0.0, string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+strip-ansi@6.0.0, strip-ansi@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ dependencies:
+ ansi-regex "^5.0.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-bom@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
+ integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
+
+strip-comments@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d"
+ integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==
+ dependencies:
+ babel-extract-comments "^1.0.0"
+ babel-plugin-transform-object-rest-spread "^6.26.0"
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-indent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
+ integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
+ dependencies:
+ min-indent "^1.0.0"
+
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+style-loader@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e"
+ integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^2.7.0"
+
+styled-components@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.0.tgz#e47c3d3e9ddfff539f118a3dd0fd4f8f4fb25727"
+ integrity sha512-bPJKwZCHjJPf/hwTJl6TbkSZg/3evha+XPEizrZUGb535jLImwDUdjTNxXqjjaASt2M4qO4AVfoHJNe3XB/tpQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/traverse" "^7.4.5"
+ "@emotion/is-prop-valid" "^0.8.8"
+ "@emotion/stylis" "^0.8.4"
+ "@emotion/unitless" "^0.7.4"
+ babel-plugin-styled-components ">= 1.12.0"
+ css-to-react-native "^3.0.0"
+ hoist-non-react-statics "^3.0.0"
+ shallowequal "^1.1.0"
+ supports-color "^5.5.0"
+
+stylehacks@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
+ integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+supports-color@^5.3.0, supports-color@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.0.0, supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-hyperlinks@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb"
+ integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==
+ dependencies:
+ has-flag "^4.0.0"
+ supports-color "^7.0.0"
+
+svg-parser@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
+ integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
+
+svgo@^1.0.0, svgo@^1.2.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
+ integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
+ dependencies:
+ chalk "^2.4.1"
+ coa "^2.0.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "^0.1.1"
+ css-tree "1.0.0-alpha.37"
+ csso "^4.0.2"
+ js-yaml "^3.13.1"
+ mkdirp "~0.5.1"
+ object.values "^1.1.0"
+ sax "~1.2.4"
+ stable "^0.1.8"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
+
+swagger2openapi@^6.2.1:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-6.2.3.tgz#4a8059f89d851aee4c9ab178f9b7190debd904e2"
+ integrity sha512-cUUktzLpK69UwpMbcTzjMw2ns9RZChfxh56AHv6+hTx3StPOX2foZjPgds3HlJcINbxosYYBn/D3cG8nwcCWwQ==
+ dependencies:
+ better-ajv-errors "^0.6.1"
+ call-me-maybe "^1.0.1"
+ node-fetch-h2 "^2.3.0"
+ node-readfiles "^0.2.0"
+ oas-kit-common "^1.0.8"
+ oas-resolver "^2.4.3"
+ oas-schema-walker "^1.1.5"
+ oas-validator "^4.0.8"
+ reftools "^1.1.5"
+ yaml "^1.8.3"
+ yargs "^15.3.1"
+
+symbol-observable@1.2.0, symbol-observable@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+ integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
+
+symbol-tree@^3.2.4:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
+table@^6.0.9:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
+ integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==
+ dependencies:
+ ajv "^8.0.1"
+ lodash.clonedeep "^4.5.0"
+ lodash.truncate "^4.4.2"
+ slice-ansi "^4.0.0"
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+
+tapable@^1.0.0, tapable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+tar@^6.0.2:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
+ integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==
+ dependencies:
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ minipass "^3.0.0"
+ minizlib "^2.1.1"
+ mkdirp "^1.0.3"
+ yallist "^4.0.0"
+
+temp-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d"
+ integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=
+
+tempy@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8"
+ integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==
+ dependencies:
+ temp-dir "^1.0.0"
+ type-fest "^0.3.1"
+ unique-string "^1.0.0"
+
+terminal-link@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
+ integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ supports-hyperlinks "^2.0.0"
+
+terser-webpack-plugin@4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a"
+ integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==
+ dependencies:
+ cacache "^15.0.5"
+ find-cache-dir "^3.3.1"
+ jest-worker "^26.5.0"
+ p-limit "^3.0.2"
+ schema-utils "^3.0.0"
+ serialize-javascript "^5.0.1"
+ source-map "^0.6.1"
+ terser "^5.3.4"
+ webpack-sources "^1.4.3"
+
+terser-webpack-plugin@^1.4.3:
+ version "1.4.5"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b"
+ integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==
+ dependencies:
+ cacache "^12.0.2"
+ find-cache-dir "^2.1.0"
+ is-wsl "^1.1.0"
+ schema-utils "^1.0.0"
+ serialize-javascript "^4.0.0"
+ source-map "^0.6.1"
+ terser "^4.1.2"
+ webpack-sources "^1.4.0"
+ worker-farm "^1.7.0"
+
+terser@^4.1.2, terser@^4.6.2, terser@^4.6.3:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
+ integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.12"
+
+terser@^5.3.4:
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693"
+ integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.7.2"
+ source-map-support "~0.5.19"
+
+test-exclude@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
+ integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
+ dependencies:
+ "@istanbuljs/schema" "^0.1.2"
+ glob "^7.1.4"
+ minimatch "^3.0.4"
+
+text-table@0.2.0, text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+throat@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
+ integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
+
+through2@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+thunky@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
+ integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+
+timers-browserify@^2.0.4:
+ version "2.0.12"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
+ integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
+ dependencies:
+ setimmediate "^1.0.4"
+
+timsort@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
+ integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+
+tiny-emitter@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
+ integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
+
+tiny-invariant@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875"
+ integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==
+
+tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
+ integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
+
+tle-client@ivanstan/tle.js:
+ version "1.0.2"
+ resolved "https://codeload.github.com/ivanstan/tle.js/tar.gz/1057655740b8b98900b5a0edfc15fd22f0f020e3"
+
+tmpl@1.0.x:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+ integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+toggle-selection@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
+ integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI=
+
+toidentifier@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
+tough-cookie@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4"
+ integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==
+ dependencies:
+ psl "^1.1.33"
+ punycode "^2.1.1"
+ universalify "^0.1.2"
+
+tr46@^2.0.2:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240"
+ integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==
+ dependencies:
+ punycode "^2.1.1"
+
+tryer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
+ integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+
+ts-pnp@1.2.0, ts-pnp@^1.1.6:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
+ integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
+
+tsconfig-paths@^3.9.0:
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
+ integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==
+ dependencies:
+ "@types/json5" "^0.0.29"
+ json5 "^1.0.1"
+ minimist "^1.2.0"
+ strip-bom "^3.0.0"
+
+tslib@^1.8.1, tslib@^1.9.3:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
+ integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
+
+tslib@^2.0.3:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c"
+ integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==
+
+tsutils@^3.17.1:
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
+ integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
+ dependencies:
+ tslib "^1.8.1"
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-detect@4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
+ integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
+type-fest@^0.21.3:
+ version "0.21.3"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
+ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
+type-fest@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
+ integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
+
+type-fest@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
+ integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
+
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+type-is@~1.6.17, type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+type@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
+ integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
+
+type@^2.0.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d"
+ integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==
+
+typedarray-to-buffer@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+ integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
+ dependencies:
+ is-typedarray "^1.0.0"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7"
+ integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
+
+ua-parser-js@^0.7.18:
+ version "0.7.28"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31"
+ integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==
+
+unbox-primitive@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
+ integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
+ dependencies:
+ function-bind "^1.1.1"
+ has-bigints "^1.0.1"
+ has-symbols "^1.0.2"
+ which-boxed-primitive "^1.0.2"
+
+unicode-canonical-property-names-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
+ integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
+
+unicode-match-property-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
+ integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^1.0.4"
+ unicode-property-aliases-ecmascript "^1.0.4"
+
+unicode-match-property-value-ecmascript@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
+ integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
+
+unicode-property-aliases-ecmascript@^1.0.4:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
+ integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+ integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+ integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+unique-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+ integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=
+ dependencies:
+ crypto-random-string "^1.0.0"
+
+universalify@^0.1.0, universalify@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.1.1, upath@^1.1.2, upath@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
+ integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url-loader@4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2"
+ integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==
+ dependencies:
+ loader-utils "^2.0.0"
+ mime-types "^2.1.27"
+ schema-utils "^3.0.0"
+
+url-parse@^1.4.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b"
+ integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==
+ dependencies:
+ querystringify "^2.1.1"
+ requires-port "^1.0.0"
+
+url-parse@^1.5.1:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862"
+ integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==
+ dependencies:
+ querystringify "^2.1.1"
+ requires-port "^1.0.0"
+
+url-template@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21"
+ integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util.promisify@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
+ integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
+ dependencies:
+ define-properties "^1.1.2"
+ object.getownpropertydescriptors "^2.0.3"
+
+util.promisify@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
+ integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.2"
+ has-symbols "^1.0.1"
+ object.getownpropertydescriptors "^2.1.0"
+
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+util@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
+ integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
+ dependencies:
+ inherits "2.0.3"
+
+utila@~0.4:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
+ integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+
+uuid@^3.3.2, uuid@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
+uuid@^8.3.0:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+v8-compile-cache@^2.0.3:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
+ integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
+
+v8-to-istanbul@^7.0.0:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1"
+ integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.1"
+ convert-source-map "^1.6.0"
+ source-map "^0.7.3"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+value-equal@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
+ integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+
+vendors@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
+ integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
+
+vm-browserify@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
+ integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
+
+w3c-hr-time@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
+ integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
+ dependencies:
+ browser-process-hrtime "^1.0.0"
+
+w3c-xmlserializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
+ integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
+ dependencies:
+ xml-name-validator "^3.0.0"
+
+walker@^1.0.7, walker@~1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+ integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
+ dependencies:
+ makeerror "1.0.x"
+
+warning@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
+ integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=
+ dependencies:
+ loose-envify "^1.0.0"
+
+watchpack-chokidar2@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957"
+ integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
+ dependencies:
+ chokidar "^2.1.8"
+
+watchpack@^1.7.4:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
+ integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+ optionalDependencies:
+ chokidar "^3.4.1"
+ watchpack-chokidar2 "^2.0.1"
+
+wbuf@^1.1.0, wbuf@^1.7.3:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
+ integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
+ dependencies:
+ minimalistic-assert "^1.0.0"
+
+web-vitals@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.0.tgz#7f410d9a1f7a1cd5d952806b45776204b47dc274"
+ integrity sha512-1cx54eRxY/+M0KNKdNpNnuXAXG+vJEvwScV4DiV9rOYDguHoeDIzm09ghBohOPtkqPO5OtPC14FWkNva3SDisg==
+
+webidl-conversions@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
+ integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
+
+webidl-conversions@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
+ integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
+
+webpack-dev-middleware@^3.7.2:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5"
+ integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==
+ dependencies:
+ memory-fs "^0.4.1"
+ mime "^2.4.4"
+ mkdirp "^0.5.1"
+ range-parser "^1.2.1"
+ webpack-log "^2.0.0"
+
+webpack-dev-server@3.11.1:
+ version "3.11.1"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0"
+ integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==
+ dependencies:
+ ansi-html "0.0.7"
+ bonjour "^3.5.0"
+ chokidar "^2.1.8"
+ compression "^1.7.4"
+ connect-history-api-fallback "^1.6.0"
+ debug "^4.1.1"
+ del "^4.1.1"
+ express "^4.17.1"
+ html-entities "^1.3.1"
+ http-proxy-middleware "0.19.1"
+ import-local "^2.0.0"
+ internal-ip "^4.3.0"
+ ip "^1.1.5"
+ is-absolute-url "^3.0.3"
+ killable "^1.0.1"
+ loglevel "^1.6.8"
+ opn "^5.5.0"
+ p-retry "^3.0.1"
+ portfinder "^1.0.26"
+ schema-utils "^1.0.0"
+ selfsigned "^1.10.8"
+ semver "^6.3.0"
+ serve-index "^1.9.1"
+ sockjs "^0.3.21"
+ sockjs-client "^1.5.0"
+ spdy "^4.0.2"
+ strip-ansi "^3.0.1"
+ supports-color "^6.1.0"
+ url "^0.11.0"
+ webpack-dev-middleware "^3.7.2"
+ webpack-log "^2.0.0"
+ ws "^6.2.1"
+ yargs "^13.3.2"
+
+webpack-log@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
+ integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
+ dependencies:
+ ansi-colors "^3.0.0"
+ uuid "^3.3.2"
+
+webpack-manifest-plugin@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16"
+ integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==
+ dependencies:
+ fs-extra "^7.0.0"
+ lodash ">=3.5 <5"
+ object.entries "^1.1.0"
+ tapable "^1.0.0"
+
+webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+webpack@4.44.2:
+ version "4.44.2"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72"
+ integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/wasm-edit" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ acorn "^6.4.1"
+ ajv "^6.10.2"
+ ajv-keywords "^3.4.1"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^4.3.0"
+ eslint-scope "^4.0.3"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^2.4.0"
+ loader-utils "^1.2.3"
+ memory-fs "^0.4.1"
+ micromatch "^3.1.10"
+ mkdirp "^0.5.3"
+ neo-async "^2.6.1"
+ node-libs-browser "^2.2.1"
+ schema-utils "^1.0.0"
+ tapable "^1.1.3"
+ terser-webpack-plugin "^1.4.3"
+ watchpack "^1.7.4"
+ webpack-sources "^1.4.1"
+
+websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
+ integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
+ dependencies:
+ http-parser-js ">=0.5.1"
+ safe-buffer ">=5.1.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
+ integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+
+whatwg-encoding@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
+ integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+ dependencies:
+ iconv-lite "0.4.24"
+
+whatwg-fetch@>=0.10.0, whatwg-fetch@^3.4.1:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c"
+ integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==
+
+whatwg-mimetype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
+ integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+
+whatwg-url@^8.0.0, whatwg-url@^8.5.0:
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3"
+ integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==
+ dependencies:
+ lodash "^4.7.0"
+ tr46 "^2.0.2"
+ webidl-conversions "^6.1.0"
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ dependencies:
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which@^1.2.9, which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+which@^2.0.1, which@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+word-wrap@^1.2.3, word-wrap@~1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+workbox-background-sync@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12"
+ integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==
+ dependencies:
+ workbox-core "^5.1.4"
+
+workbox-broadcast-update@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc"
+ integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==
+ dependencies:
+ workbox-core "^5.1.4"
+
+workbox-build@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7"
+ integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==
+ dependencies:
+ "@babel/core" "^7.8.4"
+ "@babel/preset-env" "^7.8.4"
+ "@babel/runtime" "^7.8.4"
+ "@hapi/joi" "^15.1.0"
+ "@rollup/plugin-node-resolve" "^7.1.1"
+ "@rollup/plugin-replace" "^2.3.1"
+ "@surma/rollup-plugin-off-main-thread" "^1.1.1"
+ common-tags "^1.8.0"
+ fast-json-stable-stringify "^2.1.0"
+ fs-extra "^8.1.0"
+ glob "^7.1.6"
+ lodash.template "^4.5.0"
+ pretty-bytes "^5.3.0"
+ rollup "^1.31.1"
+ rollup-plugin-babel "^4.3.3"
+ rollup-plugin-terser "^5.3.1"
+ source-map "^0.7.3"
+ source-map-url "^0.4.0"
+ stringify-object "^3.3.0"
+ strip-comments "^1.0.2"
+ tempy "^0.3.0"
+ upath "^1.2.0"
+ workbox-background-sync "^5.1.4"
+ workbox-broadcast-update "^5.1.4"
+ workbox-cacheable-response "^5.1.4"
+ workbox-core "^5.1.4"
+ workbox-expiration "^5.1.4"
+ workbox-google-analytics "^5.1.4"
+ workbox-navigation-preload "^5.1.4"
+ workbox-precaching "^5.1.4"
+ workbox-range-requests "^5.1.4"
+ workbox-routing "^5.1.4"
+ workbox-strategies "^5.1.4"
+ workbox-streams "^5.1.4"
+ workbox-sw "^5.1.4"
+ workbox-window "^5.1.4"
+
+workbox-cacheable-response@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54"
+ integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==
+ dependencies:
+ workbox-core "^5.1.4"
+
+workbox-core@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4"
+ integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==
+
+workbox-expiration@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163"
+ integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==
+ dependencies:
+ workbox-core "^5.1.4"
+
+workbox-google-analytics@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517"
+ integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==
+ dependencies:
+ workbox-background-sync "^5.1.4"
+ workbox-core "^5.1.4"
+ workbox-routing "^5.1.4"
+ workbox-strategies "^5.1.4"
+
+workbox-navigation-preload@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a"
+ integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==
+ dependencies:
+ workbox-core "^5.1.4"
+
+workbox-precaching@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b"
+ integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==
+ dependencies:
+ workbox-core "^5.1.4"
+
+workbox-range-requests@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859"
+ integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==
+ dependencies:
+ workbox-core "^5.1.4"
+
+workbox-routing@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970"
+ integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==
+ dependencies:
+ workbox-core "^5.1.4"
+
+workbox-strategies@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c"
+ integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==
+ dependencies:
+ workbox-core "^5.1.4"
+ workbox-routing "^5.1.4"
+
+workbox-streams@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0"
+ integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==
+ dependencies:
+ workbox-core "^5.1.4"
+ workbox-routing "^5.1.4"
+
+workbox-sw@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db"
+ integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==
+
+workbox-webpack-plugin@5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c"
+ integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ==
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ fast-json-stable-stringify "^2.0.0"
+ source-map-url "^0.4.0"
+ upath "^1.1.2"
+ webpack-sources "^1.3.0"
+ workbox-build "^5.1.4"
+
+workbox-window@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863"
+ integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==
+ dependencies:
+ workbox-core "^5.1.4"
+
+worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
+worker-rpc@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5"
+ integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==
+ dependencies:
+ microevent.ts "~0.1.1"
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write-file-atomic@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+ integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
+ dependencies:
+ imurmurhash "^0.1.4"
+ is-typedarray "^1.0.0"
+ signal-exit "^3.0.2"
+ typedarray-to-buffer "^3.1.5"
+
+ws@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
+ integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
+ dependencies:
+ async-limiter "~1.0.0"
+
+ws@^7.4.5:
+ version "7.4.6"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
+ integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
+
+xml-name-validator@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
+ integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+
+xmlchars@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
+ integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
+xtend@^4.0.0, xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
+ integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
+
+y18n@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18"
+ integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.10.0, yaml@^1.7.2:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yaml@^1.8.3:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
+ integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
+
+yargs-parser@^13.1.2:
+ version "13.1.2"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
+ integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^18.1.2:
+ version "18.1.3"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^20.2.2:
+ version "20.2.4"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
+ integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
+
+yargs@^13.3.2:
+ version "13.3.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
+ integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.2"
+
+yargs@^15.3.1, yargs@^15.4.1:
+ version "15.4.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
+ dependencies:
+ cliui "^6.0.0"
+ decamelize "^1.2.0"
+ find-up "^4.1.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^4.2.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^18.1.2"
+
+yargs@^16.1.1:
+ version "16.2.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
+ integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.0"
+ y18n "^5.0.5"
+ yargs-parser "^20.2.2"
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==