From f28476d907fbb967ce5cbc0ea6d7754b2d507859 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 3 Oct 2020 15:55:30 +0300 Subject: [PATCH 01/11] some fixes --- 03_Day_Setting_Up/03_day_setting_up.md | 5 ++--- readMe.md | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/03_Day_Setting_Up/03_day_setting_up.md b/03_Day_Setting_Up/03_day_setting_up.md index c5ef8eb..d4a5606 100644 --- a/03_Day_Setting_Up/03_day_setting_up.md +++ b/03_Day_Setting_Up/03_day_setting_up.md @@ -37,12 +37,11 @@ # Setting Up -In the previous section, we learned about JSX and we access the React and ReactDOM package using CDN. However, in real life work in environment instead of CDN you will use create-react-app package to generate a React project starter(boilerplate). The initial public release was on Jul 22, 2016. Before this developer used to configure webpack which a JavaScript module bundler, babel and all the necessary packages manually and this used to take half an hour or may be more. Now, create-react-app will take care of everything and you will be in charge developing product only instead of spending too much time configuring and setting up projects. Before we start using different tools let's have a brief introduction for all the tools we are going to use in this challenge. You do not have understand everything but I will try to give a very short introduction about some of the tools and technologies which we use when we work with React. +In the previous section, we learned about JSX and we access the React and ReactDOM package using CDN. However, in real life work in environment instead of CDN you will use create-react-app package to generate a React project starter(boilerplate). The initial public release was released on Jul 22, 2016. Before this time, developers used to configure webpack which a JavaScript module bundler, babel and all the necessary packages manually and this used to take half an hour or may be more. Now, create-react-app will take care of everything and you will be in charge developing product only instead of spending too much time configuring and setting up projects. Before we start using different tools, let's have a brief introduction for all the tools we are going to use in this challenge. You do not have understand everything but I will try to give a very short introduction about some of the tools and technologies which we use when we work with React. ## Node -Node is a JavaScript run time environment which allows to run JavaScript on the server.Node was created in 2019. Node has played a great role for the growth of JavaScript. - +Node is a JavaScript run time environment which allows to run JavaScript on the server. Node was created in 2019. Node has played a great role for the growth of JavaScript. React application starts by defaul at localhost 3000. The create-react-app has configured a node server for the application the React Application. We will see create-react-app soon. If you do have node, install node. Install [node.js](https://nodejs.org/en/). ![Node download](../images/download_node.png) diff --git a/readMe.md b/readMe.md index 49a9e48..c86bc7d 100644 --- a/readMe.md +++ b/readMe.md @@ -199,7 +199,7 @@ **A 30DaysOfReact** challenge is a guide for both beginners and advanced JavaScript and React developers. Welcome to 30 Days Of React. React is a JavaScript library. I enjoy using and teaching React and I hope you will do so too. In this step by step 30 Days React challenge, you will learn React which is one of most popular user interface JavaScript libraries. -React can do everything that JavaJavaScript can do. React can be used **_to add interactivity to websites, to develop mobile apps, desktop applications, games_**. +React can do everything that JavaScript can do. React can be used **_to add interactivity to websites, to develop mobile apps, desktop applications, games_**. I believe you will learn quite a lot in the next 30 days and your programming and problem solving skills will also be improved significantly. I will use converstational English and less jargons to write this challenge. The content will be continousely updated. If you find a typo or grammar mistakes don't suprised because I don't do any proof read before I publish it. I would recommond you to focus on the main message of the challenge instead of the English and some minor mistakes. I really appreciate if you send me pull requests for improvement and remember to pull first from master before you send pull requests. Most of the images I have used in this challenge came from 30DaysOfJavaScript challenge therefore you may need to rename file names and folders 30DaysOfReact. @@ -2998,7 +2998,7 @@ const numbers = [1, 2, 3, 4] ​ const sumArray = arr => { let sum = 0 - const callBack = function(element) { + const callback = function(element) { sum += element } numbers.forEach(callback) @@ -3045,7 +3045,7 @@ In JavaScript, we use setInterval higher order function to do some activity cont ```js // syntax -function callBack() { +function callback() { // code goes here } setInterval(callback, duration) From c675573abba93ce6ae72463284b2e74fbcf1cbba Mon Sep 17 00:00:00 2001 From: piouson Date: Sat, 3 Oct 2020 14:04:06 +0100 Subject: [PATCH 02/11] docs: add how to use repo and move js to day1 folder --- .../01_javascript_refresher.md | 4521 ++++++++++++++++ .../02_introduction_to_react.md | 4 +- readMe.md | 4617 +---------------- 3 files changed, 4622 insertions(+), 4520 deletions(-) create mode 100644 01_Day_JavaScript_Refresher/01_javascript_refresher.md diff --git a/01_Day_JavaScript_Refresher/01_javascript_refresher.md b/01_Day_JavaScript_Refresher/01_javascript_refresher.md new file mode 100644 index 0000000..d585533 --- /dev/null +++ b/01_Day_JavaScript_Refresher/01_javascript_refresher.md @@ -0,0 +1,4521 @@ +
+

30 Days Of React: JavaScript Refresher

+ + + + + Twitter Follow + + + + Author: Asabeneh Yetayeh
+ October, 2020 +
+
+ +[<< Day 0](../readMe.md) | [Day 2 >>](../02_Day_Introduction_to_React/02_introduction_to_react.md) + +![30 Days of React banner](../images/30_days_of_react_banner_day_1.jpg) + +- [JavaScript Refresher](#javascript-refresher) + - [0. Adding JavaScript to a Web Page](#adding-javascript-to-a-web-page) + - [Inline Script](#inline-script) + - [Internal Script](#internal-script) + - [External Script](#external-script) + - [Multiple External Scripts](#multiple-external-scripts) + - [1. Variables](#1-variables) + - [2. Data types](#2-data-types) + - [3. Arrays](#3-arrays) + - [How to create an empty array](#how-to-create-an-empty-array) + - [How to create an array with values](#how-to-create-an-array-with-values) + - [Creating an array using split](#creating-an-array-using-split) + - [Accessing array items using index](#accessing-array-items-using-index) + - [Modifying array element](#modifying-array-element) + - [Methods to manipulate array](#methods-to-manipulate-array) + - [Array Constructor](#array-constructor) + - [Creating static values with fill](#creating-static-values-with-fill) + - [Concatenating array using concat](#concatenating-array-using-concat) + - [Getting array length](#getting-array-length) + - [Getting index of an element in an array](#getting-index-of-an-element-in-an-array) + - [Getting last index of an element in array](#getting-last-index-of-an-element-in-array) + - [Checking array](#checking-array) + - [Converting array to string](#converting-array-to-string) + - [Joining array elements](#joining-array-elements) + - [Slice array elements](#slice-array-elements) + - [Splice method in array](#splice-method-in-array) + - [Adding item to an array using push](#adding-item-to-an-array-using-push) + - [Removing the end element using pop](#removing-the-end-element-using-pop) + - [Removing an element from the beginning](#removing-an-element-from-the-beginning) + - [Add an element from the beginning](#add-an-element-from-the-beginning) + - [Reversing array order](#reversing-array-order) + - [Sorting elements in array](#sorting-elements-in-array) + - [Array of arrays](#array-of-arrays) + - [πŸ’» Exercise](#-exercise) + - [Exercise: Level 1](#exercise-level-1) + - [Exercise: Level 2](#exercise-level-2) + - [Exercise: Level 3](#exercise-level-3) + - [4. Conditionals](#4-conditionals) + - [If](#if) + - [If Else](#if-else) + - [If Else if Else](#if-else-if-else) + - [Switch](#switch) + - [Ternary Operators](#ternary-operators) + - [πŸ’» Exercises](#-exercises) + - [Exercises: Level 1](#exercises-level-1) + - [Exercises: Level 2](#exercises-level-2) + - [Exercises: Level 3](#exercises-level-3) + - [5. Loops](#5-loops) + - [Types of Loops](#types-of-loops) + - [1. for](#1-for) + - [2. while](#2-while) + - [3. do while](#3-do-while) + - [4. for of](#4-for-of) + - [5. forEach](#5-foreach) + - [6. for in](#6-for-in) + - [Interrupting a loop and skipping an item](#interrupting-a-loop-and-skipping-an-item) + - [break](#break) + - [continue](#continue) + - [Conclusions](#conclusions) + - [6. Scope](#6-scope) + - [Window Scope](#window-scope) + - [Global scope](#global-scope) + - [Local scope](#local-scope) + - [7. Object](#7-object) + - [Creating an empty object](#creating-an-empty-object) + - [Creating an objecting with values](#creating-an-objecting-with-values) + - [Getting values from an object](#getting-values-from-an-object) + - [Creating object methods](#creating-object-methods) + - [Setting new key for an object](#setting-new-key-for-an-object) + - [Object Methods](#object-methods) + - [Getting object keys using Object.keys()](#getting-object-keys-using-objectkeys) + - [Getting object values using Object.values()](#getting-object-values-using-objectvalues) + - [Getting object keys and values using Object.entries()](#getting-object-keys-and-values-using-objectentries) + - [Checking properties using hasOwnProperty()](#checking-properties-using-hasownproperty) + - [πŸ’» Exercises](#-exercises-1) + - [Exercises: Level 1](#exercises-level-1-1) + - [Exercises: Level 2](#exercises-level-2-1) + - [Exercises: Level 3](#exercises-level-3-1) + - [8. Functions](#8-functions) + - [Function Declaration](#function-declaration) + - [Function without a parameter and return](#function-without-a-parameter-and-return) + - [Function returning value](#function-returning-value) + - [Function with a parameter](#function-with-a-parameter) + - [Function with two parameters](#function-with-two-parameters) + - [Function with many parameters](#function-with-many-parameters) + - [Function with unlimited number of parameters](#function-with-unlimited-number-of-parameters) + - [Unlimited number of parameters in regular function](#unlimited-number-of-parameters-in-regular-function) + - [Unlimited number of parameters in arrow function](#unlimited-number-of-parameters-in-arrow-function) + - [Anonymous Function](#anonymous-function) + - [Expression Function](#expression-function) + - [Self Invoking Functions](#self-invoking-functions) + - [Arrow Function](#arrow-function) + - [Function with default parameters](#function-with-default-parameters) + - [Function declaration versus Arrow function](#function-declaration-versus-arrow-function) + - [πŸ’» Exercises](#-exercises-2) + - [Exercises: Level 1](#exercises-level-1-2) + - [Exercises: Level 2](#exercises-level-2-2) + - [Exercises: Level 3](#exercises-level-3-2) + - [9. Higher Order Function](#9-higher-order-function) + - [Callback](#callback) + - [Returning function](#returning-function) + - [setting time](#setting-time) + - [setInterval](#setinterval) + - [setTimeout](#settimeout) + - [10. Destructuring and Spreading](#10-destructuring-and-spreading) + - [What is Destructuring?](#what-is-destructuring) + - [What can we destructure?](#what-can-we-destructure) + - [1. Destructuring arrays](#1-destructuring-arrays) + - [2. Destructuring objects](#2-destructuring-objects) + - [Exercises](#exercises) + - [Spread or Rest Operator](#spread-or-rest-operator) + - [Spread operator to get the rest of array elements](#spread-operator-to-get-the-rest-of-array-elements) + - [Spread operator to copy array](#spread-operator-to-copy-array) + - [Spread operator to copy object](#spread-operator-to-copy-object) + - [Spread operator with arrow function](#spread-operator-with-arrow-function) + - [11. Functional Programming](#11-functional-programming) + - [1. forEach](#1-foreach) + - [2. map](#2-map) + - [3. filter](#3-filter) + - [4. reduce](#4-reduce) + - [5. find](#5-find) + - [6. findIndex](#6-findindex) + - [7. some](#7-some) + - [8. every](#8-every) + - [Exercises](#exercises-1) + - [12. Classes](#12-classes) + - [Defining a classes](#defining-a-classes) + - [Class Instantiation](#class-instantiation) + - [Class Constructor](#class-constructor) + - [Default values with constructor](#default-values-with-constructor) + - [Class methods](#class-methods) + - [Properties with initial value](#properties-with-initial-value) + - [getter](#getter) + - [setter](#setter) + - [Static method](#static-method) + - [Inheritance](#inheritance) + - [Overriding methods](#overriding-methods) + - [Exercises](#exercises-2) + - [Exercises Level 1](#exercises-level-1-3) + - [Exercises Level 2](#exercises-level-2-3) + - [Exercises Level 3](#exercises-level-3-3) + - [13 Document Object Model(DOM)](#13-document-object-modeldom) + +## JavaScript Refresher + +### 0. Adding JavaScript to a Web Page + +JavaScript can be added to a web page in three different ways: + +- **_Inline script_** +- **_Internal script_** +- **_External script_** +- **_Multiple External scripts_** + +The following sections show different ways of adding JavaScript code to your web page. + +#### Inline Script + +Create a project folder on your desktop or in any location, name it 30DaysOfJS and create an **_index.html_** file in the project folder. Then paste the following code and open it in a browser, for example [Chrome](https://www.google.com/chrome/). + +```html + + + + 30DaysOfScript:Inline Script + + + + + +``` + +Now, you just wrote your first inline script. We can create a pop up alert message using the _alert()_ built-in function. + +#### Internal Script + +The internal script can be written in the _head_ or the _body_, but it is preferred to put it on the body of the HTML document. +First, let us write on the head part of the page. + +```html + + + + 30DaysOfScript:Internal Script + + + + +``` + +This is how we write an internal script most of the time. Writing the JavaScript code in the body section is the most preferred option. Open the browser console to see the output from the console.log() + +```html + + + + 30DaysOfScript:Internal Script + + + + + + +``` + +Open the browser console to see the output from the console.log() + +![js code from vscode](./images/js_code_vscode.png) + +#### External Script + +Similar to the internal script, the external script link can be on the header or body, but it is preferred to put it in the body. +First, we should create an external JavaScript file with .js extension. All files ending with .js extension. All files ending with .js extension are JavaScript files. Create a file named introduction.js inside your project directory and write the following code and link this .js file at the bottom of the body. + +```js +console.log('Welcome to 30DaysOfJavaScript') +``` + +External scripts in the _head_: + +```html + + + + 30DaysOfJavaScript:External script + + + + +``` + +External scripts in the _body_: + +```html + + + + 30DaysOfJavaScript:External script + + + //it could be in the header or in the body // Here is the recommended place + to put the external script + + + +``` + +Open the browser console to see the output of the console.log() + +#### Multiple External Scripts + +We can also link multiple external JavaScript files to a web page. +Create a helloworld.js file inside the 30DaysOfJS folder and write the following code. + +```js +console.log('Hello, World!') +``` + +```html + + + + Multiple External Scripts + + + + + + +``` + +_Your main.js file should be below all other scripts_. It is very important to remember this. + +![Multiple Script](./images/multiple_script.png) + +### 1. Variables + +We use _var_, _let_ and _const_ to declare a variable. The _var_ is functions scope, however _let_ and _const_ are block scope. In this challenge we use ES6 and above features of JavaScript. Avoid using _var_. + +```js +let firstName = 'Asabeneh' +firstName = 'Eyob' + +const PI = 3.14 // Not allowed to reassign PI to a new value +// PI = 3. +``` + +### 2. Data types + +If you do not feel comfortable with data types check the following [link](https://github.com/Asabeneh/30-Days-Of-JavaScript/blob/master/02_Day_Data_types/02_day_data_types.md) + +### 3. Arrays + +In contrast to variables, an array can store _multiple values_. Each value in an array has an _index_, and each index has _a reference in a memory address_. Each value can be accessed by using their _indexes_. The index of an array starts from _zero_, and the index of the last element is less by one from the length of the array. + +An array is a collection of different data types which are ordered and changeable(modifiable). An array allows storing duplicate elements and different data types. An array can be empty, or it may have different data type values. + +#### How to create an empty array + +In JavaScript, we can create an array in different ways. Let us see different ways to create an array. +It is very common to use _const_ instead of _let_ to declare an array variable. If you ar using const it means you do not use that variable name again. + +- Using Array constructor + +```js +// syntax +const arr = Array() +// or +// let arr = new Array() +console.log(arr) // [] +``` + +- Using square brackets([]) + +```js +// syntax +// This the most recommended way to create an empty list +const arr = [] +console.log(arr) +``` + +#### How to create an array with values + +Array with initial values. We use _length_ property to find the length of an array. + +```js +const numbers = [0, 3.14, 9.81, 37, 98.6, 100] // array of numbers +const fruits = ['banana', 'orange', 'mango', 'lemon'] // array of strings, fruits +const vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] // array of strings, vegetables +const animalProducts = ['milk', 'meat', 'butter', 'yoghurt'] // array of strings, products +const webTechs = ['HTML', 'CSS', 'JS', 'React', 'Redux', 'Node', 'MongDB'] // array of web technologies +const countries = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland'] // array of strings, countries + +// Print the array and its length + +console.log('Numbers:', numbers) +console.log('Number of numbers:', numbers.length) + +console.log('Fruits:', fruits) +console.log('Number of fruits:', fruits.length) + +console.log('Vegetables:', vegetables) +console.log('Number of vegetables:', vegetables.length) + +console.log('Animal products:', animalProducts) +console.log('Number of animal products:', animalProducts.length) + +console.log('Web technologies:', webTechs) +console.log('Number of web technologies:', webTechs.length) + +console.log('Countries:', countries) +console.log('Number of countries:', countries.length) +``` + +```sh +Numbers: [0, 3.14, 9.81, 37, 98.6, 100] +Number of numbers: 6 +Fruits: ['banana', 'orange', 'mango', 'lemon'] +Number of fruits: 4 +Vegetables: ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] +Number of vegetables: 5 +Animal products: ['milk', 'meat', 'butter', 'yoghurt'] +Number of animal products: 4 +Web technologies: ['HTML', 'CSS', 'JS', 'React', 'Redux', 'Node', 'MongDB'] +Number of web technologies: 7 +Countries: ['Finland', 'Estonia', 'Denmark', 'Sweden', 'Norway'] +Number of countries: 5 +``` + +- Array can have items of different data types + +```js +const arr = [ + 'Asabeneh', + 250, + true, + { country: 'Finland', city: 'Helsinki' }, + { skills: ['HTML', 'CSS', 'JS', 'React', 'Python'] }, +] // arr containing different data types +console.log(arr) +``` + +#### Creating an array using split + +As we have seen in the earlier section, we can split a string at different positions, and we can change to an array. Let us see the examples below. + +```js +let js = 'JavaScript' +const charsInJavaScript = js.split('') + +console.log(charsInJavaScript) // ["J", "a", "v", "a", "S", "c", "r", "i", "p", "t"] + +let companiesString = 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon' +const companies = companiesString.split(',') + +console.log(companies) // ["Facebook", " Google", " Microsoft", " Apple", " IBM", " Oracle", " Amazon"] +let txt = + 'I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.' +const words = txt.split(' ') + +console.log(words) +// the text has special characters think how you can just get only the words +// ["I", "love", "teaching", "and", "empowering", "people.", "I", "teach", "HTML,", "CSS,", "JS,", "React,", "Python"] +``` + +#### Accessing array items using index + +We access each element in an array using their index. An array index starts from 0. The picture below clearly shows the index of each element in the array. + +![arr index](./images/array_index.png) + +```js +const fruits = ['banana', 'orange', 'mango', 'lemon'] +let firstFruit = fruits[0] // we are accessing the first item using its index + +console.log(firstFruit) // banana + +secondFruit = fruits[1] +console.log(secondFruit) // orange + +let lastFruit = fruits[3] +console.log(lastFruit) // lemon +// Last index can be calculated as follows + +let lastIndex = fruits.length - 1 +lastFruit = fruits[lastIndex] + +console.log(lastFruit) // lemon +``` + +```js +const numbers = [0, 3.14, 9.81, 37, 98.6, 100] // set of numbers + +console.log(numbers.length) // => to know the size of the array, which is 6 +console.log(numbers) // -> [0, 3.14, 9.81, 37, 98.6, 100] +console.log(numbers[0]) // -> 0 +console.log(numbers[5]) // -> 100 + +let lastIndex = numbers.length - 1 +console.log(numbers[lastIndex]) // -> 100 +``` + +```js +const webTechs = [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB', +] // List of web technologies + +console.log(webTechs) // all the array items +console.log(webTechs.length) // => to know the size of the array, which is 7 +console.log(webTechs[0]) // -> HTML +console.log(webTechs[6]) // -> MongoDB + +let lastIndex = webTechs.length - 1 +console.log(webTechs[lastIndex]) // -> MongoDB +``` + +```js +const countries = [ + 'Albania', + 'Bolivia', + 'Canada', + 'Denmark', + 'Ethiopia', + 'Finland', + 'Germany', + 'Hungary', + 'Ireland', + 'Japan', + 'Kenya', +] // List of countries + +console.log(countries) // -> all countries in array +console.log(countries[0]) // -> Albania +console.log(countries[10]) // -> Kenya + +let lastIndex = countries.length - 1 +console.log(countries[lastIndex]) // -> Kenya +``` + +```js +const shoppingCart = [ + 'Milk', + 'Mango', + 'Tomato', + 'Potato', + 'Avocado', + 'Meat', + 'Eggs', + 'Sugar', +] // List of food products + +console.log(shoppingCart) // -> all shoppingCart in array +console.log(shoppingCart[0]) // -> Milk +console.log(shoppingCart[7]) // -> Sugar + +let lastIndex = shoppingCart.length - 1 +console.log(shoppingCart[lastIndex]) // -> Sugar +``` + +#### Modifying array element + +An array is mutable(modifiable). Once an array is created, we can modify the contents of the array elements. + +```js +const numbers = [1, 2, 3, 4, 5] +numbers[0] = 10 // changing 1 at index 0 to 10 +numbers[1] = 20 // changing 2 at index 1 to 20 + +console.log(numbers) // [10, 20, 3, 4, 5] + +const countries = [ + 'Albania', + 'Bolivia', + 'Canada', + 'Denmark', + 'Ethiopia', + 'Finland', + 'Germany', + 'Hungary', + 'Ireland', + 'Japan', + 'Kenya', +] + +countries[0] = 'Afghanistan' // Replacing Albania by Afghanistan +let lastIndex = countries.length - 1 +countries[lastIndex] = 'Korea' // Replacing Kenya by Korea + +console.log(countries) +``` + +```sh +["Afghanistan", "Bolivia", "Canada", "Denmark", "Ethiopia", "Finland", "Germany", "Hungary", "Ireland", "Japan", "Korea"] +``` + +#### Methods to manipulate array + +There are different methods to manipulate an array. These are some of the available methods to deal with arrays:_Array, length, concat, indexOf, slice, splice, join, toString, includes, lastIndexOf, isArray, fill, push, pop, shift, unshift_ + +##### Array Constructor + +Array:To create an array. + +```js +const arr = Array() // creates an an empty array +console.log(arr) + +const eightEmptyValues = Array(8) // it creates eight empty values +console.log(eightEmptyValues) // [empty x 8] +``` + +##### Creating static values with fill + +fill: Fill all the array elements with a static value + +```js +const arr = Array() // creates an an empty array +console.log(arr) + +const eightXvalues = Array(8).fill('X') // it creates eight element values filled with 'X' +console.log(eightXvalues) // ['X', 'X','X','X','X','X','X','X'] + +const eight0values = Array(8).fill(0) // it creates eight element values filled with '0' +console.log(eight0values) // [0, 0, 0, 0, 0, 0, 0, 0] + +const four4values = Array(4).fill(4) // it creates 4 element values filled with '4' +console.log(four4values) // [4, 4, 4, 4] +``` + +##### Concatenating array using concat + +concat:To concatenate two arrays. + +```js +const firstList = [1, 2, 3] +const secondList = [4, 5, 6] +const thirdList = firstList.concat(secondList) + +console.log(thirdList) // [1, 2, 3, 4, 5, 6] +``` + +```js +const fruits = ['banana', 'orange', 'mango', 'lemon'] // array of fruits +const vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] // array of vegetables +const fruitsAndVegetables = fruits.concat(vegetables) // concatenate the two arrays + +console.log(fruitsAndVegetables) +``` + +```sh +["banana", "orange", "mango", "lemon", "Tomato", "Potato", "Cabbage", "Onion", "Carrot"] +``` + +##### Getting array length + +Length:To know the size of the array + +```js +const numbers = [1, 2, 3, 4, 5] +console.log(numbers.length) // -> 5 is the size of the array +``` + +##### Getting index of an element in an array + +indexOf:To check if an item exist in an array. If it exists it returns the index else it returns -1. + +```js +const numbers = [1, 2, 3, 4, 5] + +console.log(numbers.indexOf(5)) // -> 4 +console.log(numbers.indexOf(0)) // -> -1 +console.log(numbers.indexOf(1)) // -> 0 +console.log(numbers.indexOf(6)) // -> -1 +``` + +Check an element if it exist in an array. + +- Check items in a list + +```js +// let us check if a banana exist in the array + +const fruits = ['banana', 'orange', 'mango', 'lemon'] +let index = fruits.indexOf('banana') // 0 + +if (index != -1) { + console.log('This fruit does exist in the array') +} else { + console.log('This fruit does not exist in the array') +} +// This fruit does exist in the array + +// we can use also ternary here +index != -1 + ? console.log('This fruit does exist in the array') + : console.log('This fruit does not exist in the array') + +// let us check if a avocado exist in the array +let indexOfAvocado = fruits.indexOf('avocado') // -1, if the element not found index is -1 +if (indexOfAvocado != -1) { + console.log('This fruit does exist in the array') +} else { + console.log('This fruit does not exist in the array') +} +// This fruit does not exist in the array +``` + +##### Getting last index of an element in array + +lastIndexOf: It gives the position of the last item in the array. If it exist, it returns the index else it returns -1. + +```js +const numbers = [1, 2, 3, 4, 5, 3, 1, 2] + +console.log(numbers.lastIndexOf(2)) // 7 +console.log(numbers.lastIndexOf(0)) // -1 +console.log(numbers.lastIndexOf(1)) // 6 +console.log(numbers.lastIndexOf(4)) // 3 +console.log(numbers.lastIndexOf(6)) // -1 +``` + +includes:To check if an item exist in an array. If it exist it returns the true else it returns false. + +```js +const numbers = [1, 2, 3, 4, 5] + +console.log(numbers.includes(5)) // true +console.log(numbers.includes(0)) // false +console.log(numbers.includes(1)) // true +console.log(numbers.includes(6)) // false + +const webTechs = [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB', +] // List of web technologies + +console.log(webTechs.includes('Node')) // true +console.log(webTechs.includes('C')) // false +``` + +##### Checking array + +Array.isArray:To check if the data type is an array + +```js +const numbers = [1, 2, 3, 4, 5] +console.log(Array.isArray(numbers)) // true + +const number = 100 +console.log(Array.isArray(number)) // false +``` + +##### Converting array to string + +toString:Converts array to string + +```js +const numbers = [1, 2, 3, 4, 5] +console.log(numbers.toString()) // 1,2,3,4,5 + +const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook'] +console.log(names.toString()) // Asabeneh,Mathias,Elias,Brook +``` + +##### Joining array elements + +join: It is used to join the elements of the array, the argument we passed in the join method will be joined in the array and return as a string. By default, it joins with a comma, but we can pass different string parameter which can be joined between the items. + +```js +const numbers = [1, 2, 3, 4, 5] +console.log(numbers.join()) // 1,2,3,4,5 + +const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook'] + +console.log(names.join()) // Asabeneh,Mathias,Elias,Brook +console.log(names.join('')) //AsabenehMathiasEliasBrook +console.log(names.join(' ')) //Asabeneh Mathias Elias Brook +console.log(names.join(', ')) //Asabeneh, Mathias, Elias, Brook +console.log(names.join(' # ')) //Asabeneh ## Mathias ## Elias ## Brook + +const webTechs = [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB', +] // List of web technologies + +console.log(webTechs.join()) // "HTML,CSS,JavaScript,React,Redux,Node,MongoDB" +console.log(webTechs.join(' # ')) // "HTML ## CSS ## JavaScript ## React ## Redux ## Node ## MongoDB" +``` + +##### Slice array elements + +Slice: To cut out a multiple items in range. It takes two parameters:starting and ending position. It doesn't include the ending position. + +```js +const numbers = [1, 2, 3, 4, 5] + +console.log(numbers.slice()) // -> it copies all item +console.log(numbers.slice(0)) // -> it copies all item +console.log(numbers.slice(0, numbers.length)) // it copies all item +console.log(numbers.slice(1, 4)) // -> [2,3,4] // it doesn't include the ending position +``` + +##### Splice method in array + +Splice: It takes three parameters:Starting position, number of times to be removed and number of items to be added. + +```js +const numbers = [1, 2, 3, 4, 5] + +console.log(numbers.splice()) // -> remove all items +``` + +```js +const numbers = [1, 2, 3, 4, 5] +console.log(numbers.splice(0, 1)) // remove the first item +``` + +```js +const numbers = [1, 2, 3, 4, 5, 6] +console.log(numbers.splice(3, 3, 7, 8, 9)) // -> [1, 2, 3, 7, 8, 9] //it removes three item and replace three items +``` + +##### Adding item to an array using push + +Push: adding item in the end. To add item to the end of an existing array we use the push method. + +```js +// syntax +const arr = ['item1', 'item2', 'item3'] +arr.push('new item') + +console.log(arr) +// ['item1', 'item2','item3','new item'] +``` + +```js +const numbers = [1, 2, 3, 4, 5] +numbers.push(6) + +console.log(numbers) // -> [1,2,3,4,5,6] + +numbers.pop() // -> remove one item from the end +console.log(numbers) // -> [1,2,3,4,5] +``` + +```js +let fruits = ['banana', 'orange', 'mango', 'lemon'] +fruits.push('apple') + +console.log(fruits) // ['banana', 'orange', 'mango', 'lemon', 'apple'] + +fruits.push('lime') +console.log(fruits) // ['banana', 'orange', 'mango', 'lemon', 'apple', 'lime'] +``` + +##### Removing the end element using pop + +pop: Removing item in the end. + +```js +const numbers = [1, 2, 3, 4, 5] +numbers.pop() // -> remove one item from the end + +console.log(numbers) // -> [1,2,3,4] +``` + +##### Removing an element from the beginning + +shift: Removing one array element in the beginning of the array. + +```js +const numbers = [1, 2, 3, 4, 5] +numbers.shift() // -> remove one item from the beginning + +console.log(numbers) // -> [2,3,4,5] +``` + +##### Add an element from the beginning + +unshift: Adding array element in the beginning of the array. + +```js +const numbers = [1, 2, 3, 4, 5] +numbers.unshift(0) // -> add one item from the beginning + +console.log(numbers) // -> [0,1,2,3,4,5] +``` + +##### Reversing array order + +reverse: reverse the order of an array. + +```js +const numbers = [1, 2, 3, 4, 5] +numbers.reverse() // -> reverse array order + +console.log(numbers) // [5, 4, 3, 2, 1] + +numbers.reverse() +console.log(numbers) // [1, 2, 3, 4, 5] +``` + +##### Sorting elements in array + +sort: arrange array elements in ascending order. Sort takes a call back function, we will see how we use sort with a call back function in the coming sections. + +```js +const webTechs = [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB', +] + +webTechs.sort() +console.log(webTechs) // ["CSS", "HTML", "JavaScript", "MongoDB", "Node", "React", "Redux"] + +webTechs.reverse() // after sorting we can reverse it +console.log(webTechs) // ["Redux", "React", "Node", "MongoDB", "JavaScript", "HTML", "CSS"] +``` + +#### Array of arrays + +Array can store different data types including an array itself. Let us create an array of arrays + +```js +const firstNums = [1, 2, 3] +const secondNums = [1, 4, 9] + +const arrayOfArray = [ + [1, 2, 3], + [1, 2, 3], +] +console.log(arrayOfArray[0]) // [1, 2, 3] + +const frontEnd = ['HTML', 'CSS', 'JS', 'React', 'Redux'] +const backEnd = ['Node', 'Express', 'MongoDB'] +const fullStack = [frontEnd, backEnd] +console.log(fullStack) // [["HTML", "CSS", "JS", "React", "Redux"], ["Node", "Express", "MongoDB"]] +console.log(fullStack.length) // 2 +console.log(fullStack[0]) // ["HTML", "CSS", "JS", "React", "Redux"] +console.log(fullStack[1]) // ["Node", "Express", "MongoDB"] +``` + +### πŸ’» Exercise + +##### Exercise: Level 1 + +```js +const countries = [ + 'Albania', + 'Bolivia', + 'Canada', + 'Denmark', + 'Ethiopia', + 'Finland', + 'Germany', + 'Hungary', + 'Ireland', + 'Japan', + 'Kenya', +] + +const webTechs = [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB', +] +``` + +1. Declare an _empty_ array; +2. Declare an array with more than 5 number of elements +3. Find the length of your array +4. Get the first item, the middle item and the last item of the array +5. Declare an array called _mixedDataTypes_, put different data types in the array and find the length of the array. The array size should be greater than 5 +6. Declare an array variable name itCompanies and assign initial values Facebook, Google, Microsoft, Apple, IBM, Oracle and Amazon +7. Print the array using _console.log()_ +8. Print the number of companies in the array +9. Print the first company, middle and last company +10. Print out each company +11. Change each company name to uppercase one by one and print them out +12. Print the array like as a sentence: Facebook, Google, Microsoft, Apple, IBM,Oracle and Amazon are big IT companies. +13. Check if a certain company exists in the itCompanies array. If it exist return the company else return a company is _not found_ +14. Filter out companies which have more than one 'o' without the filter method +15. Sort the array using _sort()_ method +16. Reverse the array using _reverse()_ method +17. Slice out the first 3 companies from the array +18. Slice out the last 3 companies from the array +19. Slice out the middle IT company or companies from the array +20. Remove the first IT company from the array +21. Remove the middle IT company or companies from the array +22. Remove the last IT company from the array +23. Remove all IT companies + +##### Exercise: Level 2 + +1. Create a separate countries.js file and store the countries array into this file, create a separate file web_techs.js and store the webTechs array into this file. Access both file in main.js file +1. First remove all the punctuations and change the string to array and count the number of words in the array + + ```js + let text = + 'I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.' + console.log(words) + console.log(words.length) + ``` + + ```sh + ["I", "love", "teaching", "and", "empowering", "people", "I", "teach", "HTML", "CSS", "JS", "React", "Python"] + + 13 + ``` + +1. In the following shopping cart add, remove, edit items + + ```js + const shoppingCart = ['Milk', 'Coffee', 'Tea', 'Honey'] + ``` + + - add 'Meat' in the beginning of your shopping cart if it has not been already added + - add Sugar at the end of you shopping cart if it has not been already added + - remove 'Honey' if you are allergic to honey + - modify Tea to 'Green Tea' + +1. In countries array check if 'Ethiopia' exists in the array if it exists print 'ETHIOPIA'. If it does not exist add to the countries list. +1. In the webTechs array check if Sass exists in the array and if it exists print 'Sass is a CSS preprocess'. If it does not exist add Sass to the array and print the array. +1. Concatenate the following two variables and store it in a fullStack variable. + + ```js + const frontEnd = ['HTML', 'CSS', 'JS', 'React', 'Redux'] + const backEnd = ['Node', 'Express', 'MongoDB'] + + console.log(fullStack) + ``` + + ```sh + ["HTML", "CSS", "JS", "React", "Redux", "Node", "Express", "MongoDB"] + ``` + +##### Exercise: Level 3 + +1. The following is an array of 10 students ages: + `js const ages = [19, 22, 19, 24, 20, 25, 26, 24, 25, 24] ` - Sort the array and find the min and max age - Find the median age(one middle item or two middle items divided by two) - Find the average age(all items divided by number of items) - Find the range of the ages(max minus min) - Compare the value of (min - average) and (max - average), use _abs()_ method + + 1.Slice the first ten countries from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) + +1. Find the middle country(ies) in the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) +1. Divide the countries array into two equal arrays if it is even. If countries array is not even , one more country for the first half. + +### 4. Conditionals + +Conditional statements are used for make decisions based on different conditions. +By default , statements in JavaScript script executed sequentially from top to bottom. If the processing logic require so, the sequential flow of execution can be altered in two ways: + +- Conditional execution: a block of one or more statements will be executed if a certain expression is true +- Repetitive execution: a block of one or more statements will be repetitively executed as long as a certain expression is true. In this section, we will cover _if_, _else_ , _else if_ statements. The comparison and logical operators we learned in the previous sections will be useful in here. + +Conditions can be implementing using the following ways: + +- if +- if else +- if else if else +- switch +- ternary operator + +#### If + +In JavaScript and other programming languages the key word _if_ is to used check if a condition is true and to execute the block code. To create an if condition, we need _if_ keyword, condition inside a parenthesis and block of code inside a curly bracket({}). + +```js +// syntax +if (condition) { + //this part of code runs for truthy condition +} +``` + +**Example:** + +```js +let num = 3 +if (num > 0) { + console.log(`${num} is a positive number`) +} +// 3 is a positive number +``` + +As you can see in the condition example above, 3 is greater than 0, so it is a positive number. The condition was true and the block of code was executed. However, if the condition is false, we won't see any results. + +```js +let isRaining = true +if (isRaining) { + console.log('Remember to take your rain coat.') +} +``` + +The same goes for the second condition, if isRaining is false the if block will not be executed and we do not see any output. In order to see the result of a falsy condition, we should have another block, which is going to be _else_. + +#### If Else + +If condition is true the first block will be executed, if not the else condition will be executed. + +```js +// syntax +if (condition) { + // this part of code runs for truthy condition +} else { + // this part of code runs for false condition +} +``` + +```js +let num = 3 +if (num > 0) { + console.log(`${num} is a positive number`) +} else { + console.log(`${num} is a negative number`) +} +// 3 is a positive number + +num = -3 +if (num > 0) { + console.log(`${num} is a positive number`) +} else { + console.log(`${num} is a negative number`) +} +// -3 is a negative number +``` + +```js +let isRaining = true +if (isRaining) { + console.log('You need a rain coat.') +} else { + console.log('No need for a rain coat.') +} +// You need a rain coat. + +isRaining = false +if (isRaining) { + console.log('You need a rain coat.') +} else { + console.log('No need for a rain coat.') +} +// No need for a rain coat. +``` + +The last condition is false, therefore the else block was executed. What if we have more than two conditions? In that case, we would use _else if_ conditions. + +#### If Else if Else + +On our daily life, we make decisions on daily basis. We make decisions not by checking one or two conditions instead we make decisions based on multiple conditions. As similar to our daily life, programming is also full of conditions. We use _else if_ when we have multiple conditions. + +```js +// syntax +if (condition) { + // code +} else if (condition) { + // code +} else { + // code +} +``` + +**Example:** + +```js +let a = 0 +if (a > 0) { + console.log(`${a} is a positive number`) +} else if (a < 0) { + console.log(`${a} is a negative number`) +} else if (a == 0) { + console.log(`${a} is zero`) +} else { + console.log(`${a} is not a number`) +} +``` + +```js +// if else if else +let weather = 'sunny' +if (weather === 'rainy') { + console.log('You need a rain coat.') +} else if (weather === 'cloudy') { + console.log('It might be cold, you need a jacket.') +} else if (weather === 'sunny') { + console.log('Go out freely.') +} else { + console.log('No need for rain coat.') +} +``` + +#### Switch + +Switch is an alternative for **if else if else else**. +The switch statement starts with a _switch_ keyword followed by a parenthesis and code block. Inside the code block we will have different cases. Case block runs if the value in the switch statement parenthesis matches with the case value. The break statement is to terminate execution so the code execution does not go down after the condition is satisfied. The default block runs if all the cases don't satisfy the condition. + +```js +switch (caseValue) { + case 1: + // code + break + case 2: + // code + break + case 3: + // code + default: + // code +} +``` + +```js +let weather = 'cloudy' +switch (weather) { + case 'rainy': + console.log('You need a rain coat.') + break + case 'cloudy': + console.log('It might be cold, you need a jacket.') + break + case 'sunny': + console.log('Go out freely.') + break + default: + console.log(' No need for rain coat.') +} + +// Switch More Examples +let dayUserInput = prompt('What day is today ?') +let day = dayUserInput.toLowerCase() + +switch (day) { + case 'monday': + console.log('Today is Monday') + break + case 'tuesday': + console.log('Today is Tuesday') + break + case 'wednesday': + console.log('Today is Wednesday') + break + case 'thursday': + console.log('Today is Thursday') + break + case 'friday': + console.log('Today is Friday') + break + case 'saturday': + console.log('Today is Saturday') + break + case 'sunday': + console.log('Today is Sunday') + break + default: + console.log('It is not a week day.') +} +``` + +// Examples to use conditions in the cases + +```js +let num = prompt('Enter number') +switch (true) { + case num > 0: + console.log('Number is positive') + break + case num == 0: + console.log('Numbers is zero') + break + case num < 0: + console.log('Number is negative') + break + default: + console.log('Entered value was not a number') +} +``` + +#### Ternary Operators + +Ternary operator is very common in _React_. It is a short way to write if else statement. In React we use ternary operator in many cases. + +To generalize, ternary operator is another way to write conditionals. + +```js +let isRaining = true +isRaining + ? console.log('You need a rain coat.') + : console.log('No need for a rain coat.') +``` + +### πŸ’» Exercises + +##### Exercises: Level 1 + +1. Get user input using prompt(β€œEnter your age:”). If user is 18 or older , give feedback:'You are old enough to drive' but if not 18 give another feedback stating to wait for the number of years he needs to turn 18. + + ```sh + Enter your age: 30 + You are old enough to drive. + + Enter your age:15 + You are left with 3 years to drive. + ``` + +1. Compare the values of myAge and yourAge using if … else. Based on the comparison and log the result to console stating who is older (me or you). Use prompt(β€œEnter your age:”) to get the age as input. + + ```sh + Enter your age: 30 + You are 5 years older than me. + ``` + +1. If a is greater than b return 'a is greater than b' else 'a is less than b'. Try to implement it in two ways + + - using if else + - ternary operator. + + ```js + let a = 4 + let b = 3 + ``` + + ```sh + 4 is greater than 3 + ``` + +1. Even numbers are divisible by 2 and the remainder is zero. How do you check, if a number is even or not using JavaScript? + + ```sh + Enter a number: 2 + 2 is an even number + + Enter a number: 9 + 9 is is an odd number. + ``` + +##### Exercises: Level 2 + +1. Write a code which can give grades to students according to theirs scores: + - 80-100, A + - 70-89, B + - 60-69, C + - 50-59, D + - 0-49, F +1. Check if the season is Autumn, Winter, Spring or Summer. + If the user input is : + - September, October or November, the season is Autumn. + - December, January or February, the season is Winter. + - March, April or May, the season is Spring + - June, July or August, the season is Summer +1. Check if a day is weekend day or a working day. Your script will take day as an input. + +```sh + What is the day today? Saturday + Saturday is a weekend. + + What is the day today? saturDaY + Saturday is a weekend. + + What is the day today? Friday + Friday is a working day. + + What is the day today? FrIDAy + Friday is a working day. +``` + +##### Exercises: Level 3 + +1. Write a program which tells the number of days in a month. + +```sh + Enter a month: January + January has 31 days. + + Enter a month: JANUARY + January has 31 day + + Enter a month: February + February has 28 days. + + Enter a month: FEbruary + February has 28 days. +``` + +1. Write a program which tells the number of days in a month, now consider leap year. + +### 5. Loops + +In programming we use different loops to carry out repetitive tasks. Therefore, loop can help us to automate tedious and repetitive task. JavaScript has also different types of loops which we can use to work on repetitive task. + +Imagine if your are asked to print Hello world one thousand times without a loop, it may take an hour or two to do this tedious task. However, using loop we can print it in less than a second. + +Loops: + +- for +- while +- do while +- for of +- forEach +- for in + +A loop usually goes until the condition gets false. But sometimes we like to interrupt the loop or skip an item during iteration. We use _break_ to interrupt the loop and _continue_ to skip an item during iteration. + +#### Types of Loops + +##### 1. for + +We use for loop when we know how many iteration we go. Let's see the following example + +```js +// for loop syntax + +for (initialization, condition, increment/decrement) { + code goes here +} +``` + +This code prints from 0 to 5. + +```js +for (let i = 0; i < 6; i++) { + console.log(i) +} +``` + +For example if we want to sum all the numbers from 0 to 100. + +```js +let sum = 0 +for (let i = 0; i < 101; i++) { + sum += i +} + +console.log(sum) +``` + +If we want to sum only even numbers: + +```js +let sum = 0 +for (let i = 0; i < 101; i += 2) { + sum += i +} + +console.log(sum) + +// or another way + +let total = 0 +for (let i = 0; i < 101; i++) { + if (i % 2 == 0) { + total += i + } +} +console.log(total) +``` + +This code iterates through the array + +```js +const nums = [1, 2, 3, 4, 5] +for (let i = 0; i < 6; i++) { + console.log(nums[i]) +} +``` + +This code prints 5 to 0. Looping in reverse order + +```js +for (let i = 5; i >= 0; i--) { + console.log(i) +} +``` + +The Code below can reverse an array. + +```js +const nums = [1, 2, 3, 4, 5] +const lastIndex = nums.length - 1 +const newArray = [] +for (let i = lastIndex; i >= 0; i--) { + newArray.push(nums[i]) +} + +console.log(newArray) +``` + +##### 2. while + +We use the while loop when we do not know how man iteration we go in advance. + +```js +let count = prompt('Enter a positive number: ') +while (count > 0) { + console.log(count) + count-- +} +``` + +##### 3. do while + +Do while run at least once if the condition is true or false + +```js +let count = 0 +do { + console.log(count) + count++ +} while (count < 11) +``` + +The code below runs ones though the condition is false + +```js +let count = 11 +do { + console.log(count) + count++ +} while (count < 11) +``` + +While loop is the least important loop in many programming languages. + +##### 4. for of + +The for of loop is very handy to use it with array. If we are not interested in the index of the array a for of loop is preferable to regular for loop or forEach loop. + +```js +const numbers = [1, 2, 3, 4, 5] +for (const number of numbers) { + console.log(number) +} + +const countries = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland'] +for (const country of countries) { + console.log(country.toUpperCase()) +} +``` + +##### 5. forEach + +If we are interested in the index of the array forEach is preferable to for of loop. The forEach array method takes a callback function, the callback function takes three arguments: the item, the index and the array itself. + +```js +const numbers = [1, 2, 3, 4, 5] +numbers.forEach((number, i) => { + console.log(number, i) +}) + +const countries = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland'] +countries.forEach((country, i, arr) => { + console.log(i, country.toUpperCase()) +}) +``` + +##### 6. for in + +The for in loop can be used with object literals to get the keys of the object. + +```js +const user = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + skills: ['HTML', 'CSS', 'JS', 'React', 'Node', 'Python', 'D3.js'], +} + +for (const key in user) { + console.log(key, user[key]) +} +``` + +#### Interrupting a loop and skipping an item + +##### break + +Break is used to interrupt a loop. + +```js +for (let i = 0; i <= 5; i++) { + if (i == 3) { + break + } + console.log(i) +} + +// 0 1 2 +``` + +The above code stops if 3 found in the iteration process. + +##### continue + +We use the keyword continue to skip a certain iterations. + +```js +for (let i = 0; i <= 5; i++) { + if (i == 3) { + continue + } + console.log(i) +} +// 0 1 2 4 5 +``` + +#### Conclusions + +- Regular for loop can be used anywhere when the number of iteration is known. +- While loop when the number of iteration is not know +- Do while loop and while loop are almost the same but do while loop run at least once even when the condition is false +- for of is used only for array +- forEach is used for array +- for in is used for object + +### 6. Scope + +Variable is the fundamental part in programming. We declare variable to store different data types. To declare a variable we use the key word _var_, _let_ and _const_. A variable can declared at different scope. In this section we will see the scope, scope of variables when we use var or let. +Variables scopes can be: + +- Window +- Global +- Local + +Variable can be declared globally or locally or window scope. We will see both global and local scope. +Anything declared without let, var or const is scoped at window level. + +Let us image we have a scope.js file. + +#### Window Scope + +Without using console.log() open your browser and check, you will see the value of a and b if you write a or b on the browser. That means a and b are already available in the window. + +```js +//scope.js +a = 'JavaScript' // is a window scope this found anywhere +b = 10 // this is a window scope variable +function letsLearnScope() { + console.log(a, b) + if (true) { + console.log(a, b) + } +} +console.log(a, b) // accessible +``` + +#### Global scope + +A globally declared variable can be accessed every where in the same file. But the term global is relative. It can be global to the file or it can be global relative to some block of codes. + +```js +//scope.js +let a = 'JavaScript' // is a global scope it will be found anywhere in this file +let b = 10 // is a global scope it will be found anywhere in this file +function letsLearnScope() { + console.log(a, b) // JavaScript 10, accessible + if (true) { + let a = 'Python' + let b = 100 + console.log(a, b) // Python 100 + } + console.log(a, b) +} +letsLearnScope() +console.log(a, b) // JavaScript 10, accessible +``` + +#### Local scope + +A variable declared as local can be accessed only in certain block code. + +```js +//scope.js +let a = 'JavaScript' // is a global scope it will be found anywhere in this file +let b = 10 // is a global scope it will be found anywhere in this file +function letsLearnScope() { + console.log(a, b) // JavaScript 10, accessible + let c = 30 + if (true) { + // we can access from the function and outside the function but + // variables declared inside the if will not be accessed outside the if block + let a = 'Python' + let b = 20 + let d = 40 + console.log(a, b, c) // Python 20 30 + } + // we can not access c because c's scope is only the if block + console.log(a, b) // JavaScript 10 +} +letsLearnScope() +console.log(a, b) // JavaScript 10, accessible +``` + +Now, you have an understanding of scope. A variable declared with _var_ only scoped to function but variable declared with _let_ or _const_ is block scope(function block, if block, loop etc). Block in JavaScript is a code in between two curly brackets ({}). + +```js +//scope.js +function letsLearnScope() { + var gravity = 9.81 + console.log(gravity) +} +// console.log(gravity), Uncaught ReferenceError: gravity is not defined + +if (true) { + var gravity = 9.81 + console.log(gravity) // 9.81 +} +console.log(gravity) // 9.81 + +for (var i = 0; i < 3; i++) { + console.log(i) // 1, 2, 3 +} +console.log(i) +``` + +In ES6 and above there is _let_ and _const_, so you will not suffer from the sneakiness of _var_. When we use _let_ our variable is block scoped and it will not infect other parts of our code. + +```js +//scope.js +function letsLearnScope() { + // you can use let or const, but gravity is constant I prefer to use const + const gravity = 9.81 + console.log(gravity) +} +// console.log(gravity), Uncaught ReferenceError: gravity is not defined + +if (true) { + const gravity = 9.81 + console.log(gravity) // 9.81 +} +// console.log(gravity), Uncaught ReferenceError: gravity is not defined + +for (let i = 0; i < 3; i++) { + console.log(i) // 1, 2, 3 +} +// console.log(i), Uncaught ReferenceError: gravity is not defined +``` + +The scope _let_ and _const_ is the same. The difference is only reassigning. We can not change or reassign the value of const variable. I would strongly suggest you to use _let_ and _const_, by using _let_ and _const_ you will writ clean code and avoid hard to debug mistakes. As a rule of thumb, you can use _let_ for any value which change, _const_ for any constant value, and for array, object, arrow function and function expression. + +### 7. Object + +Everything can be an object and objects do have properties and properties have values, so an object is a key value pair. The order of the key is not reserved, or there is no order. +To create an object literal, we use two curly brackets. + +#### Creating an empty object + +An empty object + +```js +const person = {} +``` + +#### Creating an objecting with values + +Now, the person object has firstName, lastName, age, location, skills and isMarried properties. The value of properties or keys could be a string, number, boolean, an object, null, undefined or a function. + +Let us see some examples of object. Each key has a value in the object. + +```js +const rectangle = { + length: 20, + width: 20, +} +console.log(rectangle) // {length: 20, width: 20} + +const person = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + city: 'Helsinki', + skills: [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Node', + 'MongoDB', + 'Python', + 'D3.js', + ], + isMarried: true, +} +console.log(person) +``` + +#### Getting values from an object + +We can access values of object using two methods: + +- using . followed by key name if the key-name is a one word +- using square bracket and a quote + +```js +const person = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + city: 'Helsinki', + skills: [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Node', + 'MongoDB', + 'Python', + 'D3.js', + ], + getFullName: function () { + return `${this.firstName}${this.lastName}` + }, + 'phone number': '+3584545454545', +} + +// accessing values using . +console.log(person.firstName) +console.log(person.lastName) +console.log(person.age) +console.log(person.location) + +// value can be accessed using square bracket and key name +console.log(person['firstName']) +console.log(person['lastName']) +console.log(person['age']) +console.log(person['age']) +console.log(person['location']) + +// for instance to access the phone number we only use the square bracket method +console.log(person['phone number']) +``` + +#### Creating object methods + +Now, the person object has getFullName properties. The getFullName is function inside the person object and we call it an object method. The _this_ key word refers to the object itself. We can use the word _this_ to access the values of different properties of the object. We can not use an arrow function as object method because the word this refers to the window inside an arrow function instead of the object itself. Example of object: + +```js +const person = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + city: 'Helsinki', + skills: [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Node', + 'MongoDB', + 'Python', + 'D3.js', + ], + getFullName: function () { + return `${this.firstName} ${this.lastName}` + }, +} + +console.log(person.getFullName()) +// Asabeneh Yetayeh +``` + +#### Setting new key for an object + +An object is a mutable data structure and we can modify the content of an object after it gets created. + +Setting a new keys in an object + +```js +const person = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + city: 'Helsinki', + skills: [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Node', + 'MongoDB', + 'Python', + 'D3.js', + ], + getFullName: function () { + return `${this.firstName} ${this.lastName}` + }, +} +person.nationality = 'Ethiopian' +person.country = 'Finland' +person.title = 'teacher' +person.skills.push('Meteor') +person.skills.push('SasS') +person.isMarried = true + +person.getPersonInfo = function () { + let skillsWithoutLastSkill = this.skills + .splice(0, this.skills.length - 1) + .join(', ') + let lastSkill = this.skills.splice(this.skills.length - 1)[0] + + let skills = `${skillsWithoutLastSkill}, and ${lastSkill}` + let fullName = this.getFullName() + let statement = `${fullName} is a ${this.title}.\nHe lives in ${this.country}.\nHe teaches ${skills}.` + return statement +} +console.log(person) +console.log(person.getPersonInfo()) +``` + +```sh +Asabeneh Yetayeh is a teacher. +He lives in Finland. +He teaches HTML, CSS, JavaScript, React, Node, MongoDB, Python, D3.js, Meteor, and SasS. +``` + +#### Object Methods + +There are different methods to manipulate an object. Let us see some of the available methods. + +_Object.assign_: To copy an object without modifying the original object + +```js +const person = { + firstName: 'Asabeneh', + age: 250, + country: 'Finland', + city: 'Helsinki', + skills: ['HTML', 'CSS', 'JS'], + title: 'teacher', + address: { + street: 'Heitamienkatu 16', + pobox: 2002, + city: 'Helsinki', + }, + getPersonInfo: function () { + return `I am ${this.firstName} and I live in ${this.city}, ${this.country}. I am ${this.age}.` + }, +} + +//Object methods: Object.assign, Object.keys, Object.values, Object.entries +//hasOwnProperty + +const copyPerson = Object.assign({}, person) +console.log(copyPerson) +``` + +##### Getting object keys using Object.keys() + +_Object.keys_: To get the keys or properties of an object as an array + +```js +const keys = Object.keys(copyPerson) +console.log(keys) //['name', 'age', 'country', 'skills', 'address', 'getPersonInfo'] +const address = Object.keys(copyPerson.address) +console.log(address) //['street', 'pobox', 'city'] +``` + +##### Getting object values using Object.values() + +_Object.values_:To get values of an object as an array + +```js +const values = Object.values(copyPerson) +console.log(values) +``` + +##### Getting object keys and values using Object.entries() + +_Object.entries_:To get the keys and values in an array + +```js +const entries = Object.entries(copyPerson) +console.log(entries) +``` + +##### Checking properties using hasOwnProperty() + +_hasOwnProperty_: To check if a specific key or property exist in an object + +```js +console.log(copyPerson.hasOwnProperty('name')) +console.log(copyPerson.hasOwnProperty('score')) +``` + +πŸŒ• You are astonishing. Now, you are super charged with the power of objects. You have just completed day 8 challenges and you are 8 steps a head into your way to greatness. Now do some exercises for your brain and for your muscle. + +### πŸ’» Exercises + +##### Exercises: Level 1 + +1. Create an empty object called dog +1. Print the the dog object on the console +1. Add name, legs, color, age and bark properties for the dog object. The bark property is a method which return _woof woof_ +1. Get name, legs, color, age and bark value from the dog object +1. Set new properties the dog object: breed, getDogInfo + +##### Exercises: Level 2 + +1. Find the person who has many skills in the users object. +1. Count logged in users,count users having greater than equal to 50 points from the following object. + + ````js + const users = { + Alex: { + email: 'alex@alex.com', + skills: ['HTML', 'CSS', 'JavaScript'], + age: 20, + isLoggedIn: false, + points: 30 + }, + Asab: { + email: 'asab@asab.com', + skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'], + age: 25, + isLoggedIn: false, + points: 50 + }, + Brook: { + email: 'daniel@daniel.com', + skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'], + age: 30, + isLoggedIn: true, + points: 50 + }, + Daniel: { + email: 'daniel@alex.com', + skills: ['HTML', 'CSS', 'JavaScript', 'Python'], + age: 20, + isLoggedIn: false, + points: 40 + }, + John: { + email: 'john@john.com', + skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux', 'Node.js'], + age: 20, + isLoggedIn: true, + points: 50 + }, + Thomas: { + email: 'thomas@thomas.com', + skills: ['HTML', 'CSS', 'JavaScript', 'React'], + age: 20, + isLoggedIn: false, + points: 40 + }, + Paul: { + email: 'paul@paul.com', + skills: ['HTML', 'CSS', 'JavaScript', 'MongoDB', 'Express', 'React', 'Node'], + age: 20, + isLoggedIn: false, + points: 40 + } + }``` + + ```` + +1. Find people who are MERN stack developer from the users object +1. Set your name in the users object without modifying the original users object +1. Get all keys or properties of users object +1. Get all the values of users object +1. Use the countries object to print a country name, capital, populations and languages. + +##### Exercises: Level 3 + +1. Create an object literal called _personAccount_. It has _firstName, lastName, incomes, expenses_ properties and it has _totalIncome, totalExpense, accountInfo,addIncome, addExpense_ and _accountBalance_ methods. Incomes is a set of incomes and its description and expenses is a set of incomes and its description. +2. \*\*\*\* Questions:2, 3 and 4 are based on the following two arrays:users and products () + +```js +const users = [ + { + _id: 'ab12ex', + username: 'Alex', + email: 'alex@alex.com', + password: '123123', + createdAt: '08/01/2020 9:00 AM', + isLoggedIn: false, + }, + { + _id: 'fg12cy', + username: 'Asab', + email: 'asab@asab.com', + password: '123456', + createdAt: '08/01/2020 9:30 AM', + isLoggedIn: true, + }, + { + _id: 'zwf8md', + username: 'Brook', + email: 'brook@brook.com', + password: '123111', + createdAt: '08/01/2020 9:45 AM', + isLoggedIn: true, + }, + { + _id: 'eefamr', + username: 'Martha', + email: 'martha@martha.com', + password: '123222', + createdAt: '08/01/2020 9:50 AM', + isLoggedIn: false, + }, + { + _id: 'ghderc', + username: 'Thomas', + email: 'thomas@thomas.com', + password: '123333', + createdAt: '08/01/2020 10:00 AM', + isLoggedIn: false, + }, +] + +const products = [ + { + _id: 'eedfcf', + name: 'mobile phone', + description: 'Huawei Honor', + price: 200, + ratings: [ + { userId: 'fg12cy', rate: 5 }, + { userId: 'zwf8md', rate: 4.5 }, + ], + likes: [], + }, + { + _id: 'aegfal', + name: 'Laptop', + description: 'MacPro: System Darwin', + price: 2500, + ratings: [], + likes: ['fg12cy'], + }, + { + _id: 'hedfcg', + name: 'TV', + description: 'Smart TV:Procaster', + price: 400, + ratings: [{ userId: 'fg12cy', rate: 5 }], + likes: ['fg12cy'], + }, +] +``` + +Imagine you are getting the above users collection from a MongoDB database. +a. Create a function called signUp which allows user to add to the collection. If user exists, inform the user that he has already an account. + b. Create a function called signIn which allows user to sign in to the application + +3. The products array has three elements and each of them has six properties. + a. Create a function called rateProduct which rates the product + b. Create a function called averageRating which calculate the average rating of a product + +4. Create a function called likeProduct. This function will helps to like to the product if it is not liked and remove like if it was liked. + +### 8. Functions + +So far we have seen many builtin JavaScript functions. In this section, we will focus on custom functions. What is a function? Before we start making functions, lets understand what function is and why we need function? + +A function is a reusable block of code or programming statements designed to perform a certain task. +A function is declared by a function key word followed by a name, followed by parentheses (). A parentheses can take a parameter. If a function take a parameter it will be called with argument. A function can also take a default parameter. To store a data to a function, a function has to return certain data types. To get the value we call or invoke a function. +Function makes code: + +- clean and easy to read +- reusable +- easy to test + +A function can be declared or created in couple of ways: + +- _Declaration function_ +- _Expression function_ +- _Anonymous function_ +- _Arrow function_ + +#### Function Declaration + +Let us see how to declare a function and how to call a function. + +```js +//declaring a function without a parameter +function functionName() { + // code goes here +} +functionName() // calling function by its name and with parentheses +``` + +#### Function without a parameter and return + +Function can be declared without a parameter. + +**Example:** + +```js +// function without parameter, a function which make a number square +function square() { + let num = 2 + let sq = num * num + console.log(sq) +} + +square() // 4 + +// function without parameter +function addTwoNumbers() { + let numOne = 10 + let numTwo = 20 + let sum = numOne + numTwo + + console.log(sum) +} + +addTwoNumbers() // a function has to be called by its name to be executed +``` + +```js +function printFullName() { + let firstName = 'Asabeneh' + let lastName = 'Yetayeh' + let space = ' ' + let fullName = firstName + space + lastName + console.log(fullName) +} + +printFullName() // calling a function +``` + +#### Function returning value + +Function can also return values, if a function does not return values the value of the function is undefined. Let us write the above functions with return. From now on, we return value to a function instead of printing it. + +```js +function printFullName() { + let firstName = 'Asabeneh' + let lastName = 'Yetayeh' + let space = ' ' + let fullName = firstName + space + lastName + return fullName +} +console.log(printFullName()) +``` + +```js +function addTwoNumbers() { + let numOne = 2 + let numTwo = 3 + let total = numOne + numTwo + return total +} + +console.log(addTwoNumbers()) +``` + +#### Function with a parameter + +In a function we can pass different data types(number, string, boolean, object, function) as a parameter. + +```js +// function with one parameter +function functionName(parm1) { + //code goes her +} +functionName(parm1) // during calling or invoking one argument needed + +function areaOfCircle(r) { + let area = Math.PI * r * r + return area +} + +console.log(areaOfCircle(10)) // should be called with one argument + +function square(number) { + return number * number +} + +console.log(square(10)) +``` + +#### Function with two parameters + +```js +// function with two parameters +function functionName(parm1, parm2) { + //code goes her +} +functionName(parm1, parm2) // during calling or invoking two arguments needed +// Function without parameter doesn't take input, so lets make a function with parameters +function sumTwoNumbers(numOne, numTwo) { + let sum = numOne + numTwo + console.log(sum) +} +sumTwoNumbers(10, 20) // calling functions +// If a function doesn't return it doesn't store data, so it should return + +function sumTwoNumbers(numOne, numTwo) { + let sum = numOne + numTwo + return sum +} + +console.log(sumTwoNumbers(10, 20)) +function printFullName(firstName, lastName) { + return `${firstName} ${lastName}` +} +console.log(printFullName('Asabeneh', 'Yetayeh')) +``` + +#### Function with many parameters + +```js +// function with multiple parameters +function functionName(parm1, parm2, parm3,...){ + //code goes here +} +functionName(parm1,parm2,parm3,...) // during calling or invoking three arguments needed + + +// this function takes array as a parameter and sum up the numbers in the array +function sumArrayValues(arr) { + let sum = 0; + for (let i = 0; i < arr.length; i++) { + sum = sum + arr[i]; + } + return sum; +} +const numbers = [1, 2, 3, 4, 5]; + //calling a function +console.log(sumArrayValues(numbers)); + + + const areaOfCircle = (radius) => { + let area = Math.PI * radius * radius; + return area; + } +console.log(areaOfCircle(10)) + +``` + +#### Function with unlimited number of parameters + +Sometimes we do not know how many arguments the user going to pass. Therefore, we should know how to write a function which can take unlimited number of arguments. The way we do it has a significant difference between a function declaration(regular function) and arrow function. Let us see examples both in function declaration and arrow function. + +##### Unlimited number of parameters in regular function + +A function declaration provides a function scoped arguments array like object. Any thing we passed as argument in the function can be accessed from arguments object inside the functions. Let us see an example + +```js +// Let us access the arguments object +​ +function sumAllNums() { + console.log(arguments) +} + +sumAllNums(1, 2, 3, 4)) +// Arguments(4)Β [1, 2, 3, 4, callee: Ζ’, Symbol(Symbol.iterator): Ζ’] + +``` + +```js +// function declaration +​ +function sumAllNums() { + let sum = 0 + for (let i = 0; i < arguments.length; i++) { + sum += arguments[i] + } + return sum +} + +console.log(sumAllNums(1, 2, 3, 4)) // 10 +console.log(sumAllNums(10, 20, 13, 40, 10)) // 93 +console.log(sumAllNums(15, 20, 30, 25, 10, 33, 40)) // 173 +``` + +##### Unlimited number of parameters in arrow function + +Arrow function does not have the function scoped arguments object. To implement a function which takes unlimited number of arguments in an arrow function we use spread operator followed by any parameter name. Any thing we passed as argument in the function can be accessed as array in the arrow function. Let us see an example + +```js +// Let us access the arguments object +​ +const sumAllNums = (...args) => { + // console.log(arguments), arguments object not found in arrow function + // instead we use an a parameter followed by spread operator + console.log(args) +} + +sumAllNums(1, 2, 3, 4)) +// [1, 2, 3, 4] + +``` + +```js +// function declaration +​ +const sumAllNums = (...args) => { + let sum = 0 + for (const element of args) { + sum += element + } + return sum +} + +console.log(sumAllNums(1, 2, 3, 4)) // 10 +console.log(sumAllNums(10, 20, 13, 40, 10)) // 93 +console.log(sumAllNums(15, 20, 30, 25, 10, 33, 40)) // 173 +``` + +#### Anonymous Function + +Anonymous function or without name + +```js +const anonymousFun = function () { + console.log( + 'I am an anonymous function and my value is stored in anonymousFun' + ) +} +``` + +#### Expression Function + +Expression functions are anonymous functions. After we create a function without a name and we assign it to a variable. To return a value from the function we should call the variable. Look at the example below. + +```js +// Function expression +const square = function (n) { + return n * n +} + +console.log(square(2)) // -> 4 +``` + +#### Self Invoking Functions + +Self invoking functions are anonymous functions which do not need to be called to return a value. + +```js +;(function (n) { + console.log(n * n) +})(2) // 4, but instead of just printing if we want to return and store the data, we do as shown below + +let squaredNum = (function (n) { + return n * n +})(10) + +console.log(squaredNum) +``` + +#### Arrow Function + +Arrow function is an alternative to write a function, however function declaration and arrow function have some minor differences. + +Arrow function uses arrow instead of the keyword _function_ to declare a function. Let us see both function declaration and arrow function. + +```js +// This is how we write normal or declaration function +// Let us change this declaration function to an arrow function +function square(n) { + return n * n +} + +console.log(square(2)) // 4 + +const square = (n) => { + return n * n +} + +console.log(square(2)) // -> 4 + +// if we have only one line in the code block, it can be written as follows, explicit return +const square = (n) => n * n // -> 4 +``` + +```js +const changeToUpperCase = (arr) => { + const newArr = [] + for (const element of arr) { + newArr.push(element.toUpperCase()) + } + return newArr +} + +const countries = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland'] +console.log(changeToUpperCase(countries)) + +// ["FINLAND", "SWEDEN", "NORWAY", "DENMARK", "ICELAND"] +``` + +```js +const printFullName = (firstName, lastName) => { + return `${firstName} ${lastName}` +} + +console.log(printFullName('Asabeneh', 'Yetayeh')) +``` + +The above function has only the return statement, therefore, we can explicitly return it as follows. + +```js +const printFullName = (firstName, lastName) => `${firstName} ${lastName}` + +console.log(printFullName('Asabeneh', 'Yetayeh')) +``` + +#### Function with default parameters + +Sometimes we pass default values to parameters, when we invoke the function if we do not pass an argument the default value will be used. Both function declaration and arrow function can have a default value or values. + +```js +// syntax +// Declaring a function +function functionName(param = value) { + //codes +} + +// Calling function +functionName() +functionName(arg) +``` + +**Example:** + +```js +function greetings(name = 'Peter') { + let message = `${name}, welcome to 30 Days Of JavaScript!` + return message +} + +console.log(greetings()) +console.log(greetings('Asabeneh')) +``` + +```js +function generateFullName(firstName = 'Asabeneh', lastName = 'Yetayeh') { + let space = ' ' + let fullName = firstName + space + lastName + return fullName +} + +console.log(generateFullName()) +console.log(generateFullName('David', 'Smith')) +``` + +```js +function calculateAge(birthYear, currentYear = 2019) { + let age = currentYear - birthYear + return age +} + +console.log('Age: ', calculateAge(1819)) +``` + +```js +function weightOfObject(mass, gravity = 9.81) { + let weight = mass * gravity + ' N' // the value has to be changed to string first + return weight +} + +console.log('Weight of an object in Newton: ', weightOfObject(100)) // 9.81 gravity at the surface of Earth +console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gravity at surface of Moon +``` + +Let us see how we write the above functions with arrow functions + +```js +// syntax +// Declaring a function +const functionName = (param = value) => { + //codes +} + +// Calling function +functionName() +functionName(arg) +``` + +**Example:** + +```js +const greetings = (name = 'Peter') => { + let message = name + ', welcome to 30 Days Of JavaScript!' + return message +} + +console.log(greetings()) +console.log(greetings('Asabeneh')) +``` + +```js +const generateFullName = (firstName = 'Asabeneh', lastName = 'Yetayeh') => { + let space = ' ' + let fullName = firstName + space + lastName + return fullName +} + +console.log(generateFullName()) +console.log(generateFullName('David', 'Smith')) +``` + +```js +const calculateAge = (birthYear, currentYear = 2019) => currentYear - birthYear +console.log('Age: ', calculateAge(1819)) +``` + +```js +const weightOfObject = (mass, gravity = 9.81) => mass * gravity + ' N' + +console.log('Weight of an object in Newton: ', weightOfObject(100)) // 9.81 gravity at the surface of Earth +console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gravity at surface of Moon +``` + +#### Function declaration versus Arrow function + +It ill be covered in other time + +### πŸ’» Exercises + +##### Exercises: Level 1 + +1. Declare a function _fullName_ and it takes firstName, lastName as a parameter and it returns your full - name. +2. Declare a function _addNumbers_ and it takes two two parameters and it returns sum. +3. Area of a circle is calculated as follows: _area = Ο€ x r x r_. Write a function which calculates \_areaOfCircle +4. Temperature in oC can be converted to oF using this formula: _oF = (oC x 9/5) + 32_. Write a function which convert oC to oF _convertCelciusToFahrenheit_. +5. Body mass index(BMI) is calculated as follows: _bmi = weight in Kg / (height x height) in m2_. Write a function which calculates _bmi_. BMI is used to broadly define different weight groups in adults 20 years old or older.Check if a person is _underweight, normal, overweight_ or _obese_ based the information given below. + + - The same groups apply to both men and women. + - _Underweight_: BMI is less than 18.5 + - _Normal weight_: BMI is 18.5 to 24.9 + - _Overweight_: BMI is 25 to 29.9 + - _Obese_: BMI is 30 or more + +6. Write a function called _checkSeason_, it takes a month parameter and returns the season:Autumn, Winter, Spring or Summer. + +##### Exercises: Level 2 + +1. Quadratic equation is calculated as follows: _ax2 + bx + c = 0_. Write a function which calculates value or values of a quadratic equation, _solveQuadEquation_. + + ```js + console.log(solveQuadratic()) // {0} + console.log(solveQuadratic(1, 4, 4)) // {-2} + console.log(solveQuadratic(1, -1, -2)) // {2, -1} + console.log(solveQuadratic(1, 7, 12)) // {-3, -4} + console.log(solveQuadratic(1, 0, -4)) //{2, -2} + console.log(solveQuadratic(1, -1, 0)) //{1, 0} + ``` + +2. Declare a function name _printArray_. It takes array as a parameter and it prints out each value of the array. +3. Write a function name _showDateTime_ which shows time in this format: 08/01/2020 04:08 using the Date object. + + ```sh + showDateTime() + 08/01/2020 04:08 + ``` + +4. Declare a function name _swapValues_. This function swaps value of x to y. + + ```js + swapValues(3, 4) // x => 4, y=>3 + swapValues(4, 5) // x = 5, y = 4 + ``` + +5. Declare a function name _reverseArray_. It takes array as a parameter and it returns the reverse of the array (don't use method). + + ```js + console.log(reverseArray([1, 2, 3, 4, 5])) + //[5, 4, 3, 2, 1] + console.log(reverseArray(['A', 'B', 'C'])) + //['C', 'B', 'A'] + ``` + +6. Declare a function name _capitalizeArray_. It takes array as a parameter and it returns the - capitalizedarray. +7. Declare a function name _addItem_. It takes an item parameter and it returns an array after adding the item +8. Declare a function name _removeItem_. It takes an index parameter and it returns an array after removing an ite +9. Declare a function name evensAndOdds . It takes a positive integer as parameter and it counts number of evens and odds in the number. + +```sh +evensAndOdds(100); +The number of odds are 50. +The number of evens are 51. +``` + +13. Write a function which takes any number of arguments and return the sum of the arguments + +```js +sum(1, 2, 3) // -> 6 +sum(1, 2, 3, 4) // -> 10 +``` + +1. Declare a function name _userIdGenerator_. When this function is called it generates seven character id. The function return the id. + +```sh +console.log(userIdGenerator()); +41XTDbE +``` + +##### Exercises: Level 3 + +1. Declare a function name _userIdGeneratedByUser_. It doesn’t take any parameter but it takes two inputs using prompt(). One of the input is the number of characters and the second input is the number of ids which are supposed to be generated. + + ```sh + userIdGeneratedByUser() + 'kcsy2 + SMFYb + bWmeq + ZXOYh + 2Rgxf + ' + userIdGeneratedByUser() + '1GCSgPLMaBAVQZ26 + YD7eFwNQKNs7qXaT + ycArC5yrRupyG00S + UbGxOFI7UXSWAyKN + dIV0SSUTgAdKwStr + ' + ``` + +2. Write a function **_generateColors_** which can generate any number of hexa or rgb colors. + + ```js + console.log(generateColors('hexa', 3)) // ['#a3e12f', '#03ed55', '#eb3d2b'] + console.log(generateColors('hexa', 1)) // '#b334ef' + console.log(generateColors('rgb', 3)) // ['rgb(5, 55, 175)', 'rgb(50, 105, 100)', 'rgb(15, 26, 80)'] + console.log(generateColors('rgb', 1)) // 'rgb(33,79, 176)' + ``` + +3. Call your function _shuffleArray_, it takes an array as a parameter and it returns a shuffled array +4. Call your function _factorial_, it takes a whole number as a parameter and it return a factorial of the number +5. Call your function _isEmpty_, it takes a parameter and it checks if it is empty or not + +6. Write a function called _average_, it takes an array parameter and returns the average of the items. Check if all the array items are number types. If not give return reasonable feedback. + +### 9. Higher Order Function + +Higher order functions are functions which take other function as a parameter or return a function as a value. The function passed as a parameter is called callback. + +#### Callback + +A callback is a function which can be passed as parameter to other function. See the example below. + +```js +// a callback function, the function could be any name +const callback = (n) => { + return n ** 2 +} +​ +// function take other function as a callback +function cube(callback, n) { + return callback(n) * n +} +​ +console.log(cube(callback, 3)) +``` + +#### Returning function + +Higher order functions return function as a value +​ + +```js +// Higher order function returning an other function +const higherOrder = n => { + const doSomething = m => { + const doWhatEver = t => { + return 2 * n + 3 * m + t + } + return doWhatEver + } +​ + return doSomething +} +console.log(higherOrder(2)(3)(10)) +``` + +Let us see were we use call back functions.For instance the _forEach_ method uses call back. + +```js +const numbers = [1, 2, 3, 4] +​ +const sumArray = arr => { + let sum = 0 + const callBack = function(element) { + sum += element + } + numbers.forEach(callback) + return sum + +} +console.log(sumArray(numbers)) +``` + +```sh +15 +``` + +The above example can be simplified as follows: + +```js +const numbers = [1, 2, 3, 4] +​ +const sumArray = arr => { + let sum = 0 + numbers.forEach(function(element) { + sum += element + }) + return sum + +} +console.log(sumArray(numbers)) +``` + +```sh +15 +``` + +#### setting time + +In JavaScript we can execute some activity on certain interval of time or we can schedule(wait) for sometime to execute some activities. + +- setInterval +- setTimeout + +##### setInterval + +In JavaScript, we use setInterval higher order function to do some activity continuously with in some interval of time. The setInterval global method take a callback function and a duration as a parameter. The duration is in milliseconds and the callback will be always called in that interval of time. + +```js +// syntax +function callBack() { + // code goes here +} +setInterval(callback, duration) +``` + +```js +function sayHello() { + console.log('Hello') +} +setInterval(sayHello, 2000) // it prints hello in every 2 seconds +``` + +##### setTimeout + +In JavaScript, we use setTimeout higher order function to execute some action at some time in the future. The setTimeout global method take a callback function and a duration as a parameter. The duration is in milliseconds and the callback wait for that amount of time. + +```js +// syntax +function callback() { + // code goes here +} +setTimeout(callback, duration) // duration in milliseconds +``` + +```js +function sayHello() { + console.log('Hello') +} +setTimeout(sayHello, 2000) // it prints hello after it waits for 2 seconds. +``` + +### 10. Destructuring and Spreading + +#### What is Destructuring? + +Destructuring is a way to unpack arrays, and objects and assigning to a distinct variable. Destructuring allows us to write clean and readable code. + +#### What can we destructure? + +1. Arrays +2. Objects + +##### 1. Destructuring arrays + +Arrays are a list of different data types ordered by their index. Let's see an example of arrays: + +```js +const numbers = [1, 2, 3] +const countries = ['Finland', 'Sweden', 'Norway'] +``` + +We can access an item from an array using a certain index by iterating through the loop or manually as shown in the example below. + +Accessing array items using a loop + +```js +for (const number of numbers) { + console.log(number) +} + +for (const country of countries) { + console.log(country) +} +``` + +Accessing array items manually + +```js +const numbers = [1, 2, 3] +let num1 = numbers[0] +let num2 = numbers[1] +let num3 = numbers[2] +console.log(num1, num2, num3) // 1, 2, 3 + +const countries = ['Finland', 'Sweden', 'Norway'] +let fin = countries[0] +let swe = countries[1] +let nor = countries[2] +console.log(fin, swe, nor) // Finland, Sweden, Norway +``` + +Most of the time the size of an array is big and we use a loop to iterate through each item of the arrays. Sometimes, we may have short arrays. If the array size is very short it is ok to access the items manually as shown above but today we will see a better way to access the array item which is destructuring. + +Accessing array items using destructuring + +```js +const numbers = [1, 2, 3] +const [num1, num2, num3] = numbers +console.log(num1, num2, num3) // 1, 2, 3, + +const constants = [2.72, 3.14, 9.81,37, 100] +const [e, pi, gravity, bodyTemp, boilingTemp] = constants +console.log(e, pi, gravity, bodyTemp, boilingTemp] +// 2.72, 3.14, 9.81, 37,100 +const countries = ['Finland', 'Sweden', 'Norway'] +const [fin, swe, nor] = countries +console.log(fin, swe, nor) // Finland, Sweden, Norway +``` + +During destructuring each variable should match with the index of the desired item in the array. For instance, the variable fin matches to index 0 and the variable nor matches to index 2. What would be the value of den if you have a variable den next nor? + +```js +const [fin, swe, nor, den] = countries +console.log(den) // undefined +``` + +If you tried the above task you confirmed that the value is undefined. Actually, we can pass a default value to the variable, and if the value of that specific index is undefined the default value will be used. + +```js +const countries = ['Finland', 'Sweden', undefined, 'Norway'] +const [fin, swe, ice = 'Iceland', nor, den = 'Denmark'] = countries +console.log(fin, swe, ice, nor, den) // Finland, Sweden, Iceland, Norway, Denmark +``` + +Destructuring Nested arrays + +```js +const fullStack = [ + ['HTML', 'CSS', 'JS', 'React'], + ['Node', 'Express', 'MongoDB'] +] + +const [frontEnd, backEnd] = fullstack +console.log(frontEnd, backEnd) + +//["HTML", "CSS", "JS", "React"] , ["Node", "Express", "MongoDB"] + +const fruitsAndVegetables = [['banana', 'orange', 'mango', 'lemon'], ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']] + +const [fruits, vegetables] = fruitsAndVegetables +console.log(fruits, vegetables] + +//['banana', 'orange', 'mango', 'lemon'] + +//['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] +``` + +Skipping an Item during destructuring + +During destructuring if we are not interested in every item, we can omit a certain item by putting a comma at that index. Let's get only Finland, Iceland, and Denmark from the array. See the example below for more clarity: + +```js +const countries = ['Finland', 'Sweden', 'Iceland', 'Norway', 'Denmark'] +const [fin, , ice, , den] = countries +console.log(fin, ice, den) // Finland, Iceland, Denmark +``` + +Getting the rest of the array using the spread operator +We use three dots(...) to spread or get the rest of an array during destructuring + +```js +const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +const [num1, num2, num3, ...rest] = nums +console.log(num1, num2, num3, rest) //1, 2, 3, [4, 5, 6, 7, 8, 9, 10] + +const countries = [ + 'Germany', + 'France', + 'Belgium', + 'Finland', + 'Sweden', + 'Norway', + 'Denmark', + 'Iceland', +] + +let [gem, fra, , ...nordicCountries] = countries +console.log(gem, fra, nordicCountries) +// Germany, France, ["Finland", "Sweden", "Norway", "Denmark", "Iceland"] +``` + +There many cases in which we use array destructuring, let's see the following example: + +Destructuring when we loop through arrays + +```js +const countries = [ + ['Finland', 'Helsinki'], + ['Sweden', 'Stockholm'], + ['Norway', 'Oslo'], +] + +for (const [country, city] of countries) { + console.log(country, city) +} + +const fullStack = [ + ['HTML', 'CSS', 'JS', 'React'], + ['Node', 'Express', 'MongoDB'], +] + +for (const [first, second, third, fourth] of fullStack) { + console.log(first, second, third, fourt) +} +``` + +What do you think about the code snippet below? If you have started React Hooks already it may remind you of the useState hook. + +```js +const [x, y] = [2, (value) => value ** 2] +``` + +What is the value of x? And what is the value of y(x)? I leave this for you to figure out. + +If you have used react hooks you are very familiar with this and as you may imagine it is destructuring. The initial value of count is 0 and the setCount is a method that changes the value of count. + +```js +const [count, setCount] = useState(0) +``` + +Now, you know how to destructure arrays. Let's move on to destructuring objects. + +##### 2. Destructuring objects + +An object literal is made of key and value pairs. A very simple example of an object: + +```js +const rectangle = { + width: 20, + height: 10, +} +``` + +We access the value of an object using the following methods: + +```js +const rectangle = { + width: 20, + height: 10, +} + +let width = rectangle.width +let height = recangle.height + +// or + +let width = rectangle[width] +let height = recangle[height] +``` + +But today, we will see how to access the value of an object using destructuring. + +When we destructure an object the name of the variable should be exactly the same as the key or property of the object. See the example below. + +```js +const rectangle = { + width: 20, + height: 10, +} + +let { width, height } = rectangle +console.log(width, height, perimeter) // 20, 10 +``` + +What will be the value of we try to access a key which not in the object. + +```js +const rectangle = { + width: 20, + height: 10, +} + +let { width, height, perimeter } = rectangleconsole.log( + width, + height, + perimeter +) // 20, 10, undefined +``` + +The value of the perimeter in the above example is undefined. + +Default value during object destructuring + +Similar to the array, we can also use a default value in object destructuring. + +```js +const rectangle = { + width: 20, + height: 10, +} + +let { width, height, perimeter = 200 } = rectangle +console.log(width, height, perimeter) // 20, 10, undefined +``` + +Renaming variable names + +```js +const rectangle = { + width: 20, + height: 10, +} + +let { width: w, height: h } = rectangle +``` + +Let's also destructure, nested objects. In the example below, we have nested objects and we can destructure it in two ways. + +We can just destructure step by step + +```js +const props = { + user:{ + firstName:'Asabeneh', + lastName:'Yetayeh', + age:250 + }, + post:{ + title:'Destructuring and Spread', + subtitle:'ES6', + year:2020 +}, +skills:['JS', 'React', 'Redux', 'Node', 'Python'] + +} +} + +const {user, post, skills} = props +const {firstName, lastName, age} = user +const {title, subtitle, year} = post +const [skillOne, skillTwo, skillThree, skillFour, skillFive] = skills +``` + +1. We can destructure it one step + +```js +const props = { + user:{ + firstName:'Asabeneh', + lastName:'Yetayeh', + age:250 + }, + post:{ + title:'Destructuring and Spread', + subtitle:'ES6', + year:2020 +}, +skills:['JS', 'React', 'Redux', 'Node', 'Python'] + +} + +} + +const {user:{firstName, lastName, age}, post:{title, subtitle, year}, skills:[skillOne, skillTwo, skillThree, skillFour, skillFive]} = props + +``` + +Destructuring during loop through an array + +```js +const languages = [ + { lang: 'English', count: 91 }, + { lang: 'French', count: 45 }, + { lang: 'Arabic', count: 25 }, + { lang: 'Spanish', count: 24 }, + { lang: 'Russian', count: 9 }, + { lang: 'Portuguese', count: 9 }, + { lang: 'Dutch', count: 8 }, + { lang: 'German', count: 7 }, + { lang: 'Chinese', count: 5 }, + { lang: 'Swahili', count: 4 }, + { lang: 'Serbian', count: 4 }, +] + +for (const { lang, count } of languages) { + console.log(`The ${lang} is spoken in ${count} countries.`) +} +``` + +Destructuring function parameter + +```js +const rectangle = { width: 20, height: 10 } +const calcualteArea = ({ width, height }) => width * height +const calculatePerimeter = ({ width, height } = 2 * (width + height)) +``` + +#### Exercises + +Create a function called getPersonInfo. The getPersonInfo function takes an object parameter. The structure of the object and the output of the function is given below. Try to use both a regular way and destructuring and compare the cleanness of the code. If you want to compare your solution with my solution, check this link. + +```js +const person = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + job: 'Instructor and Developer', + skills: [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB', + 'Python', + 'D3.js', + ], + languages: ['Amharic', 'English', 'Suomi(Finnish)'], +} + +/* +Asabeneh Yetayeh lives in Finland. He is 250 years old. He is an Instructor and Developer. He teaches HTML, CSS, JavaScript, React, Redux, Node, MongoDB, Python and D3.js. He speaks Amharic, English and a little bit of Suomi(Finnish) +*/ +``` + +#### Spread or Rest Operator + +When we destructure an array we use the spread operator(...) to get the rest elements as array. In addition to that we use spread operator to spread arr elements to another array. + +##### Spread operator to get the rest of array elements + +```js +const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +let [num1, num2, num3, ...rest] = nums +​ +console.log(num1, num2, num3) +console.log(rest) +``` + +```sh +1 2 3 +[4, 5, 6, 7, 8, 9, 10] +``` + +```js +const countries = [ + 'Germany', + 'France', + 'Belgium', + 'Finland', + 'Sweden', + 'Norway', + 'Denmark', + 'Iceland', +] + +let [gem, fra, , ...nordicCountries] = countries + +console.log(gem) +console.log(fra) +console.log(nordicCountries) +``` + +```sh +Germany +France +["Finland", "Sweden", "Norway", "Denmark", "Iceland"] +``` + +##### Spread operator to copy array + +```js +const evens = [0, 2, 4, 6, 8, 10] +const evenNumbers = [...evens] + +const odds = [1, 3, 5, 7, 9] +const oddNumbers = [...odds] + +const wholeNumbers = [...evens, ...odds] + +console.log(evenNumbers) +console.log(oddNumbers) +console.log(wholeNumbers) +``` + +```sh +[0, 2, 4, 6, 8, 10] +[1, 3, 5, 7, 9] +[0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9] +``` + +```js +const frontEnd = ['HTML', 'CSS', 'JS', 'React'] +const backEnd = ['Node', 'Express', 'MongoDB'] +const fullStack = [...frontEnd, ...backEnd] + +console.log(fullStack) +``` + +```sh +["HTML", "CSS", "JS", "React", "Node", "Express", "MongoDB"] +``` + +##### Spread operator to copy object + +We can copy an object using a spread operator + +```js +const user = { + name: 'Asabeneh', + title: 'Programmer', + country: 'Finland', + city: 'Helsinki', +} + +const copiedUser = { ...user } +console.log(copiedUser) +``` + +```sh +{name: "Asabeneh", title: "Programmer", country: "Finland", city: "Helsinki"} +``` + +Modifying or changing the object while copying + +```js +const user = { + name: 'Asabeneh', + title: 'Programmer', + country: 'Finland', + city: 'Helsinki', +} + +const copiedUser = { ...user, title: 'instructor' } +console.log(copiedUser) +``` + +```sh +{name: "Asabeneh", title: "instructor", country: "Finland", city: "Helsinki"} +``` + +##### Spread operator with arrow function + +Whenever we like to write an arrow function which takes unlimited number of arguments we use a spread operator. If we use a spread operator as a parameter, the argument passed when we invoke a function will change to an array. + +```js +const sumAllNums = (...args) => { + console.log(args) +} + +sumAllNums(1, 2, 3, 4, 5) +``` + +```sh +[1, 2, 3, 4, 5] + +``` + +```js +const sumAllNums = (...args) => { + let sum = 0 + for (const num of args) { + sum += num + } + return sum +} + +console.log(sumAllNums(1, 2, 3, 4, 5)) +``` + +```sh +15 + +``` + +### 11. Functional Programming + +In this article, I will try to help you to have a very good understanding of the most common feature of JavaScript, _functional programming_. + +_Functional programming_ allows you to write shorter code, clean code, and also to solve complicated problems which might be difficult to solve in a traditional way. + +In this article we will cover all JS functional programming methods: + +- forEach +- map +- filter +- reduce +- find +- findIndex +- some +- every + +#### 1. forEach + +We use forEach when we like to iterate through an array of items. The forEach is a higher-order function and it takes call-back as a parameter. The forEach method is used only with array and we use forEach if you are interested in each item or index or both. + +```js +// syntax in a normal or a function declaration + +function callback(item, index, arr) {} +array.forEach(callback) + +// or syntax in an arrow function +const callback = (item, i, arr) => {} +array.forEach(callback) +``` + +The call back function could be a function declaration or an arrow function. + +Let see different examples + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] +countries.forEach(function (country, index, arr) { + console.log(i, country.toUpperCase()) +}) +``` + +If there is no much code inside the code block we can use an arrow function and we can write it without a curly bracket. The index and the array parameters are optional, we can omit them. + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] +countries.forEach((country, i) => console.log(i, country.toUpperCase())) +``` + +```sh +0 "FINLAND" +1 "ESTONIA" +2 "SWEDEN" +3 "NORWAY" +``` + +For example if we like to change each country to uppercase and store it back to an array we write it as follows. + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] +const newCountries = [] +countries.forEach((country) => newCountries.push(country)) + +console.log(newCountries) // ["Finland", "Estonia", "Sweden", "Norway"] +``` + +Let us see more examples. For instance if we want to sum an array of numbers we can use forEach or reduce. Let us see how we use forEach to sum all numbers in an array. + +```js +const numbers = [1, 2, 3, 4, 5] +let sum = 0 +numbers.forEach((n) => (sum += n)) + +console.log(sum) // 15 +``` + +Let us move to the next functional programming method which is going to be a map. + +#### 2. map + +We use the map method whenever we like to modify an array. We use the map method only with arrays and it always returns an array. + +```js +// syntax in a normal or a function declaration + +function callback(item, i) { + return // code goes here +} + +const modifiedArray = array.map(callback) + +// or syntax in an arrow function + +const callback = (item, i) => { + return // code goes here +} +const modifiedArray = array.map(callback) +``` + +Now, let us modify the countries array using the map method. The index is an optional parameter + +```js +// Using function declaration + +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] + +const newCountries = countries.map(function (country) { + return country.toUpperCase() +}) + +console.log(newCountries) + +// map using an arrow function call back + +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] +const newCountries = countries.map((country) => country.toUpperCase()) + +console.log(newCountries) // ["FINLAND", "ESTONIA", "SWEDEN", "NORWAY"] +``` + +As you can see that map is very handy to modify an array and to get an array back. Now, let us create an array of the length of the countries from the countries array. + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] +const countriesLength = countries.map((country) => country.length) + +console.log(countriesLength) // [7, 7, 6, 6] +``` + +Let us see another more example + +```js +const numbers = [1, 2, 3, 4, 5] +const squares = numbers.map((n) => n ** 2) + +console.log(squares) // [1, 4, 9, 16, 25] +``` + +#### 3. filter + +As you may understand from the literal meaning of filter, it filters out items based on some criteria. The filter method like forEach and map is used with an array and it returns an array of the filtered items. + +For instance if we want to filter out countries containing a substring land from an array of countries. See the example below: + +```js +// syntax in a normal or a function declaration +function callback(item) { + return // boolean +} + +const filteredArray = array.filter(callback) + +// or syntax in an arrow function + +const callback = (item) => { + return // boolean +} +const filteredArray = array.filter(callback) +``` + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] +const countriesWithLand = countries.filter((country) => + country.includes('land') +) +console.log(countriesWithLand) // ["Finland", "Iceland"] +``` + +How about if we want to filter out countries not containing the substring land. We use negation to achieve that. + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] +const countriesWithLand = countries.filter( + (country) => !country.includes('land') +) +console.log(countriesWithLand) // ["Estonia", "Sweden", "Norway"] +``` + +Let's see an additional example about the filter, let us filter even or odd numbers from an array of numbers + +```js +const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +const evens = numbers.filter((n) => n % 2 === 0) +const odds = numbers.filter((n) => n % 2 !== 0) +console.log(evens) // [0, 2, 4, 6, 8, 10] +console.log(odds) // [1, 3, 5, 7, 9] +``` + +Now, you know how to filter let us move on to the next functional programming, reduce. + +#### 4. reduce + +Like forEach, map, and filter, reduce is also used with an array and it returns a single value. You can associate reduce with a blender. You put different fruits to a blend and you get a mix of fruit juice. The juice is the output from the reduction process. + +We use the reduce method to sum all numbers in an array together, or to multiply items in an array or to concatenate items in an array. Let us see the following different example to make this explanation more clear. + +```js +// syntax in a normal or a function declaration + +function callback(acc, cur) { + return // code goes here +} + +const reduced = array.reduce(callback, optionalInitialValue) + +// or syntax in an arrow function + +const reduced = callback(acc, cur) => { + return // code goes here +} +const reduced = array.reduce(callback) +``` + +The default initial value is 0. We can change the initial value if we want to change it. + +For instance if we want to add all items in an array and if all the items are numbers we can use reduce. + +```js +const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +const sum = numbers.reduce((acc, cur) => acc + cur) +console.log(sum) // 55 +``` + +Reduce has a default initial value which is zero. Now, let us use a different initial value which is 5 in this case. + +```js +const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +const sum = numbers.reduce((acc, cur) => acc + cur, 5) +console.log(sum) // 60 +``` + +Let us concatenate strings using reduce + +```js +const strs = ['Hello', 'world', '!'] +const helloWorld = strs.reduce((acc, cur) => acc + ' ' + cur) +console.log(helloWorld) // "Hello world !" +``` + +We can multiply items of an array using reduce and we will return the value. + +```js +const numbers = [1, 2, 3, 4, 5] +const value = numbers.reduce((acc, cur) => acc * cur) +console.log(value) // 120 +``` + +Let us try it with an initial value + +```js +const numbers = [1, 2, 3, 4, 5] +const value = numbers.reduce((acc, cur) => acc * cur, 10) +console.log(value) // 1200 +``` + +#### 5. find + +If we are interested in the first occurrence of a certain item or element in an array we can use find method. Unlike map and filter, find just return the first occurrence of an item instead of an array. + +```js +// syntax in a normal or a function declaration + +function callback(item) { +return // code goes here +} + +const item = array.find(callback) + +// or syntax in an arrow function + +const reduced = callback(item) => { +return // code goes here +} +const item = array.find(callback) +``` + +Let find the first even number and the first odd number in the numbers array. + +```js +const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +const firstEvenNum = numbers.find((n) => n % 2 === 0) +const firstOddNum = numbers.find((n) => n % 2 !== 0) +console.log(firstEvenNum) // 0 +console.log(firstOddNum) // 1 +``` + +Let us find the first country which contains a substring way + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] +const countryWithWay = countries.find((country) => country.includes('way')) +console.log(countriesWithWay) // Norway +``` + +Let us find the first country which has only six characters + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] +const sixCharsCountry = countries.find((country) => country.length === 6) +console.log(sixCharsCountry) // Sweden +``` + +Let us find the first country in the array which has the letter 'o' + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] +const index = countries.find((country) => country.includes('o')) +console.log(index // Estonia +``` + +#### 6. findIndex + +The findIndex method works like find but findIndex returns the index of the item. If we are interested in the index of a certain item or element in an array we can use findIndex. The findIndex return the index of the first occurrence of an item. + +```js +// syntax in a normal or a function declaration + +function callback(item) { +return // code goes here +} + +const index = array.findIndex(callback) + +// or syntax in an arrow function + +const reduced = callback(item) => { +return // code goes here +} +const index = array.findIndex(callback) +``` + +Let us find the index of the first even number and the index of the first odd number in the numbers array. + +```js +const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +const firstEvenIndex = numbers.findIndex((n) => n % 2 === 0) +const firstOddIndex = numbers.findIndex((n) => n % 2 !== 0) +console.log(firstEvenIndex) // 0 +console.log(firstOddIndex) // 1 +``` + +Let us find the index of the first country in the array which has exactly six characters + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] +const index = countries.findIndex((country) => country.length === 6) +console.log(index //2 +``` + +Let us find the index of the first country in the array which has the letter 'o'. + +```js +const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] +const index = countries.findIndex((country) => country.includes('o')) +console.log(index // 1 +``` + +Let us move on to the next functional programming, some. + +#### 7. some + +The some method is used with array and return a boolean. If one or some of the items satisfy the criteria the result will be true else it will be false. Let us see it with an example. + +In the following array some numbers are even and some are odd, so if I ask you a question, are there even numbers in the array then your answer will be yes. If I ask you also another question, are there odd numbers in the array then your answer will be yes. On the contrary, if I ask you, are all the numbers even or odd then your answer will be no because all the numbers are not even or odd. + +```js +const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +const someAreEvens = numbers.some((n) => n % 2 === 0) +const someAreOdds = numbers.some((n) => n % 2 !== 0) +console.log(someAreEvens) // true +console.log(someAreOdds) // true +``` + +Let us another example + +```js +const evens = [0, 2, 4, 6, 8, 10] +const someAreEvens = evens.some((n) => n % 2 === 0) +const someAreOdds = evens.some((n) => n % 2 !== 0) +console.log(someAreEvens) // true +console.log(someAreOdds) // false +``` + +Now, let us see one more functional programming, every. + +#### 8. every + +The method every is somehow similar to some but every item must satisfy the criteria. The method every like some returns a boolean. + +```js + +const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +const allAreEvens = numbers.every((n) => n % 2 === 0) +const allAreOdd s= numbers.every((n) => n % 2 !== 0) + +console.log(allAreEven) // false +console.log(allAreOdd) // false + +const evens = [0, 2, 4, 6, 8, 10] +const someAreEvens = evens.some((n) => n % 2 === 0) +const someAreOdds = evens.some((n) => n % 2 !== 0) + +console.log(someAreEvens) // true +console.log(someAreOdds) // false +``` + +#### Exercises + +```js +const products = [ + { product: 'banana', price: 3 }, + { product: 'mango', price: 6 }, + { product: 'potato', price: ' ' }, + { product: 'avocado', price: 8 }, + { product: 'coffee', price: 10 }, + { product: 'tea', price: '' }, +] +``` + +1. Print the price of each product using forEach +2. Print the product items as follows using forEach + + ```sh + The price of banana is 3 euros. + The price of mango is 6 euros. + The price of potato is unknown. + The price of avocado is 8 euros. + The price of coffee is 10 euros. + The price of tea is unknown. + ``` + +3. Calculate the sum of all the prices using forEach +4. Create an array of prices using map and store it in a variable prices +5. Filter products with prices +6. Use method chaining to get the sum of the prices(map, filter, reduce) +7. Calculate the sum of all the prices using reduce only +8. Find the first product which doesn't have a price value +9. Find the index of the first product which does not have price value +10. Check if some products do not have a price value +11. Check if all the products have price value +12. Explain the difference between forEach, map, filter and reduce +13. Explain the difference between filter, find and findIndex +14. Explain the difference between some and every + +### 12. Classes + +JavaScript is an object oriented programming language. Everything in JavScript is an object, with its properties and methods. We create class to create an object. A Class is like an object constructor, or a "blueprint" for creating objects. We instantiate a class to create an object. The class defines attributes and the behavior of the object, while the object, on the other hand, represents the class. + +Once we create a class we can create object from it whenever we want. Creating an object from a class is called class instantiation. + +In the object section, we saw how to create an object literal. Object literal is a singleton. If we want to get a similar object , we have to write it. However, class allows to create many objects. This helps to reduce amount of code and repetition of code. + +#### Defining a classes + +To define a class in JavaScript we need the keyword _class_ , the name of a class in **CamelCase** and block code(two curly brackets). Let us create a class name Person. + +```sh +// syntax +class ClassName { + // code goes here +} + +``` + +**Example:** + +```js +class Person { + // code goes here +} +``` + +We have created an Person class but it does not have any thing inside. + +#### Class Instantiation + +Instantiation class means creating an object from a class. We need the keyword _new_ and we call the name of the class after the word new. + +Let us create a dog object from our Person class. + +```js +class Person { + // code goes here +} +const person = new Person() +console.log(person) +``` + +```sh +PersonΒ {} +``` + +As you can see, we have created a person object. Since the class did not have any properties yet the object is also empty. + +Let use the class constructor to pass different properties for the class. + +#### Class Constructor + +The constructor is a builtin function which allows as to create a blueprint for our object. The constructor function starts with a keyword constructor followed by a parenthesis. Inside the parenthesis we pass the properties of the object as parameter. We use the _this_ keyword to attach the constructor parameters with the class. + +The following Person class constructor has firstName and lastName property. These properties are attached to the Person class using _this_ keyword. _This_ refers to the class itself. + +```js +class Person { + constructor(firstName, lastName) { + console.log(this) // Check the output from here + this.firstName = firstName + this.lastName = lastName + } +} + +const person = new Person() + +console.log(person) +``` + +```sh +PersonΒ {firstName: undefined, lastName} +``` + +All the keys of the object are undefined. When ever we instantiate we should pass the value of the properties. Let us pass value at this time when we instantiate the class. + +```js +class Person { + constructor(firstName, lastName) { + this.firstName = firstName + this.lastName = lastName + } +} + +const person1 = new Person('Asabeneh', 'Yetayeh') + +console.log(person1) +``` + +```sh +PersonΒ {firstName: "Asabeneh", lastName: "Yetayeh"} +``` + +As we have stated at the very beginning that once we create a class we can create many object using the class. Now, let us create many person objects using the Person class. + +```js +class Person { + constructor(firstName, lastName) { + console.log(this) // Check the output from here + this.firstName = firstName + this.lastName = lastName + } +} + +const person1 = new Person('Asabeneh', 'Yetayeh') +const person2 = new Person('Lidiya', 'Tekle') +const person3 = new Person('Abraham', 'Yetayeh') + +console.log(person1) +console.log(person2) +console.log(person3) +``` + +```sh +PersonΒ {firstName: "Asabeneh", lastName: "Yetayeh"} +PersonΒ {firstName: "Lidiya", lastName: "Tekle"} +PersonΒ {firstName: "Abraham", lastName: "Yetayeh"} +``` + +Using the class Person we created three persons object. As you can see our class did not many properties let us add more properties to the class. + +```js +class Person { + constructor(firstName, lastName, age, country, city) { + console.log(this) // Check the output from here + this.firstName = firstName + this.lastName = lastName + this.age = age + this.country = country + this.city = city + } +} + +const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') + +console.log(person1) +``` + +```sh +PersonΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: 250, country: "Finland", city: "Helsinki"} +``` + +#### Default values with constructor + +The constructor function properties may have a default value like other regular functions. + +```js +class Person { + constructor( + firstName = 'Asabeneh', + lastName = 'Yetayeh', + age = 250, + country = 'Finland', + city = 'Helsinki' + ) { + this.firstName = firstName + this.lastName = lastName + this.age = age + this.country = country + this.city = city + } +} + +const person1 = new Person() // it will take the default values +const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') + +console.log(person1) +console.log(person2) +``` + +```sh +PersonΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: 250, country: "Finland", city: "Helsinki"} +PersonΒ {firstName: "Lidiya", lastName: "Tekle", age: 28, country: "Finland", city: "Espoo"} +``` + +#### Class methods + +The constructor inside a class is a builtin function which allow us to create a blueprint for the object. In a class we can create class methods. Methods are JavaScript functions inside the class. Let us create some class methods. + +```js +class Person { + constructor(firstName, lastName, age, country, city) { + this.firstName = firstName + this.lastName = lastName + this.age = age + this.country = country + this.city = city + } + getFullName() { + const fullName = this.firstName + ' ' + this.lastName + return fullName + } +} + +const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') +const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') + +console.log(person1.getFullName()) +console.log(person2.getFullName()) +``` + +```sh +Asabeneh Yetayeh +test.js:19 Lidiya Tekle +``` + +#### Properties with initial value + +When we create a class for some properties we may have an initial value. For instance if you are playing a game, you starting score will be zero. So, we may have a starting score or score which is zero. In other way, we may have an initial skill and we will acquire some skill after some time. + +```js +class Person { + constructor(firstName, lastName, age, country, city) { + this.firstName = firstName + this.lastName = lastName + this.age = age + this.country = country + this.city = city + this.score = 0 + this.skills = [] + } + getFullName() { + const fullName = this.firstName + ' ' + this.lastName + return fullName + } +} + +const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') +const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') + +console.log(person1.score) +console.log(person2.score) + +console.log(person1.skills) +console.log(person2.skills) +``` + +```sh +0 +0 +[] +[] +``` + +A method could be regular method or a getter or a setter. Let us see, getter and setter. + +#### getter + +The get method allow us to access value from the object. We write a get method using keyword _get_ followed by a function. Instead of accessing properties directly from the object we use getter to get the value. See the example bellow + +```js +class Person { + constructor(firstName, lastName, age, country, city) { + this.firstName = firstName + this.lastName = lastName + this.age = age + this.country = country + this.city = city + this.score = 0 + this.skills = [] + } + getFullName() { + const fullName = this.firstName + ' ' + this.lastName + return fullName + } + get getscore() { + return this.score + } + get getSkills() { + return this.skills + } +} + +const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') +const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') + +console.log(person1.getScore) // We do not need parenthesis to call a getter method +console.log(person2.getScore) + +console.log(person1.getSkills) +console.log(person2.getSkills) +``` + +```sh +0 +0 +[] +[] +``` + +#### setter + +The setter method allow us to modify the value of certain properties. We write a setter method using keyword _set_ followed by a function. See the example bellow. + +```js +class Person { + constructor(firstName, lastName, age, country, city) { + this.firstName = firstName + this.lastName = lastName + this.age = age + this.country = country + this.city = city + this.score = 0 + this.skills = [] + } + getFullName() { + const fullName = this.firstName + ' ' + this.lastName + return fullName + } + get getScore() { + return this.score + } + get getSkills() { + return this.skills + } + set setScore(score) { + this.score += score + } + set setSkill(skill) { + this.skills.push(skill) + } +} + +const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') +const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') + +person1.setScore = 1 +person1.setSkill = 'HTML' +person1.setSkill = 'CSS' +person1.setSkill = 'JavaScript' + +person2.setScore = 1 +person2.setSkill = 'Planning' +person2.setSkill = 'Managing' +person2.setSkill = 'Organizing' + +console.log(person1.score) +console.log(person2.score) + +console.log(person1.skills) +console.log(person2.skills) +``` + +```sh +1 +1 +["HTML", "CSS", "JavaScript"] +["Planning", "Managing", "Organizing"] +``` + +Do not be puzzled by the difference between regular method and a getter. If you know how to make a regular method you are good. Let us add regular method called getPersonInfo in the Person class. + +```js +class Person { + constructor(firstName, lastName, age, country, city) { + this.firstName = firstName + this.lastName = lastName + this.age = age + this.country = country + this.city = city + this.score = 0 + this.skills = [] + } + getFullName() { + const fullName = this.firstName + ' ' + this.lastName + return fullName + } + get getScore() { + return this.score + } + get getSkills() { + return this.skills + } + set setScore(score) { + this.score += score + } + set setSkill(skill) { + this.skills.push(skill) + } + getPersonInfo() { + let fullName = this.getFullName() + let skills = + this.skills.length > 0 && + this.skills.slice(0, this.skills.length - 1).join(', ') + + ` and ${this.skills[this.skills.length - 1]}` + let formattedSkills = skills ? `He knows ${skills}` : '' + + let info = `${fullName} is ${this.age}. He lives ${this.city}, ${this.country}. ${formattedSkills}` + return info + } +} + +const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') +const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') +const person3 = new Person('John', 'Doe', 50, 'Mars', 'Mars city') + +person1.setScore = 1 +person1.setSkill = 'HTML' +person1.setSkill = 'CSS' +person1.setSkill = 'JavaScript' + +person2.setScore = 1 +person2.setSkill = 'Planning' +person2.setSkill = 'Managing' +person2.setSkill = 'Organizing' + +console.log(person1.getScore) +console.log(person2.getScore) + +console.log(person1.getSkills) +console.log(person2.getSkills) +console.log(person3.getSkills) + +console.log(person1.getPersonInfo()) +console.log(person2.getPersonInfo()) +console.log(person3.getPersonInfo()) +``` + +```sh +1 +1 +["HTML", "CSS", "JavaScript"] +["Planning", "Managing", "Organizing"] +[] +Asabeneh Yetayeh is 250. He lives Helsinki, Finland. He knows HTML, CSS and JavaScript +Lidiya Tekle is 28. He lives Espoo, Finland. He knows Planning, Managing and Organizing +John Doe is 50. He lives Mars city, Mars. +``` + +#### Static method + +The static keyword defines a static method for a class. Static methods are not called on instances of the class. Instead, they are called on the class itself. These are often utility functions, such as functions to create or clone objects. An example of static method is _Date.now()_. The _now_ method is called directly from the class. + +```js +class Person { + constructor(firstName, lastName, age, country, city) { + this.firstName = firstName + this.lastName = lastName + this.age = age + this.country = country + this.city = city + this.score = 0 + this.skills = [] + } + getFullName() { + const fullName = this.firstName + ' ' + this.lastName + return fullName + } + get getScore() { + return this.score + } + get getSkills() { + return this.skills + } + set setScore(score) { + this.score += score + } + set setSkill(skill) { + this.skills.push(skill) + } + getPersonInfo() { + let fullName = this.getFullName() + let skills = + this.skills.length > 0 && + this.skills.slice(0, this.skills.length - 1).join(', ') + + ` and ${this.skills[this.skills.length - 1]}` + + let formattedSkills = skills ? `He knows ${skills}` : '' + + let info = `${fullName} is ${this.age}. He lives ${this.city}, ${this.country}. ${formattedSkills}` + return info + } + static favoriteSkill() { + const skills = ['HTML', 'CSS', 'JS', 'React', 'Python', 'Node'] + const index = Math.floor(Math.random() * skills.length) + return skills[index] + } + static showDateTime() { + let now = new Date() + let year = now.getFullYear() + let month = now.getMonth() + 1 + let date = now.getDate() + let hours = now.getHours() + let minutes = now.getMinutes() + if (hours < 10) { + hours = '0' + hours + } + if (minutes < 10) { + minutes = '0' + minutes + } + + let dateMonthYear = date + '.' + month + '.' + year + let time = hours + ':' + minutes + let fullTime = dateMonthYear + ' ' + time + return fullTime + } +} + +console.log(Person.favoriteSkill()) +console.log(Person.showDateTime()) +``` + +```sh +Node +15.1.2020 23:56 +``` + +The static methods are methods which can be used as utility functions. + +#### Inheritance + +Using inheritance we can access all the properties and the methods of the parent class. This reduces repetition of code. If you remember, we have a Person parent class and we will create children from it. Our children class could be student, teach etc. + +```js +// syntax +class ChildClassName extends { + // code goes here +} +``` + +Let us create a Student child class from Person parent class. + +```js +class Student extends Person { + saySomething() { + console.log('I am a child of the person class') + } +} + +const s1 = new Student('Asabeneh', 'Yetayeh', 'Finland', 250, 'Helsinki') +console.log(s1) +console.log(s1.saySomething()) +console.log(s1.getFullName()) +console.log(s1.getPersonInfo()) +``` + +```sh +StudentΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: "Finland", country: 250, city: "Helsinki", …} +I am a child of the person class +Asabeneh Yetayeh +StudentΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: "Finland", country: 250, city: "Helsinki", …} +Asabeneh Yetayeh is Finland. He lives Helsinki, 250. +``` + +#### Overriding methods + +As you can see, we manage to access all the methods in the Person Class and we used it in the Student child class. We can customize the parent methods, we can add additional properties to a child class. If we want to customize, the methods and if we want to add extra properties, we need to use the constructor function the child class too. In side the constructor function we call the super() function to access all the properties from the parent class. The Person class didn't have gender but now let us give gender property for the child class, Student. If the same method name used in the child class, the parent method will be overridden. + +```js +class Student extends Person { + constructor(firstName, lastName, age, country, city, gender) { + super(firstName, lastName, age, country, city) + this.gender = gender + } + + saySomething() { + console.log('I am a child of the person class') + } + getPersonInfo() { + let fullName = this.getFullName() + let skills = + this.skills.length > 0 && + this.skills.slice(0, this.skills.length - 1).join(', ') + + ` and ${this.skills[this.skills.length - 1]}` + + let formattedSkills = skills ? `He knows ${skills}` : '' + let pronoun = this.gender == 'Male' ? 'He' : 'She' + + let info = `${fullName} is ${this.age}. ${pronoun} lives in ${this.city}, ${this.country}. ${formattedSkills}` + return info + } +} + +const s1 = new Student( + 'Asabeneh', + 'Yetayeh', + 250, + 'Finland', + 'Helsinki', + 'Male' +) +const s2 = new Student('Lidiya', 'Tekle', 28, 'Finland', 'Helsinki', 'Female') +s1.setScore = 1 +s1.setSkill = 'HTML' +s1.setSkill = 'CSS' +s1.setSkill = 'JavaScript' + +s2.setScore = 1 +s2.setSkill = 'Planning' +s2.setSkill = 'Managing' +s2.setSkill = 'Organizing' + +console.log(s1) + +console.log(s1.saySomething()) +console.log(s1.getFullName()) +console.log(s1.getPersonInfo()) + +console.log(s2.saySomething()) +console.log(s2.getFullName()) +console.log(s2.getPersonInfo()) +``` + +```sh +StudentΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: 250, country: "Finland", city: "Helsinki", …} +StudentΒ {firstName: "Lidiya", lastName: "Tekle", age: 28, country: "Finland", city: "Helsinki", …} +I am a child of the person class +Asabeneh Yetayeh +StudentΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: 250, country: "Finland", city: "Helsinki", …} +Asabeneh Yetayeh is 250. He lives in Helsinki, Finland. He knows HTML, CSS and JavaScript +I am a child of the person class +Lidiya Tekle +StudentΒ {firstName: "Lidiya", lastName: "Tekle", age: 28, country: "Finland", city: "Helsinki", …} +Lidiya Tekle is 28. She lives in Helsinki, Finland. He knows Planning, Managing and Organizing +``` + +Now, the getPersonInfo method has been overridden and it identifies if the person is male or female. + +#### Exercises + +##### Exercises Level 1 + +1. Create an Animal class. The class will have name, age, color, legs properties and create different methods +2. Create a Dog and Cat child class from the Animal Class. + +##### Exercises Level 2 + +1. Override the method you create in Animal class + +##### Exercises Level 3 + +1. Let's try to develop a program which calculate measure of central tendency of a sample(mean, median, mode) and measure of variability(range, variance, standard deviation). In addition to those measures find the min, max, count, percentile, and frequency distribution of the sample. You can create a class called Statistics and create all the functions which do statistical calculations as method for the Statistics class. Check the output below. + +```JS +ages = [31, 26, 34, 37, 27, 26, 32, 32, 26, 27, 27, 24, 32, 33, 27, 25, 26, 38, 37, 31, 34, 24, 33, 29, 26] + +console.log('Count:', statistics.count()) // 25 +console.log('Sum: ', statistics.sum()) // 744 +console.log('Min: ', statistics.min()) // 24 +console.log('Max: ', statistics.max()) // 38 +console.log('Range: ', statistics.range() // 14 +console.log('Mean: ', statistics.mean()) // 30 +console.log('Median: ',statistics.median()) // 29 +console.log('Mode: ', statistics.mode()) // {'mode': 26, 'count': 5} +console.log('Variance: ',statistics.var()) // 17.5 +console.log('Standard Deviation: ', statistics.std()) // 4.2 +console.log('Variance: ',statistics.var()) // 17.5 +console.log('Frequency Distribution: ',statistics.freqDist()) // [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] +``` + +```sh +// you output should look like this +console.log(statistics.describe()) +Count: 25 +Sum: 744 +Min: 24 +Max: 38 +Range: 14 +Mean: 30 +Median: 29 +Mode: (26, 5) +Variance: 17.5 +Standard Deviation: 4.2 +Frequency Distribution: [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] +``` + +### 13 Document Object Model(DOM) + +HTML document is structured as a JavaScript Object. Every HTML element has a different properties which can help us to manipulate it. It is possible to get, create, append or remove HTML elements using JavaScript. + +When it comes to React we do not directly manipulate the DOM instead React Virtual DOM will take care of update all necessary changes. + +So do not directly manipulate the DOM if you are using react. The only place we directly touch the DOM is here at the index.html. React is a single page application because all the components will be rendered on the index.html page and there will not be any other HTML in the entire React Application. You don't have to know DOM very well to use react but recommended to know. + +```html + + + + + + React App + + + + +
+ + + + +``` + +Check out there result on [codepen](https://codepen.io/Asabeneh/full/vYGqQxP) + +πŸŒ• You are amazing! You have just completed day 1 challenge and you are on your way to greatness. Now you are a JavaScript Ninja and ready to dive into React. + +πŸŽ‰ CONGRATULATIONS ! πŸŽ‰ + +[<< Day 0](../readMe.md) | [Day 2 >>](../02_Day_Introduction_to_React/02_introduction_to_react.md) diff --git a/02_Day_Introduction_to_React/02_introduction_to_react.md b/02_Day_Introduction_to_React/02_introduction_to_react.md index 142c628..1699c96 100644 --- a/02_Day_Introduction_to_React/02_introduction_to_react.md +++ b/02_Day_Introduction_to_React/02_introduction_to_react.md @@ -15,7 +15,7 @@ -[<< Day 1](../readMe.md) | [Day 3 >>](../03_Day_Setting_Up/03_day_setting_up.md) +[<< Day 1](../01_Day_JavaScript_Refresher/01_javascript_refresher.md) | [Day 3 >>](../03_Day_Setting_Up/03_day_setting_up.md) ![30 Days of React banner](../images/30_days_of_react_banner_day_2.jpg) @@ -1607,4 +1607,4 @@ Now, you have a very good understanding of how to create JSX element and also ho πŸŽ‰ CONGRATULATIONS ! πŸŽ‰ -[<< Day 1](../readMe.md) | [Day 3 >>](../03_Day_Setting_Up/03_day_setting_up.md) +[<< Day 1](../01_Day_JavaScript_Refresher/01_javascript_refresher.md) | [Day 3 >>](../03_Day_Setting_Up/03_day_setting_up.md) diff --git a/readMe.md b/readMe.md index 49a9e48..f5c8089 100644 --- a/readMe.md +++ b/readMe.md @@ -2,25 +2,9 @@ -| # Day | Topics | -| ----- | :-----------------------------------------------------------------------------------------------------------------------------------: | -| 01 | [Introduction](#introduction)
[Requirements](#requirements)
[Setup](#setup)
[JavaScript Refresher](#javascript-refresher) | -| 02 | [Getting Started React](./02_Day_Introduction_to_React/02_introduction_to_react.md) | -| 03 | [Setting Up](./03_Day_Setting_Up/03_day_setting_up.md) | - -🧑🧑🧑 HAPPY CODING 🧑🧑🧑
-Support [**Asabeneh**](https://www.patreon.com/asabeneh?fan_landing=true) to create more educational materials -[become-asabeneh-patreon](https://www.patreon.com/asabeneh?fan_landing=true) - -
- -
- -
-
-

30 Days Of React: Introduction

+

30 Days Of React

@@ -29,13 +13,35 @@ Twitter Follow -Author:Asabeneh Yetayeh
+Author: Asabeneh Yetayeh
October, 2020
+| # Day | Topics | +| ----- | :--------------------------------------------------------------------------------------------------------------------------: | +| 00 | [Introduction](#introduction)
[How to Use Repo](#how-to-use-repo)
[Requirements](#requirements)
[Setup](#setup) | +| 01 | [JavaScript Refresher](./01_Day_JavaScript_Refresher/01_javascript_refresher.md) | +| 02 | [Getting Started React](./02_Day_Introduction_to_React/02_introduction_to_react.md) | +| 03 | [Setting Up](./03_Day_Setting_Up/03_day_setting_up.md) | + +🧑🧑🧑 HAPPY CODING 🧑🧑🧑
+Support [**Asabeneh**](https://www.patreon.com/asabeneh?fan_landing=true) to create more educational materials +[become-asabeneh-patreon](https://www.patreon.com/asabeneh?fan_landing=true) + +
+ +___ + - [Introduction](#introduction) - [Requirements](#requirements) +- [How to Use Repo](#how-to-use-repo) + - [Star and Fork this Repo](#star-and-fork-this-repo) + - [Clone your fork](#clone-your-fork) + - [Create a New Branch](#create-a-new-branch) + - [Structure Exercise Solutions](#structure-exercise-solutions) + - [Commit Exercise Solutions](#commit-exercise-solutions) + - [Update your Fork Daily](#update-your-fork-daily) - [Setup](#setup) - [Install Node.js](#install-nodejs) - [Browser](#browser) @@ -50,148 +56,8 @@ - [Code Editor](#code-editor) - [Installing Visual Studio Code](#installing-visual-studio-code) - [How to Use Visual Studio Code](#how-to-use-visual-studio-code) -- [Adding JavaScript to a Web Page](#adding-javascript-to-a-web-page) - - [Inline Script](#inline-script) - - [Internal Script](#internal-script) - - [External Script](#external-script) - - [Multiple External Scripts](#multiple-external-scripts) -- [JavaScript Refresher](#javascript-refresher) -- [1. Variables](#1-variables) -- [2. Data types](#2-data-types) -- [3. Arrays](#3-arrays) - - [How to create an empty array](#how-to-create-an-empty-array) - - [How to create an array with values](#how-to-create-an-array-with-values) - - [Creating an array using split](#creating-an-array-using-split) - - [Accessing array items using index](#accessing-array-items-using-index) - - [Modifying array element](#modifying-array-element) - - [Methods to manipulate array](#methods-to-manipulate-array) - - [Array Constructor](#array-constructor) - - [Creating static values with fill](#creating-static-values-with-fill) - - [Concatenating array using concat](#concatenating-array-using-concat) - - [Getting array length](#getting-array-length) - - [Getting index of an element in an array](#getting-index-of-an-element-in-an-array) - - [Getting last index of an element in array](#getting-last-index-of-an-element-in-array) - - [Checking array](#checking-array) - - [Converting array to string](#converting-array-to-string) - - [Joining array elements](#joining-array-elements) - - [Slice array elements](#slice-array-elements) - - [Splice method in array](#splice-method-in-array) - - [Adding item to an array using push](#adding-item-to-an-array-using-push) - - [Removing the end element using pop](#removing-the-end-element-using-pop) - - [Removing an element from the beginning](#removing-an-element-from-the-beginning) - - [Add an element from the beginning](#add-an-element-from-the-beginning) - - [Reversing array order](#reversing-array-order) - - [Sorting elements in array](#sorting-elements-in-array) - - [Array of arrays](#array-of-arrays) - - [πŸ’» Exercise](#-exercise) - - [Exercise: Level 1](#exercise-level-1) - - [Exercise: Level 2](#exercise-level-2) - - [Exercise: Level 3](#exercise-level-3) -- [4. Conditionals](#4-conditionals) - - [If](#if) - - [If Else](#if-else) - - [If Else if Else](#if-else-if-else) - - [Switch](#switch) - - [Ternary Operators](#ternary-operators) - - [πŸ’» Exercises](#-exercises) - - [Exercises: Level 1](#exercises-level-1) - - [Exercises: Level 2](#exercises-level-2) - - [Exercises: Level 3](#exercises-level-3) -- [5. Loops](#5-loops) - - [Types of Loops](#types-of-loops) - - [1. for](#1-for) - - [2. while](#2-while) - - [3. do while](#3-do-while) - - [4. for of](#4-for-of) - - [5. forEach](#5-foreach) - - [6. for in](#6-for-in) - - [Interrupting a loop and skipping an item](#interrupting-a-loop-and-skipping-an-item) - - [break](#break) - - [continue](#continue) - - [Conclusions](#conclusions) -- [6. Scope](#6-scope) - - [Window Scope](#window-scope) - - [Global scope](#global-scope) - - [Local scope](#local-scope) -- [7. Object](#7-object) - - [Creating an empty object](#creating-an-empty-object) - - [Creating an objecting with values](#creating-an-objecting-with-values) - - [Getting values from an object](#getting-values-from-an-object) - - [Creating object methods](#creating-object-methods) - - [Setting new key for an object](#setting-new-key-for-an-object) - - [Object Methods](#object-methods) - - [Getting object keys using Object.keys()](#getting-object-keys-using-objectkeys) - - [Getting object values using Object.values()](#getting-object-values-using-objectvalues) - - [Getting object keys and values using Object.entries()](#getting-object-keys-and-values-using-objectentries) - - [Checking properties using hasOwnProperty()](#checking-properties-using-hasownproperty) - - [πŸ’» Exercises](#-exercises-1) - - [Exercises: Level 1](#exercises-level-1-1) - - [Exercises: Level 2](#exercises-level-2-1) - - [Exercises: Level 3](#exercises-level-3-1) -- [8. Functions](#8-functions) - - [Function Declaration](#function-declaration) - - [Function without a parameter and return](#function-without-a-parameter-and-return) - - [Function returning value](#function-returning-value) - - [Function with a parameter](#function-with-a-parameter) - - [Function with two parameters](#function-with-two-parameters) - - [Function with many parameters](#function-with-many-parameters) - - [Function with unlimited number of parameters](#function-with-unlimited-number-of-parameters) - - [Unlimited number of parameters in regular function](#unlimited-number-of-parameters-in-regular-function) - - [Unlimited number of parameters in arrow function](#unlimited-number-of-parameters-in-arrow-function) - - [Anonymous Function](#anonymous-function) - - [Expression Function](#expression-function) - - [Self Invoking Functions](#self-invoking-functions) - - [Arrow Function](#arrow-function) - - [Function with default parameters](#function-with-default-parameters) - - [Function declaration versus Arrow function](#function-declaration-versus-arrow-function) - - [πŸ’» Exercises](#-exercises-2) - - [Exercises: Level 1](#exercises-level-1-2) - - [Exercises: Level 2](#exercises-level-2-2) - - [Exercises: Level 3](#exercises-level-3-2) -- [9. Higher Order Function](#9-higher-order-function) - - [Callback](#callback) - - [Returning function](#returning-function) - - [setting time](#setting-time) - - [setInterval](#setinterval) - - [setTimeout](#settimeout) -- [10. Destructuring and Spreading](#10-destructuring-and-spreading) - - [What is Destructuring?](#what-is-destructuring) - - [What can we destructure?](#what-can-we-destructure) - - [1. Destructuring arrays](#1-destructuring-arrays) - - [2. Destructuring objects](#2-destructuring-objects) - - [Exercises](#exercises) - - [Spread or Rest Operator](#spread-or-rest-operator) - - [Spread operator to get the rest of array elements](#spread-operator-to-get-the-rest-of-array-elements) - - [Spread operator to copy array](#spread-operator-to-copy-array) - - [Spread operator to copy object](#spread-operator-to-copy-object) - - [Spread operator with arrow function](#spread-operator-with-arrow-function) -- [11. Functional Programming](#11-functional-programming) - - [1. forEach](#1-foreach) - - [2. map](#2-map) - - [3. filter](#3-filter) - - [4. reduce](#4-reduce) - - [5. find](#5-find) - - [6. findIndex](#6-findindex) - - [7. some](#7-some) - - [8. every](#8-every) - - [Exercises](#exercises-1) -- [12. Classes](#12-classes) - - [Defining a classes](#defining-a-classes) - - [Class Instantiation](#class-instantiation) - - [Class Constructor](#class-constructor) - - [Default values with constructor](#default-values-with-constructor) - - [Class methods](#class-methods) - - [Properties with initial value](#properties-with-initial-value) - - [getter](#getter) - - [setter](#setter) - - [Static method](#static-method) - - [Inheritance](#inheritance) - - [Overriding methods](#overriding-methods) - - [Exercises](#exercises-2) - - [Exercises Level 1](#exercises-level-1-3) - - [Exercises Level 2](#exercises-level-2-3) - - [Exercises Level 3](#exercises-level-3-3) -- [13 Document Object Model(DOM)](#13-document-object-modeldom) + +___ ## Introduction @@ -216,6 +82,77 @@ To get along with the challenge you need to have the following: 5. A code editor 6. HTML, CSS and JavaScript intermediate level skill +## How to Use Repo + +### Star and Fork this Repo + +Star this repo to support this work and Fork the repo to create your own copy to work from. + +### Clone your Fork + +You should always work directly from your forked copy. + +```bash +# note that an `ssh` link is used here, but an `https` link will work the same +git clone git@github.com:username/30-Days-Of-React.git +cd 30-Days-Of-React +``` + +### Create a New Branch + +To complete daily exercises, my suggestion is to create a separate branch to house your exercise folder or any other changes you make. This will keep your master branch clean at all times, which means your master will always be similar to the original master. + +```bash +git checkout -b exercise-solutions # `-b` creates the branch if it does not exist +``` + +### Structure Exercise Solutions + +In your new branch, you can use files/folders to structure your solutions to daily exercises + +```bash +mkdir -p solutions/day-01 # `-p` helps create nested directories +touch solutions/day-01/level1.js # touch creates a file +``` + +### Commit Excercise Solutions + +Commit your solutions to your Fork + +```bash +git add solutions/day-01/level1.js +git commit -m "chore: exercise level1 complete" +git push origin exercise-solutions # branch `exercise-solutions` was created earlier +``` + +### Update your Fork Daily + +This repo will be updated daily throughout the month. When a new day's content becomes available, you can update your forked copy with the steps below. + +```bash +# 1. switch to master branch +git checkout master +# 2. check if your local copy has a link to original `...Asabeneh/30-Days-Of-React.git` +git remote -v +# 3. if not, add a link to original, you can choose any name for the link or use `upstream` +git remote add upstream git@github.com:Asabeneh/30-Days-Of-React.git +# 4. check again to confirm link added +git remote -v +# 5. now you can fetch updates from original repo, assuming you named this `upstream` +git fetch upstream +# 6. merge the updates to your local master branch +git merge upstream/master master +# 7. push the merged updates to your Forked copy on GitHub +git push origin master +``` + +> Note that the updates are only applied to the master branch. If you wish to update any other branch, repeat steps 6-7 with the branch name. See snippet below for `exercise-solutions` branch + +```bash +git merge upstream/master exercise-solutions +git push origin exercise-solutions +``` + ## Setup I believe you have the motivation and a strong desire to be a developer, a computer and Internet.In addition to that basic to intermidate lelev HTML, CSS and JS. If you have those, then you have everything to get started. @@ -393,4364 +330,8 @@ Open the Visual Studio Code by double-clicking its icon. When you open it, you w ![coding running](./images/launched_on_new_tab.png) -## Adding JavaScript to a Web Page - -JavaScript can be added to a web page in three different ways: - -- **_Inline script_** -- **_Internal script_** -- **_External script_** -- **_Multiple External scripts_** - -The following sections show different ways of adding JavaScript code to your web page. - -### Inline Script - -Create a project folder on your desktop or in any location, name it 30DaysOfJS and create an **_index.html_** file in the project folder. Then paste the following code and open it in a browser, for example [Chrome](https://www.google.com/chrome/). - -```html - - - - 30DaysOfScript:Inline Script - - - - - -``` - -Now, you just wrote your first inline script. We can create a pop up alert message using the _alert()_ built-in function. - -### Internal Script - -The internal script can be written in the _head_ or the _body_, but it is preferred to put it on the body of the HTML document. -First, let us write on the head part of the page. - -```html - - - - 30DaysOfScript:Internal Script - - - - -``` - -This is how we write an internal script most of the time. Writing the JavaScript code in the body section is the most preferred option. Open the browser console to see the output from the console.log() - -```html - - - - 30DaysOfScript:Internal Script - - - - - - -``` - -Open the browser console to see the output from the console.log() - -![js code from vscode](./images/js_code_vscode.png) - -### External Script - -Similar to the internal script, the external script link can be on the header or body, but it is preferred to put it in the body. -First, we should create an external JavaScript file with .js extension. All files ending with .js extension. All files ending with .js extension are JavaScript files. Create a file named introduction.js inside your project directory and write the following code and link this .js file at the bottom of the body. - -```js -console.log('Welcome to 30DaysOfJavaScript') -``` - -External scripts in the _head_: - -```html - - - - 30DaysOfJavaScript:External script - - - - -``` - -External scripts in the _body_: - -```html - - - - 30DaysOfJavaScript:External script - - - //it could be in the header or in the body // Here is the recommended place - to put the external script - - - -``` - -Open the browser console to see the output of the console.log() - -### Multiple External Scripts - -We can also link multiple external JavaScript files to a web page. -Create a helloworld.js file inside the 30DaysOfJS folder and write the following code. - -```js -console.log('Hello, World!') -``` - -```html - - - - Multiple External Scripts - - - - - - -``` - -_Your main.js file should be below all other scripts_. It is very important to remember this. - -![Multiple Script](./images/multiple_script.png) - -Congratulations! You have completed the setup you need to get started with React, but before we dive into React let's do JavaScript refresher. If you are very comfortable with JavaScript you may skip the JavaScript refresher. The JavaScript refresh section is vast and it may take more than one day. From my experience people usually get stuck in React because their JavaScript knowledge is very shallow therefore to fill that gap all the necessary JavaScript feature which can be use in React are covered in the JavaScript refresher. In the JavaScript refresher there are many questions and you are not required to solve them. Click [here](../30-Days-Of-React/02_Day_Introduction_to_React/02_introduction_to_react.md) if you want to jump into React. - -## JavaScript Refresher - -## 1. Variables - -We use _var_, _let_ and _const_ to declare a variable. The _var_ is functions scope, however _let_ and _const_ are block scope. In this challenge we use ES6 and above features of JavaScript. Avoid using _var_. - -```js -let firstName = 'Asabeneh' -firstName = 'Eyob' - -const PI = 3.14 // Not allowed to reassign PI to a new value -// PI = 3. -``` - -## 2. Data types - -If you do not feel comfortable with data types check the following [link](https://github.com/Asabeneh/30-Days-Of-JavaScript/blob/master/02_Day_Data_types/02_day_data_types.md) - -## 3. Arrays - -In contrast to variables, an array can store _multiple values_. Each value in an array has an _index_, and each index has _a reference in a memory address_. Each value can be accessed by using their _indexes_. The index of an array starts from _zero_, and the index of the last element is less by one from the length of the array. - -An array is a collection of different data types which are ordered and changeable(modifiable). An array allows storing duplicate elements and different data types. An array can be empty, or it may have different data type values. - -### How to create an empty array - -In JavaScript, we can create an array in different ways. Let us see different ways to create an array. -It is very common to use _const_ instead of _let_ to declare an array variable. If you ar using const it means you do not use that variable name again. - -- Using Array constructor - -```js -// syntax -const arr = Array() -// or -// let arr = new Array() -console.log(arr) // [] -``` - -- Using square brackets([]) - -```js -// syntax -// This the most recommended way to create an empty list -const arr = [] -console.log(arr) -``` - -### How to create an array with values - -Array with initial values. We use _length_ property to find the length of an array. - -```js -const numbers = [0, 3.14, 9.81, 37, 98.6, 100] // array of numbers -const fruits = ['banana', 'orange', 'mango', 'lemon'] // array of strings, fruits -const vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] // array of strings, vegetables -const animalProducts = ['milk', 'meat', 'butter', 'yoghurt'] // array of strings, products -const webTechs = ['HTML', 'CSS', 'JS', 'React', 'Redux', 'Node', 'MongDB'] // array of web technologies -const countries = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland'] // array of strings, countries - -// Print the array and its length - -console.log('Numbers:', numbers) -console.log('Number of numbers:', numbers.length) - -console.log('Fruits:', fruits) -console.log('Number of fruits:', fruits.length) - -console.log('Vegetables:', vegetables) -console.log('Number of vegetables:', vegetables.length) - -console.log('Animal products:', animalProducts) -console.log('Number of animal products:', animalProducts.length) - -console.log('Web technologies:', webTechs) -console.log('Number of web technologies:', webTechs.length) - -console.log('Countries:', countries) -console.log('Number of countries:', countries.length) -``` - -```sh -Numbers: [0, 3.14, 9.81, 37, 98.6, 100] -Number of numbers: 6 -Fruits: ['banana', 'orange', 'mango', 'lemon'] -Number of fruits: 4 -Vegetables: ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] -Number of vegetables: 5 -Animal products: ['milk', 'meat', 'butter', 'yoghurt'] -Number of animal products: 4 -Web technologies: ['HTML', 'CSS', 'JS', 'React', 'Redux', 'Node', 'MongDB'] -Number of web technologies: 7 -Countries: ['Finland', 'Estonia', 'Denmark', 'Sweden', 'Norway'] -Number of countries: 5 -``` - -- Array can have items of different data types - -```js -const arr = [ - 'Asabeneh', - 250, - true, - { country: 'Finland', city: 'Helsinki' }, - { skills: ['HTML', 'CSS', 'JS', 'React', 'Python'] }, -] // arr containing different data types -console.log(arr) -``` - -### Creating an array using split - -As we have seen in the earlier section, we can split a string at different positions, and we can change to an array. Let us see the examples below. - -```js -let js = 'JavaScript' -const charsInJavaScript = js.split('') - -console.log(charsInJavaScript) // ["J", "a", "v", "a", "S", "c", "r", "i", "p", "t"] - -let companiesString = 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon' -const companies = companiesString.split(',') - -console.log(companies) // ["Facebook", " Google", " Microsoft", " Apple", " IBM", " Oracle", " Amazon"] -let txt = - 'I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.' -const words = txt.split(' ') - -console.log(words) -// the text has special characters think how you can just get only the words -// ["I", "love", "teaching", "and", "empowering", "people.", "I", "teach", "HTML,", "CSS,", "JS,", "React,", "Python"] -``` - -### Accessing array items using index - -We access each element in an array using their index. An array index starts from 0. The picture below clearly shows the index of each element in the array. - -![arr index](./images/array_index.png) - -```js -const fruits = ['banana', 'orange', 'mango', 'lemon'] -let firstFruit = fruits[0] // we are accessing the first item using its index - -console.log(firstFruit) // banana - -secondFruit = fruits[1] -console.log(secondFruit) // orange - -let lastFruit = fruits[3] -console.log(lastFruit) // lemon -// Last index can be calculated as follows - -let lastIndex = fruits.length - 1 -lastFruit = fruits[lastIndex] - -console.log(lastFruit) // lemon -``` - -```js -const numbers = [0, 3.14, 9.81, 37, 98.6, 100] // set of numbers - -console.log(numbers.length) // => to know the size of the array, which is 6 -console.log(numbers) // -> [0, 3.14, 9.81, 37, 98.6, 100] -console.log(numbers[0]) // -> 0 -console.log(numbers[5]) // -> 100 - -let lastIndex = numbers.length - 1 -console.log(numbers[lastIndex]) // -> 100 -``` - -```js -const webTechs = [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Redux', - 'Node', - 'MongoDB', -] // List of web technologies - -console.log(webTechs) // all the array items -console.log(webTechs.length) // => to know the size of the array, which is 7 -console.log(webTechs[0]) // -> HTML -console.log(webTechs[6]) // -> MongoDB - -let lastIndex = webTechs.length - 1 -console.log(webTechs[lastIndex]) // -> MongoDB -``` - -```js -const countries = [ - 'Albania', - 'Bolivia', - 'Canada', - 'Denmark', - 'Ethiopia', - 'Finland', - 'Germany', - 'Hungary', - 'Ireland', - 'Japan', - 'Kenya', -] // List of countries - -console.log(countries) // -> all countries in array -console.log(countries[0]) // -> Albania -console.log(countries[10]) // -> Kenya - -let lastIndex = countries.length - 1 -console.log(countries[lastIndex]) // -> Kenya -``` - -```js -const shoppingCart = [ - 'Milk', - 'Mango', - 'Tomato', - 'Potato', - 'Avocado', - 'Meat', - 'Eggs', - 'Sugar', -] // List of food products - -console.log(shoppingCart) // -> all shoppingCart in array -console.log(shoppingCart[0]) // -> Milk -console.log(shoppingCart[7]) // -> Sugar - -let lastIndex = shoppingCart.length - 1 -console.log(shoppingCart[lastIndex]) // -> Sugar -``` - -### Modifying array element - -An array is mutable(modifiable). Once an array is created, we can modify the contents of the array elements. - -```js -const numbers = [1, 2, 3, 4, 5] -numbers[0] = 10 // changing 1 at index 0 to 10 -numbers[1] = 20 // changing 2 at index 1 to 20 - -console.log(numbers) // [10, 20, 3, 4, 5] - -const countries = [ - 'Albania', - 'Bolivia', - 'Canada', - 'Denmark', - 'Ethiopia', - 'Finland', - 'Germany', - 'Hungary', - 'Ireland', - 'Japan', - 'Kenya', -] - -countries[0] = 'Afghanistan' // Replacing Albania by Afghanistan -let lastIndex = countries.length - 1 -countries[lastIndex] = 'Korea' // Replacing Kenya by Korea - -console.log(countries) -``` - -```sh -["Afghanistan", "Bolivia", "Canada", "Denmark", "Ethiopia", "Finland", "Germany", "Hungary", "Ireland", "Japan", "Korea"] -``` - -### Methods to manipulate array - -There are different methods to manipulate an array. These are some of the available methods to deal with arrays:_Array, length, concat, indexOf, slice, splice, join, toString, includes, lastIndexOf, isArray, fill, push, pop, shift, unshift_ - -#### Array Constructor - -Array:To create an array. - -```js -const arr = Array() // creates an an empty array -console.log(arr) - -const eightEmptyValues = Array(8) // it creates eight empty values -console.log(eightEmptyValues) // [empty x 8] -``` - -#### Creating static values with fill - -fill: Fill all the array elements with a static value - -```js -const arr = Array() // creates an an empty array -console.log(arr) - -const eightXvalues = Array(8).fill('X') // it creates eight element values filled with 'X' -console.log(eightXvalues) // ['X', 'X','X','X','X','X','X','X'] - -const eight0values = Array(8).fill(0) // it creates eight element values filled with '0' -console.log(eight0values) // [0, 0, 0, 0, 0, 0, 0, 0] - -const four4values = Array(4).fill(4) // it creates 4 element values filled with '4' -console.log(four4values) // [4, 4, 4, 4] -``` - -#### Concatenating array using concat - -concat:To concatenate two arrays. - -```js -const firstList = [1, 2, 3] -const secondList = [4, 5, 6] -const thirdList = firstList.concat(secondList) - -console.log(thirdList) // [1, 2, 3, 4, 5, 6] -``` - -```js -const fruits = ['banana', 'orange', 'mango', 'lemon'] // array of fruits -const vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] // array of vegetables -const fruitsAndVegetables = fruits.concat(vegetables) // concatenate the two arrays - -console.log(fruitsAndVegetables) -``` - -```sh -["banana", "orange", "mango", "lemon", "Tomato", "Potato", "Cabbage", "Onion", "Carrot"] -``` - -#### Getting array length - -Length:To know the size of the array - -```js -const numbers = [1, 2, 3, 4, 5] -console.log(numbers.length) // -> 5 is the size of the array -``` - -#### Getting index of an element in an array - -indexOf:To check if an item exist in an array. If it exists it returns the index else it returns -1. - -```js -const numbers = [1, 2, 3, 4, 5] - -console.log(numbers.indexOf(5)) // -> 4 -console.log(numbers.indexOf(0)) // -> -1 -console.log(numbers.indexOf(1)) // -> 0 -console.log(numbers.indexOf(6)) // -> -1 -``` - -Check an element if it exist in an array. - -- Check items in a list - -```js -// let us check if a banana exist in the array - -const fruits = ['banana', 'orange', 'mango', 'lemon'] -let index = fruits.indexOf('banana') // 0 - -if (index != -1) { - console.log('This fruit does exist in the array') -} else { - console.log('This fruit does not exist in the array') -} -// This fruit does exist in the array - -// we can use also ternary here -index != -1 - ? console.log('This fruit does exist in the array') - : console.log('This fruit does not exist in the array') - -// let us check if a avocado exist in the array -let indexOfAvocado = fruits.indexOf('avocado') // -1, if the element not found index is -1 -if (indexOfAvocado != -1) { - console.log('This fruit does exist in the array') -} else { - console.log('This fruit does not exist in the array') -} -// This fruit does not exist in the array -``` - -#### Getting last index of an element in array - -lastIndexOf: It gives the position of the last item in the array. If it exist, it returns the index else it returns -1. - -```js -const numbers = [1, 2, 3, 4, 5, 3, 1, 2] - -console.log(numbers.lastIndexOf(2)) // 7 -console.log(numbers.lastIndexOf(0)) // -1 -console.log(numbers.lastIndexOf(1)) // 6 -console.log(numbers.lastIndexOf(4)) // 3 -console.log(numbers.lastIndexOf(6)) // -1 -``` - -includes:To check if an item exist in an array. If it exist it returns the true else it returns false. - -```js -const numbers = [1, 2, 3, 4, 5] - -console.log(numbers.includes(5)) // true -console.log(numbers.includes(0)) // false -console.log(numbers.includes(1)) // true -console.log(numbers.includes(6)) // false - -const webTechs = [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Redux', - 'Node', - 'MongoDB', -] // List of web technologies - -console.log(webTechs.includes('Node')) // true -console.log(webTechs.includes('C')) // false -``` - -#### Checking array - -Array.isArray:To check if the data type is an array - -```js -const numbers = [1, 2, 3, 4, 5] -console.log(Array.isArray(numbers)) // true - -const number = 100 -console.log(Array.isArray(number)) // false -``` - -#### Converting array to string - -toString:Converts array to string - -```js -const numbers = [1, 2, 3, 4, 5] -console.log(numbers.toString()) // 1,2,3,4,5 - -const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook'] -console.log(names.toString()) // Asabeneh,Mathias,Elias,Brook -``` - -#### Joining array elements - -join: It is used to join the elements of the array, the argument we passed in the join method will be joined in the array and return as a string. By default, it joins with a comma, but we can pass different string parameter which can be joined between the items. - -```js -const numbers = [1, 2, 3, 4, 5] -console.log(numbers.join()) // 1,2,3,4,5 - -const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook'] - -console.log(names.join()) // Asabeneh,Mathias,Elias,Brook -console.log(names.join('')) //AsabenehMathiasEliasBrook -console.log(names.join(' ')) //Asabeneh Mathias Elias Brook -console.log(names.join(', ')) //Asabeneh, Mathias, Elias, Brook -console.log(names.join(' # ')) //Asabeneh # Mathias # Elias # Brook - -const webTechs = [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Redux', - 'Node', - 'MongoDB', -] // List of web technologies - -console.log(webTechs.join()) // "HTML,CSS,JavaScript,React,Redux,Node,MongoDB" -console.log(webTechs.join(' # ')) // "HTML # CSS # JavaScript # React # Redux # Node # MongoDB" -``` - -#### Slice array elements - -Slice: To cut out a multiple items in range. It takes two parameters:starting and ending position. It doesn't include the ending position. - -```js -const numbers = [1, 2, 3, 4, 5] - -console.log(numbers.slice()) // -> it copies all item -console.log(numbers.slice(0)) // -> it copies all item -console.log(numbers.slice(0, numbers.length)) // it copies all item -console.log(numbers.slice(1, 4)) // -> [2,3,4] // it doesn't include the ending position -``` - -#### Splice method in array - -Splice: It takes three parameters:Starting position, number of times to be removed and number of items to be added. - -```js -const numbers = [1, 2, 3, 4, 5] - -console.log(numbers.splice()) // -> remove all items -``` - -```js -const numbers = [1, 2, 3, 4, 5] -console.log(numbers.splice(0, 1)) // remove the first item -``` - -```js -const numbers = [1, 2, 3, 4, 5, 6] -console.log(numbers.splice(3, 3, 7, 8, 9)) // -> [1, 2, 3, 7, 8, 9] //it removes three item and replace three items -``` - -#### Adding item to an array using push - -Push: adding item in the end. To add item to the end of an existing array we use the push method. - -```js -// syntax -const arr = ['item1', 'item2', 'item3'] -arr.push('new item') - -console.log(arr) -// ['item1', 'item2','item3','new item'] -``` - -```js -const numbers = [1, 2, 3, 4, 5] -numbers.push(6) - -console.log(numbers) // -> [1,2,3,4,5,6] - -numbers.pop() // -> remove one item from the end -console.log(numbers) // -> [1,2,3,4,5] -``` - -```js -let fruits = ['banana', 'orange', 'mango', 'lemon'] -fruits.push('apple') - -console.log(fruits) // ['banana', 'orange', 'mango', 'lemon', 'apple'] - -fruits.push('lime') -console.log(fruits) // ['banana', 'orange', 'mango', 'lemon', 'apple', 'lime'] -``` - -#### Removing the end element using pop - -pop: Removing item in the end. - -```js -const numbers = [1, 2, 3, 4, 5] -numbers.pop() // -> remove one item from the end - -console.log(numbers) // -> [1,2,3,4] -``` - -#### Removing an element from the beginning - -shift: Removing one array element in the beginning of the array. - -```js -const numbers = [1, 2, 3, 4, 5] -numbers.shift() // -> remove one item from the beginning - -console.log(numbers) // -> [2,3,4,5] -``` - -#### Add an element from the beginning - -unshift: Adding array element in the beginning of the array. - -```js -const numbers = [1, 2, 3, 4, 5] -numbers.unshift(0) // -> add one item from the beginning - -console.log(numbers) // -> [0,1,2,3,4,5] -``` - -#### Reversing array order - -reverse: reverse the order of an array. - -```js -const numbers = [1, 2, 3, 4, 5] -numbers.reverse() // -> reverse array order - -console.log(numbers) // [5, 4, 3, 2, 1] - -numbers.reverse() -console.log(numbers) // [1, 2, 3, 4, 5] -``` - -#### Sorting elements in array - -sort: arrange array elements in ascending order. Sort takes a call back function, we will see how we use sort with a call back function in the coming sections. - -```js -const webTechs = [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Redux', - 'Node', - 'MongoDB', -] - -webTechs.sort() -console.log(webTechs) // ["CSS", "HTML", "JavaScript", "MongoDB", "Node", "React", "Redux"] - -webTechs.reverse() // after sorting we can reverse it -console.log(webTechs) // ["Redux", "React", "Node", "MongoDB", "JavaScript", "HTML", "CSS"] -``` - -### Array of arrays - -Array can store different data types including an array itself. Let us create an array of arrays - -```js -const firstNums = [1, 2, 3] -const secondNums = [1, 4, 9] - -const arrayOfArray = [ - [1, 2, 3], - [1, 2, 3], -] -console.log(arrayOfArray[0]) // [1, 2, 3] - -const frontEnd = ['HTML', 'CSS', 'JS', 'React', 'Redux'] -const backEnd = ['Node', 'Express', 'MongoDB'] -const fullStack = [frontEnd, backEnd] -console.log(fullStack) // [["HTML", "CSS", "JS", "React", "Redux"], ["Node", "Express", "MongoDB"]] -console.log(fullStack.length) // 2 -console.log(fullStack[0]) // ["HTML", "CSS", "JS", "React", "Redux"] -console.log(fullStack[1]) // ["Node", "Express", "MongoDB"] -``` - -### πŸ’» Exercise - -#### Exercise: Level 1 - -```js -const countries = [ - 'Albania', - 'Bolivia', - 'Canada', - 'Denmark', - 'Ethiopia', - 'Finland', - 'Germany', - 'Hungary', - 'Ireland', - 'Japan', - 'Kenya', -] - -const webTechs = [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Redux', - 'Node', - 'MongoDB', -] -``` - -1. Declare an _empty_ array; -2. Declare an array with more than 5 number of elements -3. Find the length of your array -4. Get the first item, the middle item and the last item of the array -5. Declare an array called _mixedDataTypes_, put different data types in the array and find the length of the array. The array size should be greater than 5 -6. Declare an array variable name itCompanies and assign initial values Facebook, Google, Microsoft, Apple, IBM, Oracle and Amazon -7. Print the array using _console.log()_ -8. Print the number of companies in the array -9. Print the first company, middle and last company -10. Print out each company -11. Change each company name to uppercase one by one and print them out -12. Print the array like as a sentence: Facebook, Google, Microsoft, Apple, IBM,Oracle and Amazon are big IT companies. -13. Check if a certain company exists in the itCompanies array. If it exist return the company else return a company is _not found_ -14. Filter out companies which have more than one 'o' without the filter method -15. Sort the array using _sort()_ method -16. Reverse the array using _reverse()_ method -17. Slice out the first 3 companies from the array -18. Slice out the last 3 companies from the array -19. Slice out the middle IT company or companies from the array -20. Remove the first IT company from the array -21. Remove the middle IT company or companies from the array -22. Remove the last IT company from the array -23. Remove all IT companies - -#### Exercise: Level 2 - -1. Create a separate countries.js file and store the countries array into this file, create a separate file web_techs.js and store the webTechs array into this file. Access both file in main.js file -1. First remove all the punctuations and change the string to array and count the number of words in the array - - ```js - let text = - 'I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.' - console.log(words) - console.log(words.length) - ``` - - ```sh - ["I", "love", "teaching", "and", "empowering", "people", "I", "teach", "HTML", "CSS", "JS", "React", "Python"] - - 13 - ``` - -1. In the following shopping cart add, remove, edit items - - ```js - const shoppingCart = ['Milk', 'Coffee', 'Tea', 'Honey'] - ``` - - - add 'Meat' in the beginning of your shopping cart if it has not been already added - - add Sugar at the end of you shopping cart if it has not been already added - - remove 'Honey' if you are allergic to honey - - modify Tea to 'Green Tea' - -1. In countries array check if 'Ethiopia' exists in the array if it exists print 'ETHIOPIA'. If it does not exist add to the countries list. -1. In the webTechs array check if Sass exists in the array and if it exists print 'Sass is a CSS preprocess'. If it does not exist add Sass to the array and print the array. -1. Concatenate the following two variables and store it in a fullStack variable. - - ```js - const frontEnd = ['HTML', 'CSS', 'JS', 'React', 'Redux'] - const backEnd = ['Node', 'Express', 'MongoDB'] - - console.log(fullStack) - ``` - - ```sh - ["HTML", "CSS", "JS", "React", "Redux", "Node", "Express", "MongoDB"] - ``` - -#### Exercise: Level 3 - -1. The following is an array of 10 students ages: - `js const ages = [19, 22, 19, 24, 20, 25, 26, 24, 25, 24] ` - Sort the array and find the min and max age - Find the median age(one middle item or two middle items divided by two) - Find the average age(all items divided by number of items) - Find the range of the ages(max minus min) - Compare the value of (min - average) and (max - average), use _abs()_ method - - 1.Slice the first ten countries from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) - -1. Find the middle country(ies) in the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) -1. Divide the countries array into two equal arrays if it is even. If countries array is not even , one more country for the first half. - -## 4. Conditionals - -Conditional statements are used for make decisions based on different conditions. -By default , statements in JavaScript script executed sequentially from top to bottom. If the processing logic require so, the sequential flow of execution can be altered in two ways: - -- Conditional execution: a block of one or more statements will be executed if a certain expression is true -- Repetitive execution: a block of one or more statements will be repetitively executed as long as a certain expression is true. In this section, we will cover _if_, _else_ , _else if_ statements. The comparison and logical operators we learned in the previous sections will be useful in here. - -Conditions can be implementing using the following ways: - -- if -- if else -- if else if else -- switch -- ternary operator - -### If - -In JavaScript and other programming languages the key word _if_ is to used check if a condition is true and to execute the block code. To create an if condition, we need _if_ keyword, condition inside a parenthesis and block of code inside a curly bracket({}). - -```js -// syntax -if (condition) { - //this part of code runs for truthy condition -} -``` - -**Example:** - -```js -let num = 3 -if (num > 0) { - console.log(`${num} is a positive number`) -} -// 3 is a positive number -``` - -As you can see in the condition example above, 3 is greater than 0, so it is a positive number. The condition was true and the block of code was executed. However, if the condition is false, we won't see any results. - -```js -let isRaining = true -if (isRaining) { - console.log('Remember to take your rain coat.') -} -``` - -The same goes for the second condition, if isRaining is false the if block will not be executed and we do not see any output. In order to see the result of a falsy condition, we should have another block, which is going to be _else_. - -### If Else - -If condition is true the first block will be executed, if not the else condition will be executed. - -```js -// syntax -if (condition) { - // this part of code runs for truthy condition -} else { - // this part of code runs for false condition -} -``` - -```js -let num = 3 -if (num > 0) { - console.log(`${num} is a positive number`) -} else { - console.log(`${num} is a negative number`) -} -// 3 is a positive number - -num = -3 -if (num > 0) { - console.log(`${num} is a positive number`) -} else { - console.log(`${num} is a negative number`) -} -// -3 is a negative number -``` - -```js -let isRaining = true -if (isRaining) { - console.log('You need a rain coat.') -} else { - console.log('No need for a rain coat.') -} -// You need a rain coat. - -isRaining = false -if (isRaining) { - console.log('You need a rain coat.') -} else { - console.log('No need for a rain coat.') -} -// No need for a rain coat. -``` - -The last condition is false, therefore the else block was executed. What if we have more than two conditions? In that case, we would use _else if_ conditions. - -### If Else if Else - -On our daily life, we make decisions on daily basis. We make decisions not by checking one or two conditions instead we make decisions based on multiple conditions. As similar to our daily life, programming is also full of conditions. We use _else if_ when we have multiple conditions. - -```js -// syntax -if (condition) { - // code -} else if (condition) { - // code -} else { - // code -} -``` - -**Example:** - -```js -let a = 0 -if (a > 0) { - console.log(`${a} is a positive number`) -} else if (a < 0) { - console.log(`${a} is a negative number`) -} else if (a == 0) { - console.log(`${a} is zero`) -} else { - console.log(`${a} is not a number`) -} -``` - -```js -// if else if else -let weather = 'sunny' -if (weather === 'rainy') { - console.log('You need a rain coat.') -} else if (weather === 'cloudy') { - console.log('It might be cold, you need a jacket.') -} else if (weather === 'sunny') { - console.log('Go out freely.') -} else { - console.log('No need for rain coat.') -} -``` - -### Switch - -Switch is an alternative for **if else if else else**. -The switch statement starts with a _switch_ keyword followed by a parenthesis and code block. Inside the code block we will have different cases. Case block runs if the value in the switch statement parenthesis matches with the case value. The break statement is to terminate execution so the code execution does not go down after the condition is satisfied. The default block runs if all the cases don't satisfy the condition. - -```js -switch (caseValue) { - case 1: - // code - break - case 2: - // code - break - case 3: - // code - default: - // code -} -``` - -```js -let weather = 'cloudy' -switch (weather) { - case 'rainy': - console.log('You need a rain coat.') - break - case 'cloudy': - console.log('It might be cold, you need a jacket.') - break - case 'sunny': - console.log('Go out freely.') - break - default: - console.log(' No need for rain coat.') -} - -// Switch More Examples -let dayUserInput = prompt('What day is today ?') -let day = dayUserInput.toLowerCase() - -switch (day) { - case 'monday': - console.log('Today is Monday') - break - case 'tuesday': - console.log('Today is Tuesday') - break - case 'wednesday': - console.log('Today is Wednesday') - break - case 'thursday': - console.log('Today is Thursday') - break - case 'friday': - console.log('Today is Friday') - break - case 'saturday': - console.log('Today is Saturday') - break - case 'sunday': - console.log('Today is Sunday') - break - default: - console.log('It is not a week day.') -} -``` - -// Examples to use conditions in the cases - -```js -let num = prompt('Enter number') -switch (true) { - case num > 0: - console.log('Number is positive') - break - case num == 0: - console.log('Numbers is zero') - break - case num < 0: - console.log('Number is negative') - break - default: - console.log('Entered value was not a number') -} -``` - -### Ternary Operators - -Ternary operator is very common in _React_. It is a short way to write if else statement. In React we use ternary operator in many cases. - -To generalize, ternary operator is another way to write conditionals. - -```js -let isRaining = true -isRaining - ? console.log('You need a rain coat.') - : console.log('No need for a rain coat.') -``` - -### πŸ’» Exercises - -#### Exercises: Level 1 - -1. Get user input using prompt(β€œEnter your age:”). If user is 18 or older , give feedback:'You are old enough to drive' but if not 18 give another feedback stating to wait for the number of years he needs to turn 18. - - ```sh - Enter your age: 30 - You are old enough to drive. - - Enter your age:15 - You are left with 3 years to drive. - ``` - -1. Compare the values of myAge and yourAge using if … else. Based on the comparison and log the result to console stating who is older (me or you). Use prompt(β€œEnter your age:”) to get the age as input. - - ```sh - Enter your age: 30 - You are 5 years older than me. - ``` - -1. If a is greater than b return 'a is greater than b' else 'a is less than b'. Try to implement it in two ways - - - using if else - - ternary operator. - - ```js - let a = 4 - let b = 3 - ``` - - ```sh - 4 is greater than 3 - ``` - -1. Even numbers are divisible by 2 and the remainder is zero. How do you check, if a number is even or not using JavaScript? - - ```sh - Enter a number: 2 - 2 is an even number - - Enter a number: 9 - 9 is is an odd number. - ``` - -#### Exercises: Level 2 - -1. Write a code which can give grades to students according to theirs scores: - - 80-100, A - - 70-89, B - - 60-69, C - - 50-59, D - - 0-49, F -1. Check if the season is Autumn, Winter, Spring or Summer. - If the user input is : - - September, October or November, the season is Autumn. - - December, January or February, the season is Winter. - - March, April or May, the season is Spring - - June, July or August, the season is Summer -1. Check if a day is weekend day or a working day. Your script will take day as an input. - -```sh - What is the day today? Saturday - Saturday is a weekend. - - What is the day today? saturDaY - Saturday is a weekend. - - What is the day today? Friday - Friday is a working day. - - What is the day today? FrIDAy - Friday is a working day. -``` - -#### Exercises: Level 3 - -1. Write a program which tells the number of days in a month. - -```sh - Enter a month: January - January has 31 days. - - Enter a month: JANUARY - January has 31 day - - Enter a month: February - February has 28 days. - - Enter a month: FEbruary - February has 28 days. -``` - -1. Write a program which tells the number of days in a month, now consider leap year. - -## 5. Loops - -In programming we use different loops to carry out repetitive tasks. Therefore, loop can help us to automate tedious and repetitive task. JavaScript has also different types of loops which we can use to work on repetitive task. - -Imagine if your are asked to print Hello world one thousand times without a loop, it may take an hour or two to do this tedious task. However, using loop we can print it in less than a second. - -Loops: - -- for -- while -- do while -- for of -- forEach -- for in - -A loop usually goes until the condition gets false. But sometimes we like to interrupt the loop or skip an item during iteration. We use _break_ to interrupt the loop and _continue_ to skip an item during iteration. - -### Types of Loops - -#### 1. for - -We use for loop when we know how many iteration we go. Let's see the following example - -```js -// for loop syntax - -for (initialization, condition, increment/decrement) { - code goes here -} -``` - -This code prints from 0 to 5. - -```js -for (let i = 0; i < 6; i++) { - console.log(i) -} -``` - -For example if we want to sum all the numbers from 0 to 100. - -```js -let sum = 0 -for (let i = 0; i < 101; i++) { - sum += i -} - -console.log(sum) -``` - -If we want to sum only even numbers: - -```js -let sum = 0 -for (let i = 0; i < 101; i += 2) { - sum += i -} - -console.log(sum) - -// or another way - -let total = 0 -for (let i = 0; i < 101; i++) { - if (i % 2 == 0) { - total += i - } -} -console.log(total) -``` - -This code iterates through the array - -```js -const nums = [1, 2, 3, 4, 5] -for (let i = 0; i < 6; i++) { - console.log(nums[i]) -} -``` - -This code prints 5 to 0. Looping in reverse order - -```js -for (let i = 5; i >= 0; i--) { - console.log(i) -} -``` - -The Code below can reverse an array. - -```js -const nums = [1, 2, 3, 4, 5] -const lastIndex = nums.length - 1 -const newArray = [] -for (let i = lastIndex; i >= 0; i--) { - newArray.push(nums[i]) -} - -console.log(newArray) -``` - -#### 2. while - -We use the while loop when we do not know how man iteration we go in advance. - -```js -let count = prompt('Enter a positive number: ') -while (count > 0) { - console.log(count) - count-- -} -``` - -#### 3. do while - -Do while run at least once if the condition is true or false - -```js -let count = 0 -do { - console.log(count) - count++ -} while (count < 11) -``` - -The code below runs ones though the condition is false - -```js -let count = 11 -do { - console.log(count) - count++ -} while (count < 11) -``` - -While loop is the least important loop in many programming languages. - -#### 4. for of - -The for of loop is very handy to use it with array. If we are not interested in the index of the array a for of loop is preferable to regular for loop or forEach loop. - -```js -const numbers = [1, 2, 3, 4, 5] -for (const number of numbers) { - console.log(number) -} - -const countries = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland'] -for (const country of countries) { - console.log(country.toUpperCase()) -} -``` - -#### 5. forEach - -If we are interested in the index of the array forEach is preferable to for of loop. The forEach array method takes a callback function, the callback function takes three arguments: the item, the index and the array itself. - -```js -const numbers = [1, 2, 3, 4, 5] -numbers.forEach((number, i) => { - console.log(number, i) -}) - -const countries = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland'] -countries.forEach((country, i, arr) => { - console.log(i, country.toUpperCase()) -}) -``` - -#### 6. for in - -The for in loop can be used with object literals to get the keys of the object. - -```js -const user = { - firstName: 'Asabeneh', - lastName: 'Yetayeh', - age: 250, - country: 'Finland', - skills: ['HTML', 'CSS', 'JS', 'React', 'Node', 'Python', 'D3.js'], -} - -for (const key in user) { - console.log(key, user[key]) -} -``` - -### Interrupting a loop and skipping an item - -#### break - -Break is used to interrupt a loop. - -```js -for (let i = 0; i <= 5; i++) { - if (i == 3) { - break - } - console.log(i) -} - -// 0 1 2 -``` - -The above code stops if 3 found in the iteration process. - -#### continue - -We use the keyword continue to skip a certain iterations. - -```js -for (let i = 0; i <= 5; i++) { - if (i == 3) { - continue - } - console.log(i) -} -// 0 1 2 4 5 -``` - -### Conclusions - -- Regular for loop can be used anywhere when the number of iteration is known. -- While loop when the number of iteration is not know -- Do while loop and while loop are almost the same but do while loop run at least once even when the condition is false -- for of is used only for array -- forEach is used for array -- for in is used for object - -## 6. Scope - -Variable is the fundamental part in programming. We declare variable to store different data types. To declare a variable we use the key word _var_, _let_ and _const_. A variable can declared at different scope. In this section we will see the scope, scope of variables when we use var or let. -Variables scopes can be: - -- Window -- Global -- Local - -Variable can be declared globally or locally or window scope. We will see both global and local scope. -Anything declared without let, var or const is scoped at window level. - -Let us image we have a scope.js file. - -### Window Scope - -Without using console.log() open your browser and check, you will see the value of a and b if you write a or b on the browser. That means a and b are already available in the window. - -```js -//scope.js -a = 'JavaScript' // is a window scope this found anywhere -b = 10 // this is a window scope variable -function letsLearnScope() { - console.log(a, b) - if (true) { - console.log(a, b) - } -} -console.log(a, b) // accessible -``` - -### Global scope - -A globally declared variable can be accessed every where in the same file. But the term global is relative. It can be global to the file or it can be global relative to some block of codes. - -```js -//scope.js -let a = 'JavaScript' // is a global scope it will be found anywhere in this file -let b = 10 // is a global scope it will be found anywhere in this file -function letsLearnScope() { - console.log(a, b) // JavaScript 10, accessible - if (true) { - let a = 'Python' - let b = 100 - console.log(a, b) // Python 100 - } - console.log(a, b) -} -letsLearnScope() -console.log(a, b) // JavaScript 10, accessible -``` - -### Local scope - -A variable declared as local can be accessed only in certain block code. - -```js -//scope.js -let a = 'JavaScript' // is a global scope it will be found anywhere in this file -let b = 10 // is a global scope it will be found anywhere in this file -function letsLearnScope() { - console.log(a, b) // JavaScript 10, accessible - let c = 30 - if (true) { - // we can access from the function and outside the function but - // variables declared inside the if will not be accessed outside the if block - let a = 'Python' - let b = 20 - let d = 40 - console.log(a, b, c) // Python 20 30 - } - // we can not access c because c's scope is only the if block - console.log(a, b) // JavaScript 10 -} -letsLearnScope() -console.log(a, b) // JavaScript 10, accessible -``` - -Now, you have an understanding of scope. A variable declared with _var_ only scoped to function but variable declared with _let_ or _const_ is block scope(function block, if block, loop etc). Block in JavaScript is a code in between two curly brackets ({}). - -```js -//scope.js -function letsLearnScope() { - var gravity = 9.81 - console.log(gravity) -} -// console.log(gravity), Uncaught ReferenceError: gravity is not defined - -if (true) { - var gravity = 9.81 - console.log(gravity) // 9.81 -} -console.log(gravity) // 9.81 - -for (var i = 0; i < 3; i++) { - console.log(i) // 1, 2, 3 -} -console.log(i) -``` - -In ES6 and above there is _let_ and _const_, so you will not suffer from the sneakiness of _var_. When we use _let_ our variable is block scoped and it will not infect other parts of our code. - -```js -//scope.js -function letsLearnScope() { - // you can use let or const, but gravity is constant I prefer to use const - const gravity = 9.81 - console.log(gravity) -} -// console.log(gravity), Uncaught ReferenceError: gravity is not defined - -if (true) { - const gravity = 9.81 - console.log(gravity) // 9.81 -} -// console.log(gravity), Uncaught ReferenceError: gravity is not defined - -for (let i = 0; i < 3; i++) { - console.log(i) // 1, 2, 3 -} -// console.log(i), Uncaught ReferenceError: gravity is not defined -``` - -The scope _let_ and _const_ is the same. The difference is only reassigning. We can not change or reassign the value of const variable. I would strongly suggest you to use _let_ and _const_, by using _let_ and _const_ you will writ clean code and avoid hard to debug mistakes. As a rule of thumb, you can use _let_ for any value which change, _const_ for any constant value, and for array, object, arrow function and function expression. - -## 7. Object - -Everything can be an object and objects do have properties and properties have values, so an object is a key value pair. The order of the key is not reserved, or there is no order. -To create an object literal, we use two curly brackets. - -### Creating an empty object - -An empty object - -```js -const person = {} -``` - -### Creating an objecting with values - -Now, the person object has firstName, lastName, age, location, skills and isMarried properties. The value of properties or keys could be a string, number, boolean, an object, null, undefined or a function. - -Let us see some examples of object. Each key has a value in the object. - -```js -const rectangle = { - length: 20, - width: 20, -} -console.log(rectangle) // {length: 20, width: 20} - -const person = { - firstName: 'Asabeneh', - lastName: 'Yetayeh', - age: 250, - country: 'Finland', - city: 'Helsinki', - skills: [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Node', - 'MongoDB', - 'Python', - 'D3.js', - ], - isMarried: true, -} -console.log(person) -``` - -### Getting values from an object - -We can access values of object using two methods: - -- using . followed by key name if the key-name is a one word -- using square bracket and a quote - -```js -const person = { - firstName: 'Asabeneh', - lastName: 'Yetayeh', - age: 250, - country: 'Finland', - city: 'Helsinki', - skills: [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Node', - 'MongoDB', - 'Python', - 'D3.js', - ], - getFullName: function () { - return `${this.firstName}${this.lastName}` - }, - 'phone number': '+3584545454545', -} - -// accessing values using . -console.log(person.firstName) -console.log(person.lastName) -console.log(person.age) -console.log(person.location) - -// value can be accessed using square bracket and key name -console.log(person['firstName']) -console.log(person['lastName']) -console.log(person['age']) -console.log(person['age']) -console.log(person['location']) - -// for instance to access the phone number we only use the square bracket method -console.log(person['phone number']) -``` - -### Creating object methods - -Now, the person object has getFullName properties. The getFullName is function inside the person object and we call it an object method. The _this_ key word refers to the object itself. We can use the word _this_ to access the values of different properties of the object. We can not use an arrow function as object method because the word this refers to the window inside an arrow function instead of the object itself. Example of object: - -```js -const person = { - firstName: 'Asabeneh', - lastName: 'Yetayeh', - age: 250, - country: 'Finland', - city: 'Helsinki', - skills: [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Node', - 'MongoDB', - 'Python', - 'D3.js', - ], - getFullName: function () { - return `${this.firstName} ${this.lastName}` - }, -} - -console.log(person.getFullName()) -// Asabeneh Yetayeh -``` - -### Setting new key for an object - -An object is a mutable data structure and we can modify the content of an object after it gets created. - -Setting a new keys in an object - -```js -const person = { - firstName: 'Asabeneh', - lastName: 'Yetayeh', - age: 250, - country: 'Finland', - city: 'Helsinki', - skills: [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Node', - 'MongoDB', - 'Python', - 'D3.js', - ], - getFullName: function () { - return `${this.firstName} ${this.lastName}` - }, -} -person.nationality = 'Ethiopian' -person.country = 'Finland' -person.title = 'teacher' -person.skills.push('Meteor') -person.skills.push('SasS') -person.isMarried = true - -person.getPersonInfo = function () { - let skillsWithoutLastSkill = this.skills - .splice(0, this.skills.length - 1) - .join(', ') - let lastSkill = this.skills.splice(this.skills.length - 1)[0] - - let skills = `${skillsWithoutLastSkill}, and ${lastSkill}` - let fullName = this.getFullName() - let statement = `${fullName} is a ${this.title}.\nHe lives in ${this.country}.\nHe teaches ${skills}.` - return statement -} -console.log(person) -console.log(person.getPersonInfo()) -``` - -```sh -Asabeneh Yetayeh is a teacher. -He lives in Finland. -He teaches HTML, CSS, JavaScript, React, Node, MongoDB, Python, D3.js, Meteor, and SasS. -``` - -### Object Methods - -There are different methods to manipulate an object. Let us see some of the available methods. - -_Object.assign_: To copy an object without modifying the original object - -```js -const person = { - firstName: 'Asabeneh', - age: 250, - country: 'Finland', - city: 'Helsinki', - skills: ['HTML', 'CSS', 'JS'], - title: 'teacher', - address: { - street: 'Heitamienkatu 16', - pobox: 2002, - city: 'Helsinki', - }, - getPersonInfo: function () { - return `I am ${this.firstName} and I live in ${this.city}, ${this.country}. I am ${this.age}.` - }, -} - -//Object methods: Object.assign, Object.keys, Object.values, Object.entries -//hasOwnProperty - -const copyPerson = Object.assign({}, person) -console.log(copyPerson) -``` - -#### Getting object keys using Object.keys() - -_Object.keys_: To get the keys or properties of an object as an array - -```js -const keys = Object.keys(copyPerson) -console.log(keys) //['name', 'age', 'country', 'skills', 'address', 'getPersonInfo'] -const address = Object.keys(copyPerson.address) -console.log(address) //['street', 'pobox', 'city'] -``` - -#### Getting object values using Object.values() - -_Object.values_:To get values of an object as an array - -```js -const values = Object.values(copyPerson) -console.log(values) -``` - -#### Getting object keys and values using Object.entries() - -_Object.entries_:To get the keys and values in an array - -```js -const entries = Object.entries(copyPerson) -console.log(entries) -``` - -#### Checking properties using hasOwnProperty() - -_hasOwnProperty_: To check if a specific key or property exist in an object - -```js -console.log(copyPerson.hasOwnProperty('name')) -console.log(copyPerson.hasOwnProperty('score')) -``` - -πŸŒ• You are astonishing. Now, you are super charged with the power of objects. You have just completed day 8 challenges and you are 8 steps a head into your way to greatness. Now do some exercises for your brain and for your muscle. - -### πŸ’» Exercises - -#### Exercises: Level 1 - -1. Create an empty object called dog -1. Print the the dog object on the console -1. Add name, legs, color, age and bark properties for the dog object. The bark property is a method which return _woof woof_ -1. Get name, legs, color, age and bark value from the dog object -1. Set new properties the dog object: breed, getDogInfo - -#### Exercises: Level 2 - -1. Find the person who has many skills in the users object. -1. Count logged in users,count users having greater than equal to 50 points from the following object. - - ````js - const users = { - Alex: { - email: 'alex@alex.com', - skills: ['HTML', 'CSS', 'JavaScript'], - age: 20, - isLoggedIn: false, - points: 30 - }, - Asab: { - email: 'asab@asab.com', - skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'], - age: 25, - isLoggedIn: false, - points: 50 - }, - Brook: { - email: 'daniel@daniel.com', - skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'], - age: 30, - isLoggedIn: true, - points: 50 - }, - Daniel: { - email: 'daniel@alex.com', - skills: ['HTML', 'CSS', 'JavaScript', 'Python'], - age: 20, - isLoggedIn: false, - points: 40 - }, - John: { - email: 'john@john.com', - skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux', 'Node.js'], - age: 20, - isLoggedIn: true, - points: 50 - }, - Thomas: { - email: 'thomas@thomas.com', - skills: ['HTML', 'CSS', 'JavaScript', 'React'], - age: 20, - isLoggedIn: false, - points: 40 - }, - Paul: { - email: 'paul@paul.com', - skills: ['HTML', 'CSS', 'JavaScript', 'MongoDB', 'Express', 'React', 'Node'], - age: 20, - isLoggedIn: false, - points: 40 - } - }``` - - ```` - -1. Find people who are MERN stack developer from the users object -1. Set your name in the users object without modifying the original users object -1. Get all keys or properties of users object -1. Get all the values of users object -1. Use the countries object to print a country name, capital, populations and languages. - -#### Exercises: Level 3 - -1. Create an object literal called _personAccount_. It has _firstName, lastName, incomes, expenses_ properties and it has _totalIncome, totalExpense, accountInfo,addIncome, addExpense_ and _accountBalance_ methods. Incomes is a set of incomes and its description and expenses is a set of incomes and its description. -2. \*\*\*\* Questions:2, 3 and 4 are based on the following two arrays:users and products () - -```js -const users = [ - { - _id: 'ab12ex', - username: 'Alex', - email: 'alex@alex.com', - password: '123123', - createdAt: '08/01/2020 9:00 AM', - isLoggedIn: false, - }, - { - _id: 'fg12cy', - username: 'Asab', - email: 'asab@asab.com', - password: '123456', - createdAt: '08/01/2020 9:30 AM', - isLoggedIn: true, - }, - { - _id: 'zwf8md', - username: 'Brook', - email: 'brook@brook.com', - password: '123111', - createdAt: '08/01/2020 9:45 AM', - isLoggedIn: true, - }, - { - _id: 'eefamr', - username: 'Martha', - email: 'martha@martha.com', - password: '123222', - createdAt: '08/01/2020 9:50 AM', - isLoggedIn: false, - }, - { - _id: 'ghderc', - username: 'Thomas', - email: 'thomas@thomas.com', - password: '123333', - createdAt: '08/01/2020 10:00 AM', - isLoggedIn: false, - }, -] - -const products = [ - { - _id: 'eedfcf', - name: 'mobile phone', - description: 'Huawei Honor', - price: 200, - ratings: [ - { userId: 'fg12cy', rate: 5 }, - { userId: 'zwf8md', rate: 4.5 }, - ], - likes: [], - }, - { - _id: 'aegfal', - name: 'Laptop', - description: 'MacPro: System Darwin', - price: 2500, - ratings: [], - likes: ['fg12cy'], - }, - { - _id: 'hedfcg', - name: 'TV', - description: 'Smart TV:Procaster', - price: 400, - ratings: [{ userId: 'fg12cy', rate: 5 }], - likes: ['fg12cy'], - }, -] -``` - -Imagine you are getting the above users collection from a MongoDB database. -a. Create a function called signUp which allows user to add to the collection. If user exists, inform the user that he has already an account. - b. Create a function called signIn which allows user to sign in to the application - -3. The products array has three elements and each of them has six properties. - a. Create a function called rateProduct which rates the product - b. Create a function called averageRating which calculate the average rating of a product - -4. Create a function called likeProduct. This function will helps to like to the product if it is not liked and remove like if it was liked. - -## 8. Functions - -So far we have seen many builtin JavaScript functions. In this section, we will focus on custom functions. What is a function? Before we start making functions, lets understand what function is and why we need function? - -A function is a reusable block of code or programming statements designed to perform a certain task. -A function is declared by a function key word followed by a name, followed by parentheses (). A parentheses can take a parameter. If a function take a parameter it will be called with argument. A function can also take a default parameter. To store a data to a function, a function has to return certain data types. To get the value we call or invoke a function. -Function makes code: - -- clean and easy to read -- reusable -- easy to test - -A function can be declared or created in couple of ways: - -- _Declaration function_ -- _Expression function_ -- _Anonymous function_ -- _Arrow function_ - -### Function Declaration - -Let us see how to declare a function and how to call a function. - -```js -//declaring a function without a parameter -function functionName() { - // code goes here -} -functionName() // calling function by its name and with parentheses -``` - -### Function without a parameter and return - -Function can be declared without a parameter. - -**Example:** - -```js -// function without parameter, a function which make a number square -function square() { - let num = 2 - let sq = num * num - console.log(sq) -} - -square() // 4 - -// function without parameter -function addTwoNumbers() { - let numOne = 10 - let numTwo = 20 - let sum = numOne + numTwo - - console.log(sum) -} - -addTwoNumbers() // a function has to be called by its name to be executed -``` - -```js -function printFullName() { - let firstName = 'Asabeneh' - let lastName = 'Yetayeh' - let space = ' ' - let fullName = firstName + space + lastName - console.log(fullName) -} - -printFullName() // calling a function -``` - -### Function returning value - -Function can also return values, if a function does not return values the value of the function is undefined. Let us write the above functions with return. From now on, we return value to a function instead of printing it. - -```js -function printFullName() { - let firstName = 'Asabeneh' - let lastName = 'Yetayeh' - let space = ' ' - let fullName = firstName + space + lastName - return fullName -} -console.log(printFullName()) -``` - -```js -function addTwoNumbers() { - let numOne = 2 - let numTwo = 3 - let total = numOne + numTwo - return total -} - -console.log(addTwoNumbers()) -``` - -### Function with a parameter - -In a function we can pass different data types(number, string, boolean, object, function) as a parameter. - -```js -// function with one parameter -function functionName(parm1) { - //code goes her -} -functionName(parm1) // during calling or invoking one argument needed - -function areaOfCircle(r) { - let area = Math.PI * r * r - return area -} - -console.log(areaOfCircle(10)) // should be called with one argument - -function square(number) { - return number * number -} - -console.log(square(10)) -``` - -### Function with two parameters - -```js -// function with two parameters -function functionName(parm1, parm2) { - //code goes her -} -functionName(parm1, parm2) // during calling or invoking two arguments needed -// Function without parameter doesn't take input, so lets make a function with parameters -function sumTwoNumbers(numOne, numTwo) { - let sum = numOne + numTwo - console.log(sum) -} -sumTwoNumbers(10, 20) // calling functions -// If a function doesn't return it doesn't store data, so it should return - -function sumTwoNumbers(numOne, numTwo) { - let sum = numOne + numTwo - return sum -} - -console.log(sumTwoNumbers(10, 20)) -function printFullName(firstName, lastName) { - return `${firstName} ${lastName}` -} -console.log(printFullName('Asabeneh', 'Yetayeh')) -``` - -### Function with many parameters - -```js -// function with multiple parameters -function functionName(parm1, parm2, parm3,...){ - //code goes here -} -functionName(parm1,parm2,parm3,...) // during calling or invoking three arguments needed - - -// this function takes array as a parameter and sum up the numbers in the array -function sumArrayValues(arr) { - let sum = 0; - for (let i = 0; i < arr.length; i++) { - sum = sum + arr[i]; - } - return sum; -} -const numbers = [1, 2, 3, 4, 5]; - //calling a function -console.log(sumArrayValues(numbers)); - - - const areaOfCircle = (radius) => { - let area = Math.PI * radius * radius; - return area; - } -console.log(areaOfCircle(10)) - -``` - -### Function with unlimited number of parameters - -Sometimes we do not know how many arguments the user going to pass. Therefore, we should know how to write a function which can take unlimited number of arguments. The way we do it has a significant difference between a function declaration(regular function) and arrow function. Let us see examples both in function declaration and arrow function. - -#### Unlimited number of parameters in regular function - -A function declaration provides a function scoped arguments array like object. Any thing we passed as argument in the function can be accessed from arguments object inside the functions. Let us see an example - -```js -// Let us access the arguments object -​ -function sumAllNums() { - console.log(arguments) -} - -sumAllNums(1, 2, 3, 4)) -// Arguments(4)Β [1, 2, 3, 4, callee: Ζ’, Symbol(Symbol.iterator): Ζ’] - -``` - -```js -// function declaration -​ -function sumAllNums() { - let sum = 0 - for (let i = 0; i < arguments.length; i++) { - sum += arguments[i] - } - return sum -} - -console.log(sumAllNums(1, 2, 3, 4)) // 10 -console.log(sumAllNums(10, 20, 13, 40, 10)) // 93 -console.log(sumAllNums(15, 20, 30, 25, 10, 33, 40)) // 173 -``` - -#### Unlimited number of parameters in arrow function - -Arrow function does not have the function scoped arguments object. To implement a function which takes unlimited number of arguments in an arrow function we use spread operator followed by any parameter name. Any thing we passed as argument in the function can be accessed as array in the arrow function. Let us see an example - -```js -// Let us access the arguments object -​ -const sumAllNums = (...args) => { - // console.log(arguments), arguments object not found in arrow function - // instead we use an a parameter followed by spread operator - console.log(args) -} - -sumAllNums(1, 2, 3, 4)) -// [1, 2, 3, 4] - -``` - -```js -// function declaration -​ -const sumAllNums = (...args) => { - let sum = 0 - for (const element of args) { - sum += element - } - return sum -} - -console.log(sumAllNums(1, 2, 3, 4)) // 10 -console.log(sumAllNums(10, 20, 13, 40, 10)) // 93 -console.log(sumAllNums(15, 20, 30, 25, 10, 33, 40)) // 173 -``` - -### Anonymous Function - -Anonymous function or without name - -```js -const anonymousFun = function () { - console.log( - 'I am an anonymous function and my value is stored in anonymousFun' - ) -} -``` - -### Expression Function - -Expression functions are anonymous functions. After we create a function without a name and we assign it to a variable. To return a value from the function we should call the variable. Look at the example below. - -```js -// Function expression -const square = function (n) { - return n * n -} - -console.log(square(2)) // -> 4 -``` - -### Self Invoking Functions - -Self invoking functions are anonymous functions which do not need to be called to return a value. - -```js -;(function (n) { - console.log(n * n) -})(2) // 4, but instead of just printing if we want to return and store the data, we do as shown below - -let squaredNum = (function (n) { - return n * n -})(10) - -console.log(squaredNum) -``` - -### Arrow Function - -Arrow function is an alternative to write a function, however function declaration and arrow function have some minor differences. - -Arrow function uses arrow instead of the keyword _function_ to declare a function. Let us see both function declaration and arrow function. - -```js -// This is how we write normal or declaration function -// Let us change this declaration function to an arrow function -function square(n) { - return n * n -} - -console.log(square(2)) // 4 - -const square = (n) => { - return n * n -} - -console.log(square(2)) // -> 4 - -// if we have only one line in the code block, it can be written as follows, explicit return -const square = (n) => n * n // -> 4 -``` - -```js -const changeToUpperCase = (arr) => { - const newArr = [] - for (const element of arr) { - newArr.push(element.toUpperCase()) - } - return newArr -} - -const countries = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland'] -console.log(changeToUpperCase(countries)) - -// ["FINLAND", "SWEDEN", "NORWAY", "DENMARK", "ICELAND"] -``` - -```js -const printFullName = (firstName, lastName) => { - return `${firstName} ${lastName}` -} - -console.log(printFullName('Asabeneh', 'Yetayeh')) -``` - -The above function has only the return statement, therefore, we can explicitly return it as follows. - -```js -const printFullName = (firstName, lastName) => `${firstName} ${lastName}` - -console.log(printFullName('Asabeneh', 'Yetayeh')) -``` - -### Function with default parameters - -Sometimes we pass default values to parameters, when we invoke the function if we do not pass an argument the default value will be used. Both function declaration and arrow function can have a default value or values. - -```js -// syntax -// Declaring a function -function functionName(param = value) { - //codes -} - -// Calling function -functionName() -functionName(arg) -``` - -**Example:** - -```js -function greetings(name = 'Peter') { - let message = `${name}, welcome to 30 Days Of JavaScript!` - return message -} - -console.log(greetings()) -console.log(greetings('Asabeneh')) -``` - -```js -function generateFullName(firstName = 'Asabeneh', lastName = 'Yetayeh') { - let space = ' ' - let fullName = firstName + space + lastName - return fullName -} - -console.log(generateFullName()) -console.log(generateFullName('David', 'Smith')) -``` - -```js -function calculateAge(birthYear, currentYear = 2019) { - let age = currentYear - birthYear - return age -} - -console.log('Age: ', calculateAge(1819)) -``` - -```js -function weightOfObject(mass, gravity = 9.81) { - let weight = mass * gravity + ' N' // the value has to be changed to string first - return weight -} - -console.log('Weight of an object in Newton: ', weightOfObject(100)) // 9.81 gravity at the surface of Earth -console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gravity at surface of Moon -``` - -Let us see how we write the above functions with arrow functions - -```js -// syntax -// Declaring a function -const functionName = (param = value) => { - //codes -} - -// Calling function -functionName() -functionName(arg) -``` - -**Example:** - -```js -const greetings = (name = 'Peter') => { - let message = name + ', welcome to 30 Days Of JavaScript!' - return message -} - -console.log(greetings()) -console.log(greetings('Asabeneh')) -``` - -```js -const generateFullName = (firstName = 'Asabeneh', lastName = 'Yetayeh') => { - let space = ' ' - let fullName = firstName + space + lastName - return fullName -} - -console.log(generateFullName()) -console.log(generateFullName('David', 'Smith')) -``` - -```js -const calculateAge = (birthYear, currentYear = 2019) => currentYear - birthYear -console.log('Age: ', calculateAge(1819)) -``` - -```js -const weightOfObject = (mass, gravity = 9.81) => mass * gravity + ' N' - -console.log('Weight of an object in Newton: ', weightOfObject(100)) // 9.81 gravity at the surface of Earth -console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gravity at surface of Moon -``` - -### Function declaration versus Arrow function - -It ill be covered in other time - -### πŸ’» Exercises - -#### Exercises: Level 1 - -1. Declare a function _fullName_ and it takes firstName, lastName as a parameter and it returns your full - name. -2. Declare a function _addNumbers_ and it takes two two parameters and it returns sum. -3. Area of a circle is calculated as follows: _area = Ο€ x r x r_. Write a function which calculates \_areaOfCircle -4. Temperature in oC can be converted to oF using this formula: _oF = (oC x 9/5) + 32_. Write a function which convert oC to oF _convertCelciusToFahrenheit_. -5. Body mass index(BMI) is calculated as follows: _bmi = weight in Kg / (height x height) in m2_. Write a function which calculates _bmi_. BMI is used to broadly define different weight groups in adults 20 years old or older.Check if a person is _underweight, normal, overweight_ or _obese_ based the information given below. - - - The same groups apply to both men and women. - - _Underweight_: BMI is less than 18.5 - - _Normal weight_: BMI is 18.5 to 24.9 - - _Overweight_: BMI is 25 to 29.9 - - _Obese_: BMI is 30 or more - -6. Write a function called _checkSeason_, it takes a month parameter and returns the season:Autumn, Winter, Spring or Summer. - -#### Exercises: Level 2 - -1. Quadratic equation is calculated as follows: _ax2 + bx + c = 0_. Write a function which calculates value or values of a quadratic equation, _solveQuadEquation_. - - ```js - console.log(solveQuadratic()) // {0} - console.log(solveQuadratic(1, 4, 4)) // {-2} - console.log(solveQuadratic(1, -1, -2)) // {2, -1} - console.log(solveQuadratic(1, 7, 12)) // {-3, -4} - console.log(solveQuadratic(1, 0, -4)) //{2, -2} - console.log(solveQuadratic(1, -1, 0)) //{1, 0} - ``` - -2. Declare a function name _printArray_. It takes array as a parameter and it prints out each value of the array. -3. Write a function name _showDateTime_ which shows time in this format: 08/01/2020 04:08 using the Date object. - - ```sh - showDateTime() - 08/01/2020 04:08 - ``` - -4. Declare a function name _swapValues_. This function swaps value of x to y. - - ```js - swapValues(3, 4) // x => 4, y=>3 - swapValues(4, 5) // x = 5, y = 4 - ``` - -5. Declare a function name _reverseArray_. It takes array as a parameter and it returns the reverse of the array (don't use method). - - ```js - console.log(reverseArray([1, 2, 3, 4, 5])) - //[5, 4, 3, 2, 1] - console.log(reverseArray(['A', 'B', 'C'])) - //['C', 'B', 'A'] - ``` - -6. Declare a function name _capitalizeArray_. It takes array as a parameter and it returns the - capitalizedarray. -7. Declare a function name _addItem_. It takes an item parameter and it returns an array after adding the item -8. Declare a function name _removeItem_. It takes an index parameter and it returns an array after removing an ite -9. Declare a function name evensAndOdds . It takes a positive integer as parameter and it counts number of evens and odds in the number. - -```sh -evensAndOdds(100); -The number of odds are 50. -The number of evens are 51. -``` - -13. Write a function which takes any number of arguments and return the sum of the arguments - -```js -sum(1, 2, 3) // -> 6 -sum(1, 2, 3, 4) // -> 10 -``` - -1. Declare a function name _userIdGenerator_. When this function is called it generates seven character id. The function return the id. - -```sh -console.log(userIdGenerator()); -41XTDbE -``` - -#### Exercises: Level 3 - -1. Declare a function name _userIdGeneratedByUser_. It doesn’t take any parameter but it takes two inputs using prompt(). One of the input is the number of characters and the second input is the number of ids which are supposed to be generated. - - ```sh - userIdGeneratedByUser() - 'kcsy2 - SMFYb - bWmeq - ZXOYh - 2Rgxf - ' - userIdGeneratedByUser() - '1GCSgPLMaBAVQZ26 - YD7eFwNQKNs7qXaT - ycArC5yrRupyG00S - UbGxOFI7UXSWAyKN - dIV0SSUTgAdKwStr - ' - ``` - -2. Write a function **_generateColors_** which can generate any number of hexa or rgb colors. - - ```js - console.log(generateColors('hexa', 3)) // ['#a3e12f', '#03ed55', '#eb3d2b'] - console.log(generateColors('hexa', 1)) // '#b334ef' - console.log(generateColors('rgb', 3)) // ['rgb(5, 55, 175)', 'rgb(50, 105, 100)', 'rgb(15, 26, 80)'] - console.log(generateColors('rgb', 1)) // 'rgb(33,79, 176)' - ``` - -3. Call your function _shuffleArray_, it takes an array as a parameter and it returns a shuffled array -4. Call your function _factorial_, it takes a whole number as a parameter and it return a factorial of the number -5. Call your function _isEmpty_, it takes a parameter and it checks if it is empty or not - -6. Write a function called _average_, it takes an array parameter and returns the average of the items. Check if all the array items are number types. If not give return reasonable feedback. - -## 9. Higher Order Function - -Higher order functions are functions which take other function as a parameter or return a function as a value. The function passed as a parameter is called callback. - -### Callback - -A callback is a function which can be passed as parameter to other function. See the example below. - -```js -// a callback function, the function could be any name -const callback = (n) => { - return n ** 2 -} -​ -// function take other function as a callback -function cube(callback, n) { - return callback(n) * n -} -​ -console.log(cube(callback, 3)) -``` - -### Returning function - -Higher order functions return function as a value -​ - -```js -// Higher order function returning an other function -const higherOrder = n => { - const doSomething = m => { - const doWhatEver = t => { - return 2 * n + 3 * m + t - } - return doWhatEver - } -​ - return doSomething -} -console.log(higherOrder(2)(3)(10)) -``` - -Let us see were we use call back functions.For instance the _forEach_ method uses call back. - -```js -const numbers = [1, 2, 3, 4] -​ -const sumArray = arr => { - let sum = 0 - const callBack = function(element) { - sum += element - } - numbers.forEach(callback) - return sum - -} -console.log(sumArray(numbers)) -``` - -```sh -15 -``` - -The above example can be simplified as follows: - -```js -const numbers = [1, 2, 3, 4] -​ -const sumArray = arr => { - let sum = 0 - numbers.forEach(function(element) { - sum += element - }) - return sum - -} -console.log(sumArray(numbers)) -``` - -```sh -15 -``` - -### setting time - -In JavaScript we can execute some activity on certain interval of time or we can schedule(wait) for sometime to execute some activities. - -- setInterval -- setTimeout - -#### setInterval - -In JavaScript, we use setInterval higher order function to do some activity continuously with in some interval of time. The setInterval global method take a callback function and a duration as a parameter. The duration is in milliseconds and the callback will be always called in that interval of time. - -```js -// syntax -function callBack() { - // code goes here -} -setInterval(callback, duration) -``` - -```js -function sayHello() { - console.log('Hello') -} -setInterval(sayHello, 2000) // it prints hello in every 2 seconds -``` - -#### setTimeout - -In JavaScript, we use setTimeout higher order function to execute some action at some time in the future. The setTimeout global method take a callback function and a duration as a parameter. The duration is in milliseconds and the callback wait for that amount of time. - -```js -// syntax -function callback() { - // code goes here -} -setTimeout(callback, duration) // duration in milliseconds -``` - -```js -function sayHello() { - console.log('Hello') -} -setTimeout(sayHello, 2000) // it prints hello after it waits for 2 seconds. -``` - -## 10. Destructuring and Spreading - -### What is Destructuring? - -Destructuring is a way to unpack arrays, and objects and assigning to a distinct variable. Destructuring allows us to write clean and readable code. - -### What can we destructure? - -1. Arrays -2. Objects - -#### 1. Destructuring arrays - -Arrays are a list of different data types ordered by their index. Let's see an example of arrays: - -```js -const numbers = [1, 2, 3] -const countries = ['Finland', 'Sweden', 'Norway'] -``` - -We can access an item from an array using a certain index by iterating through the loop or manually as shown in the example below. - -Accessing array items using a loop - -```js -for (const number of numbers) { - console.log(number) -} - -for (const country of countries) { - console.log(country) -} -``` - -Accessing array items manually - -```js -const numbers = [1, 2, 3] -let num1 = numbers[0] -let num2 = numbers[1] -let num3 = numbers[2] -console.log(num1, num2, num3) // 1, 2, 3 - -const countries = ['Finland', 'Sweden', 'Norway'] -let fin = countries[0] -let swe = countries[1] -let nor = countries[2] -console.log(fin, swe, nor) // Finland, Sweden, Norway -``` - -Most of the time the size of an array is big and we use a loop to iterate through each item of the arrays. Sometimes, we may have short arrays. If the array size is very short it is ok to access the items manually as shown above but today we will see a better way to access the array item which is destructuring. - -Accessing array items using destructuring - -```js -const numbers = [1, 2, 3] -const [num1, num2, num3] = numbers -console.log(num1, num2, num3) // 1, 2, 3, - -const constants = [2.72, 3.14, 9.81,37, 100] -const [e, pi, gravity, bodyTemp, boilingTemp] = constants -console.log(e, pi, gravity, bodyTemp, boilingTemp] -// 2.72, 3.14, 9.81, 37,100 -const countries = ['Finland', 'Sweden', 'Norway'] -const [fin, swe, nor] = countries -console.log(fin, swe, nor) // Finland, Sweden, Norway -``` - -During destructuring each variable should match with the index of the desired item in the array. For instance, the variable fin matches to index 0 and the variable nor matches to index 2. What would be the value of den if you have a variable den next nor? - -```js -const [fin, swe, nor, den] = countries -console.log(den) // undefined -``` - -If you tried the above task you confirmed that the value is undefined. Actually, we can pass a default value to the variable, and if the value of that specific index is undefined the default value will be used. - -```js -const countries = ['Finland', 'Sweden', undefined, 'Norway'] -const [fin, swe, ice = 'Iceland', nor, den = 'Denmark'] = countries -console.log(fin, swe, ice, nor, den) // Finland, Sweden, Iceland, Norway, Denmark -``` - -Destructuring Nested arrays - -```js -const fullStack = [ - ['HTML', 'CSS', 'JS', 'React'], - ['Node', 'Express', 'MongoDB'] -] - -const [frontEnd, backEnd] = fullstack -console.log(frontEnd, backEnd) - -//["HTML", "CSS", "JS", "React"] , ["Node", "Express", "MongoDB"] - -const fruitsAndVegetables = [['banana', 'orange', 'mango', 'lemon'], ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']] - -const [fruits, vegetables] = fruitsAndVegetables -console.log(fruits, vegetables] - -//['banana', 'orange', 'mango', 'lemon'] - -//['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] -``` - -Skipping an Item during destructuring - -During destructuring if we are not interested in every item, we can omit a certain item by putting a comma at that index. Let's get only Finland, Iceland, and Denmark from the array. See the example below for more clarity: - -```js -const countries = ['Finland', 'Sweden', 'Iceland', 'Norway', 'Denmark'] -const [fin, , ice, , den] = countries -console.log(fin, ice, den) // Finland, Iceland, Denmark -``` - -Getting the rest of the array using the spread operator -We use three dots(...) to spread or get the rest of an array during destructuring - -```js -const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -const [num1, num2, num3, ...rest] = nums -console.log(num1, num2, num3, rest) //1, 2, 3, [4, 5, 6, 7, 8, 9, 10] - -const countries = [ - 'Germany', - 'France', - 'Belgium', - 'Finland', - 'Sweden', - 'Norway', - 'Denmark', - 'Iceland', -] - -let [gem, fra, , ...nordicCountries] = countries -console.log(gem, fra, nordicCountries) -// Germany, France, ["Finland", "Sweden", "Norway", "Denmark", "Iceland"] -``` - -There many cases in which we use array destructuring, let's see the following example: - -Destructuring when we loop through arrays - -```js -const countries = [ - ['Finland', 'Helsinki'], - ['Sweden', 'Stockholm'], - ['Norway', 'Oslo'], -] - -for (const [country, city] of countries) { - console.log(country, city) -} - -const fullStack = [ - ['HTML', 'CSS', 'JS', 'React'], - ['Node', 'Express', 'MongoDB'], -] - -for (const [first, second, third, fourth] of fullStack) { - console.log(first, second, third, fourt) -} -``` - -What do you think about the code snippet below? If you have started React Hooks already it may remind you of the useState hook. - -```js -const [x, y] = [2, (value) => value ** 2] -``` - -What is the value of x? And what is the value of y(x)? I leave this for you to figure out. - -If you have used react hooks you are very familiar with this and as you may imagine it is destructuring. The initial value of count is 0 and the setCount is a method that changes the value of count. - -```js -const [count, setCount] = useState(0) -``` - -Now, you know how to destructure arrays. Let's move on to destructuring objects. - -#### 2. Destructuring objects - -An object literal is made of key and value pairs. A very simple example of an object: - -```js -const rectangle = { - width: 20, - height: 10, -} -``` - -We access the value of an object using the following methods: - -```js -const rectangle = { - width: 20, - height: 10, -} - -let width = rectangle.width -let height = recangle.height - -// or - -let width = rectangle[width] -let height = recangle[height] -``` - -But today, we will see how to access the value of an object using destructuring. - -When we destructure an object the name of the variable should be exactly the same as the key or property of the object. See the example below. - -```js -const rectangle = { - width: 20, - height: 10, -} - -let { width, height } = rectangle -console.log(width, height, perimeter) // 20, 10 -``` - -What will be the value of we try to access a key which not in the object. - -```js -const rectangle = { - width: 20, - height: 10, -} - -let { width, height, perimeter } = rectangleconsole.log( - width, - height, - perimeter -) // 20, 10, undefined -``` - -The value of the perimeter in the above example is undefined. - -Default value during object destructuring - -Similar to the array, we can also use a default value in object destructuring. - -```js -const rectangle = { - width: 20, - height: 10, -} - -let { width, height, perimeter = 200 } = rectangle -console.log(width, height, perimeter) // 20, 10, undefined -``` - -Renaming variable names - -```js -const rectangle = { - width: 20, - height: 10, -} - -let { width: w, height: h } = rectangle -``` - -Let's also destructure, nested objects. In the example below, we have nested objects and we can destructure it in two ways. - -We can just destructure step by step - -```js -const props = { - user:{ - firstName:'Asabeneh', - lastName:'Yetayeh', - age:250 - }, - post:{ - title:'Destructuring and Spread', - subtitle:'ES6', - year:2020 -}, -skills:['JS', 'React', 'Redux', 'Node', 'Python'] - -} -} - -const {user, post, skills} = props -const {firstName, lastName, age} = user -const {title, subtitle, year} = post -const [skillOne, skillTwo, skillThree, skillFour, skillFive] = skills -``` - -1. We can destructure it one step - -```js -const props = { - user:{ - firstName:'Asabeneh', - lastName:'Yetayeh', - age:250 - }, - post:{ - title:'Destructuring and Spread', - subtitle:'ES6', - year:2020 -}, -skills:['JS', 'React', 'Redux', 'Node', 'Python'] - -} - -} - -const {user:{firstName, lastName, age}, post:{title, subtitle, year}, skills:[skillOne, skillTwo, skillThree, skillFour, skillFive]} = props - -``` - -Destructuring during loop through an array - -```js -const languages = [ - { lang: 'English', count: 91 }, - { lang: 'French', count: 45 }, - { lang: 'Arabic', count: 25 }, - { lang: 'Spanish', count: 24 }, - { lang: 'Russian', count: 9 }, - { lang: 'Portuguese', count: 9 }, - { lang: 'Dutch', count: 8 }, - { lang: 'German', count: 7 }, - { lang: 'Chinese', count: 5 }, - { lang: 'Swahili', count: 4 }, - { lang: 'Serbian', count: 4 }, -] - -for (const { lang, count } of languages) { - console.log(`The ${lang} is spoken in ${count} countries.`) -} -``` - -Destructuring function parameter - -```js -const rectangle = { width: 20, height: 10 } -const calcualteArea = ({ width, height }) => width * height -const calculatePerimeter = ({ width, height } = 2 * (width + height)) -``` - -### Exercises - -Create a function called getPersonInfo. The getPersonInfo function takes an object parameter. The structure of the object and the output of the function is given below. Try to use both a regular way and destructuring and compare the cleanness of the code. If you want to compare your solution with my solution, check this link. - -```js -const person = { - firstName: 'Asabeneh', - lastName: 'Yetayeh', - age: 250, - country: 'Finland', - job: 'Instructor and Developer', - skills: [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Redux', - 'Node', - 'MongoDB', - 'Python', - 'D3.js', - ], - languages: ['Amharic', 'English', 'Suomi(Finnish)'], -} - -/* -Asabeneh Yetayeh lives in Finland. He is 250 years old. He is an Instructor and Developer. He teaches HTML, CSS, JavaScript, React, Redux, Node, MongoDB, Python and D3.js. He speaks Amharic, English and a little bit of Suomi(Finnish) -*/ -``` - -### Spread or Rest Operator - -When we destructure an array we use the spread operator(...) to get the rest elements as array. In addition to that we use spread operator to spread arr elements to another array. - -#### Spread operator to get the rest of array elements - -```js -const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -let [num1, num2, num3, ...rest] = nums -​ -console.log(num1, num2, num3) -console.log(rest) -``` - -```sh -1 2 3 -[4, 5, 6, 7, 8, 9, 10] -``` - -```js -const countries = [ - 'Germany', - 'France', - 'Belgium', - 'Finland', - 'Sweden', - 'Norway', - 'Denmark', - 'Iceland', -] - -let [gem, fra, , ...nordicCountries] = countries - -console.log(gem) -console.log(fra) -console.log(nordicCountries) -``` - -```sh -Germany -France -["Finland", "Sweden", "Norway", "Denmark", "Iceland"] -``` - -#### Spread operator to copy array - -```js -const evens = [0, 2, 4, 6, 8, 10] -const evenNumbers = [...evens] - -const odds = [1, 3, 5, 7, 9] -const oddNumbers = [...odds] - -const wholeNumbers = [...evens, ...odds] - -console.log(evenNumbers) -console.log(oddNumbers) -console.log(wholeNumbers) -``` - -```sh -[0, 2, 4, 6, 8, 10] -[1, 3, 5, 7, 9] -[0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9] -``` - -```js -const frontEnd = ['HTML', 'CSS', 'JS', 'React'] -const backEnd = ['Node', 'Express', 'MongoDB'] -const fullStack = [...frontEnd, ...backEnd] - -console.log(fullStack) -``` - -```sh -["HTML", "CSS", "JS", "React", "Node", "Express", "MongoDB"] -``` - -#### Spread operator to copy object - -We can copy an object using a spread operator - -```js -const user = { - name: 'Asabeneh', - title: 'Programmer', - country: 'Finland', - city: 'Helsinki', -} - -const copiedUser = { ...user } -console.log(copiedUser) -``` - -```sh -{name: "Asabeneh", title: "Programmer", country: "Finland", city: "Helsinki"} -``` - -Modifying or changing the object while copying - -```js -const user = { - name: 'Asabeneh', - title: 'Programmer', - country: 'Finland', - city: 'Helsinki', -} - -const copiedUser = { ...user, title: 'instructor' } -console.log(copiedUser) -``` - -```sh -{name: "Asabeneh", title: "instructor", country: "Finland", city: "Helsinki"} -``` - -#### Spread operator with arrow function - -Whenever we like to write an arrow function which takes unlimited number of arguments we use a spread operator. If we use a spread operator as a parameter, the argument passed when we invoke a function will change to an array. - -```js -const sumAllNums = (...args) => { - console.log(args) -} - -sumAllNums(1, 2, 3, 4, 5) -``` - -```sh -[1, 2, 3, 4, 5] - -``` - -```js -const sumAllNums = (...args) => { - let sum = 0 - for (const num of args) { - sum += num - } - return sum -} - -console.log(sumAllNums(1, 2, 3, 4, 5)) -``` - -```sh -15 - -``` - -## 11. Functional Programming - -In this article, I will try to help you to have a very good understanding of the most common feature of JavaScript, _functional programming_. - -_Functional programming_ allows you to write shorter code, clean code, and also to solve complicated problems which might be difficult to solve in a traditional way. - -In this article we will cover all JS functional programming methods: - -- forEach -- map -- filter -- reduce -- find -- findIndex -- some -- every - -### 1. forEach - -We use forEach when we like to iterate through an array of items. The forEach is a higher-order function and it takes call-back as a parameter. The forEach method is used only with array and we use forEach if you are interested in each item or index or both. - -```js -// syntax in a normal or a function declaration - -function callback(item, index, arr) {} -array.forEach(callback) - -// or syntax in an arrow function -const callback = (item, i, arr) => {} -array.forEach(callback) -``` - -The call back function could be a function declaration or an arrow function. - -Let see different examples - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] -countries.forEach(function (country, index, arr) { - console.log(i, country.toUpperCase()) -}) -``` - -If there is no much code inside the code block we can use an arrow function and we can write it without a curly bracket. The index and the array parameters are optional, we can omit them. - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] -countries.forEach((country, i) => console.log(i, country.toUpperCase())) -``` - -```sh -0 "FINLAND" -1 "ESTONIA" -2 "SWEDEN" -3 "NORWAY" -``` - -For example if we like to change each country to uppercase and store it back to an array we write it as follows. - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] -const newCountries = [] -countries.forEach((country) => newCountries.push(country)) - -console.log(newCountries) // ["Finland", "Estonia", "Sweden", "Norway"] -``` - -Let us see more examples. For instance if we want to sum an array of numbers we can use forEach or reduce. Let us see how we use forEach to sum all numbers in an array. - -```js -const numbers = [1, 2, 3, 4, 5] -let sum = 0 -numbers.forEach((n) => (sum += n)) - -console.log(sum) // 15 -``` - -Let us move to the next functional programming method which is going to be a map. - -### 2. map - -We use the map method whenever we like to modify an array. We use the map method only with arrays and it always returns an array. - -```js -// syntax in a normal or a function declaration - -function callback(item, i) { - return // code goes here -} - -const modifiedArray = array.map(callback) - -// or syntax in an arrow function - -const callback = (item, i) => { - return // code goes here -} -const modifiedArray = array.map(callback) -``` - -Now, let us modify the countries array using the map method. The index is an optional parameter - -```js -// Using function declaration - -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] - -const newCountries = countries.map(function (country) { - return country.toUpperCase() -}) - -console.log(newCountries) - -// map using an arrow function call back - -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] -const newCountries = countries.map((country) => country.toUpperCase()) - -console.log(newCountries) // ["FINLAND", "ESTONIA", "SWEDEN", "NORWAY"] -``` - -As you can see that map is very handy to modify an array and to get an array back. Now, let us create an array of the length of the countries from the countries array. - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway'] -const countriesLength = countries.map((country) => country.length) - -console.log(countriesLength) // [7, 7, 6, 6] -``` - -Let us see another more example - -```js -const numbers = [1, 2, 3, 4, 5] -const squares = numbers.map((n) => n ** 2) - -console.log(squares) // [1, 4, 9, 16, 25] -``` - -### 3. filter - -As you may understand from the literal meaning of filter, it filters out items based on some criteria. The filter method like forEach and map is used with an array and it returns an array of the filtered items. - -For instance if we want to filter out countries containing a substring land from an array of countries. See the example below: - -```js -// syntax in a normal or a function declaration -function callback(item) { - return // boolean -} - -const filteredArray = array.filter(callback) - -// or syntax in an arrow function - -const callback = (item) => { - return // boolean -} -const filteredArray = array.filter(callback) -``` - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] -const countriesWithLand = countries.filter((country) => - country.includes('land') -) -console.log(countriesWithLand) // ["Finland", "Iceland"] -``` - -How about if we want to filter out countries not containing the substring land. We use negation to achieve that. - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] -const countriesWithLand = countries.filter( - (country) => !country.includes('land') -) -console.log(countriesWithLand) // ["Estonia", "Sweden", "Norway"] -``` - -Let's see an additional example about the filter, let us filter even or odd numbers from an array of numbers - -```js -const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -const evens = numbers.filter((n) => n % 2 === 0) -const odds = numbers.filter((n) => n % 2 !== 0) -console.log(evens) // [0, 2, 4, 6, 8, 10] -console.log(odds) // [1, 3, 5, 7, 9] -``` - -Now, you know how to filter let us move on to the next functional programming, reduce. - -### 4. reduce - -Like forEach, map, and filter, reduce is also used with an array and it returns a single value. You can associate reduce with a blender. You put different fruits to a blend and you get a mix of fruit juice. The juice is the output from the reduction process. - -We use the reduce method to sum all numbers in an array together, or to multiply items in an array or to concatenate items in an array. Let us see the following different example to make this explanation more clear. - -```js -// syntax in a normal or a function declaration - -function callback(acc, cur) { - return // code goes here -} - -const reduced = array.reduce(callback, optionalInitialValue) - -// or syntax in an arrow function - -const reduced = callback(acc, cur) => { - return // code goes here -} -const reduced = array.reduce(callback) -``` - -The default initial value is 0. We can change the initial value if we want to change it. - -For instance if we want to add all items in an array and if all the items are numbers we can use reduce. - -```js -const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -const sum = numbers.reduce((acc, cur) => acc + cur) -console.log(sum) // 55 -``` - -Reduce has a default initial value which is zero. Now, let us use a different initial value which is 5 in this case. - -```js -const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -const sum = numbers.reduce((acc, cur) => acc + cur, 5) -console.log(sum) // 60 -``` - -Let us concatenate strings using reduce - -```js -const strs = ['Hello', 'world', '!'] -const helloWorld = strs.reduce((acc, cur) => acc + ' ' + cur) -console.log(helloWorld) // "Hello world !" -``` - -We can multiply items of an array using reduce and we will return the value. - -```js -const numbers = [1, 2, 3, 4, 5] -const value = numbers.reduce((acc, cur) => acc * cur) -console.log(value) // 120 -``` - -Let us try it with an initial value - -```js -const numbers = [1, 2, 3, 4, 5] -const value = numbers.reduce((acc, cur) => acc * cur, 10) -console.log(value) // 1200 -``` - -### 5. find - -If we are interested in the first occurrence of a certain item or element in an array we can use find method. Unlike map and filter, find just return the first occurrence of an item instead of an array. - -```js -// syntax in a normal or a function declaration - -function callback(item) { -return // code goes here -} - -const item = array.find(callback) - -// or syntax in an arrow function - -const reduced = callback(item) => { -return // code goes here -} -const item = array.find(callback) -``` - -Let find the first even number and the first odd number in the numbers array. - -```js -const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -const firstEvenNum = numbers.find((n) => n % 2 === 0) -const firstOddNum = numbers.find((n) => n % 2 !== 0) -console.log(firstEvenNum) // 0 -console.log(firstOddNum) // 1 -``` - -Let us find the first country which contains a substring way - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] -const countryWithWay = countries.find((country) => country.includes('way')) -console.log(countriesWithWay) // Norway -``` - -Let us find the first country which has only six characters - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] -const sixCharsCountry = countries.find((country) => country.length === 6) -console.log(sixCharsCountry) // Sweden -``` - -Let us find the first country in the array which has the letter 'o' - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] -const index = countries.find((country) => country.includes('o')) -console.log(index // Estonia -``` - -### 6. findIndex - -The findIndex method works like find but findIndex returns the index of the item. If we are interested in the index of a certain item or element in an array we can use findIndex. The findIndex return the index of the first occurrence of an item. - -```js -// syntax in a normal or a function declaration - -function callback(item) { -return // code goes here -} - -const index = array.findIndex(callback) - -// or syntax in an arrow function - -const reduced = callback(item) => { -return // code goes here -} -const index = array.findIndex(callback) -``` - -Let us find the index of the first even number and the index of the first odd number in the numbers array. - -```js -const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -const firstEvenIndex = numbers.findIndex((n) => n % 2 === 0) -const firstOddIndex = numbers.findIndex((n) => n % 2 !== 0) -console.log(firstEvenIndex) // 0 -console.log(firstOddIndex) // 1 -``` - -Let us find the index of the first country in the array which has exactly six characters - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] -const index = countries.findIndex((country) => country.length === 6) -console.log(index //2 -``` - -Let us find the index of the first country in the array which has the letter 'o'. - -```js -const countries = ['Finland', 'Estonia', 'Sweden', 'Norway', 'Iceland'] -const index = countries.findIndex((country) => country.includes('o')) -console.log(index // 1 -``` - -Let us move on to the next functional programming, some. - -### 7. some - -The some method is used with array and return a boolean. If one or some of the items satisfy the criteria the result will be true else it will be false. Let us see it with an example. - -In the following array some numbers are even and some are odd, so if I ask you a question, are there even numbers in the array then your answer will be yes. If I ask you also another question, are there odd numbers in the array then your answer will be yes. On the contrary, if I ask you, are all the numbers even or odd then your answer will be no because all the numbers are not even or odd. - -```js -const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -const someAreEvens = numbers.some((n) => n % 2 === 0) -const someAreOdds = numbers.some((n) => n % 2 !== 0) -console.log(someAreEvens) // true -console.log(someAreOdds) // true -``` - -Let us another example - -```js -const evens = [0, 2, 4, 6, 8, 10] -const someAreEvens = evens.some((n) => n % 2 === 0) -const someAreOdds = evens.some((n) => n % 2 !== 0) -console.log(someAreEvens) // true -console.log(someAreOdds) // false -``` - -Now, let us see one more functional programming, every. - -### 8. every - -The method every is somehow similar to some but every item must satisfy the criteria. The method every like some returns a boolean. - -```js - -const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -const allAreEvens = numbers.every((n) => n % 2 === 0) -const allAreOdd s= numbers.every((n) => n % 2 !== 0) - -console.log(allAreEven) // false -console.log(allAreOdd) // false - -const evens = [0, 2, 4, 6, 8, 10] -const someAreEvens = evens.some((n) => n % 2 === 0) -const someAreOdds = evens.some((n) => n % 2 !== 0) - -console.log(someAreEvens) // true -console.log(someAreOdds) // false -``` - -### Exercises - -```js -const products = [ - { product: 'banana', price: 3 }, - { product: 'mango', price: 6 }, - { product: 'potato', price: ' ' }, - { product: 'avocado', price: 8 }, - { product: 'coffee', price: 10 }, - { product: 'tea', price: '' }, -] -``` - -1. Print the price of each product using forEach -2. Print the product items as follows using forEach - - ```sh - The price of banana is 3 euros. - The price of mango is 6 euros. - The price of potato is unknown. - The price of avocado is 8 euros. - The price of coffee is 10 euros. - The price of tea is unknown. - ``` - -3. Calculate the sum of all the prices using forEach -4. Create an array of prices using map and store it in a variable prices -5. Filter products with prices -6. Use method chaining to get the sum of the prices(map, filter, reduce) -7. Calculate the sum of all the prices using reduce only -8. Find the first product which doesn't have a price value -9. Find the index of the first product which does not have price value -10. Check if some products do not have a price value -11. Check if all the products have price value -12. Explain the difference between forEach, map, filter and reduce -13. Explain the difference between filter, find and findIndex -14. Explain the difference between some and every - -## 12. Classes - -JavaScript is an object oriented programming language. Everything in JavScript is an object, with its properties and methods. We create class to create an object. A Class is like an object constructor, or a "blueprint" for creating objects. We instantiate a class to create an object. The class defines attributes and the behavior of the object, while the object, on the other hand, represents the class. - -Once we create a class we can create object from it whenever we want. Creating an object from a class is called class instantiation. - -In the object section, we saw how to create an object literal. Object literal is a singleton. If we want to get a similar object , we have to write it. However, class allows to create many objects. This helps to reduce amount of code and repetition of code. - -### Defining a classes - -To define a class in JavaScript we need the keyword _class_ , the name of a class in **CamelCase** and block code(two curly brackets). Let us create a class name Person. - -```sh -// syntax -class ClassName { - // code goes here -} - -``` - -**Example:** - -```js -class Person { - // code goes here -} -``` - -We have created an Person class but it does not have any thing inside. - -### Class Instantiation - -Instantiation class means creating an object from a class. We need the keyword _new_ and we call the name of the class after the word new. - -Let us create a dog object from our Person class. - -```js -class Person { - // code goes here -} -const person = new Person() -console.log(person) -``` - -```sh -PersonΒ {} -``` - -As you can see, we have created a person object. Since the class did not have any properties yet the object is also empty. - -Let use the class constructor to pass different properties for the class. - -### Class Constructor - -The constructor is a builtin function which allows as to create a blueprint for our object. The constructor function starts with a keyword constructor followed by a parenthesis. Inside the parenthesis we pass the properties of the object as parameter. We use the _this_ keyword to attach the constructor parameters with the class. - -The following Person class constructor has firstName and lastName property. These properties are attached to the Person class using _this_ keyword. _This_ refers to the class itself. - -```js -class Person { - constructor(firstName, lastName) { - console.log(this) // Check the output from here - this.firstName = firstName - this.lastName = lastName - } -} - -const person = new Person() - -console.log(person) -``` - -```sh -PersonΒ {firstName: undefined, lastName} -``` - -All the keys of the object are undefined. When ever we instantiate we should pass the value of the properties. Let us pass value at this time when we instantiate the class. - -```js -class Person { - constructor(firstName, lastName) { - this.firstName = firstName - this.lastName = lastName - } -} - -const person1 = new Person('Asabeneh', 'Yetayeh') - -console.log(person1) -``` - -```sh -PersonΒ {firstName: "Asabeneh", lastName: "Yetayeh"} -``` - -As we have stated at the very beginning that once we create a class we can create many object using the class. Now, let us create many person objects using the Person class. - -```js -class Person { - constructor(firstName, lastName) { - console.log(this) // Check the output from here - this.firstName = firstName - this.lastName = lastName - } -} - -const person1 = new Person('Asabeneh', 'Yetayeh') -const person2 = new Person('Lidiya', 'Tekle') -const person3 = new Person('Abraham', 'Yetayeh') - -console.log(person1) -console.log(person2) -console.log(person3) -``` - -```sh -PersonΒ {firstName: "Asabeneh", lastName: "Yetayeh"} -PersonΒ {firstName: "Lidiya", lastName: "Tekle"} -PersonΒ {firstName: "Abraham", lastName: "Yetayeh"} -``` - -Using the class Person we created three persons object. As you can see our class did not many properties let us add more properties to the class. - -```js -class Person { - constructor(firstName, lastName, age, country, city) { - console.log(this) // Check the output from here - this.firstName = firstName - this.lastName = lastName - this.age = age - this.country = country - this.city = city - } -} - -const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') - -console.log(person1) -``` - -```sh -PersonΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: 250, country: "Finland", city: "Helsinki"} -``` - -### Default values with constructor - -The constructor function properties may have a default value like other regular functions. - -```js -class Person { - constructor( - firstName = 'Asabeneh', - lastName = 'Yetayeh', - age = 250, - country = 'Finland', - city = 'Helsinki' - ) { - this.firstName = firstName - this.lastName = lastName - this.age = age - this.country = country - this.city = city - } -} - -const person1 = new Person() // it will take the default values -const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') - -console.log(person1) -console.log(person2) -``` - -```sh -PersonΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: 250, country: "Finland", city: "Helsinki"} -PersonΒ {firstName: "Lidiya", lastName: "Tekle", age: 28, country: "Finland", city: "Espoo"} -``` - -### Class methods - -The constructor inside a class is a builtin function which allow us to create a blueprint for the object. In a class we can create class methods. Methods are JavaScript functions inside the class. Let us create some class methods. - -```js -class Person { - constructor(firstName, lastName, age, country, city) { - this.firstName = firstName - this.lastName = lastName - this.age = age - this.country = country - this.city = city - } - getFullName() { - const fullName = this.firstName + ' ' + this.lastName - return fullName - } -} - -const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') -const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') - -console.log(person1.getFullName()) -console.log(person2.getFullName()) -``` - -```sh -Asabeneh Yetayeh -test.js:19 Lidiya Tekle -``` - -### Properties with initial value - -When we create a class for some properties we may have an initial value. For instance if you are playing a game, you starting score will be zero. So, we may have a starting score or score which is zero. In other way, we may have an initial skill and we will acquire some skill after some time. - -```js -class Person { - constructor(firstName, lastName, age, country, city) { - this.firstName = firstName - this.lastName = lastName - this.age = age - this.country = country - this.city = city - this.score = 0 - this.skills = [] - } - getFullName() { - const fullName = this.firstName + ' ' + this.lastName - return fullName - } -} - -const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') -const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') - -console.log(person1.score) -console.log(person2.score) - -console.log(person1.skills) -console.log(person2.skills) -``` - -```sh -0 -0 -[] -[] -``` - -A method could be regular method or a getter or a setter. Let us see, getter and setter. - -### getter - -The get method allow us to access value from the object. We write a get method using keyword _get_ followed by a function. Instead of accessing properties directly from the object we use getter to get the value. See the example bellow - -```js -class Person { - constructor(firstName, lastName, age, country, city) { - this.firstName = firstName - this.lastName = lastName - this.age = age - this.country = country - this.city = city - this.score = 0 - this.skills = [] - } - getFullName() { - const fullName = this.firstName + ' ' + this.lastName - return fullName - } - get getscore() { - return this.score - } - get getSkills() { - return this.skills - } -} - -const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') -const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') - -console.log(person1.getScore) // We do not need parenthesis to call a getter method -console.log(person2.getScore) - -console.log(person1.getSkills) -console.log(person2.getSkills) -``` - -```sh -0 -0 -[] -[] -``` - -### setter - -The setter method allow us to modify the value of certain properties. We write a setter method using keyword _set_ followed by a function. See the example bellow. - -```js -class Person { - constructor(firstName, lastName, age, country, city) { - this.firstName = firstName - this.lastName = lastName - this.age = age - this.country = country - this.city = city - this.score = 0 - this.skills = [] - } - getFullName() { - const fullName = this.firstName + ' ' + this.lastName - return fullName - } - get getScore() { - return this.score - } - get getSkills() { - return this.skills - } - set setScore(score) { - this.score += score - } - set setSkill(skill) { - this.skills.push(skill) - } -} - -const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') -const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') - -person1.setScore = 1 -person1.setSkill = 'HTML' -person1.setSkill = 'CSS' -person1.setSkill = 'JavaScript' - -person2.setScore = 1 -person2.setSkill = 'Planning' -person2.setSkill = 'Managing' -person2.setSkill = 'Organizing' - -console.log(person1.score) -console.log(person2.score) - -console.log(person1.skills) -console.log(person2.skills) -``` - -```sh -1 -1 -["HTML", "CSS", "JavaScript"] -["Planning", "Managing", "Organizing"] -``` - -Do not be puzzled by the difference between regular method and a getter. If you know how to make a regular method you are good. Let us add regular method called getPersonInfo in the Person class. - -```js -class Person { - constructor(firstName, lastName, age, country, city) { - this.firstName = firstName - this.lastName = lastName - this.age = age - this.country = country - this.city = city - this.score = 0 - this.skills = [] - } - getFullName() { - const fullName = this.firstName + ' ' + this.lastName - return fullName - } - get getScore() { - return this.score - } - get getSkills() { - return this.skills - } - set setScore(score) { - this.score += score - } - set setSkill(skill) { - this.skills.push(skill) - } - getPersonInfo() { - let fullName = this.getFullName() - let skills = - this.skills.length > 0 && - this.skills.slice(0, this.skills.length - 1).join(', ') + - ` and ${this.skills[this.skills.length - 1]}` - let formattedSkills = skills ? `He knows ${skills}` : '' - - let info = `${fullName} is ${this.age}. He lives ${this.city}, ${this.country}. ${formattedSkills}` - return info - } -} - -const person1 = new Person('Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki') -const person2 = new Person('Lidiya', 'Tekle', 28, 'Finland', 'Espoo') -const person3 = new Person('John', 'Doe', 50, 'Mars', 'Mars city') - -person1.setScore = 1 -person1.setSkill = 'HTML' -person1.setSkill = 'CSS' -person1.setSkill = 'JavaScript' - -person2.setScore = 1 -person2.setSkill = 'Planning' -person2.setSkill = 'Managing' -person2.setSkill = 'Organizing' - -console.log(person1.getScore) -console.log(person2.getScore) - -console.log(person1.getSkills) -console.log(person2.getSkills) -console.log(person3.getSkills) - -console.log(person1.getPersonInfo()) -console.log(person2.getPersonInfo()) -console.log(person3.getPersonInfo()) -``` - -```sh -1 -1 -["HTML", "CSS", "JavaScript"] -["Planning", "Managing", "Organizing"] -[] -Asabeneh Yetayeh is 250. He lives Helsinki, Finland. He knows HTML, CSS and JavaScript -Lidiya Tekle is 28. He lives Espoo, Finland. He knows Planning, Managing and Organizing -John Doe is 50. He lives Mars city, Mars. -``` - -### Static method - -The static keyword defines a static method for a class. Static methods are not called on instances of the class. Instead, they are called on the class itself. These are often utility functions, such as functions to create or clone objects. An example of static method is _Date.now()_. The _now_ method is called directly from the class. - -```js -class Person { - constructor(firstName, lastName, age, country, city) { - this.firstName = firstName - this.lastName = lastName - this.age = age - this.country = country - this.city = city - this.score = 0 - this.skills = [] - } - getFullName() { - const fullName = this.firstName + ' ' + this.lastName - return fullName - } - get getScore() { - return this.score - } - get getSkills() { - return this.skills - } - set setScore(score) { - this.score += score - } - set setSkill(skill) { - this.skills.push(skill) - } - getPersonInfo() { - let fullName = this.getFullName() - let skills = - this.skills.length > 0 && - this.skills.slice(0, this.skills.length - 1).join(', ') + - ` and ${this.skills[this.skills.length - 1]}` - - let formattedSkills = skills ? `He knows ${skills}` : '' - - let info = `${fullName} is ${this.age}. He lives ${this.city}, ${this.country}. ${formattedSkills}` - return info - } - static favoriteSkill() { - const skills = ['HTML', 'CSS', 'JS', 'React', 'Python', 'Node'] - const index = Math.floor(Math.random() * skills.length) - return skills[index] - } - static showDateTime() { - let now = new Date() - let year = now.getFullYear() - let month = now.getMonth() + 1 - let date = now.getDate() - let hours = now.getHours() - let minutes = now.getMinutes() - if (hours < 10) { - hours = '0' + hours - } - if (minutes < 10) { - minutes = '0' + minutes - } - - let dateMonthYear = date + '.' + month + '.' + year - let time = hours + ':' + minutes - let fullTime = dateMonthYear + ' ' + time - return fullTime - } -} - -console.log(Person.favoriteSkill()) -console.log(Person.showDateTime()) -``` - -```sh -Node -15.1.2020 23:56 -``` - -The static methods are methods which can be used as utility functions. - -### Inheritance - -Using inheritance we can access all the properties and the methods of the parent class. This reduces repetition of code. If you remember, we have a Person parent class and we will create children from it. Our children class could be student, teach etc. - -```js -// syntax -class ChildClassName extends { - // code goes here -} -``` - -Let us create a Student child class from Person parent class. - -```js -class Student extends Person { - saySomething() { - console.log('I am a child of the person class') - } -} - -const s1 = new Student('Asabeneh', 'Yetayeh', 'Finland', 250, 'Helsinki') -console.log(s1) -console.log(s1.saySomething()) -console.log(s1.getFullName()) -console.log(s1.getPersonInfo()) -``` - -```sh -StudentΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: "Finland", country: 250, city: "Helsinki", …} -I am a child of the person class -Asabeneh Yetayeh -StudentΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: "Finland", country: 250, city: "Helsinki", …} -Asabeneh Yetayeh is Finland. He lives Helsinki, 250. -``` - -### Overriding methods - -As you can see, we manage to access all the methods in the Person Class and we used it in the Student child class. We can customize the parent methods, we can add additional properties to a child class. If we want to customize, the methods and if we want to add extra properties, we need to use the constructor function the child class too. In side the constructor function we call the super() function to access all the properties from the parent class. The Person class didn't have gender but now let us give gender property for the child class, Student. If the same method name used in the child class, the parent method will be overridden. - -```js -class Student extends Person { - constructor(firstName, lastName, age, country, city, gender) { - super(firstName, lastName, age, country, city) - this.gender = gender - } - - saySomething() { - console.log('I am a child of the person class') - } - getPersonInfo() { - let fullName = this.getFullName() - let skills = - this.skills.length > 0 && - this.skills.slice(0, this.skills.length - 1).join(', ') + - ` and ${this.skills[this.skills.length - 1]}` - - let formattedSkills = skills ? `He knows ${skills}` : '' - let pronoun = this.gender == 'Male' ? 'He' : 'She' - - let info = `${fullName} is ${this.age}. ${pronoun} lives in ${this.city}, ${this.country}. ${formattedSkills}` - return info - } -} - -const s1 = new Student( - 'Asabeneh', - 'Yetayeh', - 250, - 'Finland', - 'Helsinki', - 'Male' -) -const s2 = new Student('Lidiya', 'Tekle', 28, 'Finland', 'Helsinki', 'Female') -s1.setScore = 1 -s1.setSkill = 'HTML' -s1.setSkill = 'CSS' -s1.setSkill = 'JavaScript' - -s2.setScore = 1 -s2.setSkill = 'Planning' -s2.setSkill = 'Managing' -s2.setSkill = 'Organizing' - -console.log(s1) - -console.log(s1.saySomething()) -console.log(s1.getFullName()) -console.log(s1.getPersonInfo()) - -console.log(s2.saySomething()) -console.log(s2.getFullName()) -console.log(s2.getPersonInfo()) -``` - -```sh -StudentΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: 250, country: "Finland", city: "Helsinki", …} -StudentΒ {firstName: "Lidiya", lastName: "Tekle", age: 28, country: "Finland", city: "Helsinki", …} -I am a child of the person class -Asabeneh Yetayeh -StudentΒ {firstName: "Asabeneh", lastName: "Yetayeh", age: 250, country: "Finland", city: "Helsinki", …} -Asabeneh Yetayeh is 250. He lives in Helsinki, Finland. He knows HTML, CSS and JavaScript -I am a child of the person class -Lidiya Tekle -StudentΒ {firstName: "Lidiya", lastName: "Tekle", age: 28, country: "Finland", city: "Helsinki", …} -Lidiya Tekle is 28. She lives in Helsinki, Finland. He knows Planning, Managing and Organizing -``` - -Now, the getPersonInfo method has been overridden and it identifies if the person is male or female. - -### Exercises - -#### Exercises Level 1 - -1. Create an Animal class. The class will have name, age, color, legs properties and create different methods -2. Create a Dog and Cat child class from the Animal Class. - -#### Exercises Level 2 - -1. Override the method you create in Animal class - -#### Exercises Level 3 - -1. Let's try to develop a program which calculate measure of central tendency of a sample(mean, median, mode) and measure of variability(range, variance, standard deviation). In addition to those measures find the min, max, count, percentile, and frequency distribution of the sample. You can create a class called Statistics and create all the functions which do statistical calculations as method for the Statistics class. Check the output below. - -```JS -ages = [31, 26, 34, 37, 27, 26, 32, 32, 26, 27, 27, 24, 32, 33, 27, 25, 26, 38, 37, 31, 34, 24, 33, 29, 26] - -console.log('Count:', statistics.count()) // 25 -console.log('Sum: ', statistics.sum()) // 744 -console.log('Min: ', statistics.min()) // 24 -console.log('Max: ', statistics.max()) // 38 -console.log('Range: ', statistics.range() // 14 -console.log('Mean: ', statistics.mean()) // 30 -console.log('Median: ',statistics.median()) // 29 -console.log('Mode: ', statistics.mode()) // {'mode': 26, 'count': 5} -console.log('Variance: ',statistics.var()) // 17.5 -console.log('Standard Deviation: ', statistics.std()) // 4.2 -console.log('Variance: ',statistics.var()) // 17.5 -console.log('Frequency Distribution: ',statistics.freqDist()) // [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] -``` - -```sh -// you output should look like this -console.log(statistics.describe()) -Count: 25 -Sum: 744 -Min: 24 -Max: 38 -Range: 14 -Mean: 30 -Median: 29 -Mode: (26, 5) -Variance: 17.5 -Standard Deviation: 4.2 -Frequency Distribution: [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] -``` - -## 13 Document Object Model(DOM) - -HTML document is structured as a JavaScript Object. Every HTML element has a different properties which can help us to manipulate it. It is possible to get, create, append or remove HTML elements using JavaScript. - -When it comes to React we do not directly manipulate the DOM instead React Virtual DOM will take care of update all necessary changes. - -So do not directly manipulate the DOM if you are using react. The only place we directly touch the DOM is here at the index.html. React is a single page application because all the components will be rendered on the index.html page and there will not be any other HTML in the entire React Application. You don't have to know DOM very well to use react but recommended to know. - -```html - - - - - - React App - - - - -
- - - - -``` - -Check out there result on [codepen](https://codepen.io/Asabeneh/full/vYGqQxP) - -πŸŒ• You are amazing! You have just completed day 1 challenge and you are on your way to greatness. Now you are a JavaScript Ninja and ready to dive into React. +Congratulations! You have completed the setup you need to get started with React, but before we dive into React let's do JavaScript refresher. If you are very comfortable with JavaScript you may skip day 1 JavaScript refresher. The JavaScript refresher section is vast and it may take more than one day. From my experience people usually get stuck in React because their JavaScript knowledge is very shallow therefore to fill that gap all the necessary JavaScript feature which can be used in React are covered in the JavaScript refresher section. There are many exercise but you are not required to solve them. Click [here](../30-Days-Of-React/02_Day_Introduction_to_React/02_introduction_to_react.md) if you want skip JavaScript and jump directly into React. πŸŽ‰ CONGRATULATIONS ! πŸŽ‰ -[Day 2 >>](./02_Day_Introduction_to_React/02_introduction_to_react.md) +[Day 1 >>](./01_Day_JavaScript_Refresher/01_javascript_refresher.md) From d880a7ba270d7dbeb3ea4ead44df0181319c281a Mon Sep 17 00:00:00 2001 From: mominriyadh Date: Sat, 3 Oct 2020 20:23:39 +0600 Subject: [PATCH 03/11] mismatched closing dev has been removed --- 02_Day_Introduction_to_React/02_introduction_to_react.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Day_Introduction_to_React/02_introduction_to_react.md b/02_Day_Introduction_to_React/02_introduction_to_react.md index 04ba802..323b381 100644 --- a/02_Day_Introduction_to_React/02_introduction_to_react.md +++ b/02_Day_Introduction_to_React/02_introduction_to_react.md @@ -13,7 +13,7 @@ - + [<< Day 1](../readMe.md) | [Day 3 >>](../03_Day_Booleans_operators_date/03_booleans_operators_date.md) From 1f7d38db89dc2c9723c3945ed1947dfa307ff852 Mon Sep 17 00:00:00 2001 From: mominriyadh Date: Sat, 3 Oct 2020 20:46:18 +0600 Subject: [PATCH 04/11] some overwritten property has been simplyfied --- .../02_introduction_to_react.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/02_Day_Introduction_to_React/02_introduction_to_react.md b/02_Day_Introduction_to_React/02_introduction_to_react.md index 323b381..082ffb9 100644 --- a/02_Day_Introduction_to_React/02_introduction_to_react.md +++ b/02_Day_Introduction_to_React/02_introduction_to_react.md @@ -708,7 +708,6 @@ Instead of style object using regular styling method is more easier than the abo header { background-color: #61dbfb; - padding: 25; padding: 10px; } @@ -988,13 +987,11 @@ Now, let us put everything together. Here in the example below, the data is inje header { background-color: #61dbfb; - padding: 25; padding: 10px; } main { - padding: 10px; - padding-bottom: 60px; + padding: 10px 10px 60px; /* Height of the footer */ } @@ -1200,13 +1197,11 @@ In the following code example, the list is now containing list elements and form header { background-color: #61dbfb; - padding: 25; padding: 10px; } main { - padding: 10px; - padding-bottom: 60px; + padding: 10px 10px 60px; /* Height of the footer */ } @@ -1407,7 +1402,6 @@ As you can see above, now the lists are formatted properly but there is warning header { background-color: #61dbfb; - padding: 25; padding: 10px; } From 746b724a1afa5589361bcf3065eaf78b1f21f349 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 3 Oct 2020 18:12:25 +0300 Subject: [PATCH 05/11] minor fixes --- .../01_javascript_refresher.md | 21 +++++++++------- .../02_introduction_to_react.md | 2 +- 03_Day_Setting_Up/03_day_setting_up.md | 24 +++++++++++++++---- readMe.md | 22 +++++++++-------- 4 files changed, 45 insertions(+), 24 deletions(-) diff --git a/01_Day_JavaScript_Refresher/01_javascript_refresher.md b/01_Day_JavaScript_Refresher/01_javascript_refresher.md index 2db442b..f4c049a 100644 --- a/01_Day_JavaScript_Refresher/01_javascript_refresher.md +++ b/01_Day_JavaScript_Refresher/01_javascript_refresher.md @@ -1,24 +1,27 @@
+

30 Days Of React: JavaScript Refresher

+ Twitter Follow - - Author: Asabeneh Yetayeh
- October, 2020 -
+Author: +Asabeneh Yetayeh
+ October, 2020 +
+ [<< Day 0](../readMe.md) | [Day 2 >>](../02_Day_Introduction_to_React/02_introduction_to_react.md) ![30 Days of React banner](../images/30_days_of_react_banner_day_1.jpg) - [JavaScript Refresher](#javascript-refresher) - - [0. Adding JavaScript to a Web Page](#adding-javascript-to-a-web-page) + - [0. Adding JavaScript to a Web Page](#0-adding-javascript-to-a-web-page) - [Inline Script](#inline-script) - [Internal Script](#internal-script) - [External Script](#external-script) @@ -50,7 +53,7 @@ - [Reversing array order](#reversing-array-order) - [Sorting elements in array](#sorting-elements-in-array) - [Array of arrays](#array-of-arrays) - - [πŸ’» Exercise](#-exercise) + - [πŸ’» Exercise](#-exercise) - [Exercise: Level 1](#exercise-level-1) - [Exercise: Level 2](#exercise-level-2) - [Exercise: Level 3](#exercise-level-3) @@ -60,7 +63,7 @@ - [If Else if Else](#if-else-if-else) - [Switch](#switch) - [Ternary Operators](#ternary-operators) - - [πŸ’» Exercises](#-exercises) + - [πŸ’» Exercises](#-exercises) - [Exercises: Level 1](#exercises-level-1) - [Exercises: Level 2](#exercises-level-2) - [Exercises: Level 3](#exercises-level-3) @@ -91,7 +94,7 @@ - [Getting object values using Object.values()](#getting-object-values-using-objectvalues) - [Getting object keys and values using Object.entries()](#getting-object-keys-and-values-using-objectentries) - [Checking properties using hasOwnProperty()](#checking-properties-using-hasownproperty) - - [πŸ’» Exercises](#-exercises-1) + - [πŸ’» Exercises](#-exercises-1) - [Exercises: Level 1](#exercises-level-1-1) - [Exercises: Level 2](#exercises-level-2-1) - [Exercises: Level 3](#exercises-level-3-1) @@ -111,7 +114,7 @@ - [Arrow Function](#arrow-function) - [Function with default parameters](#function-with-default-parameters) - [Function declaration versus Arrow function](#function-declaration-versus-arrow-function) - - [πŸ’» Exercises](#-exercises-2) + - [πŸ’» Exercises](#-exercises-2) - [Exercises: Level 1](#exercises-level-1-2) - [Exercises: Level 2](#exercises-level-2-2) - [Exercises: Level 3](#exercises-level-3-2) diff --git a/02_Day_Introduction_to_React/02_introduction_to_react.md b/02_Day_Introduction_to_React/02_introduction_to_react.md index 1699c96..1867921 100644 --- a/02_Day_Introduction_to_React/02_introduction_to_react.md +++ b/02_Day_Introduction_to_React/02_introduction_to_react.md @@ -116,7 +116,7 @@ const welcome =

Welcome to 30 Days of React Challenge

const data = Oct 2, 2020 ``` -The above strange looking code seems a JavaScrip but it is not JavaScript and it seems an HTML but not completely an HTML element. It is a mix of JavaScript and an HTML element. JSX can allow us to use HTML in JavaScript. The HTML element in the above JSX is _h1_ and _small_. +The above strange looking code seems a JavaScript but it is not JavaScript and it seems an HTML but not completely an HTML element. It is a mix of JavaScript and an HTML element. JSX can allow us to use HTML in JavaScript. The HTML element in the above JSX is _h1_ and _small_. #### JSX Element diff --git a/03_Day_Setting_Up/03_day_setting_up.md b/03_Day_Setting_Up/03_day_setting_up.md index b956ee2..0d48075 100644 --- a/03_Day_Setting_Up/03_day_setting_up.md +++ b/03_Day_Setting_Up/03_day_setting_up.md @@ -37,11 +37,11 @@ # Setting Up -In the previous section, we learned about JSX and we access the React and ReactDOM package using CDN. However, in real life work in environment instead of CDN you will use create-react-app package to generate a React project starter(boilerplate). The initial _create-react-app_ was released on Jul 22, 2016. Before this time, developers used to configure webpack which a JavaScript module bundler, babel and all the necessary packages manually and this used to take half an hour or may be more. Now, create-react-app will take care of everything and you will be in charge developing product only instead of spending too much time configuring and setting up projects. Before we start using different tools, let's have a brief introduction for all the tools we are going to use in this challenge. You do not have understand everything but I will try to give a very short introduction about some of the tools and technologies which we use when we work with React. +In the previous section, we learned about JSX and we accessed the React and ReactDOM package using CDN. However, in real projects instead of CDN you will use the create-react-app package to generate a React project starter(boilerplate). The initial _create-react-app_ was released on Jul 22, 2016. Before this time, developers used to configure webpack which a JavaScript module bundler, babel and all the necessary packages manually and this used to take half an hour or may be more. Now, create-react-app will take care of everything and you will be in charge of developing the product only instead of spending too much time configuring and setting up projects. Before we start using different tools, let's have a brief introduction for all the tools we are going to use in this challenge. You do not have to understand everything but I will try to give a very short introduction about some of the tools and technologies which we use when we work with React. ## Node -Node is a JavaScript run time environment which allows to run JavaScript on the server. Node was created in 2019. Node has played a great role for the growth of JavaScript. React application starts by default at localhost 3000. The create-react-app has configured a node server for the React Application. We will see create-react-app soon. +Node is a JavaScript runtime environment which allows JavaScript to run on the server. Node was created in 2019. Node has played a great role for the growth of JavaScript. The React application starts by default at localhost 3000. The create-react-app has configured a node server for the React Application. That is why we need node and node modules. We will see create-react-app soon. If you do have node, install node. Install [node.js](https://nodejs.org/en/). @@ -51,7 +51,7 @@ After downloading double click and install ![Install node](../images/install_node.png) -We can check if node is installed on our local machine by opening our device terminal or command prompt. +We can check if node is installed on our local machine by opening our device terminal or command prompt and writing the following command. ```sh asabeneh $ node -v @@ -61,6 +61,22 @@ v12.18.0 ## Module A single or multiple functions which can be exported and imported when needed and can be included in a project. +In react we do not use link to access modules or packages instead we import the module. Let's see how to import and export a module or modules + +```js +// math.js +export const addTwo = (a, b) => a + b +export const multiply = (a, b) => a * b +export const subtract = (a, b) => a - b +default export doSomeMath = () => { + return { + addTwo, multiply, subtract + } + +} +``` + +Now let's import the _math.js_ modules to a different file ## Package @@ -155,7 +171,7 @@ It is good to know these folders and files. - favicon.io - a favicon - manifest.json - is use to make the application a progressive web app - other images- which can be used for open graph image or for other purposes - - rotots.txt - information if the website allow web scraping + - robots.txt - information if the website allow web scraping - src diff --git a/readMe.md b/readMe.md index 6ef5417..a07c798 100644 --- a/readMe.md +++ b/readMe.md @@ -18,12 +18,14 @@ -| # Day | Topics | -| ----- | :--------------------------------------------------------------------------------------------------------------------------: | -| 00 | [Introduction](#introduction)
[How to Use Repo](#how-to-use-repo)
[Requirements](#requirements)
[Setup](#setup) | -| 01 | [JavaScript Refresher](./01_Day_JavaScript_Refresher/01_javascript_refresher.md) | -| 02 | [Getting Started React](./02_Day_Introduction_to_React/02_introduction_to_react.md) | -| 03 | [Setting Up](./03_Day_Setting_Up/03_day_setting_up.md) | +[Day 1 >>](./01_Day_JavaScript_Refresher/01_javascript_refresher.md) + +| # Day | Topics | +| ----- | :-------------------------------------------------------------------------------------------------------------------------: | +| 00 | [Introduction](#introduction)
[How to Use Repo](#how-to-use-repo)
[Requirements](#requirements)
[Setup](#setup) | +| 01 | [JavaScript Refresher](./01_Day_JavaScript_Refresher/01_javascript_refresher.md) | +| 02 | [Getting Started React](./02_Day_Introduction_to_React/02_introduction_to_react.md) | +| 03 | [Setting Up](./03_Day_Setting_Up/03_day_setting_up.md) | 🧑🧑🧑 HAPPY CODING 🧑🧑🧑
Support [**Asabeneh**](https://www.patreon.com/asabeneh?fan_landing=true) to create more educational materials @@ -31,16 +33,16 @@
-___ +--- - [Introduction](#introduction) - [Requirements](#requirements) - [How to Use Repo](#how-to-use-repo) - [Star and Fork this Repo](#star-and-fork-this-repo) - - [Clone your fork](#clone-your-fork) + - [Clone your Fork](#clone-your-fork) - [Create a New Branch](#create-a-new-branch) - [Structure Exercise Solutions](#structure-exercise-solutions) - - [Commit Exercise Solutions](#commit-exercise-solutions) + - [Commit Excercise Solutions](#commit-excercise-solutions) - [Update your Fork Daily](#update-your-fork-daily) - [Setup](#setup) - [Install Node.js](#install-nodejs) @@ -57,7 +59,7 @@ ___ - [Installing Visual Studio Code](#installing-visual-studio-code) - [How to Use Visual Studio Code](#how-to-use-visual-studio-code) -___ +--- ## Introduction From b7dae56395cafc3194ea872c26e858f3c77adf7d Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 3 Oct 2020 18:42:17 +0300 Subject: [PATCH 06/11] modules example added --- .../02_introduction_to_react.md | 2 -- 03_Day_Setting_Up/03_day_setting_up.md | 27 ++++++++++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/02_Day_Introduction_to_React/02_introduction_to_react.md b/02_Day_Introduction_to_React/02_introduction_to_react.md index 1867921..edeb26f 100644 --- a/02_Day_Introduction_to_React/02_introduction_to_react.md +++ b/02_Day_Introduction_to_React/02_introduction_to_react.md @@ -11,8 +11,6 @@ Asabeneh Yetayeh
October, 2020 - - [<< Day 1](../01_Day_JavaScript_Refresher/01_javascript_refresher.md) | [Day 3 >>](../03_Day_Setting_Up/03_day_setting_up.md) diff --git a/03_Day_Setting_Up/03_day_setting_up.md b/03_Day_Setting_Up/03_day_setting_up.md index 0d48075..b63d528 100644 --- a/03_Day_Setting_Up/03_day_setting_up.md +++ b/03_Day_Setting_Up/03_day_setting_up.md @@ -68,15 +68,34 @@ In react we do not use link to access modules or packages instead we import the export const addTwo = (a, b) => a + b export const multiply = (a, b) => a * b export const subtract = (a, b) => a - b -default export doSomeMath = () => { + +export default (function doSomeMath() { return { - addTwo, multiply, subtract + addTwo, + multiply, + subtract, } +})() +``` -} +Now let's import the _math.js_ modules to a different file. + +```js +// index.js +// to import the doSomeMath from the math.js with or without extension +import doSomeMath from './math.js' + +// to import the other modules +// since these modules were not exported as default we have to desctructure +import { addTwo, multiply, subtract } from './math.js' + +import * as everything from './math.js' // to import everything renaming +console.log(addTwo(5, 5)) +console.log(doSomeMath.addTwo(5, 5)) +console.log(everything) ``` -Now let's import the _math.js_ modules to a different file +After this, when you see _import React from 'react'_ or _import ReactDOM from 'react-dom'_ you will not be surprised. ## Package From fec68a67d859a6cf2c837e5daae21f0a5679a9b8 Mon Sep 17 00:00:00 2001 From: mominriyadh Date: Sat, 3 Oct 2020 22:23:42 +0600 Subject: [PATCH 07/11] index.js and index.html file has been update with minor fix --- .idea/.gitignore | 5 +++++ .idea/30-Days-Of-React.iml | 12 ++++++++++++ .idea/codeStyles/codeStyleConfig.xml | 5 +++++ .idea/misc.xml | 6 ++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ .../30-days-of-react_boilerplate/public/index.html | 8 +++----- .../30-days-of-react_boilerplate/src/index.js | 6 +++--- 8 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/30-Days-Of-React.iml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/30-Days-Of-React.iml b/.idea/30-Days-Of-React.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/30-Days-Of-React.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..24eb271 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..4839a89 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/03_Day_Setting_Up/30-days-of-react_boilerplate/public/index.html b/03_Day_Setting_Up/30-days-of-react_boilerplate/public/index.html index eb6b4c2..3aafbc8 100644 --- a/03_Day_Setting_Up/30-days-of-react_boilerplate/public/index.html +++ b/03_Day_Setting_Up/30-days-of-react_boilerplate/public/index.html @@ -60,14 +60,12 @@ header { background-color: #61dbfb; - padding: 25; - padding: 10px; + padding: 10px; } main { - padding: 10px; - padding-bottom: 60px; - /* Height of the footer */ + padding: 10px 10px 60px; + /* Height of the footer */ } ul { diff --git a/03_Day_Setting_Up/30-days-of-react_boilerplate/src/index.js b/03_Day_Setting_Up/30-days-of-react_boilerplate/src/index.js index bc54327..68fd3dc 100644 --- a/03_Day_Setting_Up/30-days-of-react_boilerplate/src/index.js +++ b/03_Day_Setting_Up/30-days-of-react_boilerplate/src/index.js @@ -1,8 +1,8 @@ // index.js -import React from 'react' -import ReactDOM from 'react-dom' +import React from 'react'; +import ReactDOM from 'react-dom'; // To get the root element from the HTML document -import asabenehImage from './images/asabeneh.jpg' +import asabenehImage from './images/asabeneh.jpg'; // JSX element, header const welcome = 'Welcome to 30 Days Of React' const title = 'Getting Started React' From 70f069da03ba285424a73655451d33e76cd19626 Mon Sep 17 00:00:00 2001 From: iemprashant Date: Sat, 3 Oct 2020 22:29:53 +0530 Subject: [PATCH 08/11] Minor images path fix --- 01_Day_JavaScript_Refresher/01_javascript_refresher.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/01_Day_JavaScript_Refresher/01_javascript_refresher.md b/01_Day_JavaScript_Refresher/01_javascript_refresher.md index f4c049a..5c90a36 100644 --- a/01_Day_JavaScript_Refresher/01_javascript_refresher.md +++ b/01_Day_JavaScript_Refresher/01_javascript_refresher.md @@ -231,7 +231,7 @@ This is how we write an internal script most of the time. Writing the JavaScript Open the browser console to see the output from the console.log() -![js code from vscode](./images/js_code_vscode.png) +![js code from vscode](../images/js_code_vscode.png) #### External Script @@ -297,7 +297,7 @@ console.log('Hello, World!') _Your main.js file should be below all other scripts_. It is very important to remember this. -![Multiple Script](./images/multiple_script.png) +![Multiple Script](../images/multiple_script.png) ### 1. Variables @@ -433,7 +433,7 @@ console.log(words) We access each element in an array using their index. An array index starts from 0. The picture below clearly shows the index of each element in the array. -![arr index](./images/array_index.png) +![arr index](../images/array_index.png) ```js const fruits = ['banana', 'orange', 'mango', 'lemon'] From c2e668e6e72bd60d59cadde3f6fe9a0dd2487d6b Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sun, 4 Oct 2020 02:13:17 +0300 Subject: [PATCH 09/11] Day_4 --- .../02_introduction_to_react.md | 6 +- 03_Day_Setting_Up/03_day_setting_up.md | 2 +- .../30-days-of-react_boilerplate/src/index.js | 21 +- .../30-days-of-react_boilerplate/src/math.js | 12 + 04_Day_Component/04_components.md | 497 + .../.gitignore | 23 + .../README.md | 5 + .../package.json | 34 + .../public/index.html | 111 + .../src/images/asabeneh.jpg | Bin 0 -> 20817 bytes .../src/images/css_logo.png | Bin 0 -> 84176 bytes .../src/images/html_logo.png | Bin 0 -> 18060 bytes .../src/images/react_logo.png | Bin 0 -> 41477 bytes .../src/index.js | 108 + .../yarn.lock | 10849 ++++++++++++++++ images/components_example.png | Bin 0 -> 160749 bytes images/hexadecimal_color_exercise.png | Bin 0 -> 18938 bytes images/rendering_componnets.png | Bin 110989 -> 150438 bytes 18 files changed, 11661 insertions(+), 7 deletions(-) create mode 100644 03_Day_Setting_Up/30-days-of-react_boilerplate/src/math.js create mode 100644 04_Day_Component/04_components.md create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/.gitignore create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/README.md create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/package.json create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/public/index.html create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/src/images/asabeneh.jpg create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/src/images/css_logo.png create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/src/images/html_logo.png create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/src/images/react_logo.png create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/src/index.js create mode 100644 04_Day_Component/30-days-of-react_boilerplate-components/yarn.lock create mode 100644 images/components_example.png create mode 100644 images/hexadecimal_color_exercise.png diff --git a/02_Day_Introduction_to_React/02_introduction_to_react.md b/02_Day_Introduction_to_React/02_introduction_to_react.md index 0eeafe4..06339ec 100644 --- a/02_Day_Introduction_to_React/02_introduction_to_react.md +++ b/02_Day_Introduction_to_React/02_introduction_to_react.md @@ -855,8 +855,8 @@ In this section we only inject only strings const welcome = 'Welcome to 30 Days Of React' const title = 'Getting Started React' const subtitle = 'JavaScript Library' -const authorFirstName = 'Asabeneh' -const authorLastName = 'Yetayeh' +const firstName = 'Asabeneh' +const lastName = 'Yetayeh' const date = 'Oct 2, 2020' // JSX element, header @@ -869,7 +869,7 @@ const header = (

{title}

{subtitle}

- Instructor: {authorFirstName} {authorLastName} + Instructor: {firstName} {lastName}

Date: {date} diff --git a/03_Day_Setting_Up/03_day_setting_up.md b/03_Day_Setting_Up/03_day_setting_up.md index b63d528..f0ed728 100644 --- a/03_Day_Setting_Up/03_day_setting_up.md +++ b/03_Day_Setting_Up/03_day_setting_up.md @@ -746,4 +746,4 @@ The boilerplate code can be found [here](../03/../03_Day_Setting_Up/30-days-of-r ![News Letter](../images/news_letter_design.png) πŸŽ‰ CONGRATULATIONS ! πŸŽ‰ -[<< Day 2](../02_Day_Introduction_to_React/02_introduction_to_react.md) | [Day 4 >>]() +[<< Day 2](../02_Day_Introduction_to_React/02_introduction_to_react.md) | [Day 4 >>](../04_Day_Components/04_components.md) diff --git a/03_Day_Setting_Up/30-days-of-react_boilerplate/src/index.js b/03_Day_Setting_Up/30-days-of-react_boilerplate/src/index.js index 68fd3dc..8d7e972 100644 --- a/03_Day_Setting_Up/30-days-of-react_boilerplate/src/index.js +++ b/03_Day_Setting_Up/30-days-of-react_boilerplate/src/index.js @@ -1,8 +1,23 @@ // index.js -import React from 'react'; -import ReactDOM from 'react-dom'; +import React from 'react' +import ReactDOM from 'react-dom' // To get the root element from the HTML document -import asabenehImage from './images/asabeneh.jpg'; +import asabenehImage from './images/asabeneh.jpg' + +// to import the doSomeMath from the math.js with or without extension +import doSomeMath from './math.js' + +// to import the other modules +// since these modules were not exported as default we have to desctructure +import { addTwo, multiply, subtract } from './math.js' + +import * as everything from './math.js' +console.log(addTwo(5, 5)) +console.log(doSomeMath.addTwo(5, 5)) +console.log(everything) +// JSX element, header + + // JSX element, header const welcome = 'Welcome to 30 Days Of React' const title = 'Getting Started React' diff --git a/03_Day_Setting_Up/30-days-of-react_boilerplate/src/math.js b/03_Day_Setting_Up/30-days-of-react_boilerplate/src/math.js new file mode 100644 index 0000000..e1f5b70 --- /dev/null +++ b/03_Day_Setting_Up/30-days-of-react_boilerplate/src/math.js @@ -0,0 +1,12 @@ +// math.js +export const addTwo = (a, b) => a + b +export const multiply = (a, b) => a * b +export const subtract = (a, b) => a - b + +export default(function doSomeMath() { + return { + addTwo, + multiply, + subtract, + } +})() diff --git a/04_Day_Component/04_components.md b/04_Day_Component/04_components.md new file mode 100644 index 0000000..6209460 --- /dev/null +++ b/04_Day_Component/04_components.md @@ -0,0 +1,497 @@ +
+

30 Days Of React: Components

+ + + + + Twitter Follow + + +Author: +Asabeneh Yetayeh
+ October, 2020 +
+ +
+ + +[<< Day 3](../30-Days-Of-React/03_Day_Setting_Up/03_day_setting_up.md) | [Day 5 >>]() + +![30 Days of React banner](../images/30_days_of_react_banner_day_4.jpg) + +- [Components](#components) + - [Big picture of components](#big-picture-of-components) + - [JavaScript function](#javascript-function) + - [JavaScript Class](#javascript-class) + - [Creating React Component](#creating-react-component) + - [Functional Component](#functional-component) + - [Rendering components](#rendering-components) + - [Injecting data to JSX in React Component](#injecting-data-to-jsx-in-react-component) + - [Further on Functional components](#further-on-functional-components) +- [Exercises: Components](#exercises-components) + +# Components + +A React component is small reusable code which is responsible for one part of the application UI. A React application is an aggregation of components. React can help us to build reusable components. The following diagram shows different components. All the components have different border colors. In react we assemble different components together to create an application. We use a JavaScript function or class to make components. If we use a function the component will be a functional component but if we use class the function will be a class based component. + +Components can be: + +- Functional Component / Presentational Component / stateless component / Dumb components +- Class Component / Container Component/ State full component / smart components + +The above classifications of components does not work for the latest version of react but it is good to know the former definition and how the previous versions work. + +So, let us change all the JSX to components. Components in React are JavaScript functions or class which return a JSX. Component name must start with an uppercase and if the name is two word should be CamelCase, camel with two humps. + +## Big picture of components + +In the previous section, we agree that a website or an application is made of buttons, forms, texts, media objects, header, section, article and footer. If we have a million dollar button we can use this button all the time instead of creating all over again whenever we need a button the same goes for input fields, forms, header or footer. That is where the power of component comes. In the following diagram, the header, main and footer are components. Inside the main also there is a user card component and a text section component. All the different colors represent different components. How many colors do you see? We have five components in this diagram. + +![Components](../images/components_example.png) + +Before we jump into React components let's do some functions and class refreshers. + +## JavaScript function + +A JavaScript function could be either a regular function or an arrow function. There is a slight difference between an regular function and an arrow functions. + +```js +const getUserInfo = (firstName, lastName, country, title, skills) => { + return `${firstName} ${lastName}, a ${title} developer base in ${country}. He knows ${skills.join( + ' ' + )} ` +} +// When we call this function we need parameters +console.log( + getUserInfo('Asabeneh', 'Yetayeh', 'Finland', 'FullStack Developer') +) +``` + +## JavaScript Class + +Class is a blue print of an object. We instantiate a class to create different objects. In addition, we can create children by inheriting all the methods and properties of the parent. + +```js +class Parent { + constructor(firstName, lastName, country, title) { + // we bind the params with this class object using this keyword + this.firstName = firstName + this.lastName = lastName + this.country = country + this.title = title + } + getPersonInfo() { + return `${this.firstName} ${this.lastName}, a ${this.title} developer base in ${this.country} ` + } + parentMethod() { + // code goes here + } +} + +const p1 = Parent('Asabeneh', 'Yetayeh', 'Finland', 'FullStack Developer') + +class Child extends Parent { + constructor(firstName, lastName, country, title, skills) { + super(firstName, lastName, country, title) + this.skills = skills + // we bind the child params with the this keyword to this child object + } + getSkills() { + let len = this.skills.length + return len > 0 ? this.skills.join(' ') : 'No skills found' + } + childMethod() { + // code goes here + } +} + +const child = new Child( + 'Asabeneh', + 'Yetayeh', + 'Finland', + 'FullStack Developer', + ['HTML', 'CSS', 'JS', 'React'] +) +``` + +We covered function and class in brief and React component is made from JavaScript functions or class. Now, lets make React component. + +## Creating React Component + +### Functional Component + +Using a JavaScript function we can make a functional React component. + +```js +// React component syntax +// it can be arrow function, function declaration or function expression +const jsx = Content +const ComponentName = () => { + return jsx +} +``` + +The following expression is a JSX element. + +```js +// JSX element, header +const header = ( +
+
+

Welcome to 30 Days Of React

+

Getting Started React

+

JavaScript Library

+

Asabeneh Yetayeh

+ Oct 3, 2020 +
+
+) + +// React Component +const Header = () => { + return header +} + +// or we can just return the JSX + +const Header = () => { + return ( +
+
+

Welcome to 30 Days Of React

+

Getting Started React

+

JavaScript Library

+

Asabeneh Yetayeh

+ Oct 3, 2020 +
+
+ ) +} + +// Even th above code can be written like this +// Explicitly returning the JSX +const Header = () => ( +
+
+

Welcome to 30 Days Of React

+

Getting Started React

+

JavaScript Library

+

Asabeneh Yetayeh

+ Oct 3, 2020 +
+
+) +``` + +### Rendering components + +Now, lets change all the JSX elements we had to components. When we call JSX element we use curly brackets and when we call components we do as follows . If we pass an attribute when we call the component name, we call it props(). We will talk about props in its section.[Live on code pen](https://codepen.io/Asabeneh/full/wvaKKEM) + +Let's render first the _Header_ component. + +```js +// index.js +import React from 'react' +import ReactDOM from 'react-dom' + +// Header Component +const Header = () => ( +
+
+

Welcome to 30 Days Of React

+

Getting Started React

+

JavaScript Library

+

Asabeneh Yetayeh

+ Oct 3, 2020 +
+
+) + +const rootElement = document.getElementById('root') +// we render the JSX element using the ReactDOM package +ReactDOM.render(
, rootElement) +``` + +Now, let's create an App component which hold the Header, Main and Footer. Then the App component will be render on the DOM. + +```js +// index.js +import React from 'react' +import ReactDOM from 'react-dom' +import asabenehImage from './images/asabeneh.jpg' + +// Header Component +const Header = () => ( +
+
+

Welcome to 30 Days Of React

+

Getting Started React

+

JavaScript Library

+

Asabeneh Yetayeh

+ Oct 3, 2020 +
+
+) + +// User Card Component +const UserCard = () => ( +
+ asabeneh image +

Asabeneh Yetayeh

+
+) + +// TechList Component +const TechList = () => { + const techs = ['HTML', 'CSS', 'JavaScript'] + const techsFormatted = techs.map((tech) =>
  • {tech}
  • ) + return techsFormatted +} + +// Main Component +const Main = () => ( +
    +
    +

    Prerequisite to get started react.js:

    +
      + +
    + +
    +
    +) + +// Footer Component +const Footer = () => ( +
    +
    +

    Copyright 2020

    +
    +
    +) + +// The App, or the parent or the container component +const App = () => ( +
    +
    +
    +
    +
    +) + +const rootElement = document.getElementById('root') +// we render the JSX element using the ReactDOM package +ReactDOM.render(, rootElement) +``` + +![Rendering Components](../images/rendering_componnets.png) + +### Injecting data to JSX in React Component + +So far, we used static data on the JSX elements now let's pass different data types as a dynamic data. The dynamic data could be string, number, boolean, array or object. Let us see each of the data types step by step. To inject data to a JSX we use the {} bracket. + +In this section we only inject only strings + +```js +import React from 'react' +import ReactDOM from 'react-dom' + +const welcome = 'Welcome to 30 Days Of React' +const title = 'Getting Started React' +const subtitle = 'JavaScript Library' +const firstName = 'Asabeneh' +const lastName = 'Yetayeh' +const date = 'Oct 3, 2020' + +// JSX element, header +const header = () => { + return ( +
    +
    +

    {welcome}

    +

    {title}

    +

    {subtitle}

    +

    + Instructor: {firstName} {lastName} +

    + Date: {date} +
    +
    + ) +} +const rootElement = document.getElementById('root') +// we render the JSX element using the ReactDOM package +ReactDOM.render(
    , rootElement) +``` + +Similar to the Header component we can implement to Main and Footer component. + +```js +// To get the root element from the HTML document +const rootElement = document.querySelector('.root') +// JSX element, header +const welcome = 'Welcome to 30 Days Of React Challenge' +const title = 'Getting Started React' +const subtitle = 'JavaScript Library' +const author = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', +} +const date = 'Oct 2, 2020' + +// JSX element, header +const Header = () => ( +
    +
    +

    {welcome}

    +

    {title}

    +

    {subtitle}

    +

    + Instructor: {author.firstName} {author.lastName} +

    + Date: {date} +
    +
    +) + +const numOne = 3 +const numTwo = 2 + +const result = ( +

    + {numOne} + {numTwo} = {numOne + numTwo} +

    +) + +const yearBorn = 1820 +const currentYear = 2020 +const age = currentYear - yearBorn +const personAge = ( +

    + {' '} + {author.firstName} {author.lastName} is {age} years old +

    +) + +// User Card Component +const UserCard = () => ( +
    + asabeneh image +

    + {author.firstName} {author.lastName} +

    +
    +) + +// JSX element, main +const techs = ['HTML', 'CSS', 'JavaScript'] +const techsFormatted = techs.map((tech) =>
  • {tech}
  • ) + +// JSX element, main +const Main = () => ( +
    +
    +
    +

    + Prerequisite to get started{' '} + + react.js + + : +

    +
      {techsFormatted}
    + {result} + {personAge} +
    + +
    +
    +) + +const copyRight = '2020' + +// JSX element, footer +const Footer = () => ( +
    +
    +

    Copyright ©{copyRight}

    +
    +
    +) + +// JSX element, app +const app = () => ( +
    +
    +
    +
    +
    +) + +// we render the JSX element using the ReactDOM package +ReactDOM.render(, rootElement) +``` + +### Further on Functional components + +We have transformed all the JSX elements of Day 2 to functional components and by now you are very familiar with components. Let's create more components. What is the smallest size of a component ? A component that +returns only a single HTML as JSX is considered as a small component. A button component or an alert box component or just an input field component. + +```js +const Button = () => +``` + +The _Button_ component is made of a single HTML button element. +Let's style this button using JavaScript style object. All CSS properties should be camelCase to make a JavaScript CSS object. If we pass number without unit as CSS value is considered as px. See the example below. + +```js +const buttonStyles = { + padding: '10px 20px', + background: 'rgb(0, 255, 0', + border: 'none', + borderRadius: 5, +} +const Button = () => +``` + +The Button component is a dumb component because it does not take any parameter and we can not change the action text dynamically. We need to pass a props to the button to change the value dynamically. We will see props in the next section. Before we close today's lesson let's make another more functional component which displays a random hexadecimal number. + +```js +import React from 'react' +import ReactDOM from 'react-dom' + +// Hexadecimal color generator +const hexaColor = () => { + let str = '0123456789abcdef' + let color = '' + for (let i = 0; i < 6; i++) { + let index = Math.floor(Math.random() * str.length) + color += str[index] + } + return '#' + color +} + +const HexaColor = () =>
    {hexaColor()} + +const rootElement = document.getElementById('root') +// we render the JSX element using the ReactDOM package +ReactDOM.render(, rootElement) +``` + +# Exercises: Components + +1.Create functional components and display the following images +![Front end](../images/frontend_technologies.png) + +2.Use functional component to design the following user card. + +![User Card](../images/user_card_design_jsx.png) + +3. Use functional component to create the following design + +![News Letter](../images/news_letter_design.png) 4. Use the give hexadecimal color generator in the example to create these random colors + +![Hexadecimal colors](../images/hexadecimal_color_exercise.png) + +πŸŽ‰ CONGRATULATIONS ! πŸŽ‰ +[<< Day 3](../30-Days-Of-React/03_Day_Setting_Up/03_day_setting_up.md) | [Day 5 >>]() diff --git a/04_Day_Component/30-days-of-react_boilerplate-components/.gitignore b/04_Day_Component/30-days-of-react_boilerplate-components/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/04_Day_Component/30-days-of-react_boilerplate-components/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/04_Day_Component/30-days-of-react_boilerplate-components/README.md b/04_Day_Component/30-days-of-react_boilerplate-components/README.md new file mode 100644 index 0000000..6a3afde --- /dev/null +++ b/04_Day_Component/30-days-of-react_boilerplate-components/README.md @@ -0,0 +1,5 @@ +# 30 Days of React App: Day 3 + +In the project directory, you can run to start the project + +### `npm start` diff --git a/04_Day_Component/30-days-of-react_boilerplate-components/package.json b/04_Day_Component/30-days-of-react_boilerplate-components/package.json new file mode 100644 index 0000000..e04beab --- /dev/null +++ b/04_Day_Component/30-days-of-react_boilerplate-components/package.json @@ -0,0 +1,34 @@ +{ + "name": "30-days-of-react", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", + "@testing-library/user-event": "^7.1.2", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "react-scripts": "3.4.3" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/04_Day_Component/30-days-of-react_boilerplate-components/public/index.html b/04_Day_Component/30-days-of-react_boilerplate-components/public/index.html new file mode 100644 index 0000000..44fa1f3 --- /dev/null +++ b/04_Day_Component/30-days-of-react_boilerplate-components/public/index.html @@ -0,0 +1,111 @@ + + + + + + + + + 30 Days Of React App + + + + +
    + + diff --git a/04_Day_Component/30-days-of-react_boilerplate-components/src/images/asabeneh.jpg b/04_Day_Component/30-days-of-react_boilerplate-components/src/images/asabeneh.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ea51be6445b24980e4263d467942be28c91b37d GIT binary patch literal 20817 zcmb4q^;aBC(C#iQu(-P|Zb5>(1$URlUm&o!EkT02y9Nl(;u73~1q~2naS~h>Nq`^; zB)NRwJ@*f|HD^x$P}9}ZbE>0gPr#s_KUaT$fMJ7g0O{vc}&>r*>C=5iZCktWwi(U380+q<G@KnBEm=i!P5q}e!SOlr~7kj7DL;}|XvBb@R?NapixOqN^$hJa(p6i9)z2rML( z0x>vRv6Kajh*T6P)e2`8H6X>1kM^s@&Xz}SV^Y&X^}R(KD11gGY74lcqC_hR>+g&TIo{naB_Y`t?N-%N$SN?^^V8rjEp`{~!%=Rv9e zx4NT=D3q=#(USh~Q)!F1!=0J-ZjpUn37NIhRPiI{*&EC}fjqHIlFoIv4G*RbD)mK7 z`%ZtWJ5et+;iywdr5haWm6!c}BDtrCV<#dkHg4DQ>sQ4oea*^a4{!}WwrKYh<~Ik% zD|Zy|2le17_aQ$D6p5_GSd2ZZtJ7lf=`rGKJktf+HrirT^qq+~i1NPuqQ z%Omr1TUQ?xhyUxvSwL=2<)~RSlhfj$@OIVpQL3xPH|^075LTFGi^d!~)k&$JeCper zUObm5hAFT%NMYE_U!AHCPKdB5A?plq*Kn)g6HsRbTbaHU7E1aD*j$PwM%j&}*-zQIWqdSu zvJ`4|%I`p*_2qllI44_Js`?)xvtUUv<74h-_i+aAmOt*I<&SR=16b9ODDF0+@>JM} z#|Z^Zx~0NjhoSiF)ky0QCqy+6^` zZ!gU5TC4V#P#JPPMrLN)#`Pvq!m)yM3mokJf4`zWEqZ_7z1gfMFZMdPH$*wO28<4npY+sUTq z5^)n1RdHi5lW9fZ#KaKmE0|F!;V}~%sp%7ygUba<6#&^ooTR~ZtjuWG86>jt;iX!{ z&l@EXDF6Xrk0Fi$0H1eJTXMzlLI}&0c)fPEZlz>(h|-V?4!5c6tMD3078C#X-%h$+ zzs9z=eZzx%PBTTa)KmFK{H>%U@sV{Y6fQRYt&kh3`|+`X-Sm}*%X0k*AL|X)%Y~pO z{2|qxqt%BkC#j||{2#w+n<~5nu&w8^0KtMU+m2@fQS|xVN;fYaJ;+w1gH$ph`!bOW zWy1vqeksWl@D)I&a|>{eTkY z4m9$zgoHzddHt3coW?-*CwmA;lm7taEe65R1;}sg$r#NC z+cHa$>{=R+Sw&3M$=x8)*6N}bl8Zmc$Rum7!csJ>Q7j%tn3MQ!F>LtaR9rUR*K$vW z4-M0}X}8&N-xWt&5Ry8OSKis-%NvEt9UE`bpX5t)Up^XzXB1(GN!ge!VID^>^mn?N zjdxZ!Xue~8fqJ5-)XzLV^~>}L8BAKA5uv0A56L_se4B9^h$<>+<)?KY;)D+D81h!% zXT1~%Bp(eKfrUa$DimD>hP=j7T~EjnOZdEiUIO&kv)rR7nnnN5=yX}WxTofEv*KMC zaOg#MUT4|Q47s|AFmzC^0)oMAcr!I7j;{%V`QuVABeyY+>3!Xx| z>aQ}6KQ2XvzBy0mg>bz_kcj3Sibq*#6w}yz0edk+rY5#SllJ-r7k@{6QUMw;`^)5w zOB)W&HX`-Sh}a=vjwbtkKQ+^y{#jTO+!(;}TAa>)>N0Q+wpORPA-*>~d9u$( z@z_VBMyDWgs68d%e{+IB{Z!1h6$r^jL#bcd}lsul=Dh~`AJYQOf4@>A2 z>Px*z#8YJi@vOPMISSW_pZU>RDO zHz_OGibuV5DX-^sxMci>KT$8Yp|8c$5G~&juAjY2QIqW+9bRt17SDSRIv{Hb>%LnB zKe;BrBYujRg(|h~9?h{dnR>F|&g5m~fwyS(vTp=wD_x$5hKK7Y_z*I(MAjjT%hK*q zT1rQ^BluP6&xnppgToR|Jw$4GagA9a-cp3?mr|eF&=_`l=VcPNY!!2aZKVcsIusxAJ0@k! zFIKjIWWrYG>kN0uhfZn{=jB0}u?xhPw}liV5rVIZE8F3zVQd*%@3~{-WZ%*1#Q`wo zLBqura*pRuP9rFbHqO&83jTT20=it*6vbkRvt(yu1n-l~yDH zVgx9F^UmiA$8H&0E{`WBj{xywC5|SQMGJ1#uh!Ff37`_dwxlT4_jQTu4yNM4zObvK zS>p5im99Co_U62++n9ZELAedp#5DI0uu2=;EN5umuya${M@;wO<9bjUVaG->v;xwL z3)f|1Ya1A_U^p_gU)x!PswcaQe{;6X0THMckV-(w>K5UcJ>Q5ySgLGk-sbbZV?Yi- z=-`Zs*-|svr4Bc?Ydi>D0!ks)YTnGMHYGhWiZLJHI^`L#?f0^`5ZxLs6j0P8U6}V; zW^{AIYN@eOPNz|Ra@~Dk_oq6(AZVX-D!`Q|Zn0kV6&ySAm@)2PfE>GlsY5t}?pKq$ zicDkU? z$43+!BHNq)9d(OqLf5gDTL0`CTFqCl8YKui6l84sb~b7-*h^P0`Dzi-N6K}Qi?|x~ z)HKFv_36#o`kOzB{J!Z@u0Ke(1t{bffEq=^S1ENrVFu2x_KuWq>-uWWm4n72-{kbk z%YN{YUkr>F+IDLyyzD5eu9Zw43-`$~EgNoJ6pNTu9cW~?irqJ~9ofHO8>7rT&zNJE zzAQ)7xsF==D5+_i>5WA)^%hwTihd4r zEWetmpnDQbnzFxrdEx(GU_;+sU^1U?YXLpw8?rhSfjtN91=H*Pv+7szi{Il(TT{bC znzb6GrPC5Dcipv+bv9bR{krXIPJi>`j$hK;XnnDVEj!BFqQCGTBdnHnU41C2-#)TP z-&y!z-*1oVPuXr+pSO3>O5amp_VWFVZCy?HX+My-&%NMixu=``x>B^FGGQjMeYpZ! z8%#?WfJF=Jx>M|6-$Z)m!+WX~me4~EnoNiSqDq7lB2L#bSsO1+y#cIp#&()SZORT1 z!<**}Dm}+cQIUv?YMsl)4=1vmq{a)CU7nqwq3B0fYD^YhUX2`KQc^@ixv%Zg=x^T=A)Sxx~4!Uen6dS7<0&5nsrux_x$ z=O3*1qcs~(0Ym0r(3hT?36>=paMR;2e0GH z@O?3Z6A@^I8s=jiP_T`r?a{GqD3F4NM>cx=3q6I?uE$6FC%&&cSP3Vl!f1SSW$SgU zi^cm?#303j{yc55-1s_y$!bT4PW%9m)=Ga|gDuPjhuA!I_P{j9V{7XeNINvdad;67 zQR06!Vq?%DcoK(4uc)MRmO9(mbkrh}f@vkF`137C+$lp=-Fwd^T%*roV+=8ZYYjBm z0J%jW`oXjR#?K53%}(tjQJuS``mVKV3E`4_t)m-X;DTmvGUn^niLb|pgBl?s(39Y0|KGne?fAyR>B1M43C6PPg%P|<%Rtfv5)q=kp1|11qnYSQ z;_GeuZKKf0okg`ZVCPdV@)HG4VaXbcTSE!+E2=%V#Bw^e0KfdM%~y?; z`;z3@vJg|>+Rg`pp>#Xon7lW7tDOzwQ3xTB1A6ZgeWyju`~8$E=>069FkBSt{%+kq zAR_nPFY44#F5Xw2_dp2KG~{tqn^GW8T&dk5cP@14r&-6-#(fuCS|L-l+Ay=c_&>n! zoYUPB2HlLU{#D`{tG~u#ZIvA@P#xfS=qWEuqRV56xoA)KD@8L!y~aBP($U>(0pnt3 zc#1e?v-pG&C!{!Rr(g4?>|6Hj{k&YgD|1`7H?9sl@lqy=Zhwnu($&sM&0sT3JPmOYI1rKFbB_s`B&&*3xa3Kk$>*m z7A=sVJ~-xT!`l9&<06EE8msIc8Y1U@6;M*L^7Y+Q`Oc9Crp523>1XgH{EBVQF3{%p zafa!u-KsT-$7bab{&#*~jy~@C$*=J)=cAx)Ch%@w8w0X4XVxx8<9E>Yqof!t%x-Mt zx6S+B%PWz6*wzwED$;@67%OiBZA)C(MTn@iI9N-l>8O=scdp@1Y_=3Txi|2USG4t# zHBf5_-S_VdMH;cA7(j69b8%h>!;4WCJyL3RHn)b3uWSnjDW=E3(%)^mUl7hlm|z;_ zzyrQ|i#p}hyiOHc9xLkqk3psb53k77hN^+`|MR6ro{qF8Od-nGS51>q?YzB{YjABO}8BU ztly?;1>>{7`edqCKgQqy!Iz`XrgFz`ODvwfKl{zMq|*dNByA=x3bb0={Q}*7cBwpG z1`Zo;I!Xh-xf zr47+BP(?*Du)&BAQ8YQE!T%Ho=YMMu`WUi0E*!2hOFQ{wW^yI$u9#<75|0$P03hW? z#On)y!_i(RGoyJeMgj^dI3rlvp3Cpy%Y2ZX08uz*HQF;!1V)P=*O!OIQby?SCU4Ir zgntk(HZiRAgeH)4N%00^s@OT3_$Rr1|6AzvJ?*mX+-$QCr}H4g;C*9UE3{eqv^Qtl z|2Ay2t_Dno zNq{9%w?N^Rq~*6RCc@`}N?(;u@D@i4Vsj6=2&g{p$$r=4G=S6&L z(aAtx?`vpyX^vV;?Bn%ynQ$xb?9!3k(rK)6MnIvMWl|%^-B8Z%uImWqcMNRN#2kNC za^}PNxEDoeeO2m6CCHo3SowEa46@iE2=r%%AVE zQT{_$H&;&fNR>&(~g!rtS=Hz2GNVTagz0z=e_? z+rcPbnA?V*>7tKG!*u2jcaagbotX}vk4N3QSJZ>bD&Z=P#Vr|+znbMfb@M`vxAhiT zzoRxxa3AQmo$`PsQMh$E)kPA#S#M>d?Drq5Tjxsedd77kZJ**q8Vx79a@;oLuTkP| zODx{=UZ!&mZ-vI|!kriV&Lt-tzs?f|L?V07psT*XBJ8yC%{yIfx$|GaGlbMuZFe!V z$X5p8zGin_LQ?a0HfmxfdCR!9Mn98NeWk)2fAG99DbuMb&_cb0bTPran#op5g(b#L z1%TpGyyiRO~ITYeoJ=neT(5v!VLRS~m7g#Mq>-}<42*2aghF_D-HM{#cs039JR_#=7i+%6?) z3+bY1THnVqjrHsc1->C)0_ZL=!{Z;*vVE1ho3}mNW$#B};w%0ia?dHstRueCmuZf^ z*b9Yoi+R$-ARdZ!>`jrje05M>IthMFgFr6*sdTTLcNh*H5!AY1MNo8Aw+UG#1X0BV zRWv*=eQwQE9jY*3bb<{`Tnd)KobS~2$rYUqh;i7XpKJYR06?FXh2$9>1K@EuACzKm zK+0L|pV-mC)j08(q>Ay$r9}BG7y@7lQjk7A>KQy+tW@Nb=q^|o@erP~;)zs%ma{YOcVviTykQmO5?(97;z8+6BclEDw{ zJ7T8GXGk|`wmo`k@~m+uWc#9&%jK$gcwLfj8CA7V4ZdXKMY%Z7lEKY6?#Q3?JgVVeRE z_sOmn8%Dg> zOw;JvUGLF{L#b6mwvEG|sPvQg4FX@DP^$Q*!wR|fO}!tcB`@~-Wh-h!nfKley*G?f z!)n0|dY}AO!G5^md%-6z(;A=aZ%iFqE{4(vbYasUC;Gux4D22c?mY+>;lS+8$k7|i zP_iEw$W_wHvlUuRNe_a0gNg_NAz%f^Ngvng%caPxT#inpE@|&xY1h8dC!7QOtL%5E z61xlZpFEtsbB%`@e5;CmmF+s!eSNwDgIW8yI;3N@g2l9?J{z`xW3;Ke?D}{L13%EQyFiT3vJM297bn9zsVj?A+1$4GP=? zEnI8G)g^O<$OkK=0vJrd=DfMm86h4#G<1OTdm`d3FKpyV`uDlhO?^DfA8fmMM*7pD zg1=FOzWonXr>?8t!#vqeN7$*QYvL;62w7uN4AinKi@Sbm={LtcFA-`D`55(ZhDxV7 zTcL<({mh?QylNUFCp^~W^6)+z<2LVl-u3Cg<6?@fQq5*>|9 z%EQc`aI7&M9$r2wa*;0cGdFS<(`gkV`l=B0l@hK~B}nz-dZ{vMDzL!QWuDNGKypLk z?c{^Pa+6$vl4M|{QcRWIZlc`1F=0z5d~1)7@=bS5vbbFC}+i-$Hq}5ud&{I7IerDB$aDXR|x6 zQe=o~-3&^1AMbTWGc2Hqd*bU>f8UN1EJS&k(thnn|o%=dmd zh1|OoZ^0n|TZLfjl+anV8H`~wgkv;$L7`ObxL4Za+h-7vdZc-D>@TBXr$oW}8+sAE zET$2Ypl#t*sV4Khbc*V)AEIc4<$Q6mQhs!9ef+yulJ4{jY3ay*E5GmZqi!~OI}(&D z+~kg~EpV+XhqSav#p}JeHr&NZO7VXqQcIlP;+8&^18?X95!P(9S23 zpS;SVk>mbS^=wD94$d32eouI6{FqK;}=a*z=Ok$vp3y9wGg)UJS?eDQBISPYvj})hH5t40|Y+eF9;GXct z>8%TzWV-!#T<(F!;6XkvQ!Ld2zLzafpYbDl@i6M(W^itxJ0ueqj(2>Yb5d7OeJp&y zSU0?@Sj=^lb(k-T@Fx2yXXfit9wwzeB3#&fC{<`_hWj+E^xtx37cv zl0^<@OJ4Jg21gjdk^b$)yvIe&HC`6JMoYf50DM;b#2=PIv9uP`3IhNe-5-4_5&UQ> z3aBRN=nGQm3skqo+rAJXA|WJPX3#oaP;8#fv6%fNoV9p|wfC>Z_PV1;em$Xc$Kl+0 zB%NI!hI@*(;G#V1gm^vkm>uU=R6@F3@&jxm;s_ zxGq^Se2aGOLZ9clwefRpyq_Yg{h+$mW7Wj1r=tcE&8tFRM-y7 z$ZvjNv;Grv3ky=O;0*-ZhJ7ccS^qxrbMC;Lvo~se(#F2Re_`abE#5h}Aft2Gz3UKP z9pqur7*`Mg0qh)I2DOsliuGx9iQDVJ9_zAZ?hQ32T*hP z7i3mR)o?0KC6H-T%XgrWwKQoSDRB?}_Uq%o*q%s=2v2yY(tt;s~#t<8U z6w#O%G)c6+6?$cJI2+@k`Cn@wZHda`uWn#hA^vrW}1E{11Suk^$qdJYCi*$~igP?#Z^q zCa7WA;=>uQ(bWx3X_NLH+w^?>m@8A+ri2cO-!P5(0q<_G8RPRc>0vAUSW{Q=kn>4o zb1+BHqPVwN3^uVfBjscenx$Q0PS8%*|9w&<($rzuwyJ zJF-vYFC@Y*|m0*y( zv2f#h7ZSe2Xv`CMnyRHQJ-Wca>_ViPd*tBZ5SBCL{YFj5qL@0I<88ync!v{~v41WQ zAdvjRgXQh3!o@WY`>t8L%q1=jC6R!bAy@Q{$*pFVPyG1ucRR_GM%z~=an7z&3o%Jy zUX~N+z;O!U%ForBD25LYZ``Jn2N3(R)v<@cxc5RaUZ_>%`=?&vnfMZ$mO-3((klYO zfFm=R^8A^?-5!&Ns0nG)lpiZ=TNDOe1zrv_e;)bf_pR>}RtaNirE#o0=wK@ejcZb(C^qK{w(T6%U3m##3_fR2Zb zgp-)bM9ME!!IGT#y(5t?Fgzaw&=S+vS_m&L!>pE9W&2NFB6=ULH>*Puy$g&U1{CNG zQzVxr=?O9^=@SbO^P=18}PgqkD@5gN^`~J^A-b&8Ps@f`}F!ZcR(+Ar1}+ zaY)3SCB~;_4x_C3XD$V8oDSFW!1vfoKhmfrgmvci`CROt;;(s}eliq#Gx47;3;08y zRfXo*x%xr>Y2~BWEi6|i@V|$?*xsWa0ttTwYxc8nlj>ENH|zxGH-4yuhs$V^jow?1 z-r;>q^AtQ+D4kj+^tBXUQRvlZme^7kKhWC|8a1F)G;+Rkw|caLYpcKkISv`2#3ZkO^tEa_Oj|{5+_&c?N&v`qLKfo6qUv(0a@xEHN zUbo@WsstGyzw~DKYb;h(sF&br`JlQ`JU%faVG z{66gkIa^s#d|6&4X3VCxHcVV`R~-R4Ee?#36PXXao(am72Y%dqYW$h9!88%< z@`3-Q&p&|RQN=Gx?tcI!b=E_Ek+U%uh8J@OMw|#^#WL`XUN$zhzF;&bQ5BO=71w2= zVVglw8JLHQJcbJgCtgFbB|3Ek=d(s4X>qo~XHrn34wCEwI}%@q{FNK22v`dZ(|M$| z3^QJboG1n`!WkaPVLKfzuLM>g#_`DKj=&Drm)9fH(_#Ywsq~eVDlf=sE^QlekF}Wv zK`NUsel#{(JBwPOj+Yw)nY!re?1zvLmo)}^?z&NJqWvG&bHAn=n+mTuHes4!N$xg; z^mOJ^xvK>TvEbrt>{XOtOZKtu6MESSj~;l&)bY$n z^q(S4zFURZ&>px2`sJ*Siif!7VfBWn=t2m-P-b-Y!?_FFN!J>Kq;=z0{PYN&3u0rk z$DUqRl{;MqC(1Imb_$KTMqUhI-QywyWd4#?1UMVpRv=J>2ydx>fVN*kHe*Gn2=2b^ zD!7rD2Wi>R#Lt|#%BPv8&UjRFk9RZXk3p^jWcPq=2dJA^Pl2A}zHPb8d$-Pi+0CV+ z!%9n`j*4zEkl`tB^hLAhY;&%a{wx;R&P4AB`V>yAHrQriFcq<+#U(#n9oK!u`gtLl_lX zlp0I^#4$lH)~vX%j#@w-v;&u)HF@^#Z6uL!Ihq3znaVW5Njn@I zPwJx=9*+}F3}TMN=9=&WWbfDkUagB3Ibz6TbE|;}LVU;*$MtT$ZWz+c7yDeNKO)&S2w{qQ z+^`7QxvVKSLB!k}43leIItOB*^H#p1aU@&!qSqnwrrWY%en?h0vgJ+s#$I+$PO8&Gi=w?4DrpgJDZZU6mcYe-OI)lC71J#lYrjK z(}t&48|YB1YJWrMvDU{N%Ki1*ITmYV4v^@GLcx`A^6#%E560mFv!uinv=YC#x0r&bwk9mVmpXr8D2i#;G#pZ3VwV$7P>ai+tta+SVDjYQ(@YI5x` zMpcMgO$CWO6?+hW)z!Q7nZ)GEBXN-)q1Hp53Gc$?r$%EQETmsLjXyo%Hgq#i=8R#} z*K{u|y2Tg$m35c^Y1(y5Eu+PmbR5ZRDP6};-d?VjItaiJIv3AYPxzuU;6PV7*_i#& z93I$@?e^HPl&Jyy^ozwK#8C13aN3IK%~Nv8%7O-VMP0O`r*Af=AyG6$Z91A`t<)!i zY+XPv8XS$5UutBKnSR*-VP!(A0&XW$><V-#qavEYE;L;mNp`3Q^zEI2-;cj>a357_jo0N`H2xZw7 zn7})o9n3SiSbwmB4nUtNJl?Fc3qf+Ihvqx8XuUCBs8a~PY_ofVTrvYgr@HSa zMW1Qsna*B+*O>N${d%G>2-&FDJqFnR>(g8V&EbaE4^&c2RukBl{h9u0EG@YrlZ?>m zPG8P>D`E1XxJI+xUP(u?VV`|%jyf&_Zf~_$QS@D3>QduNC%KJIZei;6mS3dUdFQ*` z3Bh*?zED|~D2}!-yH9*s2$AouG*>@JfJl~dtt#)CrW%EZ>m-kKWuL}!x#II zgLI&W#DB#?_4dn+x_T#lV@~&~i9^|y?3A`L)AjJvwS1yE$+5KzN)4XVST()>*%|2;rTh$X zEP8HDeANzFO)->gZ}qV_g!k*@ixKp7E8H8!Rp=>8(Gg}O=)gArXd3bqDkGwJdAE2a zu{I_Eaf}kU^j#(xO^PiWHwVi=vJFwMX9)9+cU2W^tM}f7dO#?}QzLZUX*^I`;Fu%A z_*48^=_jP>*c>AUVSV;}%<@361TP<+h&PVYZ-@LlYq7X*S3Ij|T!s~z@8Ve}YzHQQ zRn_lM#)6vvnUDscXt`3~^mtz#MOr(t5F-QL?Le)}SSt~Qi?aY-a zYZ9covzZzZT1wf2~dRi6(-TKZS((;s-XQl$3Ut^9Ij>9^Q zXHdVf2)g07LC8yMSfYNx%+MjvviU%}J9fy2r1vZq#e*Ej&o%5}kyNs143kb)WfY=2 zUM9NHZUX<^(*~#jhL6(1W^?HfKB+ca<@cZNTuzN^FC?Trw=Sq8Jfe%o6W8SqB7aJkqqw>jH zd!WWsu_JN(J>%7fQ~fLQ*8}G;URb1k<|lHP_^3-u$sDfgL)oyWXF!TIldbglVl}Nn zRwzU=V)kwS_Ojir3s$%F9A1WSe1Nr%L~`bDiXylHWlYyzTD613h$MN>NcWj*kZXLh zn#G^8dDJ$qB9n+%TLt{(@Mv4~i}a%O>>t@N@`eWyM2Q$uRa}V}@~xaiOfS{+cyc^& zCRn+-2i0+&b7lFg^YZrt*?Qhx+{05QpX?PQ$D?;3+gafV7M$_4a(U7&xN^!@@^CvA z6~l54;ZZgKDF}~vo13L~5=2U#_bDL1{ik7^@%I)3r&kK!T`l;%oKYHc{rhB`_|N!7 z;onV+qb5F=)!<^|OK+p7YcuVSTIEe8EWyxY5o`M_6@a;Xp43sV%SLpQ7)599`}<{S27CxyU0H zx-9vPhfC<4A86y}MfPTW)%wwY*#%h>+x#8N4E1SiX!G@E0i|@1Qa|#ueJTngvc)Iv zZ`L16(n?oKY3m=@Pnyav&SuNdbHXrXYs$^%sYXQh6p_dFpz~3IO5!6|J2ny=b@~$l z!#Y;HpUM5lT~Ho+Du&mhB5iOffz(X#B+=p}Fs9aAtWI zcklC?Bewe$SMJAG>QedR68ExaS)yS}U4&_megUSVeuytMN0_hhVugdSJkB;3VOtUG z@<+O%?^!!@|Awox`mgbo?`n?-y=1+%6oQp}jW*$-iR=#|7*VyhKBM?sVa^vgge7C@ zemI(>2Jq~i>UXuNs#;3$`u_OGDAwS{@1&>ed);oPL)23F##33L~7i+ig|y1QH}SOqP`R9Mzoz`fD_n%EEhP%FySamkw+y&J?J3!B-T zx$X}bZG2mhW23yJe)vot$?dnCvGAIj7(?bB?bj%^4-sIMpKm7V8fy%2kHCyv`#6{a z*^S{eyPsL50DkGLMlTN0ds)d4Kn+8(XO{9SAk^Qu z4^9?i;?rQ<=Z8~HldW&5VEMUjtRR_M{-`bmGp&nkuf`=Xy1;v_NS1y!W@aOUZeQFbuW_tJ*LPp|MZ{wU zc9X&_&)!f;b-2#Zxp$HM*?<|>Jbl2a$y~Hp<*~ZkDQ-D@Z(XFGoJ>A%A=zk(p_*kt zVAV=*a+oup;k>{~(!$*_TetL?j@;cM>*WWNwcOl+*|}05j`jbnMiY*)>Aj~+4Vs#E z4Lw}GUQ_ZUSf$ZKY>><97iYP>CQ~ZM>OFV-kSt#^H4DI_7``)HyYK z!UfmpQdUwL^Szyqm&$Vo3s&Blk2Dm5$#K(KtmmWG^qz7rf)8GoZ6267;p{fEwX8Eb zo{Kx?Mxl5eE@sYq1RebMCaTj2+xUGIme6EgP^GR}&&NVz<=M&>G8oIJS~~6JWu0nD z-3Z?s_qcJjwEs$7T0}eO=sa(Lm7|ht(!C_#pV#@tx&*Lm9h9C$)c@kmz4eqUJm_`T zXeyl0ln|hM4^QIYMGo`%!qREJ%}xgMxziNM$o?^uM)~JPR8`BzIAWq8-vK<}x()nO zS6L$ADct{JT44kbViLJ9k$kRSZAcq(-}M#xcZzt_iwnlEy9B4nx0M7$C#(wo zkozBvD3kAFcidLHI4*= zh}T)VtUYo*X{i2!(;-)N6OCYrjRf>6IDNvan$$*{U-cV_PTnZ?f=$~^45Z+8#@(EC zizG#n>APr-%4BBeOBr?J&+7m-jZ5Rx;L=zI-9{3KnSjDI$hq5+;6`5bJ$3vpO?yW< zeXlFRPcY8}j}v5u5?SO?Z_Jy5i%z}yI0_6LmfF52ARBpWPMqAQ=L;m*C`sGUSqeX; z`)cg3i=on!@AM3w9DzBmn+pbBwg?7)=`XzLq0 zKL#MH!Ke{W*cFeJcKFqmsL#@0vRW0o9VJF&KoahBrxmKl*{Xcg zqCE_m?aJwJmd3_6_PuAj*-^tFyvwe4c8#UsxTZ2~Fr=j?*(H6|*y7O9_9{GwWd4>* zs+APO({xv|QYBAEpuTFfsWzRfKV8(o$AjYKY3<0{7Mi26h!2rJDRdCWXe%WM=9Y}a@g%3>S^M1Wan%)xoDF-FeUWvBy{`2_@+OyBy>L~+DS3KRJ#R{K# z0C>R-E7~qi7f5Be9%d<30*`)njA;5BtPIOLzgwb{2bEx6t^}#z^E%ClOIHuBIESnj z8_~bQ0o^#N5njLBEP>s;Yrqd-(`$d31Ex2__3Axe-!1PMgTQm)f$x6|5<(kY3z4pt zGT&?U@?_=&ErXlBQ-VG}njilv(NYRB$~MEQd-^N8$+zrkJMUF*cOWhVi>nAtYt^R-F>-5GA z=LnYpgvOD3j=g`5g&H6$oDzR~3W00R{9XuYY~da1&>1biJ@Lqgwah1YOmYxCPVSMD zI!i}gAXT>MJ;h!tvxEg#R%J+Vq$3JK{1*%%j;>75A>!2o0MlhrU0s~gxdqxsXhg16ljw=6^uHf2bk1@7IZ>i$G zD!|x?f2(BhAnsmpaM{5XV47S)?mFwwb4>U^w@v^9X+_P{{c;}pvfB^6{4`63qBLZD z*m4MKJ08TpG1Zn%OOmnDl;O*B(-jF}ppSqMuTaY2@86lGxq5)hjQ#;^MsKZW;x+}V zD0&kJodidD3U6HQ&L+q|>e9a%nVhje6FX>&5mISJ5GkyOKtJL;206U!EmGO9yP?w^ zy@iP{>9%;jKRTUDoql5vQV7O3U5+iK<)2qDev1{a~Wdt3ncao9@n0<~HdKbw*xxeIQ} z@M#8JI|4G31!e2mQMy5MjDfPx;+I9VW(h9ay5*&H=0jog(h}X4xOWo6_OXJMeD}pZIO856npNw0HoyEdaMSL0E6a!kxWR?pi^PcL&p$VtGa8|;D%HBU zeS3(sa)vBKivmEXg~lmNdEu}yISHNe9pj zSUiXIDj%uyGb%{3o15x0>OEIO1~oyG(R0#cW7Q-p*mQso!ge884sjw0j4Fic{oz_* zj7+NBA_mjhP|YGtsZ%{C-3E~$9h5E(1rg3;R0P05$5j~2`zCRTCz6Ufhh=3ktCm+Z z>?C#FUrGxICv-r0f&r9ildNf(l(n4@dZA3<5UA9)yAJf!ARb4m>2Z~a97nS1p>%1( zUzYxfvELrbB@d=RAdL4>QNq=DA+03r6#&NTn&Q5^G~j*KCYD@Wnv&6meyfpr)C3tN78xkKNIeyEq~;VCPg4OwImCpm%ydm86+vi>eH7|8 zM{&p~<0I^Xw|b05dMb@LSI;xP%0VJ>0WhHD0N^3H!oD?a5gAJ6fBLil4qfsdMT=>TpQJ^V~|{+%@QGFOh@ex-lmy47Zv6SCBC2A~-Et^O5p zU|K~Bt9pR^Bvc3Gy8OyF5Q}?6t#jc=#J5MEKd0+P{vFhsJlaLamZ2xI&AFpw(Cu|; zFo7msG0uML^8;Q?Z>y4;wLvm|Yaigp?SJGa{{Sz)@jCn(n+vM(8!$#ORlnt8SMfK8 ztjQwx%y5Ae7+wC~b@8*907tR}#D}y8i&g?jJ>@TiIMzbU-g5 zgZq_;K4KL8dO+q!*36X^xU2eRE?8y$WcZ{_8;%d?5` zTka=V)V;c`UFS1VM^w2nu3E#G=7=TUs9^PVLBuvRolfii5OACT0PVT?rw|B|4iF%2W!WbvfdgQg z0XR?p0PT{3Fpin-ngm1=4(UN?Xdh(Z#&fY%6W}6!KyluB(RMpAvgCdqVI(+q1j3DWMpaHIwBuyhyHV&AN&xDj zY#WN$(iILo)o*rkq~NKr!lWJ5lc-~Iv+6%f!CiEpEd(5(xB&uGeg=6WF*D68$RHrB zk`Bs7p@b$mr(;YL$pCIPDZ$S9RX@_~Vo|2;SV41oG!mK7>D+Zn$vsurXn-|36%}dI zmysKR)g+fUQ7{H0ny`S=so8mh9F=BCl5(Jj)G*j=px{JwM4Z4V7~3#{ve+obHbyd! z$pR5Ef|Q3&Rk~#MQNx;owup^Nz~UMN`cER1gOZ>b5Q51L2bW`zrk6BJy2Olx8;^-d zh=UyvFcQfG5ix_GqF^U{d!#Lw`k~NwRy585bAEC@>W3^WGxJK{i*MW}X(7@a*G>r8 zNQopEQ~(JebSQ%WK#&520ONxZx*@H=VZcDGbPsq?J8s}*F%4*!7e}(AUcgCETnqt@ zQlT<;i5sekGs&dxmQJIc`XIT_03CRgp~cO|q;06B_)nx}GIvGj-#iaWCj5eaCsn0W@b+$B0(gh zsvFFZsErVD%{#p&4(c#YMi2r-x)BhP3_wiEnhbyljDyWpFgv1m=n4jN2A@vf)69D) z0LYL)F^;Kc0LYQ{R%&S`G_~e;+uyPZDjY^t2N+jWC*eA}iRh_<=Z)jC##Gdsj*7{H z5rr7uQ-rQMPgOLsR+%TNxu#k(Jkr(@J1Z#RC)J&iX_LMcZ*&ri4*6Isr~@3n zsw(6tvK;O*pgmHV%2tvJ#8+}Tt8HB^X;jzPo@uQ(P>4#az`aqY!QXlSkl1e0}URgbnX{5c0fIOs)I@6XvyZTr~w!qp>fcEtO>&FB<~~H zNRgRxAmAipu@FM&t|XJqatu4!Vy@6c1ri6~D1)5jB_8O=Naz^|7O|FBMuT>$c@z;I%J-Md~C0# z=@33ipGY->bJX*dLq?Z#g$Gl2Ogi-Jk)m>}h~MO>CLkE?C`5C{=o~3I%%A`bhcyRv zH2SA+numUf2+qT9VL^ffz)%iKHMsUbef`n&x!?w-3f#sdyc8{N`zyw0gNEih((|h2QH|X9FMvMb`B@m zEblOk5{Lu|2orpj4CXne18ER@CTO0yK%iru$-_)UKphhhB1TU_nZ05=pbcU8gG?zS z+yur(q599=00AaY69x?B4MK80=#~)eDWDt!lnFT-jPym@ zXIa5 zAz2-Sl%!-%-H_N|V5=$if@L8YPSK1AL11wMQ25)J>J?Sk=PhLBvcT?#PgV$|)a^jlLRBLW8zKhR*j;Xg4jDV}2RvRW#2oaIB{qwG-*)vPV@D zrJCGMpJf1mT;UFI!0eKk)$4Ke3<(>Q<8nxjk;zmoL8X#&JFZ6Q^Bj z%u-c-J%?p(?VJT&HprP)yP(5C`Ws0QcQ0D-1`JfRE&d5ODDS?6_J<5Yl!w3+!KAet- zkWbA!Ol|)FC}{7AY2HxF~jWM`0)iHoN$5jXfHOB{{YBgYP@F+ z(mEbpmVHJ=e{!U(E&xVOR8^N5IZ;8(MkFQ2%|;mAGukjlP*U-PC`_J-j#AM%cU1>t zOaM13+HEx)88N8mqULGamqpi3oHuV#+(M(QJ5hikt=J=-Tj5sI13x7Cx7;kk)!H^( zz)PofeN!WmmCg(iA!8!yW&j~rNto)ZY2I*~RCD?&ArS6o-3`bC3JjblXbmU<8|+kR zk(k118JR)^fE5sLj;X-_=kAADpK^(a>pP$=n4FmGq!Zhc0mY-!Ba)hlIGOH6xFJO}TeP5xxY$-9CS-DFHFfM!_&pKPiba zq=D0-0GXIoydG0LvWT-$*zSX6(;%N^UcnZfiE@f|oW!OhdHWy;F(P3|1~RG)j6fu) z=`jKZ>Iem(bL5c6f0;nj2eL3ZbLy3_8e=%hW*tK(9S}zyk0j<>gO15di3SLhz7dnF z2Xp`fozsaNxgZ3|a1+oYIe;;=AXnxmZpb=z-Zo4|ITE0NVlqL>00Xq*5del5iBN-& z)e(rnj%HO741JV%ffFF}L>LjxBc@|AcZ3M+V4t!L5@IB$bPbG^0rZ?1j3^)wAvier za*!XdRMRfrKf<7s)JA@(9s`)*HydFRK-y&~agNGJ&#KbegQ~uhgTx)eTH_lPOCDP8 zaIsf#1>Y7-=Rb8tU>ZpyATFA9CP>R-4=D?l_h}n`s>tTwIr=DupcGiEly0pX6%<5N z{gP4mii#;CrkDDGc2Orj>L{{-cQU8uKEXv51^)m7*g+&kt zd@W8kQAI=bQK~3_FpymZJ984Eh=q3LH{?-7Rbb?!Qw~u?1&1x}qdpfXq6puJdm-1| zMHCf|e(9Q`hzm)^Rq!E26-9M^AeG$z0DP2D03YEQz)?gI$Jg^tHa{=XMG;f;6>$Fm zNvE8sq98PSUF?ItB@|RUu*2@FoRt(nt;zYK{{V?a5CgIHLBE&TMHCQhPzTnch%9~v m5*|t@k~ykuxgGH+qQ+IzXj5JRqv!q9Q75EuD58oofB)H(Mn}{D literal 0 HcmV?d00001 diff --git a/04_Day_Component/30-days-of-react_boilerplate-components/src/images/css_logo.png b/04_Day_Component/30-days-of-react_boilerplate-components/src/images/css_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8e0edde268c64184bf21d7afd6e5d4928aa61124 GIT binary patch literal 84176 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
    $OyB_5RHi5{a;*@xqA)QkWv!*e^jr^SUg^8& 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 literal 0 HcmV?d00001 diff --git a/04_Day_Component/30-days-of-react_boilerplate-components/src/index.js b/04_Day_Component/30-days-of-react_boilerplate-components/src/index.js new file mode 100644 index 0000000..aec8b84 --- /dev/null +++ b/04_Day_Component/30-days-of-react_boilerplate-components/src/index.js @@ -0,0 +1,108 @@ +// index.js +import React from 'react' +import ReactDOM from 'react-dom' +import asabenehImage from './images/asabeneh.jpg' + +const hexaColor = () => { + let str = '0123456789abcdef' + let color = '' + for (let i = 0; i < 6; i++) { + let index = Math.floor(Math.random() * str.length) + color += str[index] + } + return '#' + color +} + +const HexaColor = () => { + let bgColor = hexaColor() + const styles = { + height: '100px', + display: 'flex', + 'justify-content': 'center', + 'align-items': 'center', + fontFamily: 'Montserrat', + margin: '2px auto', + borderRadius: '5px', + width: '75%', + border: '2px solid black', + } + return ( +
    +

    {bgColor}

    +
    + ) +} + +// Header Component +const Header = () => ( +
    +
    +

    Welcome to 30 Days Of React

    +

    Getting Started React

    +

    JavaScript Library

    +

    Asabeneh Yetayeh

    + Oct 3, 2020 +
    +
    +) + +// User Card Component +const UserCard = () => ( +
    + asabeneh image +

    Asabeneh Yetayeh

    +
    +) + +// TechList Component +const TechList = () => { + const techs = ['HTML', 'CSS', 'JavaScript'] + const techsFormatted = techs.map((tech) =>
  • {tech}
  • ) + return techsFormatted +} +const buttonStyles = { + padding: '10px 20px', + background: 'rgb(0, 255, 0', + border: 'none', + borderRadius: 5, +} + +const Button = () => + +// Main Component +const Main = () => ( +
    +
    +

    Prerequisite to get started react.js:

    +
      + +
    + +
    + +
    +
    +
    +) + +// Footer Component +const Footer = () => ( +
    +
    +

    Copyright 2020

    +
    +
    +) + +// The App, or the parent or the container component +const App = () => ( +
    +
    +
    +
    +
    +) + +const rootElement = document.getElementById('root') +// we render the JSX element using the ReactDOM package +ReactDOM.render(, rootElement) diff --git a/04_Day_Component/30-days-of-react_boilerplate-components/yarn.lock b/04_Day_Component/30-days-of-react_boilerplate-components/yarn.lock new file mode 100644 index 0000000..b310f04 --- /dev/null +++ b/04_Day_Component/30-days-of-react_boilerplate-components/yarn.lock @@ -0,0 +1,10849 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@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/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== + dependencies: + browserslist "^4.9.1" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.4.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.11.5": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" + integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== + dependencies: + "@babel/types" "^7.11.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.0.tgz#0f67adea4ec39dad6e63345f70eec33014d78c89" + integrity sha512-onl4Oy46oGCzymOXtKMQpI7VXtCbTSHK1kqBydZ6AmzuNcacEVqGk9tZtAS+48IA9IstZcDCgIg8hQKnb7suRw== + dependencies: + "@babel/types" "^7.9.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz#066d80262ade488f9c1b1823ce5db88a4cedaa43" + integrity sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-call-delegate@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" + integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.7" + +"@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== + dependencies: + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" + integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.5" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" + integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-plugin-utils@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.0.tgz#ab2c1bc4821af766cab51d4868a5038874ea5a12" + integrity sha512-/9GvfYTCG1NWCNwDj9e+XlnSCmWW/r9T794Xi58vPF9WCcnZCAZ0kWLSn54oqP40SUvh1T2G6VwKmFO5AOlW3A== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.0.tgz#f821b32313f07ee570976d3f6238e8d2d66e0a8e" + integrity sha512-Iwyp00CZsypoNJcpXCbq3G4tcDgphtlMwMVrMhhZ//XBkqjXF7LW6V511yk0+pBX3ZwwGnPea+pTKNJiqA7pUg== + +"@babel/parser@^7.10.4", "@babel/parser@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" + integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-decorators@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@7.8.3", "@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" + integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@7.9.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + 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-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + 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-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.0": + 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.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + 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.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + 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": + 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": + 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-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-typescript@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" + integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.0.tgz#ab89c175ecf5b4c8911194aa8657966615324ce9" + integrity sha512-xt/0CuBRBsBkqfk95ILxf0ge3gnXjEhOHrNxIiS8fdzSWgecuf9Vq2ogLUfaozJgt3LDO49ThMVWiyezGkei7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" + integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf" + integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA== + dependencies: + "@babel/helper-call-delegate" "^7.8.7" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.9.0.tgz#a75abc936a3819edec42d3386d9f1c93f28d9d9e" + integrity sha512-wXMXsToAUOxJuBBEHajqKLFWcCkOSLshTI2ChCFFj1zDd7od4IOxiwLCOObNUvOpkxLpjIuaIdBMmNt6ocCPAw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@7.8.3", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-jsx-development@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" + integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-self@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" + integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-source@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" + integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx@^7.9.1": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.1.tgz#d03af29396a6dc51bfa24eefd8005a9fd381152a" + integrity sha512-+xIZ6fPoix7h57CNO/ZeYADchg1tFyX9NDsnmNFFua8e1JNPln156mzS+8AQe1On2X2GLlANHJWHIXbMCqWDkQ== + dependencies: + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-runtime@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typescript@^7.9.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" + integrity sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/preset-env@7.9.0", "@babel/preset-env@^7.4.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + 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.9.1", "@babel/preset-react@^7.0.0": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" + integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.1" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" + +"@babel/preset-typescript@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.9.0" + +"@babel/runtime-corejs3@^7.10.2": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.11.2.tgz#02c3029743150188edeb66541195f54600278419" + integrity sha512-qh5IR+8VgFz83VBa6OkaET6uN/mJOhHONuy3m1sgF0CV6mXdPSEBdA7e1eUbVvyNtANjMbg22JUv71BaDXLY6A== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime-corejs3@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.0.tgz#0d4119c44ad05bfa0ca16f2f4f91cde430056c08" + integrity sha512-Fe3z3yVZNCUTaOFBAofwkEtFiYi7a7Gg2F5S1QX+mqP403i2iKJtyHJYEp/PV2ijUheT0PiKWbmXcqtwLhmBzg== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@7.9.0", "@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.5.1": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/traverse@^7.10.4": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" + integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.11.5" + "@babel/types" "^7.11.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@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== + +"@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.0.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" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.3.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@jest/types@^26.3.0": + version "26.3.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.3.0.tgz#97627bf4bdb72c55346eef98e3b3f7ddc4941f71" + integrity sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ== + 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" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@sheerun/mutationobserver-shim@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" + integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== + +"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" + integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== + +"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" + integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" + integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" + integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== + +"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== + +"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" + integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== + +"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" + integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== + +"@svgr/babel-plugin-transform-svg-component@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" + integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== + +"@svgr/babel-preset@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" + "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" + "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" + "@svgr/babel-plugin-transform-svg-component" "^4.2.0" + +"@svgr/core@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== + dependencies: + "@svgr/plugin-jsx" "^4.3.3" + camelcase "^5.3.1" + cosmiconfig "^5.2.1" + +"@svgr/hast-util-to-babel-ast@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" + integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== + dependencies: + "@babel/types" "^7.4.4" + +"@svgr/plugin-jsx@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== + dependencies: + "@babel/core" "^7.4.5" + "@svgr/babel-preset" "^4.3.3" + "@svgr/hast-util-to-babel-ast" "^4.3.2" + svg-parser "^2.0.0" + +"@svgr/plugin-svgo@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== + dependencies: + cosmiconfig "^5.2.1" + merge-deep "^3.0.2" + svgo "^1.2.2" + +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== + dependencies: + "@babel/core" "^7.4.5" + "@babel/plugin-transform-react-constant-elements" "^7.0.0" + "@babel/preset-env" "^7.4.5" + "@babel/preset-react" "^7.0.0" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" + "@svgr/plugin-svgo" "^4.3.1" + loader-utils "^1.2.3" + +"@testing-library/dom@*": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.24.3.tgz#dae3071463cf28dc7755b43d9cf2202e34cbb85d" + integrity sha512-6eW9fUhEbR423FZvoHRwbWm9RUUByLWGayYFNVvqTnQLYvsNpBS4uEuKH9aqr3trhxFwGVneJUonehL3B1sHJw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.10.3" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + chalk "^4.1.0" + dom-accessibility-api "^0.5.1" + pretty-format "^26.4.2" + +"@testing-library/dom@^6.15.0": + version "6.16.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.16.0.tgz#04ada27ed74ad4c0f0d984a1245bb29b1fd90ba9" + integrity sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA== + dependencies: + "@babel/runtime" "^7.8.4" + "@sheerun/mutationobserver-shim" "^0.3.2" + "@types/testing-library__dom" "^6.12.1" + aria-query "^4.0.2" + dom-accessibility-api "^0.3.0" + pretty-format "^25.1.0" + wait-for-expect "^3.0.2" + +"@testing-library/jest-dom@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz#00dfa0cbdd837d9a3c2a7f3f0a248ea6e7b89742" + integrity sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg== + dependencies: + "@babel/runtime" "^7.5.1" + chalk "^2.4.1" + css "^2.2.3" + css.escape "^1.5.1" + jest-diff "^24.0.0" + jest-matcher-utils "^24.0.0" + lodash "^4.17.11" + pretty-format "^24.0.0" + redent "^3.0.0" + +"@testing-library/react@^9.3.2": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.5.0.tgz#71531655a7890b61e77a1b39452fbedf0472ca5e" + integrity sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg== + dependencies: + "@babel/runtime" "^7.8.4" + "@testing-library/dom" "^6.15.0" + "@types/testing-library__react" "^9.1.2" + +"@testing-library/user-event@^7.1.2": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-7.2.1.tgz#2ad4e844175a3738cb9e7064be5ea070b8863a1c" + integrity sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA== + +"@types/aria-query@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" + integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== + +"@types/babel__core@^7.1.0": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610" + integrity sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg== + 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.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" + integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@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@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@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/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/json-schema@^7.0.5": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "13.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" + integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== + +"@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/prop-types@*": + 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.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/react-dom@*": + version "16.9.8" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" + integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.9.50" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.50.tgz#cb5f2c22d42de33ca1f5efc6a0959feb784a3a2d" + integrity sha512-kPx5YsNnKDJejTk1P+lqThwxN2PczrocwsvqXnjvVvKpFescoY62ZiM3TV7dH1T8lFhlHZF+PE5xUyimUwqEGA== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/testing-library__dom@*": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.5.0.tgz#e0a00dd766983b1d6e9d10d33e708005ce6ad13e" + integrity sha512-mj1aH4cj3XUpMEgVpognma5kHVtbm6U6cHZmEFzCRiXPvKkuHrFr3+yXdGLXvfFRBaQIVshPGHI+hGTOJlhS/g== + dependencies: + "@testing-library/dom" "*" + +"@types/testing-library__dom@^6.12.1": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz#1aede831cb4ed4a398448df5a2c54b54a365644e" + integrity sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA== + dependencies: + pretty-format "^24.3.0" + +"@types/testing-library__react@^9.1.2": + version "9.1.3" + resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.3.tgz#35eca61cc6ea923543796f16034882a1603d7302" + integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w== + dependencies: + "@types/react-dom" "*" + "@types/testing-library__dom" "*" + pretty-format "^25.1.0" + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" + integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^15.0.0": + version "15.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.7.tgz#dad50a7a234a35ef9460737a56024287a3de1d2b" + integrity sha512-Gf4u3EjaPNcC9cTu4/j2oN14nSVhr8PQ+BvBcBQHAhDZfl0bVIiLgvnRXv/dn58XhTm9UXvBpvJpDlwV65QxOA== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^2.10.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68" + integrity sha512-wJRBeaMeT7RLQ27UQkDFOu25MqFOBus8PtOa9KaT5ZuxC1kAsd7JEHqWt4YXuY9eancX0GK9C68i5OROnlIzBA== + dependencies: + "@typescript-eslint/experimental-utils" "2.24.0" + eslint-utils "^1.4.3" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" + integrity sha512-DXrwuXTdVh3ycNCMYmWhUzn/gfqu9N0VzNnahjiDJvcyhfBy4gb59ncVZVxdp5XzBC77dCncu0daQgOkbvPwBw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-scope "^5.0.0" + +"@typescript-eslint/parser@^2.10.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" + integrity sha512-H2Y7uacwSSg8IbVxdYExSI3T7uM1DzmOn2COGtCahCC3g8YtM1xYAPi2MAHyfPs61VKxP/J/UiSctcRgw4G8aw== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.24.0" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" + integrity sha512-RJ0yMe5owMSix55qX7Mi9V6z2FDuuDpN6eR5fzRJrp+8in9UF41IGNQHbg5aMK4/PjVaEQksLvz0IA8n+Mr/FA== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@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.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +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@^4.1.0, acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + +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@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + 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: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +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@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + 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@^6.12.4: + version "6.12.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" + integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== + 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" + +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-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, 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@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +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.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + 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.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +aria-query@^4.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-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +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.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + 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-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.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +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@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + +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, 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@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +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= + +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.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== + dependencies: + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.26" + postcss-value-parser "^4.0.2" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +axobject-query@^2.0.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" + integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +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@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.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.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@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.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be" + integrity sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA== + +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-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +babel-preset-react-app@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" + integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== + dependencies: + "@babel/core" "7.9.0" + "@babel/plugin-proposal-class-properties" "7.8.3" + "@babel/plugin-proposal-decorators" "7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" + "@babel/plugin-proposal-numeric-separator" "7.8.3" + "@babel/plugin-proposal-optional-chaining" "7.9.0" + "@babel/plugin-transform-flow-strip-types" "7.9.0" + "@babel/plugin-transform-react-display-name" "7.8.3" + "@babel/plugin-transform-runtime" "7.9.0" + "@babel/preset-env" "7.9.0" + "@babel/preset-react" "7.9.1" + "@babel/preset-typescript" "7.9.0" + "@babel/runtime" "7.9.0" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +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.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +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= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +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.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +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.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +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.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: + 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== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +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: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.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.10.0, browserslist@^4.0.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.9.1: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +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-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.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== + 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@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + 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-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.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +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== + +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.30001020, caniuse-lite@^1.0.30001035: + version "1.0.30001035" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" + integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== + +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== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.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@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.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, 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" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^2.0.2, 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.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + 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.3.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +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" + +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" + +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== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +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" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +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" + +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: + 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.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + 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.11.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" + +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.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + +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= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +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.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= + +core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + dependencies: + browserslist "^4.8.3" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== + +core-js@^2.4.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-js@^3.5.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== + +core-util-is@1.0.2, 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, cosmiconfig@^5.2.1: + 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" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + 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.2, create-hmac@^1.1.4: + 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.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + 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" + +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-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@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.23" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" + +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@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + 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-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-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +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, css@^2.2.3: + 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" + +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.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + 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.2" + 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.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0, cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +csstype@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" + integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== + +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.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0, data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +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@^3.0.0, debug@^3.1.1, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + 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= + +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= + +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: + 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= + +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= + +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@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +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@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +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@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.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.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + 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@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^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.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz#511e5993dd673b97c87ea47dba0e3892f7e0c983" + integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA== + +dom-accessibility-api@^0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.3.tgz#0ea493c924d4070dfbf531c4aaca3d7a2c601aab" + integrity sha512-yfqzAi1GFxK6EoJIZKgxqJyK6j/OjEFEUi2qkNThD/kUhoCFSG1izq31B5xuxzbJBGw9/67uPtkPMYAzWL7L7Q== + +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-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.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +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" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +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.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" + integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + 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.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +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" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.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= + +electron-to-chromium@^1.3.378: + version "1.3.379" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" + integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== + +elliptic@^6.0.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + 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== + +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= + +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.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +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.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, 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" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.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-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" + +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: + 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.2, 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= + +escodegen@^1.11.0, escodegen@^1.9.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== + dependencies: + confusing-browser-globals "^1.0.9" + +eslint-import-resolver-node@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== + dependencies: + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" + +eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== + dependencies: + lodash "^4.17.15" + +eslint-plugin-import@2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + +eslint-plugin-jsx-a11y@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== + dependencies: + "@babel/runtime" "^7.4.5" + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.2" + damerau-levenshtein "^1.0.4" + emoji-regex "^7.0.2" + has "^1.0.3" + jsx-ast-utils "^2.2.1" + +eslint-plugin-react-hooks@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react@7.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== + dependencies: + array-includes "^3.1.1" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" + +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: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.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.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +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: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + 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.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +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" + +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@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.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" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +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" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.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: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + 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" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.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.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + +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@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^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: + 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@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.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@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== + +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.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== + dependencies: + debug "^3.0.0" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, 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= + +for-own@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +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@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.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-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@2.1.2, fsevents@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + +fsevents@^1.2.7: + version "1.2.12" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +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: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^2.0.1: + 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-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-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-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= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +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: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +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" + +globby@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.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" + +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.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +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.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +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.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +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.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +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== + +hmac-drbg@^1.0.0: + 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" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +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-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + +html-minifier-terser@^5.0.1: + version "5.0.4" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.0.4.tgz#e8cc02748acb983bd7912ea9660bd31c0702ec32" + integrity sha512-fHwmKQ+GzhlqdxEtwrqLT7MSuheiA+rif5/dZgbz3GjoMXJzcRzy1L9NXoiiyxrnap+q5guSiv8Tz5lrh9g42g== + 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.0.0-beta.11: + version "4.0.0-beta.11" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" + integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== + dependencies: + 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.3.0: + 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.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +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.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" + integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +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= + +iconv-lite@0.4.24, 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" + +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.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +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@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +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== + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +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: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + 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" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +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.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.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +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.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +invariant@^2.2.2, invariant@^2.2.4: + 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.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +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-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-buffer@^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.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +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-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.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +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.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + +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-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.1, 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-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +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.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +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: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + +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= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.0.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== + dependencies: + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@24.9.0, jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.1" + jest-regex-util "^24.9.0" + jest-watcher "^24.3.0" + slash "^3.0.0" + string-length "^3.1.0" + strip-ansi "^5.0.0" + +jest-watcher@^24.3.0, jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, 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@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.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-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + 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-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-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@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +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-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + 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.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== + 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" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + +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@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +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== + +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" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +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== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +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-fs-cache@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" + integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +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@^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.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.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.4.0, 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.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.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +loglevel@^1.6.8: + version "1.7.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" + integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== + +loose-envify@^1.0.0, loose-envify@^1.1.0, 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.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" + +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" + +make-dir@^2.0.0, make-dir@^2.1.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.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + 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" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +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" + +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.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= + +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-deep@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" + integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +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.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +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" + +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.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.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.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + +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-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + 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.0, 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@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +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.2" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" + integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" + integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + dependencies: + 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" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== + dependencies: + minimist "^1.2.5" + +mkdirp@^0.5.5: + 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" + +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.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +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" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +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" + +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: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +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.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== + dependencies: + lower-case "^2.0.1" + tslib "^1.10.0" + +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== + +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@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-releases@^1.1.52: + version "1.1.52" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" + integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== + dependencies: + semver "^6.3.0" + +normalize-package-data@^2.3.2: + 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" + +nth-check@^1.0.2, nth-check@~1.0.1: + 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.0.7, nwsapi@^2.1.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +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-hash@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" + integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + +object-keys@^1.0.11, 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-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + +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: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.entries@^1.1.0, object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +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.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +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.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.3.tgz#db551a1af9c7ab4c7af664139930826138531c48" + integrity sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +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.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1, optionator@^0.8.3: + 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" + +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= + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +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.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + dependencies: + p-try "^2.0.0" + +p-limit@^2.3.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-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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +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.3" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" + integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + dependencies: + dot-case "^3.0.3" + tslib "^1.10.0" + +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: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +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.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +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.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +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@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +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.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.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +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-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +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.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + 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" + +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.0.7: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + +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@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^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: + 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, 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" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +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" + +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.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + 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.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" + integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== + dependencies: + postcss "^7.0.0" + +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.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + 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.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + 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.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + 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.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + +postcss-modules-scope@^2.1.1: + 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@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" + integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + dependencies: + postcss "^7.0.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.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + 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.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + 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.0, postcss-value-parser@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== + +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.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +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.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" + integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== + +pretty-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^25.1.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.2.tgz#d081d032b398e801e2012af2df1214ef75a81237" + integrity sha512-zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA== + dependencies: + "@jest/types" "^26.3.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +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@^8.0.3: + 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.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +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.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + +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== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +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= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + +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@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== + dependencies: + core-js "^3.5.0" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" + +react-dev-utils@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.10.0" + chalk "2.4.2" + cross-spawn "7.0.1" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "7.0.4" + is-root "2.1.0" + loader-utils "1.2.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" + integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + +react-error-overlay@^6.0.7: + version "6.0.7" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" + integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== + +react-is@^16.12.0, react-is@^16.8.1, react-is@^16.8.4: + 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-scripts@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.3.tgz#21de5eb93de41ee92cd0b85b0e1298d0bb2e6c51" + integrity sha512-oSnoWmii/iKdeQiwaO6map1lUaZLmG0xIUyb/HwCVFLT7gNbj8JZ9RmpvMCZ4fB98ZUMRfNmp/ft8uy/xD1RLA== + dependencies: + "@babel/core" "7.9.0" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.10.0" + "@typescript-eslint/parser" "^2.10.0" + babel-eslint "10.1.0" + babel-jest "^24.9.0" + babel-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.6" + babel-preset-react-app "^9.1.2" + camelcase "^5.3.1" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "3.4.2" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^6.6.0" + eslint-config-react-app "^5.2.1" + eslint-loader "3.0.3" + eslint-plugin-flowtype "4.6.0" + eslint-plugin-import "2.20.1" + eslint-plugin-jsx-a11y "6.2.3" + eslint-plugin-react "7.19.0" + eslint-plugin-react-hooks "^1.6.1" + file-loader "4.3.0" + fs-extra "^8.1.0" + html-webpack-plugin "4.0.0-beta.11" + identity-obj-proxy "3.0.0" + jest "24.9.0" + jest-environment-jsdom-fourteen "1.0.1" + jest-resolve "24.9.0" + jest-watch-typeahead "0.4.2" + mini-css-extract-plugin "0.9.0" + optimize-css-assets-webpack-plugin "5.0.3" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "4.1.0" + postcss-loader "3.0.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" + postcss-safe-parser "4.0.1" + react-app-polyfill "^1.0.6" + react-dev-utils "^10.2.1" + resolve "1.15.0" + resolve-url-loader "3.1.1" + sass-loader "8.0.2" + semver "6.3.0" + style-loader "0.23.1" + terser-webpack-plugin "2.3.8" + ts-pnp "1.1.6" + url-loader "2.3.0" + webpack "4.42.0" + webpack-dev-server "3.11.0" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "4.3.1" + optionalDependencies: + fsevents "2.1.2" + +react@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" + integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +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" + +"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: + 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.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +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" + +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.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +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.3, regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +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.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + 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.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + 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.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +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= + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +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-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= + +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-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-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.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.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" + integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +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= + +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= + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: + 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" + +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" + +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-async@^2.2.0, run-async@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== + dependencies: + is-promise "^2.1.0" + +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" + +rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + +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: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +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.0.2, safer-buffer@^2.1.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@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sax@^1.2.4, 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@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + 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.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" + integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.6: + 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" + +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= + +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== + dependencies: + node-forge "0.9.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@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, 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.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +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@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +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" + +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: + 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" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +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== + +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +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.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +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@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +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.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +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-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-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +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= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +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= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + 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@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +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= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +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: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +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@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.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-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-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.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.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.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +svg-parser@^2.0.0: + 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" + +symbol-tree@^3.2.2: + 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@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.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== + +terser-webpack-plugin@2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" + integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.6.12" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + 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.3: + version "4.6.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" + integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^4.6.12: + 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" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +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@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +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" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +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.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + 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= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +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" + +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@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +ts-pnp@1.1.6, ts-pnp@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" + integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== + +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + 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= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +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-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +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.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +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" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +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: + 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.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + 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@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== + dependencies: + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +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.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, 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.0, 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== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +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" + +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== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +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.1: + 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@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +wait-for-expect@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.2.tgz#d2f14b2f7b778c9b82144109c8fa89ceaadaa463" + integrity sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag== + +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" + +watchpack@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +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" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + 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.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + 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.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.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.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.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.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.1" + 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.6.0" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, 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@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +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.0, 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: + 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: + 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@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== + dependencies: + workbox-core "^4.3.1" + +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== + dependencies: + workbox-core "^4.3.1" + +workbox-build@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== + dependencies: + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" + fs-extra "^4.0.2" + glob "^7.1.3" + lodash.template "^4.4.0" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" + +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== + dependencies: + workbox-core "^4.3.1" + +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== + dependencies: + workbox-core "^4.3.1" + +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== + dependencies: + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== + dependencies: + workbox-core "^4.3.1" + +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== + dependencies: + workbox-core "^4.3.1" + +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== + dependencies: + workbox-core "^4.3.1" + +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== + dependencies: + workbox-core "^4.3.1" + +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== + dependencies: + workbox-core "^4.3.1" + +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== + dependencies: + workbox-core "^4.3.1" + +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== + +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== + dependencies: + "@babel/runtime" "^7.0.0" + json-stable-stringify "^1.0.1" + workbox-build "^4.3.1" + +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== + dependencies: + workbox-core "^4.3.1" + +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" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.2, 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" + +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.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xregexp@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + +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.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +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.7.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" + integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== + dependencies: + "@babel/runtime" "^7.8.7" + +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@^13.3.0, 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" diff --git a/images/components_example.png b/images/components_example.png new file mode 100644 index 0000000000000000000000000000000000000000..55712c139693eb2ad27f058244f5756ed48e9b55 GIT binary patch literal 160749 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%0Ac`vedZcresjG#l`6&Ncorlbf+QHU~DOk=yVAf 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%0D9p~1-ofx1}9g!D;yEGtqmQ-MU0EG zfSo~mA=pJUMWyhrk`*24im1l#V$)V0QP7Y?m5Xb&PKerIER$<$CP zO+h4yEGXuA9FIe2F17;F|P&Co31J25#|1bAE zKa%TM`*Z#Ndz;rllP}oIbJl}^XV%5ai81*EM+J|NqB}su3P-vSts1Pw&HMzNnw6?U z%Cs1AE3|ciK{3%OnAbCI6mlw~xp`H*foyp}Gc2F2_qB{w;86_a{f_e0M@1HL1rc|% zg}Fbf`#V|SpyhQEWE*(7kLVlsXJ0EEU%j`yoO^zkL@tnha{a0L^FJue&E=$>#M5<@dHb>l`-c_d-T;5ifSiCI+Ib!0^>Hgz_`u;prnE9 z+kN@%rSH+O+OnS+(I4ukPQxaC>3;^VRLIQc1H9bt{=-LuGM;E^=+*RUz+($iREQcU zD`VlCnVDO7F6thQ{toIFjFRlp_lEv%JD0;;SHfF}b&O>EZNPUWZ3a-kU+nKP&khBR z&i~>1-j4%yJ5P!;V1eJi;{BQO_70<|PsY$a%9$J3d-KcaTI5~#L#CdApg(N+EMkT4 z-t8P}Cu6WRID_KAb}A+bafQ<+{Gm~zer$U>MnkIV1!*K-+7~8N{_b{#ktwtxSZFW5 z9O26~jh!+ao@!0~vE)W>JCYjpH`0`yeEbnlW~@m&cx{0^}4k`-2nJP7_Hv4vx7VM--oOJa={DP=$nMO)FdX5 zl};flH8}|F!|zD{xy}c0DB8KywIWBWzjM0zEKoiS@&5>b=sW;N0#4m+tEQzAZI&d} z0#bXdsn9_<$X1co+c(WP^K@bBRliZ`41qLdcX3B}m}o}{X1>{n${aHb5~ZyCg-y2XU0~?-Kx>NobT1fH)#|j$%`$1o?8l}B zl}>_4e=ci$LOpq_$s5psCHt}Yv?_s;Xp`6K#3zd8r@Z?cv9-6&-YGU)f4+BVMm*B= zxZ7o0z(xT%U#FBS4`LX8`kQ*a?XlNk+4Fp6lkUyXeCAaNSj)7=xub{c`}eE;11|`{ zs)OoO1J#`|_579Z5r}St&4txn&2=l?ZsqYX`xj==YcZ;Ob_42}qKwH!ud0`wZg$4M z04a#xyE|-b{TXdNeow5sA8mwqq~L7t9Z+QYN&FL8}$?uZXHUb<@(( z7M5XXHh!p;H;}v?+zh}L>G$&*N=t_v?mp@oOA_|4wkf65hs(a0e{^>J_GkYBnx~Ft z3O52t$sXoyp_u~|?JpxpN~ca|Zrth8Ma})*M>2EM!-H+AJ4grifDGjd9Hw3MNsD#< zn^y#v>iAo+0SK;fFI-%wy9gcghuhocLIcU&2_h4bU+USlD_{ z+G{S{Fe*)$3**|3(G>C+UN{ZKz#2dRG&@n}aKf@?bTg{nh8FydH_yb>pdu3x#c+Dt z|2gQ#PQeF-lVN|e1&y^16?00B0Oj$!`j5P;srG1x9&x72DzH*HgAqPfQ#N`ol5~n* zqlk^jabyhXy%zgm;+xL20@9JF-o-A!>-s8Bw0zT*U-napAC)cSvV+GDc$(i{6|cX~ zKN|9at=h5l$?)%@U?zCSd4f#P^WNLPu9N=2M|6(8|C`YCT6O9!b=G+?nCeTQ68HxF zn`1uvWB(!{h#dNCezu+e8?1Q&GZHoq_K!eU=vuPH6kua5b-P@BU7wsbBuhy7ai8Y7 zl_O2L`cmwT#-&n|M69b;Y@esls@YY2c=z>@;QRC5uv<(LGa0du`0OqJ4`pv2mUO=U z51%tL)v2aB$1=}k<~cK?rlvOKlA1czRFjGef(wYWxgwY%GA`gLGf$Z{$3m{l3nkf4F%-DBJc^s$phHI!K0ananSg$6;Ix1r~^>!8*VMrGoi;}>nw8jtb(`- z5CB(nK-DqaDOCUe2;o;jGuOoOA%ODs5I*1BoHO7H!gb`CO>FxF`K$Z8c95|l(3yj^ z7##O9_p@%-e_a3m^k4qD9r%9um(xG~@VC3KUR^Xj__61wyItGwqaS{A$m;0Jt@A(O zhYfu_O>3ptB9G|hHG;u&zF)`{NW!nrsi;NL{w`M*)^>~!RUl|yD$2@?K9oB8I^$~! zlZ;<_ec8ngNhJ#$594N5vBg_`>;jXI<-lhM$O69eaK5EC#Z?WqVz6%@4pr zc|V6QYrg*Y)0X!w*D8vebNZgBb4A12MC=$EE2m|alY{WteK34`N;&?4Gvfr{q3HiO z!$*T;v0!v_8qCd!o?a5A>sgqQlZTFlA$Bpe?OOrI)qtcf3WRP5@kcZGbeaT?U@-3_ zfv61wk{>8_l!ql@AvIK~wJweVW8#@nF?)clVYy zR>hmec%JcTZA6MqbY3XCSno$>}9xGRM>ulLqlo^Z) zSE#7ocW8)t0d|y%$W3!+R|=r0G&oMaC0a?B&x--?r^W~2Ua#%hkXp5@Cl$=D93m}E zF>^@#WtXz?gv>K*>Fr!eo{{m!b1PhWy~DM6Q=g+xfVr#y7Zh zKHiyZ%!l%F%Dq>|rJk|;%>GRcY195w*XMuw-(PPE{oyzBlQqU?F@=R0DOp-1xYBOepvC zp1Bd46?2S{<1k7U0FP;uORg`qKXG1;38xF`q}HxpS;<#Im|Nt-{mFP$PhXT>a(_p4 z^C=fhC@p%AM(VO#Gb9d)7vF>0;-(w3wfMz(xawS{m%GVAOV~30E|TcleY=R?<*UAx z&(9ZRttf$?I?@bzZ_M}n=hOaI(77@E?C@WX9(dsi``tgaStm_zJ93wa*MK#} zA^5A_ipm~Be}Q&eA^)wBAo!gbeD<8{N3e^**}PN&vi*lx^lPy}v|h_Zrlo4#yr?LO zcG%SZ14X-PE067Ls< z$`b7+Xh$?7SecvM-$PG6%jZ9x_yw5)FD+WmeEwnn@0;A+mqnP07%IxO?)9#EoZ*Fb zdl4TI6qUUh_n(jZPi5Zk+RyZ#``6%K)UT^(t<%wpnypIlOU@5y5OV8|D=lZFpMck)Tl|6Zw z#UOt0Y__g)iY^il8-LKQP1*rytnXKc-eNa=J6oS?-! zF`E4e8ifiIzvy$+pNWFtLEb^8agGBcwNP;y`%>C{PH#DrUQ|IXbz#bOsY6svozbf9 zsa%|fFXhMSyv@ejF61~T$O@y;15$PWpfsAy5Q@f#w(?mTTg^^bwL$PRs3~@?L2Dtb z0jV}|1;K|`v}(OQS~E$Qj+lJRSQ3ZnfoCi;VYNG_S5SsVDoi%Y*rLdHWYNQN-Bh^V z?k)OJ)QV~zI43)~bAyZA`Jv-3bCUL5>Xyfu4;>y7W^Y{zwqovDoZ$;fD3a}>t$l3Kc z_qtmYrZMsqb=1}Rk&G?M7et|wxE5uv*+%HNo+go)F~Gi=J@(;i7xV$K{hkWhu5MwK za_s3%idI6zR|pQi=pK_|P+^l=BqL1AIea{t`C*i3i&vynW>#&TJ|gZ()#`8HN}Ass z>Gi_qIg{B?LBB8nUc?;gF2*|IlkTS-D3LyF1QSvzs&1n=kQ0?lfgiWj#m1#`EnPS? zA?H;7fdf+cP&Ks|RHBg4IuZFTL_Gx2bhU~Z-W(o6W}hZ8VU38~>DfDlxwx3;af-yZ zscBa?E%*uZyA{L@O9k$2u%aXSK1O)46f;45!t|Q|4DF7+?YyT)_Okdm8~yaOCYKD&(UaQJghIZ$$N1%_gXkUyk8R*9bYq z-&xrOuaEE&3D0iG5S-D*KY0Syqni|#e=_`0W#yjy;JI@j=f6tdyea0V*hjgaUo2=z zUg?z=v>%sVnZo!VeS)Geg&{R7OyT_+^!b@1UU|f|!TbNmbN_xg8gTOK8zg2WuMIUm z2vW?uLGPxEFqgwP!`1g|1^ljkNn(>N@|q?s!5e{`Yp)+Lv-vaO%`8!V7F4zBLpKl>0UUtLED#CNscM2DmUPPMAChXA;?9sNL?#Os^K$x^Lm9|kN)Gy?v;|$Zg zV9wE1QN0liB~}(QU1n?_JZ&$%J1lx0Nkdel3x+WrPq&XZ^z1sG0bbej@51Ni5Y@R( z?RWBedx(EU`n*|?YU_-gy`uf-tzZ!~y#M1VZZj-r2B8h#dNJHvzrb##U;?K5J_hmU zt&^WqNcX*{roOWqRY09cYJ0jg{e*%H_^?&9cy9ZSH|x|BaVhaNF4;+sy}N!FR3AXHq?c_`yRw=EPJTKz)=Rn-kH zflO3ur&GA-;B=7C|2&$U28T(-uPd)F@9vF7iOY(j7{$)e=-v{hF+nlH%XqRoKD6Gn zf4EY>MO3FxhjMT6WwM#rUj@UhNezSAXdLyCb7lWtCslN%V-V0lH5OUVnf<&`hB=KT2|ECHShWyZH-N(lWe7+>lda#Ovz zcZ2@t|0LaOHn-Pydzk+D+?nw6C9#Kb-&wvO{2cv_a@rxhFj#eKMzU+CVmjD1IbAxG z5>Hhh|H)4geykt)mTLSnHaKQ^Y^ua7 znkqXI&M=EkkZPM<)Hf__TQJKfd*`*%yG70*CKVcVmO|T^3w;2u>~1^l6db&In%m5L z<5V?B2W2QHEbU8-!E_+0HnP-n=gXJt_y{U7f zm^^AfP>2dqjbQtRbTgO%oN2%8Y44130f%CvhK)4g&9G9EowSXK(MermF5yWW!RQJT zMzfXK$vZ{UF_Ud!u#@bN&ovt2>Xf<<)^I+BDK=q^&_c9c4HaHL35mK7rwj}2pQlar ziFDP4{G4R~V1>k`VN2ssqtGC)3r@g{9(KO?rA!%zE@k%h5pjZ!6~`6#@+l(zbM1=r z(e!LDtB;MY^o(IswAcq>n_Tnde(vDJagVnXDGhIS`6!BGDa=lTS6xrh9Oe^i%YUBvFH}pd`%?TDf8Uj87F$;(>3sCpl~d(; zwStW|y;(D2T{cEs@YGsSDbbi7!NJ{+1kd_G(?eA$e!J_F1weI=IW6~Yw-!EK_1Wg5 zXgR&|xsT%TrC3sg%CCamGxG@Sa<_u7%Ww5@k{(Lf!Yq8Hby`{)mOK{PyZ0v~w@>^d zzdrPz8sctJpM9yMjB@XuGA@B!U4DU3;)N}Dwnx+}Ou4Zu`o-jp>PVQ}DK@{{GpFb&r< zs&}ACDRvarAT&}Znyobyd8Q_~|4|(_x?jS{#wPcD&njAOLHVJwig0YDik-W3TjZ>^ zl_MJF6{*D$g!fww-BUPHg(96D!Bg)LUK3*olLHoRZN%GY;O&L)O>Dh7AX|!VcpLAN zHMGE<9+S(Q@UCz-o$p<0<4-?c+=ok!0CyBtZ$vM3JOZE++;EKM ztuz2w_4hKEEpwu>&<~?U&zpQ{ zJ@cgx)3PkEcKhVc!sAaux2#6m9BBxku6a01xO8rGUDUDzG&6K|xgX)=$Z$XL1T|xS z=#E3mbF5~!eb>SLg3KSOrihIiZ-l!;i{0~sMFQmJOYZYbyWgL!pHt#QRrEK%#Qc5y z{=FamuMED?1?U#@NYy#ungex^XnO&0Z??L>Moo$+XN_NbHM(Mp6N^qDC9BWuyPtF- z(x|3oAx?||@)L-X?dPW+>A;$;+XkB)~Axc zE05?^&Oz`vc8N#?fkPVZv>hz;E316CeJ|uB@kY1hv~^fO^+?lA@5Nl`qkPt9`1Oa+ zz{Vy8v|rI8pS|8i^^hq}@9j8XuLvp%UfNf7?1D!gRE6=4gJGMa@P5IW>Gjio+Mxxd z*ePM*DhL%1@qrc^Sy*`QBheVlQ=cn5V4hd_GT(Xev%cWoc!qdHX~ri$|ICArVzj5s zer;H4r|Z;R7>Vh9B%SM-m=&@430N=u(R67shb0%`H2_u~r6(L3V|F>f=%(B$3+{-gGF>Ak{VE!cd!BrnkUQ27$)~OC9p@}1Uc)FJ0~>1< z|413O{OLK^Mff_e8-WCNpQWUDBPv=huVilYZzBIs+4@VowhkQ^Q*y8_{q=(AOg`U^ z^96P-nT_iSNT2Z?UOi_Qxa#z(`zWw&e}*cejQY>?0T)65YqXT)_5t9wZ81=&9SToA zzvCuaXxR?3MQPfr7Mx37XiD3AJW{A>QTE{eyJt(@-5Z{Kmn)17p5-s~21cK+=oZB} zUdp)cx$yS3egJt_oU<{P%*Cw^lURjSipahV17 zwATYtB9P+OA_!Br%+fwo7wTuXh?aiQ=JBH@!M&J-09`RqTL;tgcqAMu5^(%(O^ny8oT>Z6VhMP+LpNngdyKce32s~li|x}eYwmt38x z)fCs*yPro-1W?oCpH;gY!5Rv*ceC3Ycm2kBf&7o=nTDut1@VsWr{kwD>sqf2KS@_S zsqYPaZ{>iZ!3#=*sy{jxqq4OXWM;>wJ(*v<@ArJq+~j$#n{W6=udi0nufF?2N+Qt# z(8jBmijB1F zZ*3mhbUVme_vDFR98ZFPRTz34_-kqP!VmfPK{rNS^P-m>2IqLev&@0U>r*AhfZYC{nD|#v;2&`= zUuj)BRy7x?r4h5|BDDck?jW?;aYF&d5#U;=$b8GuArW@H0HB!bNZeDmNc>ZN4U%2+ zxkmf=Pmc+RsS4_;Fu8kgr&(sw$`Pp)-_ZK)RDWJ+MKlFd?g?BDv$>M9WU|RM=9v$D zmAUcHsg0=|!?)-&sXRAS+8CAqX22*E<=o$;)k>BW&$SM2glK(Go}Q zBX@jHkLp>XXp1o&%XfB2jrTP$AAc|1vg!?cQkq|rZ z`$5{)k2c++kh6)mZE{5rD2&?u>{y{mLBo-bQ0Z+OCz)fziH;x70??w!s=&sd<{U`Z zUnR%c#6h9Kj5{}WSnLotx&~r#^^Vuxwz~hFb7eOHSB_barZIesrXLJ$SJ0 z!c^g@S11u-)b-xl8Y!-?tnk1G3NzPE41k8GuJ|n9dGlZu?6&ECUi)jq=KyYBow635 z;+gJiJH>Mc+Int>0r83T#eX8<7wX|ZY6@P2@$_?*67&-QSq`v|xd;cyo}sf_r!dK$ zipPH`J$9bV(G;fxe&zgT4k3YRYA-yAeNg>OMrtL#nyR{iR{?{oM!Me6gD;D&MKox~ zvrERDLVE3jpiqTMG&WXt8C3Q&tE}wwl<#5533t2}S;p*G@7VA)U+viR1$^XZY`*gH z(^;HV`C3R3@JTE58c-xAhN@jPni7CC#|ZYP_zx~nkF$w=pJ~DcfoskY4QBNIq3N@^ z3XOQ(6&H<9j`0TN!9?8?ND=1m={?cUK1QGp8^0;|8KJX^nPJQMZ=Ui+-e`35qbwQ+81ay^XR~Y=5|HC68Uzv?IKY=E z$Nj})6HhWP^7IBCJ|u2B-o!Tfx#kVH=edvK!@9^ST%~`P3DgfIunq1$bXD6<^moe~Sd*{X&Z*SL(b#w+Z z$+A^6xsd!ar%Soywdq6tXuc7?YQFJr8!T259zkP5C~34H6@$7wTAa75L@H@G?%p_n z7LNgvNXbx*g+~xhHg_C1NYjnrWT_+kjKaQRd|eTUT$im-5S!#cxr+#+-g z8DrYT%jHS^zXo1k`^t8wHxynDCY)tkQfQKiv4$xHpbotJ7Qv69VM0C5n0Nfd-q7A+ z=szmbb)q$vM7;-TT7G8b-^7(AhF%eUPk(v^UvaWpZZ16KC0z0LqO83`r!VQUMwh14 z9A)k{dx;6l4cQ-&-rk-XlN-TD*AvqwA~794OL&)vT8BAz|BA8ZvukpD=y?Kr$4(ze za5w`}eSr#THhOgq8tmNA_FGe?qxm{E)bV>s?M2hmhjhG^myOpWRot)f%L4`4i&do& z0BEAhXT75jjRL~n(s zDA`ths}7e1mUp|^s^V36X30ohLt~Sl>t2x~G5mq$U0cb`;|oq7@17)uPrXjbXn$GZ z85o^0o1C|n+W~p1thX(!sGq(A2Khl7>iMUGP(dpC1uEB#dcDXJ#A1oZmYsW*F@c$= z=IK@uXWt^N_;Vl>7%7dea5#xE^z!%&O4k!sG9jhJ=H(HG0EOY@LnEm%z@i+Tp&oNt zc{D{50cm0QgbCMxFQ--lFxc~d$rr#C2-O!gKt^x*@x~A82@Ur za2`C%99>OA?bsm!2h+y+2kcZavM>VKt)s(-&{ojMAN zqcY9G&z9ym3~>|MfAr!dbP!iRNZVf%lrPD8y%TAc!-z(Cql9AHc76ohQ-Lcbog#%rRvzK z1k_;Jz2M#$n*8p|bG>nKgH7$qk(Qr$zj6D$xkYi$%Xk}Q{6#A~mDPSKKgb#f38qmS zA-cCMm}3r^k0o~GzwQ%EOBzhHu=hwKs5Y{({~y|l!f;rnC4@NRN}Rn$aaZgt<+w| z-Hm8uA=4l9=W?~;MVEOgcMo!ISqNr%rTy5EF`Fbz>mmxTeE^#cw|e(F8Qa)chv3fE z#0B-zs5`)gagbwyEJ*cJBr}CenJW`SvT27|crKepq4YcC#_tt0M~$xHa_UkTW4rnQ z%qZycox2xLP2bo;y18ld`|&U9{v(0**N+)0YX2=nQsq+_&D+kkWy>`r0UdPh8^=1W$kw z3ZpoVG3SD6>IAO~Fi1pR8VcpaW}e!~PfuQ6KkJt8F^P}AE_ea-Kr!U(Q7+;ph z>}}U3`Q3AmC@<;u9>YT8DyzJ6;WV7={W-)5?89ZdS@F|C1K&`#CGAr+RKGN?)9ZJc zsHR5o>X|*^45U{|&A9$OfDrvBrjzKzwfC2VA7A`axB;*Zx~k9homnADtCesd0#d0F zZD=mQGUc@6e#+U{7}!l%dy_&~8|c(;4BG01H6gQ8qxNEdZ96#OWJVTo@q?3IDwNNf z=GaR+bM;VoVB=8JO&%y%qf# z%dBUa#=l31U*zx1)W6j~9^XZ=e|fWY&qDnBpT<*XGCzU26gwMS{jQhZioRFPj#Sje z$FD&Zui2xTGX5FBapdJUsJ67JepE)?3VSGBmR<>%X*9 zYNTy_7qp3aDk`8ar1DB~(W_HN(tSW?V>(=Al-U&@ed_<_oX>agxo`o|M!sX>HfCbG z{iI?8$R5uStiR;GxpUiHj zBqEUB{ew`zh=58#H1u3>bNc*ndUv!4|#{5S~8HnXv1g#-qAX9N6mzjg4&&CjOJ z?d97C&)(yHCTCV08Y{Zub98j-zHh*|GPx7v62@3n?bU@t5z7dN~}%DyD7< z?4}MO^GWqDAASv@9U1JoRZs-N$m)s_BOaM0yN{R;ymeYkUP;Z>4af@h5(~91B&4i9 zLD7m}jR}z~&ui@Q^-sI>UGjd00gnku&g`JTBK-2=N)8=+_?dK!U%JI zyiGjg4n#*TS0kM;AEqQ6nI!f#+TeUI2ZUE{}tw*7Ba3ygn~Ie&J(vr^)**hgCX}o^{0=VT%Q_20B>f=f;ufvbFF3j312$aUxOa z8=t^X5Lj@1^+TH}lWz+uLbPC7+wHU6r9dZ|nA-gn z@~^(C@(1;a=C3|>GL74w9_ztW9N#fUNFlV*?f?s0k&IQ%F4$NE%L2`YjRntGrOY_X z%{7M>K$z%YKh?nXtby7JBe2m)n z!)ZH8WZYrt4mewE(t0Y^$Lem#t51nGJA<^$5Z|)D#y=PR#)KX_g3Y&=@?2>S zze0TyuUkTk;(`%iAY5Dc^e}jo-_ZD~5NNvH`w@*f_Tf~k6z1S@QU#r5))p|)fvwnh zTW-)xpKn`|?af)5&UaC{n0wVCJ(9=~_$RfF+ZM0ZI7Fg3KL1~nJZBJ)N_~FUaQ?|eDJ=^^~#9!_cjDAKeweN`eFASBb&oa zXyn-%m5myj9}i)J)Rv_N=g=hH1-2ATW1xe+4rIN1Sb+2sR3AH>tZ_!F_y*g2JIpAJ zR1&XG%NNa=^SqU}YakVIbIoh_ zrqh2Dhx88<$DXD%O=?`MPlaUH9mVnmfFuu?PVqZ5@SZu`{+GpUrccQHNgNz#{+7O$ za{_Oi#y5ReT+^N0j^jk)*lZC&ME3c0KK#Fk>q>df5z$QVaz@&raI&bCZh5Fd?>Ylezej7*&NodXazZ#|HfoB zBReua*chfis&%9H%@;)W@Wugy1_+$RHP+AyrsD^Pan2clvoP|=Tuec#+OLT^?FCCi zK*LIguc%Nt4uf3Gc+I>5$BW2ZKezd5b4g;CCN^8lPG=1mqh_eXhPktyY?~vfz{u46 z14g?5I%SvN%m~M_Y=A*Whv3+w4uSIFLMAa`Qe5IK0`L-707pl5vj%-MrTmU$Q5X~!ZJ5~Hpi8hK+`i_IhgE{d6eMZy- zKnkR55*miyL$ckBBID?X14D3Nap{3|9**%s(}dLo3kczEK^H*Y6iIml1eMBzb$3f3 z;f?xdr=|PeuT?ugI35UGmkucgLZj^?ZK1f5Uwu+)GDENWb^^UPhU41VK=OTZ1q5(v zRhn(CV>1ncRoS*Qx>oJVSGVBO==P-(j4V;Ts;_xwwrb~oB^6<-%O*OaUzc^_l6p@2+sxdU3|LqyC7%Av09--+xdfn*tP+K=s1Gp!8#5F~2q)Jr&SkNG>{vjW13|w?i zJs$WLtlT-q>E6LEAg#6x-^7F!R}8SR6VCfhXjKC{Mlx11c(f+#a1w3(pwz?<5_F+_ z)Jk4YY5c{k=6l9ewtZ(DwoBc3Bq${Ew%(|-WHf-fn&(^vr(pRiLX{v|dlk`fnU9$` z3g1)K@xA|i1S6W|+HcYXNKHXr`q>D>T)Rl8IuoJ}xgTCL0m!En5;mm>?Y3g>$w2}z z#UCI$cHmc&fRin9@XE|J=4=1X4R0i2Mj1edQ%w8>bTUn&#F;uW(9|gO(wc3$Qvb0= zxmT*7eDk#q=6dvu6NTd4+JR`QKK1G*=#8^Yabt+haKjI0g*KubZ$!sZlMfWy>@A|* zSeykS!l)-$RR_+a(JIw>KK+FW zKZ}By`RJo~8^l)x7wjtcS$Pe1X+^iY@%2#g0OjGrR^xs0)^7_!0;--p^RB1{Lc_#z zo%2gkczI~$*g?|R>8VzcGsXQW+Nu?;eepF?H9fU&6{{JU+CI5(V^Kx?He}N4Vg3EG zz{>k~o10wDQzl*00?4WA=_arfkh40^#yzHvRbL!^!yK(eUkSWk()ilW{zHDNj;ID-?nGC) z8FgwOQ2=NI3BmE)Y;vU$f$w*|@9RziCHBih5LMUp-sIr`Durk9x#r2)7^X^#ZF+$fPtM^b-b+SHX0WsbRU%xv+p;geRV zpE@H~xm55Gtjy^vz`C7d(hw=N@$qTukPWm@PNOxQGA`6|u98P(^y;=g65sg=yzn4w zUMXw*)1R<|7k)Sexxs6ywhv7iuEQecl8&{N`8v@?G(iaQ^kgn#rL{IaNB!ifAR=c|&Sqm;Gtl_?&q%8!L)`B@f=oWeD#n$;@A`r! zT6iTRE|u1bCit#0%E$hXAi_8+%y!0$8F^+GAD}V?Dj3 zRBWGIbn2_ap|?+qpQ8)JSZG8jlSgKZoNNZo^s6MUVz-tk@7$skXOyxw7~m|2=BDES z9;<=H0SD1+r4J5=_?)F45P3t8;f?(2%hLV(shnT#gyR(mj%3<|X3q-HIaA>e>H49A zPNXR+qa}b$u~0FOfRRvY9h4NCLICdsx~tcbr>=B6G>_#UmbE~N^(Z5^W>1QRofI|- zWnt@`Vke5t+*&WwFkb1LL*txq|G98#y+c?{$4KVA_B4g12Yxmq({JqJyOf;Kh{pMe zL@EG4E64RO{$}X%R{$z~TVMxqDb28OoerqfE0|G=$vvRyxgRgz$(d^st=!WN-k;}% zd-3LNgbTm0^@BpWstZ3Sc9?JXP4Fa!dS$+A*jO(ArbJEjFPz$5xZi4QqUD^FY6%@a z_9~bb%wHRu0HP##JD0(X16McoDdcaKVim5MX!rQcS>U(E4V#4bL6HJ0j$2+~VOh8VP~HQu>F zS)B}rL_ibjI0RSiE@UgSwLid9T#qE9D`LC^==BragtTH)%aywsQ}-PL;9plc2^nsg zl|Jw&5I|l=k)?`SsR9ji=7AR74>%4$C`#Q0U2q8S=EHjgzN76D~#-)XMFFqIvbg` z%0cM002b-1LZ@x~x?6Z{u`^96^U0`M6K~r+JF^F&=E!I3%?04iYcmnTlzC&o>gA%$ z-i8@s8t;_M63vYxt)T@Wf(~?6932iJ$9r_h>kO0#t2 zJE#*IO+0q|Q8#F}JtKY!eIfBDk0UrjRVlLSMqARf;W z(ibO%=JJyl!wmY_x>bIr2=H&=9(b~`y!OZVy!NCw2MKF+J9Sxt<<>c=t-0XqP@C1; zr5V&Uf&ZaF08lgloi77Gt;WE!2k5frCMr`oddP+4ft>JYLpUg!e7yMTV}`LEifydH zesli0j@C_Yq5g?zX|e_=Mv?l#GdVbUXQ>1p!cg70X(OT+`i91$f;f5Ju-gahd1YVL zC!uJigep_xHj7Scy++%1$7N7a zA0t_#BgExLOQEi1zuAI(Dl+%1EN#u_Cv3_$_y51c;QvXj?nxZgtbAF-C+A1=zWnsX zjF_zPQ82B61_oPKK?DXddJ^v!GxfJF5MfQVwcZwIFCgEHq&$AHtDjsNu>gxdEq_>H zQov8;b-rCfmsk8^*1oSJREn z#dvY;dV|hKR_SRXr;8$Mt}NzkG+DOdxTd^lTY&E=Z#4UyJmLlvCs4Ee&E*wAJb9Rj zJ`QK2FgeVKlV@ERWNJF#G6a~8f#?;cl*BvU6XyF6`j6*Vlz>M|lf-a{ z%KSKhOEWw)!R6sMEQclocdZe#oN%>6t+$ zuKo(RIiAv&a_|2(Sk*W`p2|BUNGjd$7Z-S?$=lfYX+a~|mfO7}$lZzw>M0sc`jyj? zlodxS0Zz5A+IcI5Zu}%zHB!JVWV~$>4ZZ+Im-I$51+am;@X2=k@Ew?KJbE<}-acB_ zUUOMa;%i;k-!s!AZ2zVC`_mT~!z&%dL7*I#}f z&$|ctAKz!@zccmqnKEE7JFa410U*uqj^sF`SmC#c`Odo68YVuuC*aKUtH6CPHg@#D z*jTo=4=v-*Go*;!B={jW5@w_TbEyL3n@~{Rq6l7xS&3P4U0QE;`mf@h)8xBoB@qLYIFRW?GL|&QZ}YFE)bC zFJ(6f`{s|=I9F-!Tm}*Zm3{eeZ{(IU*1aL{3*|8H1;bR)&}X;;6aC_BALhrnNO+zM zFI7Ja%Wt`|{H+EqsWIf%%{Fa8jJRh$v@aJ|lbW$(y$^sw~4xdFD% zTJqvZ7?2V!6O!aM23=vaS}ji)T69Se@0lO3F()Lmh-sU~`pz@kmgrrW5BYqS7csPh z@XpepdW*`!&W;mrmv_Vp%H4lzZzpOj35)#Rw2yUwZPM^`P^jh!6efjk%gK9Eo ziGH5Bc=kiCxzO7`T!>I_OOq5dKx_i($4YN8;y+l#2lUC-EPiIRvaxgeujNIaey>-P z)P@$OB6>?BNIv42aI^{-QrsBhr}%R7yb*Bc;T;G;{N|}&Oa$5|gPDJQ{5ny?JF*=9 z^r7hOO{SSkTYOhTi<-K>qOQn#!{c`;{$l){wLci*$ZP<*k@p@HEx>hU0b_IO5sr|+ z2OJ><-fUW9qo0L^)P`fk{Z?sTf7vS8fIhn&`TpF>a3q{K?5+5W^em%v1mMgnTkQtE z01Q>0PfUwiiKks&Te)>GCnhxR+Ph;%oi!*5rakGU@!<(YQMYYCCbp)p^!OS0jIUI7 z-P&F;@{R+n4{DSmdV$nlf4meWL6QavAjNLBxlY!B)vsP1>mWnI-X*9T4-eHYRQ`&# zwO#UY_D|yKDBh0s-&IM`Qa2X&g8Meh*v)4V2tg8`iFAT)3t3jCkv{iHPnJH6Ksa~6 z)2Drhm>bTBV*~H(xwGA?`M7JbEN$onYg>OseSdgUIMVg;ss4%N>%@%y2*Y#2nog9n zXO?{)XiK*mRD*zBtLuL2L0SKN2iOacAH8w_=Q~m`9Zr}W0qJGCOg@2Ea`556P{%kc z#GEf9@d1H-{b%Cp>^}*c*G-p}bOLtjQ(tziO<}{2w4Odh>Ep!-&L^;Z$H<+g4`rMw z=iBfp=C+wOb`$P#2K%&pJ_vvVu?@ zmErF+9#_Qtr{8IK&%pABf9bx2+%fus<&eyHjfU_>=a*~DcTG(FPF1|D{zE3qOR~8! zu?cUUu?L1Z#JS6AVQ;tcm8H5dwUq&2ohP$*6SZ46MdcjBvuyb;{Ix}=?e(vo$# z&!OYsOMmtBHlL#=`$OX|yM*2vwoGBv=Jl~mjky3wB@|r|DP|7}wsaNn_bR5s;kQ=r zo}RjE3r@w{)~i%4smqSQ95RA*q>PE!89jSr*uyOyRv(P##;m@NvQx$n&D9;yK??BhP`lZw7{7X__#pASFnDCjVq+6IUF>B4mVW2*RAtCK4 ztC=4I;^3#5-G(Jkc*?2`a&}`GaBRNpN|3PZ0NRPZ2gw2+bp8Cn@#+35z_S{{bn7As zoY`wbK!wl#&48=v@VyP?JbT!)&2I_Z*H}2fuBdIMZFe1_Rs!~^PV@;w>0|6tT}dHrM;|a0 zK6jC-F7NV2czs0Ae}m8HIM|#E+OcLB`-n#7Rt)KUP6#I9RqBZJu3Bo^iUR)}@A{tz z_}7#FI{1`|*&nn2YsgvX`ZO2a(QqNfPr(c;8AEq!|K%me03dbpsw8iP;f6;s$oE=vGi`@W@C~kMnI)ka}x2 zCP2G?Pth-dmN$b0p2V;y+Z@H@OB3q}ghOd)B@^aKW)6iKV7gPB9Jck)We@&0Z-rnXN+S>SmWIX-m&K(_%!YJ$~9at>{qtl2X$? z-Pn@${@K~I9>wPE+z{1q5`Yo*l+owMGaeAHb=d1JbwiqF5S2k(e80;+M>q0~ zTp0}*ZbV$opbK-n(Lv+xlgUoVYfqjE)2rB~x|JOJf!y;cvs3QNvxVu)>bx$d+%#C_ znGw+O)2E+_*EUZP)=LmD7krT$jShttft#v5!;M@Ym4hsAMCNA!H`>Mo+1MPxW-cbJ zL_D72pdUIPhHEl-Q@|-i&4}5r3s_!UrdI{#C{^t+dXr%`Q5TN@L+ywQoG}khV`JJi z>-kv^V`D+PBL}M<`QdT8-)JyjUC24o>>qH>>*M>Nw*u4u1jH|)#=jfBH(l!f?{hz1 zveZ(0aJ2kOHqH-b*gtppk|{HC7{gGJ2rmzvr=F*R;2in%fLZf9%504TSxb+Cn5 z$S0N}-zMC@ys~z~g%zIa8a%h(Hu~9sk?0IC%()EsObdY_`Y$Z59i4I~W?X+MP)~O8 zy6%ZW$_2tVcTXDM?+-eY>P=6xRKBAuwj^|()P$Wxxc8S;Gq9G*v0^mLgA$fIs%AGZ z{CwQUIBb}$l@tZS=ga(JhiLzcy*CeMGwuI|=bo9iQ>}J}s%cR(ozhm2ZYWBo3tEa= zY70_TRgJ_>iO5V{hmLQVYLn85Ff8*ZbG^c#ik| z=Y5{zx&P_WLqc+$*Lj`a<+FT?9fAZ(ZdQVM`F`iw}HR;hlKux#R zDoM%2yh|x*R(HrTcP=;n*qF>!cYX=@wZ*wX`1jJX>fO?ez2vsG<$k@wrKfG~E5*A2 z7~l<?)(a?5uU&TYA^6N#W&OQoiGu|E7nKa?;F zSd*o136`W*WgiH0-WYk+Vlsv`WYyu@X7iKKgISPJ@8P7IfP)!qxV#!d0OSL%>s|s4 zc%byS(shf;2`IcyJ=FG7zSy>zFCME=REYfBE<|hxtzG{{gS33azNe@&N+&*nEa<0lx`62svkRZTfP|X9g~~Sq})LwA6?th*a&`ZZN@p-L*lqz82`$7Fw2+ zWHn|oc;viQ_1Q={wSG^=dd;l{t!KRoFm=TEUt6r|v^A%ZZO7A6GaGz@Rebq9A7pRc zMm>6mIF?>p$U@Q2GDKUt)USxV|w# z&#Nrzh5inAu*n>Ia$820QSJ9Yf|&PeIgZ>Y0Wv`am0Ot?+NK<4$$--9gPc!v@^qlb zxJ7vRQ`MSgO$O^Ho`L*%t28J(66$gRna6L?)${1&{CK0^0vRtusUBZ^s;h1utRBI= zlP$g2W9Lv{;KU){YVmZc@lPN^r#gt*ah0g_^DJ{@XRuztfPSG9g=N~C?H+VeS1I{)mA%9^kR|t0j z1vmOV>`dqd>YW8M(UP=cS0b;*f|00x#nvgMK)T2HDLt>C#^P%HBjYuIM%p6XJUW}r zdk3nb~5`G$nekg7Behq;@XiRNSF?N!|1LGb=j&$Q|&-g>tvLJQXCMNdi2KII?L82 zed;3xd)4IWca!BZ!y-LQAv#K9ouv&nQrvi zT~4)G<_~PzyB`z2(J6N+E`~Ep+7d4JM2J!x=soF8c#W{?NhP(TDH_$zx&lT3o7^v0 zjWAixhV-(L^i;gpQ0XNEB`hwr_GYF&DTn~>zn!^ry(|Qf9K*bX4VY5C}sq#-u2VS&9^{B-c~}jYV@bKS{D{b0alDA zmlEw8@qtsriulD~r{r zg9E*I+*;zsf&YI0KUa-D4-rh$1PgB^&OmxIuJ;mc%I(+PfC?)JZ?}X0h}iL=n8Tt~ zu+?)9pT6lmxa2oAX{I`FP{L&G7+yaiL%z_2s$4I3BHFdcIT5k=8BmuTlJ*;U)vaPZ%3$(M`;x$2mD4qKhIn2v{eJ3J)Qf>E6L8ntUOX4960-%J zpx#exV?v`E?nH#UNwoNL;~p(RU@YR{FCQhjG8c zLY7MF_<^$29FyODoG^v1kD0Q1(KiGZ#4yXJ=`6 zb_}YdUV^Ejn^uent8Ph?rYG=Mcxrro2{0nSZ{@zpuarKVX6XrfD+m)P2d&3Nba(y5 zwK=Dqn+4+hzhuG}d4@(Re-j-ZmrkssRE`qIdUMc_8(q(AUJ3k01eXSvvf~>&iO0@R ziz%tjGdYRX3H493R3G4L2$!570f!%w7AHYRGrme)yzoAYTNc56uN|1#;slXbs~c=5 z2*Kc>S18m8K&L-w>Pm>U~zY&ta@*4(&RL;;^y>=Y%BkkUz3P@5|UPPi5%Es zt>C1UewYN;ra0q*n95i-X!)kV0T({TajMv>ci7PDZ{u&Mx&sh^a%**Z%$6D|`V=DC@uGphXoUCm}{;K^G}gQUEo9l1WJNH<7errR_4)AET#)PAjw z4}3t%N^BKZGub|ThNfLqe}WrvaTTmNMvYsp*6f*Gt{1xz`wdq+{HQNK405TO?um@{)Ah(y!7L$FT_Es79H0IX_y>H)}B836$0eg_zMF^IZ zkjoR_BrUZ!%1$@ws(0{VWTRmUCbka4Hp4ED>=ki(SksG%#dP<;5)k2gr(fcu{Wo%| z$s0A=A=eoPv4Sy~FeyI77Eh;_Xv1j=gITiZ{$iF_e?FirJrDEe^@OaYB9|uM#l441 z2C_3{QwpOKlJlSA)ovFRTNSkCxFD@9EI7paYR~X|`yfO%g$X6eC!gZ$DQ(&{vuV^*NBraBi8m^0w?cvo@A6-m?quLjm-3%t6nlCJ(|qcN z`6xwp^NxT0rI3CjD-;~*k}_omm->T!7aOympvrrr`fm9K|4ZHzX zqPdH)WefBuryxh_nT6GBkvCxWy81`ZnNsxYR-{0Te;6};iEwG?Cks#?)`Qlc$(C(x zrx{Z1_1H$~J%2^C`Zc!)C5pnhr->7&C&+Ttj*EzEORs>BNytN1FdomTQ2Zh;;^Cb zgJK+uSTT+n01~{AMnxy;hplNc!#b)5Dn0XWnx_`Mdl90c%(mvVT}cWdNcH60LW-nX zZ2kn)FBE6x+J4O=H&N5BNq-XXPJEVSAWo5CSk}-3jqp?|(u<8J+4MQMB>N|JDSL6s z)k++lx(W(regZf=Q*lpKfQp(QjV+~@(*W&~uMv+V*DQyDPEb6j_Qr~MK7Z$6(8Xca`%zI53qeDwPl~4lE7j9J2*+5r* z>sLtt)mQ*?ezuSJZAA(~%kD{V-dlo{R&6&yO0)KO!L_X$tWkdPM=f?hK|PY z#N3r*njN|woVYYZ##qg{tCN%YFRLyBhe7-c9s9)MXSurSc6f8Ax=RRs|HpNK6>X1A zmg40Cr~1Pg%RO>LHv2))41>h&-Oa7Ggo*p&Ke8~UmyNvU7->~(n0RVJFq$G<8p9_} zRVM|`Ahpo+VfoXDG-_z3KCUTPP}G*I&P+Fg_U8!$(cMn6DVgV!dT$TE$kqu$Qzy-D z+j?PZUlh(*+gjjfeBsxtZLUTF0@$~g?sXL(O#;_Nm#wLv$m=64_6iz$-&uMTjSJeL+cuDKcdz*gyAd_AO~a zoA;e)pWs&6>}7^49m8;!C-*y z@&p{(-&F)p z*E10Yj1D^EpAQvoVLH7S>dbjJ5TbFY;ObTT%$XbE1y-iU_SFs+CHG9q51z)Mj!oQV zl}SdyAxMxeJUIodu%6vD72wkb0)!WECvoa<5Mp%b%}%7dbYkFaX%^vYt!d|IC!#Oi z_#>qz4B{sObmDk&AeD)hCTC}JPfu`9yX3Q@r=qSI)6L}=e%1U(DNt?E8QRKFCI86g z@%MVu$?9{C_&yJ4-Ky`ES0B9si#5-F6r?74nm~m4jtK77>>{Xd;9k(g&qqpA zZ03LCyR=tV6K1E!4Kp9$3gKXe+dKW7Vh?S|03Amr5!nw9u^! zRaBC$I=i&(hySoYmC~DVjF>_4y|te%VF|z8FIy9+?<9m*Q6I;Xh|3fBXr{jP*w(h= z!V`TlZcQb6y$ZC1%P~1)}ssx1r&Mutojj07f)5b&n+AGh*EKwTdJWxeY#b{~hR z9jbhg%lFF6z{FT-mLz%y zkec*K78{Ya2o0OA{h1C_ zzBN%7E>1f9z$Vtc3BY}WV=AdIGf&Xb6@LAOaTJSvvxmbVOxiO59rX%Z81-%mjbngg z2KVjH@yB=L@$5O$+ID9OjbnS2<4h8+d3Ms@wXta*{S+12HfmM|R|eQ3WH~>=6d2oP zZd1H-IyC6hsa5mEQ;V8t!gnrCuaZo-wkyFX%nL;IN}E=JZ*PK2AW3pBrOBm*Z8;lF zPXBggO9^9Z?DhmNqTTPZrrn0w&Xt!JuK399sU{+wFzWbT0*B3 zhI4)k0UEN1|4Ka&7OSSA@U&Kmt0BYi_whNm1@sjXYzot>91NN?RMZQtJnU;(Q!BLbsHUXm+1h6_N*b6vVuEkdZv-hqgVV0)cMBK7ja%7+$MJvSuXb|M z$`29--(le6E4wW%&~3n&qLo-w9{+NgTW;D7aQBp?UKHy24NP6>PXubXTBc_Ya3sUIG2b-98szJZdS)8t$eQji=mvFn{8sV)}Z+; zU5yWFpEJ)8#^XVNhTn7C3watV?|3PjAr%3J+=ikZ;jpICkAQ{@O8p7 zsvVowBJ`Canp7(M$PW2VSF-PpsZ3C?J4~2twfrk?7Lk@)3{=$c)*klp!hMznM@Vkb zh3me5#oJUR^d7OWoQNy$tUQ!`!=7O2rcoaN@xT}1^DIw{7Q^k~2}|2!EJ~in=gI^W z7;D~ZDm3jTH#2+&m$Twa&Tu<#xc7=!L$+>PWTJe9DbL|&$S#k&Pk|KxzxT$R5)YOIYaP7A}(*mBk2gA1BH9TVSakt9%OuV+_M=2e9CeU8A1gcrnO>iGongL=QU( zdY@_tv)8=MVR|O_H#snV3T1x-a@_qM$ACGXG>h@=;Dc9Ih+Ee80JpW*0VBvXj#BSmJL1=P+Y&7<=6Ac7KyO+tBSc zK#oqlwHXs^XO=EiKIxME!)D5%-`<%W-I%xjXob|!wX(dWST}*`K9RuzH<BD=-d+sHo=Vf}(X8wqnY{4rJLvVRoyQz*YXhQj;vZ=C;j`P?+S8XREjt1G z8qaaxl9~2Kt*<*)ETHirm{Eax~Rin!X0l|HP(0gELB`!|CA!$C39nb80DCb*SYS|x^4r1J5BMLI_sV5Rfm}xjY8$NtNn>*tS*?;@6{{j9lRJn$9Jl^?fpB;j8DZHN%>4r`0k*p%9 zOZdcNPI>$v9oAFV&hFcrV57P<`}(QJ`}PotB~16`(z|_$f7T7|AO=!7tTYD4Rf&r+ zz8S=99XQf)3T?e$7*}0?qCHUWNFaxpJ|g*U99h=l1b@;0t`^x`##%0cg_@q#cACHy z7i6XE?#;1h-w(4vRDl%ZO3l`;s=zdm%^grUEMUsRmvTVq;M1WQ;>;L8mJKJ0&>08& zV_ZtKLhyl@r570=(RoCyLRS-j@blSd6YK5=aTUvTw+PwKAgv93fC@~;q8fU0yzqZY z8awiJOYhQ|ib~I>Bu%dIF$*RqA6V6f9lc44MHKX}1klEJ;P_<4(7DHRPMg|;uMVqk z;y1mKG5&uOzxw?@%;Ce8t~=jRha*Y{PQ104-k(re_a{NBLpJ%m$#(efw}b{tSrgBi zs~MSnoV^enkS{MCWxhP8ZG0>Mg!1}@7MpHE=^7wt^Y4;=TKkc#2&X4tc1bv6E}zP0 zx82|;TiB;K|1m)Gh?p9A(wcp~tJLCWAb>BcQf_UzvN&sh-8)E$vW84!- z73LK^N+1&%oZ~CPa&{nY3B!*KNE9trfp~z!sAKRJKcL(I8ET@k2^uaB+KEJYzgFej z_$kR~JID=u`m!|9WUmscpIG34sxQperUVA*_xp=rDLIuG#H9mMQ@^< zzrikl>GW?QB6rE}H0}$91e(MHH?o@KDS6V_GUSA-^)ZLhTW%RLsl-Q7f91_RT#1!% zM40W}%3=~+?J|T#HH7OLD*mGJjC+90H3H)FW0~4fRNX9aR}(Fl&Pg7ynoK2~BQBNT zJnxt}QS?I8F{rvq!rflc&Op7|UqSsNsGfBP!E4MgqCh5Z1@lKS1Di1A6V`tl;>o1R z$B)(3NbYbHR&)5*5;KQg1$CO!w`r*6sMhNnA?wHkWIa)N?Jf!z5gQHlYeQX{zGfWs zk&gL_(AJ`ic$MLs9-CXeCMjB$^uoBKqdvu+O<(MFIXHj zg~=|L>XFS{S-kqK$v)weQ>s2{9TRyM2*cqVWSOs4loM(As`X9ytae7EBSu_5Y_O_x zmvP@Y8XAC~3LpuG37B_zMFdvNN+g<(3!e)xEYTg!4dg6qtS(LsEVSv{^d?lNb+is$ z$V@9ISoTT`3=qp#MpB?9&?DDWISLMLSC5j^$HBWQK}iw>zB zzSG%>5UpH0ZRzMxWwRqoaV0kQ4YOUX#{^QxRWrOe(2}hW?cuu|Hg1C#M}&we3P=GH=2X zW%5@RcS8L|uRTM2_BSynqnVX==?7q|i}$+Ttq2#XzmOC{#dAU5%S?8Nh?36D?|C|c z+TDL~E9f^$%HA3ek1P-L7TYFlGf{*8&Zgxex6?k_wGM#8Cg(-CTO8+1wF{skSJ_M@ z^v^SUS4gOQ3YuiUUhUT?%w(uj*MD6t-Ygb=gE?QO74B5(S3S3;dk{i)eG(X3s) z-&Pv3IX23RA|FqlhEs;G$L>~t(Ckl>Rv1ovTURNW$|!~hBg@7#U6hI`j%c?+&_n3d z5G9in(x*&y!RU`Mhk7If2seSTNb?S>nN+%j6C)v>{M4@BlO`iiM^nZYkPSi7n_J+< z7hRDb5(|rK{*t9wRKp#lp2k@8@0WRKb7pIk=dp+v`X0C2zB5v~ZS5eid#SA&)-qbU zei?UJFdjPpBJkmqJ~fR34S9&Gk*RaBkc%gZ#dE&?X(>F-7cU5_+xzEOKd##sO%XCQ zRDDqrnq+w;6<_T3*)fFeYI6Nz7FAry^5?HTp{MGG0&(XG&5i1gNZlp#rlYehFinOW zrc-s|v{5n4ycin5X1d;O=t;!8YnLz*Zp3vrIbDe^RhA@fU zF>v5`dB0iyAw@(+dhHxG*u45bt2b-J&)l4RPn-^2y@{9_So7c{S9UBRD=SN(zhZyh zmn_#S8#jvT5Lx`be^2SC*rj8Cd_jkP2dDXvDmqp>!NmIMzA-;3WHjlK;8Rk350SD)oYwUj5GCu|Ej)NJyVJ}8 zS3aYxDEX1|1HIlD7n;md(%IkTlwQ1*Y#kp7QE>r@Mh-f2aRP8_-Mk|w7Oq7FdEcd@ zIP2uAEtA(G-4J7B*Fz19;|?ys1<#@yP?S2V14Nptew;fijwEJ?`zm)65dZD*r)fH) zqN$7bK4opb@5b6PEyob7ZH91;x`154{+DcOpJBqi1;U&;ci+ zFk?(ZC0OLza6#BVpE*RFPabhe4AE<^s#q!vuS!782{IYs&BBAd#YWA$V`ZII zU`cwK$*GTuh2vG@{l~Gh;<>fiGMkZsYX9(qTC4jq$FxONE9;Giv1&GbhAft3jt_f1 ztmPiKxowAytjP7C)p81bObxlEFup1%|e@x6@@p>^wW|NFoA zyGY@2Rig{7GT^S8&H(g_iJmBqbs}LKI(wDk-iPfK~M0_xlq$?z8DhW}48NxhD=U4sXfMmC3Nl za%kDN_XPk0en&RtKuK$US#=VlRgnXhK zD0@=E`!?zZ>pIvKY>St=t04{JaL{6*)KA<}0ZKwO0KI`u@zwGUC$BlTVyG|Eje5uz z!0jfLXUdt0#;4X!(61+2fo%_JYZPjs*O*cIfdJYaV5;<%ViOO0&PZ^8uC8EdYzOoK zPiphA|1o$oBlw&L0OoHG2~rZ&?KSMqZH?eu@tJ9BEv=GQ#c{}t!`S^=A)X<#nv~&{ zXwZeQMPw!HQbWnh`{l`l;W{LvZ1n1&#n$M7xzmA;xPDZouv1am=|HF%MvquxvLsLq zqgLYeg1otddG95|xOop_Rvt--c6O9;H2P^tb6upfFOx3YS%53=m>3Czi~Cl}Jb)Sf zBaoMk4J=O)PhcK$q@UJZf;;p#4XmYhkmf<>JX_J3U9WM|{0I9w>kUCE4qrsTL)}px zH-hw@B}=y2LL50E{)kf+aw)QOXrkl3%R>S@%xwI)iOO!}(1!}miPavoADCW=`1efe z#;>dB&CC1^hxnA@eP+6JgFkmZR&sAVc-{{77}J*W9Vk#$-OPhsiO*d+wC^AseD=q` z4r_7K4fDsX%1@gp3a@Lbo)2%{so*zP71$qxY7U5u`GI+WBU__SkssvZQm3?w22C+V z8~Yj?v_guY$S!qw#tG2S*8@g>OJq;5f7ci7p2K-DY0gty%kl?qo$Dnw?E%eAp!vEcU28*NdLX`c7ihn>y!{U~~X`F!U3!`HD*YQgB+x9m$qO z^uC?;3->*x3PZ8mTIb4RWu7&i&t@M_WY&cRPv*^DX24YRu>X)tz}LMB;IH|;O`snT z%8TcF&RXo(f0x+k66s0X$5E8&=vbaAhuy~&18;8rVu@BLcBNu1jiv}YT?_>hj6pZp zOSYF{2s%k+*UEO~;B9Gu_ePrt+baxKX;>UmR*`F*c*4eJoYQ!Id!_9l;{w|HwIP2C zKyvDlN<}G)z3$#)#CPs`bh~wzh5GW{?ln(S1N#!F}#H8Y$e? zEGa?1mC-8&;A0b!t7ls2=||jHVuxjGeVB_28?8vz_ty?VQ)6YwqvLlE(w)1mTv8C7 zvB*g4f$6LIhtnVti-Pk@5{wuMTM{N*-7>2j_<#96clZ#qO~c!Ivm7W9>Y zU8X$(HmH;10`*jUGliioatGRm6ZcZu%e{uLioG_6Jbl%__e&YYhM3F`K4$aB{oq-qVqLW`J_Y0%I|7PFd|%hn^i(42q>*aJj{j#^|Z`Pj1Y zK(J3^XRjW^#EIY@1m?!zA0h7d+9dp>unjvpT{1{~o7x;|2!1XEOlzTb59$Dtm z|B{Z(-oA}3-{hU6VbTWMwksBRf zY*W4qG^cI>elrN_G}d)i3)n*=Ki1c2y6E0XbyVc{&4uZPol1d!^oa)35y;IKq$y!! zI)~!fuY=`Np!acq8$Shqv2?d;9|vQl5+*N+Lo5E7`DZr;syo12Pam-fw>+hK1#+VJY8}9TErfZ#D5}hx7PaV0Dd9J6mGw-1!&}o65Np;)VmvAs9z#;Uk zL;qBpE#xX72I_$NJ+Qx7qO)?me-UVwg;_=N0nPJPuepI6I)il<+MXqiD~kptGKHgM zaok|eT1H!7@>IZTMh^$+hV(}RZyf+mP|=torfdTBtUa5k9+(ESA8GNGHob;j$_-2SUZw7ijGaVp&zo8DgJ~8e|5OxOX1vCMd-D`p-zu1KX79W023~d%%9Uz zy$UeW#FyMa6M?=>f`HM=w!Yp)ba^~&;v7V60vZWLnDyk=W(f%g%7OUux@XHi!YbDb zG!)$`GROP*#I>|^>*B?dmn!}8XOu&C>Eep@)c5I=P@I6(g}ziqj7K(JrubtcP2j7g z>J1pnQ6MWN;1LemHE3a9ZIe4(mdkK6xpE3eE|UNE|qk(Dyo~U^qVG& zRKwCrlL;;Tc}2@{mFgX@c_S!v8t@dVa^}Ulb`ixPt2IOdHhg?%JhcN^+19bxH=f}t zwCvT>3}J>fXkNBn84y{_lGU2z)gTH_$@O94A4l~Q>hJcUckCE?F%XDjD*JiW%$aAPKj={O zfL3J%%6f8u9iz@*>nn>jgDyjmjfrJgw-G!#%G zUQ63hT1RcJ`m3~rFKwk0dqu#Y3AfZ@9_p}zRdPDVUsBmA>F$$WiJquyQN0q^0ErfQ z5rY5V`CTis^ecc*L2rh)z;UV&cq1cIO6x`OqwCE?p-O{L1)m(i7%8t+*R}Z`?%WS8 zn?>(Pa10c#qUHvGNSmz)dc&5j;$?@U$ixTE73P&`%t=1!64L?4j6spMM0g#0#7=ZF z+X`qW6vwMQ8A>Mf87p&a?}pjtDLrCt|E0QQA3GH%R^s$ygRd0dk5sn6e@D39CGq|Q zyttn^d2%*vVvcEh#S* za7$rM%h)TiQ8#e%5Wt4{XM-(D5V7U4RkPnjT7^kGUo? z$3?+jjpKsxYED^PRlO^x&NVD`&S%BXhz=+MDfq*wt4}waHrMh0VW`=xcFO`h^^Hy{K+mo`Nfw`^Y4a+OK>7Nz10y{2TGvpl|OCn$CZZ3U2e=#4XiFd z{_L$<;i3}y)N|cC#mv$ z^l6(by@qaH{UF;q<{%H6fb(5#?)#>Fg%nl(P<-(ls!2$Bs6jhy3*R;|1w2Q1&PgPUpF}>?4&bq z#wz@1H-*cA;?@eq?wj){{->JtvmtdOv3!KMjUnhvOzn}>8qA7sqZbm%DDP=EV6|G| z0Z;Umg@j}R=HH9zcZsh6oBf_ug{A@Ea5Mow7Im{VplbCuVJ_eDrN1jf3gKl*`qN0b zVo*|idtEo7f$p5B8+i3`QJ8HC_2&Guw{FKbd@u|_ojPm69D8aU6(=T} z@&u7Uz^6bzpnIq2ng9eJu{dJjgL7j$Y49cV%pzS(*xcS3YoB( z2wCS|7L0GeT-6y#4RUu4=a) zVeCR({;{W~fzDY|S zhGoa+;=8S=yGvrXxX!!l=htR6ausQ#iH(Ju>ua{XkqV>P{M#t*H^N{(e4Dku!-E*{ zp_{8rX^>DNv5J@Ayfs)8prfyHaxE&D}$u zb{OXG_}5oVj=GP-rQ-j6zTvo_#Uh|mu?MmtNZz$atvl1}9w}DSnEAuvWaEyj{s#^4 znBB8-FZo|(Z^D4T#r4ebXcaR5KGOnfmm1V28@}cU+0fZl`vI-D{mM*Cx~+dDD?GtE z%oeIJv-(ZqZGC-Xr_CihT==ESJk%=}d)uYsA9}I@*o~!!#AKoYZQbgQ=+01>86S@|jfXS_4Ru$<^12elTV>Wn=2qqI*?~ig$wOk2ciQNEnPe~O z`qN!r+^Y-Enqh@nuv@iLLC!rVNu2J6$&3-gUX5F$E12b3xn|tR@rVy|X#}z@ggKt3 z`+MC2$4jpO+gvlLrsGM?lwNzj!9mq7Esa(V+dtkfV2)E)XA}t+Rwz(K8zZ4ht$&R( z|FBUHrbfu*jdY0MF>4B*+DlKJLukC8j+_f zieV>fZr=51clFXuh!6k9pmtzw)g)vwC1}a)nHFy0A(yF>o*~98->xbNUW^tFiZ9{M zEIm!da5(j%;V_Q9g0tlZer$^5BZ+sUp$^_O?^XIC!`YKem5$CZPJ*E`L?9|>sFqs{b?9)xY9>7j9SXN6Tk znam<(6p39?;p_TSho=a_EJg9~Q1{6dN}h9mqd82=e>P~Sw-BK{D@GgauVVGl1@B}@ zQ>XY9xNEVB6~l@Gzi%5X`N4b#Ev;MEc$vK5-HJ|e{y0`+$TXty!RGcoJuSH*J_G;v zslYs+n*71hE=uzqxH(=MxeA m8!TuHL<}j_Ua$7vbev6^^Q|JgH2O< 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 N=N;t5x)k-pe*sL9I)eZJ literal 0 HcmV?d00001 diff --git a/images/hexadecimal_color_exercise.png b/images/hexadecimal_color_exercise.png new file mode 100644 index 0000000000000000000000000000000000000000..9093805d8b5bf470a5d0cf8cab35954495e9b75b GIT binary patch literal 18938 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%0Ar}i)`eLW6 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 AM*si- literal 110989 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 a-i?NRy{lzU)z2RQ&*_lJFI!K>U;j6Ie;VNc From 65ba52d6c60eb2bd6971e6f0ed4d59a22d115d53 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sun, 4 Oct 2020 02:14:55 +0300 Subject: [PATCH 10/11] Day_4 --- 04_Day_Component/04_components.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/04_Day_Component/04_components.md b/04_Day_Component/04_components.md index 6209460..4c138a1 100644 --- a/04_Day_Component/04_components.md +++ b/04_Day_Component/04_components.md @@ -489,7 +489,9 @@ ReactDOM.render(, rootElement) 3. Use functional component to create the following design -![News Letter](../images/news_letter_design.png) 4. Use the give hexadecimal color generator in the example to create these random colors +![News Letter](../images/news_letter_design.png) + + 4. Use the given hexadecimal color generator in the example to create these random colors ![Hexadecimal colors](../images/hexadecimal_color_exercise.png) From 8412c51b891327335a193f0c87201d071b2360e6 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sun, 4 Oct 2020 02:18:26 +0300 Subject: [PATCH 11/11] Day_4 --- 03_Day_Setting_Up/03_day_setting_up.md | 2 +- readMe.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/03_Day_Setting_Up/03_day_setting_up.md b/03_Day_Setting_Up/03_day_setting_up.md index f0ed728..d65a0ac 100644 --- a/03_Day_Setting_Up/03_day_setting_up.md +++ b/03_Day_Setting_Up/03_day_setting_up.md @@ -15,7 +15,7 @@
    -[<< Day 2](../02_Day_Introduction_to_React/02_introduction_to_react.md) | [Day 4 >>]() +[<< Day 2](../02_Day_Introduction_to_React/02_introduction_to_react.md) | [Day 4 >>](./04_Day_Component/04_components.m) ![30 Days of React banner](../images/30_days_of_react_banner_day_3.jpg) diff --git a/readMe.md b/readMe.md index a07c798..c0df21a 100644 --- a/readMe.md +++ b/readMe.md @@ -26,6 +26,7 @@ | 01 | [JavaScript Refresher](./01_Day_JavaScript_Refresher/01_javascript_refresher.md) | | 02 | [Getting Started React](./02_Day_Introduction_to_React/02_introduction_to_react.md) | | 03 | [Setting Up](./03_Day_Setting_Up/03_day_setting_up.md) | +| 04 | [Components](./04_Day_Component/04_components.md) | 🧑🧑🧑 HAPPY CODING 🧑🧑🧑
    Support [**Asabeneh**](https://www.patreon.com/asabeneh?fan_landing=true) to create more educational materials