├── .github └── FUNDING.yml ├── example ├── components │ ├── picture.module.css │ ├── css-blurhash.module.css │ ├── css-blurhash.tsx │ └── picture.tsx ├── next-env.d.ts ├── .gitignore ├── package.json ├── tsconfig.json ├── pages │ └── index.tsx ├── fake-data │ └── unsplash.ts └── yarn.lock ├── .gitignore ├── jest.config.js ├── tsconfig.json ├── Cargo.toml ├── index.ts ├── DEPENDENCIES.md ├── package.json ├── CHANGELOG.md ├── README.md ├── Cargo.lock ├── index.spec.ts └── src └── lib.rs /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: JamieMason 2 | -------------------------------------------------------------------------------- /example/components/picture.module.css: -------------------------------------------------------------------------------- 1 | .img { 2 | height: auto; 3 | width: 100%; 4 | } 5 | -------------------------------------------------------------------------------- /example/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.log 3 | *.log.* 4 | *.tgz 5 | index.d.ts 6 | index.js 7 | node_modules 8 | pkg 9 | target 10 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | clearMocks: true, 3 | moduleFileExtensions: ['ts', 'js'], 4 | testEnvironment: 'node', 5 | testMatch: ['/*.spec.(ts|js)'], 6 | transform: { '^.+\\.ts$': 'ts-jest' }, 7 | }; 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "declaration": true, 4 | "esModuleInterop": true, 5 | "forceConsistentCasingInFileNames": true, 6 | "module": "commonjs", 7 | "skipLibCheck": true, 8 | "strict": true, 9 | "target": "ES2019" 10 | }, 11 | "exclude": ["example", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /example/components/css-blurhash.module.css: -------------------------------------------------------------------------------- 1 | .root { 2 | overflow: hidden; 3 | position: relative; 4 | } 5 | .blurhash { 6 | position: absolute; 7 | width: 100%; 8 | height: 100%; 9 | top: 0; 10 | right: 0; 11 | bottom: 0; 12 | left: 0; 13 | z-index: 1; 14 | } 15 | .picture { 16 | position: relative; 17 | z-index: 2; 18 | } 19 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blurhash-to-css" 3 | version = "0.1.0" 4 | authors = ["Jamie Mason "] 5 | edition = "2021" 6 | 7 | [lib] 8 | crate-type = ["cdylib"] 9 | 10 | [dependencies.web-sys] 11 | version = "0.3" 12 | features = [ 13 | "console", 14 | ] 15 | 16 | [dependencies] 17 | blurhash = "0.1.1" 18 | console_error_panic_hook = "0.1.6" 19 | gloo-utils = { version = "0.1", features = ["serde"] } 20 | serde = { version = "1.0.123", features = ["derive"] } 21 | serde_json = "1.0.62" 22 | wasm-bindgen = "0.2.83" 23 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blurhash-to-css-nextjs-example", 3 | "version": "1.0.0", 4 | "dependencies": { 5 | "blurhash-to-css": "0.4.3", 6 | "next": "latest", 7 | "react": "17.0.1", 8 | "react-dom": "17.0.1" 9 | }, 10 | "devDependencies": { 11 | "@types/node": "14.14.25", 12 | "@types/react": "17.0.1", 13 | "@types/react-dom": "17.0.0", 14 | "typescript": "4.1" 15 | }, 16 | "license": "MIT", 17 | "private": "true", 18 | "scripts": { 19 | "build": "next build", 20 | "dev": "next", 21 | "start": "next start", 22 | "type-check": "tsc" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "alwaysStrict": true, 5 | "esModuleInterop": true, 6 | "forceConsistentCasingInFileNames": true, 7 | "isolatedModules": true, 8 | "jsx": "preserve", 9 | "lib": ["dom", "es2017"], 10 | "module": "esnext", 11 | "moduleResolution": "node", 12 | "noEmit": true, 13 | "noFallthroughCasesInSwitch": true, 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "resolveJsonModule": true, 17 | "skipLibCheck": true, 18 | "strict": true, 19 | "target": "esnext" 20 | }, 21 | "exclude": ["node_modules"], 22 | "include": ["**/*.ts", "**/*.tsx"] 23 | } 24 | -------------------------------------------------------------------------------- /example/components/css-blurhash.tsx: -------------------------------------------------------------------------------- 1 | import type { Photo } from '../fake-data/unsplash'; 2 | import css from './css-blurhash.module.css'; 3 | import { Picture, Props as PictureProps } from './picture'; 4 | 5 | export interface Props { 6 | loading: PictureProps['loading']; 7 | photo: Photo; 8 | } 9 | 10 | export const CssBlurhash: React.FC = ({ loading, photo }) => ( 11 |
12 |
13 | 24 |
25 | ); 26 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import { blurhash_to_css, blurhashes_to_css } from './pkg/blurhash_to_css'; 2 | 3 | export interface BlurhashCss { 4 | backgroundImage: string; 5 | backgroundPosition: string; 6 | backgroundSize: string; 7 | backgroundRepeat: string; 8 | filter: string; 9 | transform: string; 10 | } 11 | 12 | export interface Options { 13 | width: number; 14 | height: number; 15 | } 16 | 17 | export type BlurhashToCss = { 18 | (blurhash: string, options?: Options): BlurhashCss; 19 | (blurhashes: string[], options?: Options): BlurhashCss[]; 20 | }; 21 | 22 | export const blurhashToCss: BlurhashToCss = (blurhash, options) => { 23 | const height = options?.height || 10; 24 | const width = options?.width || 10; 25 | const json = Array.isArray(blurhash) 26 | ? blurhashes_to_css(blurhash, width, height) 27 | : blurhash_to_css(blurhash, width, height); 28 | return JSON.parse(json); 29 | }; 30 | -------------------------------------------------------------------------------- /DEPENDENCIES.md: -------------------------------------------------------------------------------- 1 | # blurhash-to-css 2 | 3 | Convert blurhash strings to CSS objects 4 | 5 | ## Installation 6 | 7 | This is a [Node.js](https://nodejs.org/) module available through the 8 | [npm registry](https://www.npmjs.com/). It can be installed using the 9 | [`npm`](https://docs.npmjs.com/getting-started/installing-npm-packages-locally) 10 | or [`yarn`](https://yarnpkg.com/en/) command line tools. 11 | 12 | ```sh 13 | npm install blurhash-to-css --save 14 | ``` 15 | 16 | ## Tests 17 | 18 | ```sh 19 | npm install 20 | npm test 21 | ``` 22 | 23 | ## Dependencies 24 | 25 | None 26 | 27 | ## Dev Dependencies 28 | 29 | - [@types/jest](https://ghub.io/@types/jest): TypeScript definitions for Jest 30 | - [jest](https://ghub.io/jest): Delightful JavaScript Testing. 31 | - [ts-jest](https://ghub.io/ts-jest): A Jest transformer with source map support 32 | that lets you use Jest to test projects written in TypeScript 33 | - [typescript](https://ghub.io/typescript): TypeScript is a language for 34 | application scale JavaScript development 35 | - [wasm-pack](https://ghub.io/wasm-pack): 📦✨ your favorite rust -> wasm 36 | workflow tool! 37 | 38 | ## License 39 | 40 | MIT 41 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blurhash-to-css", 3 | "description": "Convert blurhash strings to CSS objects", 4 | "version": "0.5.5", 5 | "author": "Jamie Mason (https://github.com/JamieMason)", 6 | "bugs": "https://github.com/JamieMason/blurhash-to-css/issues", 7 | "devDependencies": { 8 | "@types/jest": "29.2.2", 9 | "jest": "29.3.1", 10 | "ts-jest": "29.0.3", 11 | "typescript": "4.8.4", 12 | "wasm-pack": "0.10.3" 13 | }, 14 | "engines": { 15 | "node": ">=10" 16 | }, 17 | "files": [ 18 | "index.d.ts", 19 | "index.js", 20 | "pkg/**" 21 | ], 22 | "keywords": [ 23 | "blur", 24 | "blurhash", 25 | "hash", 26 | "image", 27 | "image loading", 28 | "image placeholder", 29 | "largest contentful paint", 30 | "perfmatters", 31 | "performance", 32 | "placeholder", 33 | "rust", 34 | "wasm", 35 | "web vitals", 36 | "webassembly", 37 | "webperf" 38 | ], 39 | "license": "MIT", 40 | "main": "index.js", 41 | "repository": "JamieMason/blurhash-to-css", 42 | "scripts": { 43 | "build": "npm run build:wasm && npm run build:ts", 44 | "build:ts": "rm -rf ./dist && tsc --project .", 45 | "build:wasm": "rm -rf ./pkg && wasm-pack build --release --target nodejs", 46 | "prepack": "npm run build", 47 | "test": "npm run test:wasm && npm run test:ts", 48 | "test:ts": "jest", 49 | "test:wasm": "cargo test" 50 | }, 51 | "types": "index.d.ts" 52 | } 53 | -------------------------------------------------------------------------------- /example/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { blurhashToCss } from 'blurhash-to-css'; 2 | import { CssBlurhash } from '../components/css-blurhash'; 3 | import type { Photo } from '../fake-data/unsplash'; 4 | import { photos } from '../fake-data/unsplash'; 5 | 6 | export interface Props { 7 | photos: Photo[]; 8 | } 9 | 10 | export const getStaticProps = async () => { 11 | return { 12 | props: { 13 | photos: photos.map((photo) => ({ 14 | ...photo, 15 | style: blurhashToCss(photo.blur_hash), 16 | })), 17 | }, 18 | }; 19 | }; 20 | 21 | const IndexPage = ({ photos }: Props) => ( 22 |
23 |

24 | blurhash-to-css usage example 25 |

26 |

27 | Here we are using getStaticProps from Next.js{' '} 28 | to fetch images from unsplash.com, convert their{' '} 29 | BlurHash placeholders to CSS Gradients and display those 30 | behind each image. 31 |

32 |

33 | Throttle the Network in DevTools{' '} 34 | to slow down image loading and see the placeholders more easily. 35 |

36 |

37 | Find out more at GitHub or ask me 38 | on Twitter at @fold_left. 39 |

40 | {photos.map((photo, i) => ( 41 | 42 | ))} 43 |
44 | ); 45 | 46 | export default IndexPage; 47 | -------------------------------------------------------------------------------- /example/components/picture.tsx: -------------------------------------------------------------------------------- 1 | import Head from 'next/head'; 2 | import React from 'react'; 3 | import css from './picture.module.css'; 4 | 5 | const sizeMappings: Record = { 6 | sm: 640, 7 | md: 768, 8 | lg: 1024, 9 | xl: 1280, 10 | }; 11 | 12 | const getBreakpoint = function (breakpoint: string): number { 13 | return sizeMappings[breakpoint]; 14 | }; 15 | 16 | export interface Props { 17 | className?: string; 18 | src: string; 19 | sm?: string; 20 | md?: string; 21 | lg?: string; 22 | xl?: string; 23 | width: number; 24 | height: number; 25 | alt?: string; 26 | loading?: 'lazy' | 'eager'; 27 | } 28 | 29 | export const Picture: React.FC = ({ 30 | className, 31 | src, 32 | sm, 33 | md, 34 | lg, 35 | xl, 36 | width, 37 | height, 38 | alt = '', 39 | loading = 'lazy', 40 | }) => { 41 | const images = [ 42 | { bp: 'xl', path: xl }, 43 | { bp: 'lg', path: lg }, 44 | { bp: 'md', path: md }, 45 | { bp: 'sm', path: sm }, 46 | ]; 47 | const filteredImages = images.filter(({ path }) => path); 48 | 49 | return ( 50 | <> 51 | {loading !== 'lazy' ? ( 52 | 53 | {filteredImages.map(({ bp, path }, k) => ( 54 | 61 | ))} 62 | 63 | ) : null} 64 | 65 | {filteredImages.map(({ bp, path }, k) => ( 66 | 67 | ))} 68 | {alt} 76 | 77 | 78 | ); 79 | }; 80 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [0.5.5](https://github.com/JamieMason/blurhash-to-css/compare/0.4.3...0.5.5) (2022-11-12) 2 | 3 | ### Bug Fixes 4 | 5 | - **cargo:** update dependencies 6 | ([3c6e1d7](https://github.com/JamieMason/blurhash-to-css/commit/3c6e1d7ee1b293da4659c97f5a69730e0ba931be)) 7 | - **npm:** update dependencies 8 | ([e43dec9](https://github.com/JamieMason/blurhash-to-css/commit/e43dec97bd4b5756a9cd8919c4f6ebcad9182e48)) 9 | 10 | ### Features 11 | 12 | - **blurhash:** accept arrays of blurhashes 13 | ([3afacfc](https://github.com/JamieMason/blurhash-to-css/commit/3afacfcc75e24461f9ba9ccbfeb61287eb550662)) 14 | 15 | ## [0.4.3](https://github.com/JamieMason/blurhash-to-css/compare/0.3.3...0.4.3) (2021-02-08) 16 | 17 | ### Features 18 | 19 | - **perf:** remove unneeded image buffer 20 | ([c3aadc9](https://github.com/JamieMason/blurhash-to-css/commit/c3aadc909ce15ff1260252c17c9a4e598598783a)) 21 | 22 | ## [0.3.3](https://github.com/JamieMason/blurhash-to-css/compare/0.3.2...0.3.3) (2021-02-07) 23 | 24 | ### Bug Fixes 25 | 26 | - **options:** make width and height optional 27 | ([0dbe68d](https://github.com/JamieMason/blurhash-to-css/commit/0dbe68d7363fdb84b6f60a3e02e562a782b6b65a)) 28 | 29 | ## [0.3.2](https://github.com/JamieMason/blurhash-to-css/compare/0.3.1...0.3.2) (2021-02-07) 30 | 31 | ### Bug Fixes 32 | 33 | - **node:** revert bundling and inlining source 34 | ([5f182ea](https://github.com/JamieMason/blurhash-to-css/commit/5f182ead880ddd57bed3416abaaca7a82726bf9e)) 35 | 36 | ## [0.3.1](https://github.com/JamieMason/blurhash-to-css/compare/0.2.1...0.3.1) (2021-02-07) 37 | 38 | ### Features 39 | 40 | - **node:** bundle source and inline wasm 41 | ([a3d9cfc](https://github.com/JamieMason/blurhash-to-css/commit/a3d9cfca12dd2d59ffc5b34ffdd54cb719a6c7f0)) 42 | 43 | ## [0.2.1](https://github.com/JamieMason/blurhash-to-css/compare/0.1.0...0.2.1) (2021-02-06) 44 | 45 | ### Bug Fixes 46 | 47 | - **types:** add filter and transform properties 48 | ([a475c8f](https://github.com/JamieMason/blurhash-to-css/commit/a475c8f9d1d4eb50e951321bb576295e72cde05e)) 49 | 50 | ### Features 51 | 52 | - **blurhash:** port to rust and webassembly 53 | ([d469b24](https://github.com/JamieMason/blurhash-to-css/commit/d469b24c10ed6d2ba20b06c9fb23c6e8acf2e2a3)) 54 | 55 | # [0.1.0](https://github.com/JamieMason/blurhash-to-css/compare/7b345388a47f0b3cddd3c31e8ff9ae21f74cd16e...0.1.0) (2021-02-04) 56 | 57 | ### Features 58 | 59 | - **blurhash:** convert blurhash to css 60 | ([7b34538](https://github.com/JamieMason/blurhash-to-css/commit/7b345388a47f0b3cddd3c31e8ff9ae21f74cd16e)) 61 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # blurhash-to-css 2 | 3 | > Converts a [BlurHash](https://blurha.sh) to a [CSS Object](https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style) using [TypeScript](https://www.typescriptlang.org/), [Rust](https://www.rust-lang.org/), and [WebAssembly](https://github.com/rustwasm/wasm-pack). 4 | 5 | [![NPM version](http://img.shields.io/npm/v/blurhash-to-css.svg?style=flat-square)](https://www.npmjs.com/package/blurhash-to-css) [![NPM downloads](http://img.shields.io/npm/dm/blurhash-to-css.svg?style=flat-square)](https://www.npmjs.com/package/blurhash-to-css) [![Follow JamieMason on GitHub](https://img.shields.io/github/followers/JamieMason.svg?style=social&label=Follow)](https://github.com/JamieMason) [![Follow fold_left on Twitter](https://img.shields.io/twitter/follow/fold_left.svg?style=social&label=Follow)](https://twitter.com/fold_left) 6 | 7 | ## 🌩 Installation 8 | 9 | ``` 10 | npm install blurhash-to-css 11 | ``` 12 | 13 | ## 📣 Summary 14 | 15 | [BlurHash](https://blurha.sh) is a compact representation of a placeholder for an image, which makes it a great option to [improve perceived load times](https://blog.imgix.com/2021/01/26/blurhash). But, a BlurHash is rendered using a `` element, which means client-side JavaScript is needed on the critical path when loading our application. 16 | 17 | This tool creates the same visual effect using CSS, which can be rendered on the Server without any dependency on client-side JavaScript. 18 | 19 | An example can be seen at https://blurhash-to-css.vercel.app and the source is in this repo at [`/example`](https://github.com/JamieMason/blurhash-to-css/tree/main/example). 20 | 21 | ## 🤝 Credit 22 | 23 | - The image buffer to CSS conversion is a port to Rust of [this Script](https://github.com/joe-bell/plaiceholder/blob/d09df807df5d11c5d91a7971c2f90e2faa845843/packages/css/src/index.ts#L18-L51) originally by [**@joe-bell**](https://github.com/joe-bell) for [plaiceholder: Beautiful image placeholders, without the hassle](https://plaiceholder.co/). 24 | - A lot of help came from the source code in [wasm-image](https://github.com/peerigon/wasm-image) by [**@acidicX**](https://github.com/acidicX). 25 | 26 | ## 🕹 Usage 27 | 28 | ```ts 29 | import { blurhashToCss } from 'blurhash-to-css'; 30 | 31 | const css = blurhashToCss('eCF6B#-:0JInxr?@s;nmIoWUIko1%NocRk.8xbIUaxR*^+s;RiWAWU'); 32 | ``` 33 | 34 | ↓↓↓↓↓ 35 | 36 | ```json 37 | { 38 | "backgroundImage": "linear-gradient(90deg, rgb(139,153,96) 10%,rgb(153,160,118) 10% 20%,rgb(170,172,142) 20% 30%,rgb(177,180,151) 30% 40%,rgb(174,180,146) 40% 50%,rgb(162,172,130) 50% 60%,rgb(148,162,114) 60% 70%,rgb(136,150,104) 70% 80%,rgb(131,145,95) 80% 90%,rgb(130,144,91) 90% 100%),linear-gradient(90deg, rgb(109,129,65) 10%,rgb(117,131,80) 10% 20%,rgb(130,138,101) 20% 30%,rgb(142,148,113) 30% 40%,rgb(146,150,114) 40% 50%,rgb(136,144,103) 50% 60%,rgb(116,130,88) 60% 70%,rgb(102,119,75) 70% 80%,rgb(104,118,71) 80% 90%,rgb(112,123,72) 90% 100%),linear-gradient(90deg, rgb(110,122,70) 10%,rgb(114,122,85) 10% 20%,rgb(126,129,106) 20% 30%,rgb(143,140,122) 30% 40%,rgb(151,147,128) 40% 50%,rgb(144,142,122) 50% 60%,rgb(123,126,107) 60% 70%,rgb(106,111,90) 70% 80%,rgb(108,109,83) 80% 90%,rgb(118,117,83) 90% 100%),linear-gradient(90deg, rgb(134,133,102) 10%,rgb(141,138,120) 10% 20%,rgb(155,150,144) 20% 30%,rgb(172,164,161) 30% 40%,rgb(179,173,168) 40% 50%,rgb(173,168,162) 50% 60%,rgb(156,151,146) 60% 70%,rgb(137,132,127) 70% 80%,rgb(127,124,110) 80% 90%,rgb(128,124,101) 90% 100%),linear-gradient(90deg, rgb(116,124,95) 10%,rgb(125,129,112) 10% 20%,rgb(143,141,135) 20% 30%,rgb(160,156,153) 30% 40%,rgb(169,164,160) 40% 50%,rgb(165,161,155) 50% 60%,rgb(148,145,141) 60% 70%,rgb(124,125,118) 70% 80%,rgb(107,110,97) 80% 90%,rgb(99,106,82) 90% 100%),linear-gradient(90deg, rgb(95,105,51) 10%,rgb(99,105,66) 10% 20%,rgb(110,111,88) 20% 30%,rgb(125,122,107) 30% 40%,rgb(136,131,115) 40% 50%,rgb(134,129,111) 50% 60%,rgb(120,116,98) 60% 70%,rgb(97,97,77) 70% 80%,rgb(78,84,51) 80% 90%,rgb(70,78,30) 90% 100%),linear-gradient(90deg, rgb(109,106,21) 10%,rgb(109,104,44) 10% 20%,rgb(112,104,67) 20% 30%,rgb(122,109,83) 30% 40%,rgb(131,114,88) 40% 50%,rgb(130,112,83) 50% 60%,rgb(119,103,70) 60% 70%,rgb(104,91,51) 70% 80%,rgb(93,84,34) 80% 90%,rgb(92,84,24) 90% 100%)", 39 | "backgroundPosition": "0 0 ,0 16.666666666666664%,0 33.33333333333333%,0 50%,0 66.66666666666666%,0 83.33333333333334%,0 100%", 40 | "backgroundSize": "100% 14.285714285714286%", 41 | "backgroundRepeat": "no-repeat", 42 | "filter": "blur(24px)", 43 | "transform": "scale(1.2)" 44 | } 45 | ``` 46 | 47 | To use this a CommonJS project, you should destructure it like so: 48 | 49 | ```ts 50 | const { blurhashToCss } = require('blurhash-to-css'); 51 | ``` 52 | 53 | ## 🛠 Options 54 | 55 | ### `blurhash` (required) 56 | 57 | A small string (or array of strings) generated to represent a blurry version of an image which will download sometime soon. Have a play around on [BlurHash](https://blurha.sh), [plaiceholder.co](https://plaiceholder.co/), and have a read of [BlurHash for imgix: An Alternative to Generic Image Placeholders](https://blog.imgix.com/2021/01/26/blurhash) to try them out and find out more. 58 | 59 | ### `width` and `height` (optional) 60 | 61 | The BlurHash is decoded into a 10 x 10 image by default, you can make this larger and it will look more like the final image, but it will also generate a lot more CSS. 62 | 63 | ```ts 64 | const css = blurhashToCss('LEHLh[WB2yk8pyoJadR*.7kCMdnj', { 65 | height: 30, 66 | width: 30, 67 | }); 68 | ``` 69 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "blurhash" 7 | version = "0.1.1" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "8671e4c8bf59f8784aa27fe4c8e152f2a45dfeb91a52d114e5d104a451494bb4" 10 | 11 | [[package]] 12 | name = "blurhash-to-css" 13 | version = "0.1.0" 14 | dependencies = [ 15 | "blurhash", 16 | "console_error_panic_hook", 17 | "gloo-utils", 18 | "serde", 19 | "serde_json", 20 | "wasm-bindgen", 21 | "web-sys", 22 | ] 23 | 24 | [[package]] 25 | name = "bumpalo" 26 | version = "3.11.1" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" 29 | 30 | [[package]] 31 | name = "cfg-if" 32 | version = "1.0.0" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 35 | 36 | [[package]] 37 | name = "console_error_panic_hook" 38 | version = "0.1.7" 39 | source = "registry+https://github.com/rust-lang/crates.io-index" 40 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 41 | dependencies = [ 42 | "cfg-if", 43 | "wasm-bindgen", 44 | ] 45 | 46 | [[package]] 47 | name = "gloo-utils" 48 | version = "0.1.5" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "40913a05c8297adca04392f707b1e73b12ba7b8eab7244a4961580b1fd34063c" 51 | dependencies = [ 52 | "js-sys", 53 | "serde", 54 | "serde_json", 55 | "wasm-bindgen", 56 | "web-sys", 57 | ] 58 | 59 | [[package]] 60 | name = "itoa" 61 | version = "1.0.4" 62 | source = "registry+https://github.com/rust-lang/crates.io-index" 63 | checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" 64 | 65 | [[package]] 66 | name = "js-sys" 67 | version = "0.3.60" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" 70 | dependencies = [ 71 | "wasm-bindgen", 72 | ] 73 | 74 | [[package]] 75 | name = "log" 76 | version = "0.4.17" 77 | source = "registry+https://github.com/rust-lang/crates.io-index" 78 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 79 | dependencies = [ 80 | "cfg-if", 81 | ] 82 | 83 | [[package]] 84 | name = "once_cell" 85 | version = "1.16.0" 86 | source = "registry+https://github.com/rust-lang/crates.io-index" 87 | checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" 88 | 89 | [[package]] 90 | name = "proc-macro2" 91 | version = "1.0.47" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" 94 | dependencies = [ 95 | "unicode-ident", 96 | ] 97 | 98 | [[package]] 99 | name = "quote" 100 | version = "1.0.21" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" 103 | dependencies = [ 104 | "proc-macro2", 105 | ] 106 | 107 | [[package]] 108 | name = "ryu" 109 | version = "1.0.11" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" 112 | 113 | [[package]] 114 | name = "serde" 115 | version = "1.0.147" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" 118 | dependencies = [ 119 | "serde_derive", 120 | ] 121 | 122 | [[package]] 123 | name = "serde_derive" 124 | version = "1.0.147" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" 127 | dependencies = [ 128 | "proc-macro2", 129 | "quote", 130 | "syn", 131 | ] 132 | 133 | [[package]] 134 | name = "serde_json" 135 | version = "1.0.87" 136 | source = "registry+https://github.com/rust-lang/crates.io-index" 137 | checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" 138 | dependencies = [ 139 | "itoa", 140 | "ryu", 141 | "serde", 142 | ] 143 | 144 | [[package]] 145 | name = "syn" 146 | version = "1.0.103" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" 149 | dependencies = [ 150 | "proc-macro2", 151 | "quote", 152 | "unicode-ident", 153 | ] 154 | 155 | [[package]] 156 | name = "unicode-ident" 157 | version = "1.0.5" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" 160 | 161 | [[package]] 162 | name = "wasm-bindgen" 163 | version = "0.2.83" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" 166 | dependencies = [ 167 | "cfg-if", 168 | "wasm-bindgen-macro", 169 | ] 170 | 171 | [[package]] 172 | name = "wasm-bindgen-backend" 173 | version = "0.2.83" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" 176 | dependencies = [ 177 | "bumpalo", 178 | "log", 179 | "once_cell", 180 | "proc-macro2", 181 | "quote", 182 | "syn", 183 | "wasm-bindgen-shared", 184 | ] 185 | 186 | [[package]] 187 | name = "wasm-bindgen-macro" 188 | version = "0.2.83" 189 | source = "registry+https://github.com/rust-lang/crates.io-index" 190 | checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" 191 | dependencies = [ 192 | "quote", 193 | "wasm-bindgen-macro-support", 194 | ] 195 | 196 | [[package]] 197 | name = "wasm-bindgen-macro-support" 198 | version = "0.2.83" 199 | source = "registry+https://github.com/rust-lang/crates.io-index" 200 | checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" 201 | dependencies = [ 202 | "proc-macro2", 203 | "quote", 204 | "syn", 205 | "wasm-bindgen-backend", 206 | "wasm-bindgen-shared", 207 | ] 208 | 209 | [[package]] 210 | name = "wasm-bindgen-shared" 211 | version = "0.2.83" 212 | source = "registry+https://github.com/rust-lang/crates.io-index" 213 | checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" 214 | 215 | [[package]] 216 | name = "web-sys" 217 | version = "0.3.60" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" 220 | dependencies = [ 221 | "js-sys", 222 | "wasm-bindgen", 223 | ] 224 | -------------------------------------------------------------------------------- /index.spec.ts: -------------------------------------------------------------------------------- 1 | /** More tests can be found in src/lib.rs */ 2 | import { blurhashToCss, blurhashesToCss } from '.'; 3 | 4 | it('converts a blurhash into a CSS object', () => { 5 | expect(blurhashToCss('LEHLh[WB2yk8pyoJadR*.7kCMdnj')).toEqual({ 6 | backgroundImage: [ 7 | 'linear-gradient(90deg,rgb(134,164,177) 10%,rgb(140,165,177) 10% 20%,rgb(153,170,177) 20% 30%,rgb(168,175,176) 30% 40%,rgb(178,179,173) 40% 50%,rgb(181,179,171) 50% 60%,rgb(176,177,170) 60% 70%,rgb(166,173,172) 70% 80%,rgb(152,169,176) 80% 90%,rgb(141,166,179) 90% 100%)', 8 | 'linear-gradient(90deg,rgb(133,162,176) 10%,rgb(138,164,176) 10% 20%,rgb(152,168,175) 20% 30%,rgb(166,172,173) 30% 40%,rgb(176,175,170) 40% 50%,rgb(179,176,167) 50% 60%,rgb(174,174,167) 60% 70%,rgb(164,171,170) 70% 80%,rgb(151,167,174) 80% 90%,rgb(140,165,179) 90% 100%)', 9 | 'linear-gradient(90deg,rgb(129,160,174) 10%,rgb(135,160,173) 10% 20%,rgb(148,162,169) 20% 30%,rgb(161,163,165) 30% 40%,rgb(171,164,159) 40% 50%,rgb(173,165,156) 50% 60%,rgb(169,165,157) 60% 70%,rgb(159,163,162) 70% 80%,rgb(147,162,170) 80% 90%,rgb(137,161,176) 90% 100%)', 10 | 'linear-gradient(90deg,rgb(124,156,170) 10%,rgb(130,155,168) 10% 20%,rgb(142,153,162) 20% 30%,rgb(155,151,153) 30% 40%,rgb(164,149,144) 40% 50%,rgb(166,150,140) 50% 60%,rgb(162,151,142) 60% 70%,rgb(153,153,152) 70% 80%,rgb(142,155,163) 80% 90%,rgb(133,156,172) 90% 100%)', 11 | 'linear-gradient(90deg,rgb(121,151,166) 10%,rgb(126,149,163) 10% 20%,rgb(137,144,153) 20% 30%,rgb(149,138,140) 30% 40%,rgb(158,134,127) 40% 50%,rgb(160,134,121) 50% 60%,rgb(156,138,127) 60% 70%,rgb(148,143,140) 70% 80%,rgb(138,148,156) 80% 90%,rgb(129,151,167) 90% 100%)', 12 | 'linear-gradient(90deg,rgb(119,147,161) 10%,rgb(124,144,157) 10% 20%,rgb(135,137,146) 20% 30%,rgb(146,129,129) 30% 40%,rgb(155,124,114) 40% 50%,rgb(158,124,107) 50% 60%,rgb(154,130,114) 60% 70%,rgb(146,136,131) 70% 80%,rgb(136,142,149) 80% 90%,rgb(128,146,162) 90% 100%)', 13 | 'linear-gradient(90deg,rgb(121,144,157) 10%,rgb(125,142,152) 10% 20%,rgb(135,135,141) 20% 30%,rgb(147,128,124) 30% 40%,rgb(156,124,108) 40% 50%,rgb(159,124,101) 50% 60%,rgb(157,129,108) 60% 70%,rgb(149,135,126) 70% 80%,rgb(138,140,143) 80% 90%,rgb(129,143,156) 90% 100%)', 14 | 'linear-gradient(90deg,rgb(125,143,152) 10%,rgb(129,141,149) 10% 20%,rgb(139,137,139) 20% 30%,rgb(151,133,124) 30% 40%,rgb(160,131,111) 40% 50%,rgb(165,133,105) 50% 60%,rgb(163,136,111) 60% 70%,rgb(155,139,125) 70% 80%,rgb(143,141,140) 80% 90%,rgb(131,142,151) 90% 100%)', 15 | 'linear-gradient(90deg,rgb(130,143,149) 10%,rgb(134,142,146) 10% 20%,rgb(144,142,139) 20% 30%,rgb(156,141,128) 30% 40%,rgb(166,142,119) 40% 50%,rgb(172,144,115) 50% 60%,rgb(170,146,118) 60% 70%,rgb(162,146,128) 70% 80%,rgb(148,144,139) 80% 90%,rgb(134,142,148) 90% 100%)', 16 | 'linear-gradient(90deg,rgb(134,143,147) 10%,rgb(138,144,145) 10% 20%,rgb(147,145,139) 20% 30%,rgb(160,148,132) 30% 40%,rgb(171,151,125) 40% 50%,rgb(177,153,122) 50% 60%,rgb(176,153,125) 60% 70%,rgb(167,151,131) 70% 80%,rgb(152,147,139) 80% 90%,rgb(137,143,145) 90% 100%)', 17 | ].join(','), 18 | backgroundPosition: '0 0,0 11%,0 22%,0 33%,0 44%,0 56%,0 67%,0 78%,0 89%,0 100%', 19 | backgroundRepeat: 'no-repeat', 20 | backgroundSize: '100% 10%', 21 | filter: 'blur(24px)', 22 | transform: 'scale(1.2)', 23 | }); 24 | }); 25 | 26 | it('converts an array of blurhashes into an array of CSS objects', () => { 27 | expect(blurhashesToCss(['LEHLh[WB2yk8pyoJadR*.7kCMdnj', 'LGF5?xYk^6#M@-5c,1J5@[or[Q6.'])).toEqual( 28 | [ 29 | { 30 | backgroundImage: [ 31 | 'linear-gradient(90deg,rgb(134,164,177) 10%,rgb(140,165,177) 10% 20%,rgb(153,170,177) 20% 30%,rgb(168,175,176) 30% 40%,rgb(178,179,173) 40% 50%,rgb(181,179,171) 50% 60%,rgb(176,177,170) 60% 70%,rgb(166,173,172) 70% 80%,rgb(152,169,176) 80% 90%,rgb(141,166,179) 90% 100%)', 32 | 'linear-gradient(90deg,rgb(133,162,176) 10%,rgb(138,164,176) 10% 20%,rgb(152,168,175) 20% 30%,rgb(166,172,173) 30% 40%,rgb(176,175,170) 40% 50%,rgb(179,176,167) 50% 60%,rgb(174,174,167) 60% 70%,rgb(164,171,170) 70% 80%,rgb(151,167,174) 80% 90%,rgb(140,165,179) 90% 100%)', 33 | 'linear-gradient(90deg,rgb(129,160,174) 10%,rgb(135,160,173) 10% 20%,rgb(148,162,169) 20% 30%,rgb(161,163,165) 30% 40%,rgb(171,164,159) 40% 50%,rgb(173,165,156) 50% 60%,rgb(169,165,157) 60% 70%,rgb(159,163,162) 70% 80%,rgb(147,162,170) 80% 90%,rgb(137,161,176) 90% 100%)', 34 | 'linear-gradient(90deg,rgb(124,156,170) 10%,rgb(130,155,168) 10% 20%,rgb(142,153,162) 20% 30%,rgb(155,151,153) 30% 40%,rgb(164,149,144) 40% 50%,rgb(166,150,140) 50% 60%,rgb(162,151,142) 60% 70%,rgb(153,153,152) 70% 80%,rgb(142,155,163) 80% 90%,rgb(133,156,172) 90% 100%)', 35 | 'linear-gradient(90deg,rgb(121,151,166) 10%,rgb(126,149,163) 10% 20%,rgb(137,144,153) 20% 30%,rgb(149,138,140) 30% 40%,rgb(158,134,127) 40% 50%,rgb(160,134,121) 50% 60%,rgb(156,138,127) 60% 70%,rgb(148,143,140) 70% 80%,rgb(138,148,156) 80% 90%,rgb(129,151,167) 90% 100%)', 36 | 'linear-gradient(90deg,rgb(119,147,161) 10%,rgb(124,144,157) 10% 20%,rgb(135,137,146) 20% 30%,rgb(146,129,129) 30% 40%,rgb(155,124,114) 40% 50%,rgb(158,124,107) 50% 60%,rgb(154,130,114) 60% 70%,rgb(146,136,131) 70% 80%,rgb(136,142,149) 80% 90%,rgb(128,146,162) 90% 100%)', 37 | 'linear-gradient(90deg,rgb(121,144,157) 10%,rgb(125,142,152) 10% 20%,rgb(135,135,141) 20% 30%,rgb(147,128,124) 30% 40%,rgb(156,124,108) 40% 50%,rgb(159,124,101) 50% 60%,rgb(157,129,108) 60% 70%,rgb(149,135,126) 70% 80%,rgb(138,140,143) 80% 90%,rgb(129,143,156) 90% 100%)', 38 | 'linear-gradient(90deg,rgb(125,143,152) 10%,rgb(129,141,149) 10% 20%,rgb(139,137,139) 20% 30%,rgb(151,133,124) 30% 40%,rgb(160,131,111) 40% 50%,rgb(165,133,105) 50% 60%,rgb(163,136,111) 60% 70%,rgb(155,139,125) 70% 80%,rgb(143,141,140) 80% 90%,rgb(131,142,151) 90% 100%)', 39 | 'linear-gradient(90deg,rgb(130,143,149) 10%,rgb(134,142,146) 10% 20%,rgb(144,142,139) 20% 30%,rgb(156,141,128) 30% 40%,rgb(166,142,119) 40% 50%,rgb(172,144,115) 50% 60%,rgb(170,146,118) 60% 70%,rgb(162,146,128) 70% 80%,rgb(148,144,139) 80% 90%,rgb(134,142,148) 90% 100%)', 40 | 'linear-gradient(90deg,rgb(134,143,147) 10%,rgb(138,144,145) 10% 20%,rgb(147,145,139) 20% 30%,rgb(160,148,132) 30% 40%,rgb(171,151,125) 40% 50%,rgb(177,153,122) 50% 60%,rgb(176,153,125) 60% 70%,rgb(167,151,131) 70% 80%,rgb(152,147,139) 80% 90%,rgb(137,143,145) 90% 100%)', 41 | ].join(','), 42 | backgroundPosition: '0 0,0 11%,0 22%,0 33%,0 44%,0 56%,0 67%,0 78%,0 89%,0 100%', 43 | backgroundRepeat: 'no-repeat', 44 | backgroundSize: '100% 10%', 45 | filter: 'blur(24px)', 46 | transform: 'scale(1.2)', 47 | }, 48 | { 49 | backgroundImage: [ 50 | 'linear-gradient(90deg,rgb(177,117,163) 10%,rgb(176,118,169) 10% 20%,rgb(172,119,180) 20% 30%,rgb(161,117,187) 30% 40%,rgb(140,110,184) 40% 50%,rgb(119,99,169) 50% 60%,rgb(118,87,148) 60% 70%,rgb(148,79,131) 70% 80%,rgb(187,78,125) 80% 90%,rgb(216,81,128) 90% 100%)', 51 | 'linear-gradient(90deg,rgb(173,120,166) 10%,rgb(172,121,172) 10% 20%,rgb(167,122,183) 20% 30%,rgb(155,119,189) 30% 40%,rgb(136,112,183) 40% 50%,rgb(118,101,166) 50% 60%,rgb(121,90,143) 60% 70%,rgb(148,83,127) 70% 80%,rgb(183,83,126) 80% 90%,rgb(209,86,133) 90% 100%)', 52 | 'linear-gradient(90deg,rgb(165,128,172) 10%,rgb(161,128,178) 10% 20%,rgb(152,128,189) 20% 30%,rgb(138,125,193) 30% 40%,rgb(123,118,182) 40% 50%,rgb(117,107,158) 50% 60%,rgb(126,97,129) 60% 70%,rgb(148,92,115) 70% 80%,rgb(172,94,128) 80% 90%,rgb(190,98,147) 90% 100%)', 53 | 'linear-gradient(90deg,rgb(153,138,179) 10%,rgb(146,138,185) 10% 20%,rgb(129,137,195) 20% 30%,rgb(111,132,197) 30% 40%,rgb(103,124,181) 40% 50%,rgb(114,114,147) 50% 60%,rgb(132,105,108) 60% 70%,rgb(148,103,99) 70% 80%,rgb(156,106,130) 80% 90%,rgb(159,111,161) 90% 100%)', 54 | 'linear-gradient(90deg,rgb(142,148,181) 10%,rgb(132,147,187) 10% 20%,rgb(105,145,198) 20% 30%,rgb(78,139,198) 30% 40%,rgb(81,131,178) 40% 50%,rgb(111,121,136) 50% 60%,rgb(136,113,87) 60% 70%,rgb(145,111,83) 70% 80%,rgb(138,115,131) 80% 90%,rgb(122,121,171) 90% 100%)', 55 | 'linear-gradient(90deg,rgb(137,155,177) 10%,rgb(125,154,184) 10% 20%,rgb(91,151,195) 20% 30%,rgb(51,145,195) 30% 40%,rgb(65,136,174) 40% 50%,rgb(107,125,130) 50% 60%,rgb(135,118,76) 60% 70%,rgb(140,116,77) 70% 80%,rgb(121,120,131) 80% 90%,rgb(85,125,173) 90% 100%)', 56 | 'linear-gradient(90deg,rgb(140,159,166) 10%,rgb(128,158,173) 10% 20%,rgb(96,155,185) 20% 30%,rgb(60,148,187) 30% 40%,rgb(66,138,170) 40% 50%,rgb(103,128,132) 50% 60%,rgb(129,120,86) 60% 70%,rgb(132,117,84) 70% 80%,rgb(111,120,129) 80% 90%,rgb(70,124,166) 90% 100%)', 57 | 'linear-gradient(90deg,rgb(149,161,146) 10%,rgb(140,160,154) 10% 20%,rgb(116,156,169) 20% 30%,rgb(89,149,175) 30% 40%,rgb(82,139,165) 40% 50%,rgb(100,128,138) 50% 60%,rgb(118,119,108) 60% 70%,rgb(122,115,101) 70% 80%,rgb(110,115,125) 80% 90%,rgb(87,117,151) 90% 100%)', 58 | 'linear-gradient(90deg,rgb(160,161,122) 10%,rgb(154,160,131) 10% 20%,rgb(137,156,149) 20% 30%,rgb(115,149,161) 30% 40%,rgb(99,139,160) 40% 50%,rgb(97,127,147) 50% 60%,rgb(104,117,129) 60% 70%,rgb(112,110,117) 70% 80%,rgb(114,108,120) 80% 90%,rgb(113,108,130) 90% 100%)', 59 | 'linear-gradient(90deg,rgb(168,161,98) 10%,rgb(164,159,109) 10% 20%,rgb(152,155,131) 20% 30%,rgb(133,148,149) 30% 40%,rgb(111,138,157) 40% 50%,rgb(95,126,154) 50% 60%,rgb(92,115,143) 60% 70%,rgb(103,106,129) 70% 80%,rgb(120,101,117) 80% 90%,rgb(132,99,111) 90% 100%)', 60 | ].join(','), 61 | backgroundPosition: '0 0,0 11%,0 22%,0 33%,0 44%,0 56%,0 67%,0 78%,0 89%,0 100%', 62 | backgroundRepeat: 'no-repeat', 63 | backgroundSize: '100% 10%', 64 | filter: 'blur(24px)', 65 | transform: 'scale(1.2)', 66 | }, 67 | ] 68 | ); 69 | }); 70 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | extern crate blurhash; 2 | extern crate console_error_panic_hook; 3 | extern crate serde; 4 | extern crate serde_json; 5 | extern crate wasm_bindgen; 6 | 7 | use blurhash::decode; 8 | use gloo_utils::format::JsValueSerdeExt; 9 | use serde::{Deserialize, Serialize}; 10 | use std::panic; 11 | use wasm_bindgen::prelude::*; 12 | 13 | #[derive(Serialize, Deserialize, Debug)] 14 | #[serde(rename_all = "camelCase")] 15 | pub struct BlurhashCss { 16 | background_image: String, 17 | background_position: String, 18 | background_repeat: String, 19 | background_size: String, 20 | filter: String, 21 | transform: String, 22 | } 23 | 24 | fn get_rounded_percentage_of(part: u32, whole: u32) -> u32 { 25 | let value = part as f32 / whole as f32 * 100 as f32; 26 | value.round() as u32 27 | } 28 | 29 | fn blurhash_to_bytes(hash: &String, width: u32, height: u32) -> Vec { 30 | let hash_slice: &str = &hash[..]; 31 | let punch = 1.0; 32 | decode(hash_slice, width, height, punch) 33 | } 34 | 35 | fn get_pixel(pixel_bytes: &[u8], x: u32, y: u32, width: u32, index: u32) -> u8 { 36 | let number_of_channels = 4; // RGBa 37 | let bytes_per_row = width * number_of_channels; 38 | pixel_bytes[(number_of_channels * x + index + y * bytes_per_row) as usize] 39 | } 40 | 41 | fn blurhash_to_css_struct(hash: &String, width: u32, height: u32) -> BlurhashCss { 42 | panic::set_hook(Box::new(console_error_panic_hook::hook)); 43 | let pixel_bytes = blurhash_to_bytes(&hash, width, height); 44 | let r_index = 0; 45 | let g_index = 1; 46 | let b_index = 2; 47 | let background_size = format!("100% {}%", 100.0 / height as f32); 48 | let mut background_position = Vec::new(); 49 | let mut linear_gradients = Vec::new(); 50 | 51 | for y in 0..height { 52 | let mut row_linear_gradients = Vec::new(); 53 | 54 | for x in 0..width { 55 | let r = get_pixel(&pixel_bytes, x, y, width, r_index); 56 | let g = get_pixel(&pixel_bytes, x, y, width, g_index); 57 | let b = get_pixel(&pixel_bytes, x, y, width, b_index); 58 | 59 | let start_percent = if x == 0 { 60 | String::from("") 61 | } else { 62 | format!(" {}%", get_rounded_percentage_of(x, width)) 63 | }; 64 | 65 | let end_percent = if x == width { 66 | String::from("") 67 | } else { 68 | format!(" {}%", get_rounded_percentage_of(x + 1, width)) 69 | }; 70 | 71 | let linear_gradient = format!("rgb({},{},{}){}{}", r, g, b, start_percent, end_percent); 72 | row_linear_gradients.push(linear_gradient); 73 | } 74 | 75 | linear_gradients.push(format!( 76 | "linear-gradient(90deg,{})", 77 | row_linear_gradients.join(",") 78 | )); 79 | 80 | if y == 0 { 81 | background_position.push(String::from("0 0")); 82 | } else { 83 | background_position.push(format!("0 {}%", get_rounded_percentage_of(y, height - 1))); 84 | } 85 | } 86 | 87 | BlurhashCss { 88 | background_image: linear_gradients.join(","), 89 | background_position: background_position.join(","), 90 | background_repeat: String::from("no-repeat"), 91 | background_size: background_size, 92 | filter: String::from("blur(24px)"), 93 | transform: String::from("scale(1.2)"), 94 | } 95 | } 96 | 97 | #[wasm_bindgen] 98 | pub fn blurhash_to_css(hash: String, width: u32, height: u32) -> String { 99 | let css_struct = blurhash_to_css_struct(&hash, width, height); 100 | serde_json::to_string(&css_struct).unwrap() 101 | } 102 | 103 | #[wasm_bindgen] 104 | pub fn blurhashes_to_css(hashes: JsValue, width: u32, height: u32) -> String { 105 | let hashes: Vec = hashes.into_serde().unwrap(); 106 | let css_structs: Vec = hashes 107 | .iter() 108 | .map(|hash| blurhash_to_css_struct(&hash, width, height)) 109 | .collect(); 110 | serde_json::to_string(&css_structs).unwrap() 111 | } 112 | 113 | #[cfg(test)] 114 | mod tests { 115 | use super::*; 116 | 117 | #[test] 118 | fn calculates_percentages() { 119 | assert_eq!(get_rounded_percentage_of(10, 100), 10); 120 | assert_eq!(get_rounded_percentage_of(25, 200), 13); 121 | } 122 | 123 | #[test] 124 | fn decodes_blurhash_into_bytes() { 125 | let hash = String::from("LEHLh[WB2yk8pyoJadR*.7kCMdnj"); 126 | let width = 400; 127 | let height = 600; 128 | let pixel_bytes = blurhash_to_bytes(&hash, width, height); 129 | let expected_rgba_bytes = 960000; 130 | 131 | assert_eq!(pixel_bytes.len(), expected_rgba_bytes); 132 | } 133 | 134 | #[test] 135 | fn converts_blurhash_into_css_struct() { 136 | let hash = String::from("LEHLh[WB2yk8pyoJadR*.7kCMdnj"); 137 | let width = 10; 138 | let height = 10; 139 | let css_struct = blurhash_to_css_struct(&hash, width, height); 140 | 141 | assert_eq!( 142 | css_struct.background_position, 143 | "0 0,0 11%,0 22%,0 33%,0 44%,0 56%,0 67%,0 78%,0 89%,0 100%" 144 | ); 145 | assert_eq!(css_struct.background_repeat, "no-repeat"); 146 | assert_eq!(css_struct.background_size, "100% 10%"); 147 | assert_eq!(css_struct.filter, "blur(24px)"); 148 | assert_eq!(css_struct.background_image, "linear-gradient(90deg,rgb(134,164,177) 10%,rgb(140,165,177) 10% 20%,rgb(153,170,177) 20% 30%,rgb(168,175,176) 30% 40%,rgb(178,179,173) 40% 50%,rgb(181,179,171) 50% 60%,rgb(176,177,170) 60% 70%,rgb(166,173,172) 70% 80%,rgb(152,169,176) 80% 90%,rgb(141,166,179) 90% 100%),linear-gradient(90deg,rgb(133,162,176) 10%,rgb(138,164,176) 10% 20%,rgb(152,168,175) 20% 30%,rgb(166,172,173) 30% 40%,rgb(176,175,170) 40% 50%,rgb(179,176,167) 50% 60%,rgb(174,174,167) 60% 70%,rgb(164,171,170) 70% 80%,rgb(151,167,174) 80% 90%,rgb(140,165,179) 90% 100%),linear-gradient(90deg,rgb(129,160,174) 10%,rgb(135,160,173) 10% 20%,rgb(148,162,169) 20% 30%,rgb(161,163,165) 30% 40%,rgb(171,164,159) 40% 50%,rgb(173,165,156) 50% 60%,rgb(169,165,157) 60% 70%,rgb(159,163,162) 70% 80%,rgb(147,162,170) 80% 90%,rgb(137,161,176) 90% 100%),linear-gradient(90deg,rgb(124,156,170) 10%,rgb(130,155,168) 10% 20%,rgb(142,153,162) 20% 30%,rgb(155,151,153) 30% 40%,rgb(164,149,144) 40% 50%,rgb(166,150,140) 50% 60%,rgb(162,151,142) 60% 70%,rgb(153,153,152) 70% 80%,rgb(142,155,163) 80% 90%,rgb(133,156,172) 90% 100%),linear-gradient(90deg,rgb(121,151,166) 10%,rgb(126,149,163) 10% 20%,rgb(137,144,153) 20% 30%,rgb(149,138,140) 30% 40%,rgb(158,134,127) 40% 50%,rgb(160,134,121) 50% 60%,rgb(156,138,127) 60% 70%,rgb(148,143,140) 70% 80%,rgb(138,148,156) 80% 90%,rgb(129,151,167) 90% 100%),linear-gradient(90deg,rgb(119,147,161) 10%,rgb(124,144,157) 10% 20%,rgb(135,137,146) 20% 30%,rgb(146,129,129) 30% 40%,rgb(155,124,114) 40% 50%,rgb(158,124,107) 50% 60%,rgb(154,130,114) 60% 70%,rgb(146,136,131) 70% 80%,rgb(136,142,149) 80% 90%,rgb(128,146,162) 90% 100%),linear-gradient(90deg,rgb(121,144,157) 10%,rgb(125,142,152) 10% 20%,rgb(135,135,141) 20% 30%,rgb(147,128,124) 30% 40%,rgb(156,124,108) 40% 50%,rgb(159,124,101) 50% 60%,rgb(157,129,108) 60% 70%,rgb(149,135,126) 70% 80%,rgb(138,140,143) 80% 90%,rgb(129,143,156) 90% 100%),linear-gradient(90deg,rgb(125,143,152) 10%,rgb(129,141,149) 10% 20%,rgb(139,137,139) 20% 30%,rgb(151,133,124) 30% 40%,rgb(160,131,111) 40% 50%,rgb(165,133,105) 50% 60%,rgb(163,136,111) 60% 70%,rgb(155,139,125) 70% 80%,rgb(143,141,140) 80% 90%,rgb(131,142,151) 90% 100%),linear-gradient(90deg,rgb(130,143,149) 10%,rgb(134,142,146) 10% 20%,rgb(144,142,139) 20% 30%,rgb(156,141,128) 30% 40%,rgb(166,142,119) 40% 50%,rgb(172,144,115) 50% 60%,rgb(170,146,118) 60% 70%,rgb(162,146,128) 70% 80%,rgb(148,144,139) 80% 90%,rgb(134,142,148) 90% 100%),linear-gradient(90deg,rgb(134,143,147) 10%,rgb(138,144,145) 10% 20%,rgb(147,145,139) 20% 30%,rgb(160,148,132) 30% 40%,rgb(171,151,125) 40% 50%,rgb(177,153,122) 50% 60%,rgb(176,153,125) 60% 70%,rgb(167,151,131) 70% 80%,rgb(152,147,139) 80% 90%,rgb(137,143,145) 90% 100%)"); 149 | assert_eq!(css_struct.transform, "scale(1.2)"); 150 | } 151 | 152 | #[test] 153 | fn converts_blurhash_into_css_json() { 154 | let hash = String::from("LEHLh[WB2yk8pyoJadR*.7kCMdnj"); 155 | let width = 10; 156 | let height = 10; 157 | let css_json = blurhash_to_css(hash, width, height); 158 | 159 | assert_eq!(css_json, "{\"backgroundImage\":\"linear-gradient(90deg,rgb(134,164,177) 10%,rgb(140,165,177) 10% 20%,rgb(153,170,177) 20% 30%,rgb(168,175,176) 30% 40%,rgb(178,179,173) 40% 50%,rgb(181,179,171) 50% 60%,rgb(176,177,170) 60% 70%,rgb(166,173,172) 70% 80%,rgb(152,169,176) 80% 90%,rgb(141,166,179) 90% 100%),linear-gradient(90deg,rgb(133,162,176) 10%,rgb(138,164,176) 10% 20%,rgb(152,168,175) 20% 30%,rgb(166,172,173) 30% 40%,rgb(176,175,170) 40% 50%,rgb(179,176,167) 50% 60%,rgb(174,174,167) 60% 70%,rgb(164,171,170) 70% 80%,rgb(151,167,174) 80% 90%,rgb(140,165,179) 90% 100%),linear-gradient(90deg,rgb(129,160,174) 10%,rgb(135,160,173) 10% 20%,rgb(148,162,169) 20% 30%,rgb(161,163,165) 30% 40%,rgb(171,164,159) 40% 50%,rgb(173,165,156) 50% 60%,rgb(169,165,157) 60% 70%,rgb(159,163,162) 70% 80%,rgb(147,162,170) 80% 90%,rgb(137,161,176) 90% 100%),linear-gradient(90deg,rgb(124,156,170) 10%,rgb(130,155,168) 10% 20%,rgb(142,153,162) 20% 30%,rgb(155,151,153) 30% 40%,rgb(164,149,144) 40% 50%,rgb(166,150,140) 50% 60%,rgb(162,151,142) 60% 70%,rgb(153,153,152) 70% 80%,rgb(142,155,163) 80% 90%,rgb(133,156,172) 90% 100%),linear-gradient(90deg,rgb(121,151,166) 10%,rgb(126,149,163) 10% 20%,rgb(137,144,153) 20% 30%,rgb(149,138,140) 30% 40%,rgb(158,134,127) 40% 50%,rgb(160,134,121) 50% 60%,rgb(156,138,127) 60% 70%,rgb(148,143,140) 70% 80%,rgb(138,148,156) 80% 90%,rgb(129,151,167) 90% 100%),linear-gradient(90deg,rgb(119,147,161) 10%,rgb(124,144,157) 10% 20%,rgb(135,137,146) 20% 30%,rgb(146,129,129) 30% 40%,rgb(155,124,114) 40% 50%,rgb(158,124,107) 50% 60%,rgb(154,130,114) 60% 70%,rgb(146,136,131) 70% 80%,rgb(136,142,149) 80% 90%,rgb(128,146,162) 90% 100%),linear-gradient(90deg,rgb(121,144,157) 10%,rgb(125,142,152) 10% 20%,rgb(135,135,141) 20% 30%,rgb(147,128,124) 30% 40%,rgb(156,124,108) 40% 50%,rgb(159,124,101) 50% 60%,rgb(157,129,108) 60% 70%,rgb(149,135,126) 70% 80%,rgb(138,140,143) 80% 90%,rgb(129,143,156) 90% 100%),linear-gradient(90deg,rgb(125,143,152) 10%,rgb(129,141,149) 10% 20%,rgb(139,137,139) 20% 30%,rgb(151,133,124) 30% 40%,rgb(160,131,111) 40% 50%,rgb(165,133,105) 50% 60%,rgb(163,136,111) 60% 70%,rgb(155,139,125) 70% 80%,rgb(143,141,140) 80% 90%,rgb(131,142,151) 90% 100%),linear-gradient(90deg,rgb(130,143,149) 10%,rgb(134,142,146) 10% 20%,rgb(144,142,139) 20% 30%,rgb(156,141,128) 30% 40%,rgb(166,142,119) 40% 50%,rgb(172,144,115) 50% 60%,rgb(170,146,118) 60% 70%,rgb(162,146,128) 70% 80%,rgb(148,144,139) 80% 90%,rgb(134,142,148) 90% 100%),linear-gradient(90deg,rgb(134,143,147) 10%,rgb(138,144,145) 10% 20%,rgb(147,145,139) 20% 30%,rgb(160,148,132) 30% 40%,rgb(171,151,125) 40% 50%,rgb(177,153,122) 50% 60%,rgb(176,153,125) 60% 70%,rgb(167,151,131) 70% 80%,rgb(152,147,139) 80% 90%,rgb(137,143,145) 90% 100%)\",\"backgroundPosition\":\"0 0,0 11%,0 22%,0 33%,0 44%,0 56%,0 67%,0 78%,0 89%,0 100%\",\"backgroundRepeat\":\"no-repeat\",\"backgroundSize\":\"100% 10%\",\"filter\":\"blur(24px)\",\"transform\":\"scale(1.2)\"}"); 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /example/fake-data/unsplash.ts: -------------------------------------------------------------------------------- 1 | export interface Photo { 2 | id: string; 3 | width: number; 4 | height: number; 5 | blur_hash: string; 6 | alt_description: string; 7 | style?: { 8 | backgroundImage: string; 9 | backgroundPosition: string; 10 | backgroundSize: string; 11 | backgroundRepeat: string; 12 | filter: string; 13 | transform: string; 14 | }; 15 | urls: { 16 | raw: string; 17 | full: string; 18 | regular: string; 19 | small: string; 20 | thumb: string; 21 | }; 22 | } 23 | 24 | // Based on original data at getState().entities.photos on https://unsplash.com/ 25 | export const photos: Photo[] = [ 26 | { 27 | id: 'VN9wIU7pck4', 28 | width: 5616, 29 | height: 3744, 30 | blur_hash: 'L76*8dJU9u,BtRWBayj@0fw]-oJV', 31 | alt_description: 'brown concrete castle on body of water', 32 | urls: { 33 | raw: 34 | 'https://images.unsplash.com/photo-1612252385118-94cb48e879dd?ixid=MXwxMjA3fDB8MXxhbGx8fHx8fHx8fA&ixlib=rb-1.2.1', 35 | full: 36 | 'https://images.unsplash.com/photo-1612252385118-94cb48e879dd?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8fHx8fHx8fA&ixlib=rb-1.2.1&q=85', 37 | regular: 38 | 'https://images.unsplash.com/photo-1612252385118-94cb48e879dd?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8fHx8fHx8fA&ixlib=rb-1.2.1&q=80&w=1080', 39 | small: 40 | 'https://images.unsplash.com/photo-1612252385118-94cb48e879dd?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8fHx8fHx8fA&ixlib=rb-1.2.1&q=80&w=400', 41 | thumb: 42 | 'https://images.unsplash.com/photo-1612252385118-94cb48e879dd?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8fHx8fHx8fA&ixlib=rb-1.2.1&q=80&w=200', 43 | }, 44 | }, 45 | { 46 | id: 'kLfkVa_4aXM', 47 | width: 6016, 48 | height: 4016, 49 | blur_hash: 'LIFO}y?^xb-:_N%h.8-;I=%1tlNd', 50 | alt_description: 'black and gray laptop computer on brown leather couch', 51 | urls: { 52 | raw: 53 | 'https://images.unsplash.com/photo-1593642532842-98d0fd5ebc1a?ixid=MXwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8&ixlib=rb-1.2.1', 54 | full: 55 | 'https://images.unsplash.com/photo-1593642532842-98d0fd5ebc1a?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8&ixlib=rb-1.2.1&q=85', 56 | regular: 57 | 'https://images.unsplash.com/photo-1593642532842-98d0fd5ebc1a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=1080', 58 | small: 59 | 'https://images.unsplash.com/photo-1593642532842-98d0fd5ebc1a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=400', 60 | thumb: 61 | 'https://images.unsplash.com/photo-1593642532842-98d0fd5ebc1a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=200', 62 | }, 63 | }, 64 | { 65 | id: 'BLf-Q9n4bhc', 66 | width: 3982, 67 | height: 4978, 68 | blur_hash: 'LDAdAjjs-;of00W;M{V@e:WCIVof', 69 | alt_description: 'black bmw m 3 on road during night time', 70 | urls: { 71 | raw: 72 | 'https://images.unsplash.com/photo-1612594305265-86300a9a5b5b?ixid=MXwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8&ixlib=rb-1.2.1', 73 | full: 74 | 'https://images.unsplash.com/photo-1612594305265-86300a9a5b5b?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8&ixlib=rb-1.2.1&q=85', 75 | regular: 76 | 'https://images.unsplash.com/photo-1612594305265-86300a9a5b5b?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=1080', 77 | small: 78 | 'https://images.unsplash.com/photo-1612594305265-86300a9a5b5b?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=400', 79 | thumb: 80 | 'https://images.unsplash.com/photo-1612594305265-86300a9a5b5b?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=200', 81 | }, 82 | }, 83 | { 84 | id: 'TCJM2dF7FLM', 85 | width: 8000, 86 | height: 6000, 87 | blur_hash: 'LoHB--V@WVof~qV@j[j[tSayaeay', 88 | alt_description: 'brown rocky mountain under white clouds during daytime', 89 | urls: { 90 | raw: 91 | 'https://images.unsplash.com/photo-1612596551898-929726fd7a4e?ixid=MXwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8&ixlib=rb-1.2.1', 92 | full: 93 | 'https://images.unsplash.com/photo-1612596551898-929726fd7a4e?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8&ixlib=rb-1.2.1&q=85', 94 | regular: 95 | 'https://images.unsplash.com/photo-1612596551898-929726fd7a4e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=1080', 96 | small: 97 | 'https://images.unsplash.com/photo-1612596551898-929726fd7a4e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=400', 98 | thumb: 99 | 'https://images.unsplash.com/photo-1612596551898-929726fd7a4e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=200', 100 | }, 101 | }, 102 | { 103 | id: 'WyABy389A-Y', 104 | width: 4480, 105 | height: 6720, 106 | blur_hash: 'LFG[p2Dj57-=_1%L^,Ri_MD+xut7', 107 | alt_description: 'woman in white floral wedding gown smiling', 108 | urls: { 109 | raw: 110 | 'https://images.unsplash.com/photo-1612586462639-33705e0afb70?ixid=MXwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8&ixlib=rb-1.2.1', 111 | full: 112 | 'https://images.unsplash.com/photo-1612586462639-33705e0afb70?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8&ixlib=rb-1.2.1&q=85', 113 | regular: 114 | 'https://images.unsplash.com/photo-1612586462639-33705e0afb70?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=1080', 115 | small: 116 | 'https://images.unsplash.com/photo-1612586462639-33705e0afb70?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=400', 117 | thumb: 118 | 'https://images.unsplash.com/photo-1612586462639-33705e0afb70?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=200', 119 | }, 120 | }, 121 | { 122 | id: 'tPGLGmSij2g', 123 | width: 3878, 124 | height: 3490, 125 | blur_hash: 'LkIX?PaexaWB_NjZWCfQxaWVNGof', 126 | alt_description: 'green suv on brown sand beach during daytime', 127 | urls: { 128 | raw: 129 | 'https://images.unsplash.com/photo-1612626256634-991e6e977fc1?ixid=MXwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8&ixlib=rb-1.2.1', 130 | full: 131 | 'https://images.unsplash.com/photo-1612626256634-991e6e977fc1?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8&ixlib=rb-1.2.1&q=85', 132 | regular: 133 | 'https://images.unsplash.com/photo-1612626256634-991e6e977fc1?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=1080', 134 | small: 135 | 'https://images.unsplash.com/photo-1612626256634-991e6e977fc1?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=400', 136 | thumb: 137 | 'https://images.unsplash.com/photo-1612626256634-991e6e977fc1?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=200', 138 | }, 139 | }, 140 | { 141 | id: 'e59Y6vqbL7Y', 142 | width: 4016, 143 | height: 6016, 144 | blur_hash: 'LHHf0E%fs:t6ys%1Mxs:?F-oj@s.', 145 | alt_description: 'silver laptop on brown wooden table', 146 | urls: { 147 | raw: 148 | 'https://images.unsplash.com/photo-1593642633279-1796119d5482?ixid=MXwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8&ixlib=rb-1.2.1', 149 | full: 150 | 'https://images.unsplash.com/photo-1593642633279-1796119d5482?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8&ixlib=rb-1.2.1&q=85', 151 | regular: 152 | 'https://images.unsplash.com/photo-1593642633279-1796119d5482?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=1080', 153 | small: 154 | 'https://images.unsplash.com/photo-1593642633279-1796119d5482?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=400', 155 | thumb: 156 | 'https://images.unsplash.com/photo-1593642633279-1796119d5482?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=200', 157 | }, 158 | }, 159 | { 160 | id: 'dZqeOKr352o', 161 | width: 5140, 162 | height: 5157, 163 | blur_hash: 'L85=X-@ZrXPU*Jv2iwY4Y5ici_kq', 164 | alt_description: 'red sofa chair near window', 165 | urls: { 166 | raw: 167 | 'https://images.unsplash.com/photo-1612626375431-6f3872a423a9?ixid=MXwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8&ixlib=rb-1.2.1', 168 | full: 169 | 'https://images.unsplash.com/photo-1612626375431-6f3872a423a9?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8&ixlib=rb-1.2.1&q=85', 170 | regular: 171 | 'https://images.unsplash.com/photo-1612626375431-6f3872a423a9?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=1080', 172 | small: 173 | 'https://images.unsplash.com/photo-1612626375431-6f3872a423a9?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=400', 174 | thumb: 175 | 'https://images.unsplash.com/photo-1612626375431-6f3872a423a9?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=200', 176 | }, 177 | }, 178 | { 179 | id: 'XwiAfYTNL8Q', 180 | width: 3972, 181 | height: 4965, 182 | blur_hash: 'L%I#ovkCj[j[~qj[ayj[a{fQWBj[', 183 | alt_description: 'house on hill near trees covered with fog', 184 | urls: { 185 | raw: 186 | 'https://images.unsplash.com/photo-1612435675054-baaabec934d6?ixid=MXwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8&ixlib=rb-1.2.1', 187 | full: 188 | 'https://images.unsplash.com/photo-1612435675054-baaabec934d6?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8&ixlib=rb-1.2.1&q=85', 189 | regular: 190 | 'https://images.unsplash.com/photo-1612435675054-baaabec934d6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=1080', 191 | small: 192 | 'https://images.unsplash.com/photo-1612435675054-baaabec934d6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=400', 193 | thumb: 194 | 'https://images.unsplash.com/photo-1612435675054-baaabec934d6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=200', 195 | }, 196 | }, 197 | { 198 | id: 'EFRD6Cr7skc', 199 | width: 2323, 200 | height: 3484, 201 | blur_hash: 'L-C*Oc8^t7o#Mxt7kWaea}kCaeay', 202 | alt_description: 'water waves on black background', 203 | urls: { 204 | raw: 205 | 'https://images.unsplash.com/photo-1612623753207-96465febeee7?ixid=MXwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8&ixlib=rb-1.2.1', 206 | full: 207 | 'https://images.unsplash.com/photo-1612623753207-96465febeee7?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8&ixlib=rb-1.2.1&q=85', 208 | regular: 209 | 'https://images.unsplash.com/photo-1612623753207-96465febeee7?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=1080', 210 | small: 211 | 'https://images.unsplash.com/photo-1612623753207-96465febeee7?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=400', 212 | thumb: 213 | 'https://images.unsplash.com/photo-1612623753207-96465febeee7?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8&ixlib=rb-1.2.1&q=80&w=200', 214 | }, 215 | }, 216 | { 217 | id: 'C99Ma2u-VgQ', 218 | width: 3265, 219 | height: 4898, 220 | blur_hash: 'LRDi%tWp1csnE#o1oLS363Wp,?jt', 221 | alt_description: 'text', 222 | urls: { 223 | raw: 224 | 'https://images.unsplash.com/photo-1612436524004-4f90d7fe71a5?ixid=MXwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfA&ixlib=rb-1.2.1', 225 | full: 226 | 'https://images.unsplash.com/photo-1612436524004-4f90d7fe71a5?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 227 | regular: 228 | 'https://images.unsplash.com/photo-1612436524004-4f90d7fe71a5?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 229 | small: 230 | 'https://images.unsplash.com/photo-1612436524004-4f90d7fe71a5?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 231 | thumb: 232 | 'https://images.unsplash.com/photo-1612436524004-4f90d7fe71a5?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 233 | }, 234 | }, 235 | { 236 | id: 'zcbtpjgToUY', 237 | width: 7680, 238 | height: 7680, 239 | blur_hash: 'LRG[]49GH;ad;JS5t8kCQ*s8p0R.', 240 | alt_description: 'white and blue abstract painting', 241 | urls: { 242 | raw: 243 | 'https://images.unsplash.com/photo-1593642702749-b7d2a804fbcf?ixid=MXwxMjA3fDF8MXxhbGx8MTF8fHx8fHwyfA&ixlib=rb-1.2.1', 244 | full: 245 | 'https://images.unsplash.com/photo-1593642702749-b7d2a804fbcf?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MTF8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 246 | regular: 247 | 'https://images.unsplash.com/photo-1593642702749-b7d2a804fbcf?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MTF8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 248 | small: 249 | 'https://images.unsplash.com/photo-1593642702749-b7d2a804fbcf?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MTF8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 250 | thumb: 251 | 'https://images.unsplash.com/photo-1593642702749-b7d2a804fbcf?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MTF8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 252 | }, 253 | }, 254 | { 255 | id: 'BOoQo_Az124', 256 | width: 2891, 257 | height: 4336, 258 | blur_hash: 'L~K_OSt7Rjj[~qofWBfkj?axfkaz', 259 | alt_description: 'person in black coat standing near body of water during daytime', 260 | urls: { 261 | raw: 262 | 'https://images.unsplash.com/photo-1612436410902-e7123c3101d2?ixid=MXwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfA&ixlib=rb-1.2.1', 263 | full: 264 | 'https://images.unsplash.com/photo-1612436410902-e7123c3101d2?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 265 | regular: 266 | 'https://images.unsplash.com/photo-1612436410902-e7123c3101d2?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 267 | small: 268 | 'https://images.unsplash.com/photo-1612436410902-e7123c3101d2?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 269 | thumb: 270 | 'https://images.unsplash.com/photo-1612436410902-e7123c3101d2?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 271 | }, 272 | }, 273 | { 274 | id: 'yPFmRTeNdBY', 275 | width: 6000, 276 | height: 4000, 277 | blur_hash: 'LSB:gHRjD*WBjst6j[fQ0Kt7%2of', 278 | alt_description: 'white concrete building during daytime', 279 | urls: { 280 | raw: 281 | 'https://images.unsplash.com/photo-1612580697470-51477e748129?ixid=MXwxMjA3fDB8MXxhbGx8MTN8fHx8fHwyfA&ixlib=rb-1.2.1', 282 | full: 283 | 'https://images.unsplash.com/photo-1612580697470-51477e748129?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTN8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 284 | regular: 285 | 'https://images.unsplash.com/photo-1612580697470-51477e748129?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTN8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 286 | small: 287 | 'https://images.unsplash.com/photo-1612580697470-51477e748129?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTN8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 288 | thumb: 289 | 'https://images.unsplash.com/photo-1612580697470-51477e748129?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTN8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 290 | }, 291 | }, 292 | { 293 | id: 'Ly0SqFEUIj0', 294 | width: 6000, 295 | height: 4000, 296 | blur_hash: 'LiLENUWB00t7M{xuxuof_3t7xuRj', 297 | alt_description: 'black and white high rise buildings', 298 | urls: { 299 | raw: 300 | 'https://images.unsplash.com/photo-1612568928890-7761e2c6a6f1?ixid=MXwxMjA3fDB8MXxhbGx8MTR8fHx8fHwyfA&ixlib=rb-1.2.1', 301 | full: 302 | 'https://images.unsplash.com/photo-1612568928890-7761e2c6a6f1?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTR8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 303 | regular: 304 | 'https://images.unsplash.com/photo-1612568928890-7761e2c6a6f1?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTR8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 305 | small: 306 | 'https://images.unsplash.com/photo-1612568928890-7761e2c6a6f1?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTR8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 307 | thumb: 308 | 'https://images.unsplash.com/photo-1612568928890-7761e2c6a6f1?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTR8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 309 | }, 310 | }, 311 | { 312 | id: 'iI2LCPGjwEE', 313 | width: 7952, 314 | height: 5304, 315 | blur_hash: 'LdH_S+tRNfs.~pslaKWVOFaxWVWB', 316 | alt_description: 'brown and green trees on mountain during daytime', 317 | urls: { 318 | raw: 319 | 'https://images.unsplash.com/photo-1612547095655-9747bf2a7825?ixid=MXwxMjA3fDB8MXxhbGx8MTV8fHx8fHwyfA&ixlib=rb-1.2.1', 320 | full: 321 | 'https://images.unsplash.com/photo-1612547095655-9747bf2a7825?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTV8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 322 | regular: 323 | 'https://images.unsplash.com/photo-1612547095655-9747bf2a7825?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTV8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 324 | small: 325 | 'https://images.unsplash.com/photo-1612547095655-9747bf2a7825?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTV8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 326 | thumb: 327 | 'https://images.unsplash.com/photo-1612547095655-9747bf2a7825?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTV8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 328 | }, 329 | }, 330 | { 331 | id: 'EzYq1HOl5_8', 332 | width: 10276, 333 | height: 7340, 334 | blur_hash: 'LHI56;*0I-t6.7NbpdIqE0IotnIV', 335 | alt_description: 'black and silver laptop computer beside black pen on brown wooden table', 336 | urls: { 337 | raw: 338 | 'https://images.unsplash.com/photo-1593642532871-8b12e02d091c?ixid=MXwxMjA3fDF8MXxhbGx8MTZ8fHx8fHwyfA&ixlib=rb-1.2.1', 339 | full: 340 | 'https://images.unsplash.com/photo-1593642532871-8b12e02d091c?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MTZ8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 341 | regular: 342 | 'https://images.unsplash.com/photo-1593642532871-8b12e02d091c?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MTZ8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 343 | small: 344 | 'https://images.unsplash.com/photo-1593642532871-8b12e02d091c?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MTZ8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 345 | thumb: 346 | 'https://images.unsplash.com/photo-1593642532871-8b12e02d091c?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDF8MXxhbGx8MTZ8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 347 | }, 348 | }, 349 | { 350 | id: '8tS8FAJRbcI', 351 | width: 4480, 352 | height: 6720, 353 | blur_hash: 'LHLqtlIU00NG^%s:RjWB~qxuD*of', 354 | alt_description: 'white and black drone in mid air', 355 | urls: { 356 | raw: 357 | 'https://images.unsplash.com/photo-1612578397747-1ee83aee639f?ixid=MXwxMjA3fDB8MXxhbGx8MTd8fHx8fHwyfA&ixlib=rb-1.2.1', 358 | full: 359 | 'https://images.unsplash.com/photo-1612578397747-1ee83aee639f?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTd8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 360 | regular: 361 | 'https://images.unsplash.com/photo-1612578397747-1ee83aee639f?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTd8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 362 | small: 363 | 'https://images.unsplash.com/photo-1612578397747-1ee83aee639f?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTd8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 364 | thumb: 365 | 'https://images.unsplash.com/photo-1612578397747-1ee83aee639f?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTd8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 366 | }, 367 | }, 368 | { 369 | id: 'xAWKLMXma7k', 370 | width: 4069, 371 | height: 6103, 372 | blur_hash: 'LvHMo]ogRjj[ALjsoJfRDNayoLfP', 373 | alt_description: 'brown sand under blue sky during daytime', 374 | urls: { 375 | raw: 376 | 'https://images.unsplash.com/photo-1612599538248-4d7b1ff49a64?ixid=MXwxMjA3fDB8MXxhbGx8MTh8fHx8fHwyfA&ixlib=rb-1.2.1', 377 | full: 378 | 'https://images.unsplash.com/photo-1612599538248-4d7b1ff49a64?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTh8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 379 | regular: 380 | 'https://images.unsplash.com/photo-1612599538248-4d7b1ff49a64?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTh8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 381 | small: 382 | 'https://images.unsplash.com/photo-1612599538248-4d7b1ff49a64?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTh8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 383 | thumb: 384 | 'https://images.unsplash.com/photo-1612599538248-4d7b1ff49a64?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTh8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 385 | }, 386 | }, 387 | { 388 | id: '7dJYVlJ4a5o', 389 | width: 4480, 390 | height: 6720, 391 | blur_hash: 'L^JHmys:Rjae~qj[WBayx]WBjsay', 392 | alt_description: 'brown wheat field during daytime', 393 | urls: { 394 | raw: 395 | 'https://images.unsplash.com/photo-1612589568916-470ecc5675a6?ixid=MXwxMjA3fDB8MXxhbGx8MTl8fHx8fHwyfA&ixlib=rb-1.2.1', 396 | full: 397 | 'https://images.unsplash.com/photo-1612589568916-470ecc5675a6?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTl8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 398 | regular: 399 | 'https://images.unsplash.com/photo-1612589568916-470ecc5675a6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTl8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 400 | small: 401 | 'https://images.unsplash.com/photo-1612589568916-470ecc5675a6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTl8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 402 | thumb: 403 | 'https://images.unsplash.com/photo-1612589568916-470ecc5675a6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MTl8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 404 | }, 405 | }, 406 | { 407 | id: 'oR9muao4zfY', 408 | width: 3849, 409 | height: 5988, 410 | blur_hash: 'LZJkfg4n_2IU%NIUazM{00Rjj[of', 411 | alt_description: 'white concrete building during daytime', 412 | urls: { 413 | raw: 414 | 'https://images.unsplash.com/photo-1612572681214-b7d788996d0a?ixid=MXwxMjA3fDB8MXxhbGx8MjB8fHx8fHwyfA&ixlib=rb-1.2.1', 415 | full: 416 | 'https://images.unsplash.com/photo-1612572681214-b7d788996d0a?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjB8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 417 | regular: 418 | 'https://images.unsplash.com/photo-1612572681214-b7d788996d0a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjB8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 419 | small: 420 | 'https://images.unsplash.com/photo-1612572681214-b7d788996d0a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjB8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 421 | thumb: 422 | 'https://images.unsplash.com/photo-1612572681214-b7d788996d0a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjB8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 423 | }, 424 | }, 425 | { 426 | id: 't2Y04Kj4S0Y', 427 | width: 5000, 428 | height: 4000, 429 | blur_hash: 'LJ1=iXkXU[Z#Z}f5jEj]VCaypJkC', 430 | alt_description: 'silhouette of persons hand under blue sky', 431 | urls: { 432 | raw: 433 | 'https://images.unsplash.com/photo-1612621823479-031ba769a626?ixid=MXwxMjA3fDB8MXxhbGx8MjF8fHx8fHwyfA&ixlib=rb-1.2.1', 434 | full: 435 | 'https://images.unsplash.com/photo-1612621823479-031ba769a626?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjF8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 436 | regular: 437 | 'https://images.unsplash.com/photo-1612621823479-031ba769a626?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjF8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 438 | small: 439 | 'https://images.unsplash.com/photo-1612621823479-031ba769a626?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjF8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 440 | thumb: 441 | 'https://images.unsplash.com/photo-1612621823479-031ba769a626?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjF8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 442 | }, 443 | }, 444 | { 445 | id: 'B61kdyBZHpE', 446 | width: 6016, 447 | height: 4000, 448 | blur_hash: 'LaA0@BOeIux8xIW@SNn$I9shtOR:', 449 | alt_description: 'purple green and pink heart illustration', 450 | urls: { 451 | raw: 452 | 'https://images.unsplash.com/photo-1599824425751-b8e0a676a647?ixid=MXwxMjA3fDB8MXxhbGx8MjJ8fHx8fHwyfA&ixlib=rb-1.2.1', 453 | full: 454 | 'https://images.unsplash.com/photo-1599824425751-b8e0a676a647?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjJ8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 455 | regular: 456 | 'https://images.unsplash.com/photo-1599824425751-b8e0a676a647?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjJ8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 457 | small: 458 | 'https://images.unsplash.com/photo-1599824425751-b8e0a676a647?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjJ8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 459 | thumb: 460 | 'https://images.unsplash.com/photo-1599824425751-b8e0a676a647?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjJ8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 461 | }, 462 | }, 463 | { 464 | id: 'ua7T0zEdJ_w', 465 | width: 6000, 466 | height: 4000, 467 | blur_hash: 'LWB;OU_N%MtR8^DiR*bHxut6V?V@', 468 | alt_description: 'brown and gray rock wall', 469 | urls: { 470 | raw: 471 | 'https://images.unsplash.com/photo-1612565191600-264ffd501ba0?ixid=MXwxMjA3fDB8MXxhbGx8MjN8fHx8fHwyfA&ixlib=rb-1.2.1', 472 | full: 473 | 'https://images.unsplash.com/photo-1612565191600-264ffd501ba0?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjN8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 474 | regular: 475 | 'https://images.unsplash.com/photo-1612565191600-264ffd501ba0?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjN8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 476 | small: 477 | 'https://images.unsplash.com/photo-1612565191600-264ffd501ba0?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjN8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 478 | thumb: 479 | 'https://images.unsplash.com/photo-1612565191600-264ffd501ba0?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjN8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 480 | }, 481 | }, 482 | { 483 | id: 'XMIshqrZ7Hc', 484 | width: 3780, 485 | height: 2525, 486 | blur_hash: 'LaI=Mq9Ft7%M00xuWBRjxut79FWB', 487 | alt_description: 'gray scale photo of spiral staircase', 488 | urls: { 489 | raw: 490 | 'https://images.unsplash.com/photo-1612561869417-00aff351cc26?ixid=MXwxMjA3fDB8MXxhbGx8MjR8fHx8fHwyfA&ixlib=rb-1.2.1', 491 | full: 492 | 'https://images.unsplash.com/photo-1612561869417-00aff351cc26?crop=entropy&cs=srgb&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjR8fHx8fHwyfA&ixlib=rb-1.2.1&q=85', 493 | regular: 494 | 'https://images.unsplash.com/photo-1612561869417-00aff351cc26?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjR8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=1080', 495 | small: 496 | 'https://images.unsplash.com/photo-1612561869417-00aff351cc26?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjR8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=400', 497 | thumb: 498 | 'https://images.unsplash.com/photo-1612561869417-00aff351cc26?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwxMjA3fDB8MXxhbGx8MjR8fHx8fHwyfA&ixlib=rb-1.2.1&q=80&w=200', 499 | }, 500 | }, 501 | ]; 502 | -------------------------------------------------------------------------------- /example/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/toolbox-core@2.7.4", "@ampproject/toolbox-core@^2.7.1-alpha.0": 6 | version "2.7.4" 7 | resolved "https://registry.yarnpkg.com/@ampproject/toolbox-core/-/toolbox-core-2.7.4.tgz#8355136f16301458ce942acf6c55952c9a415627" 8 | integrity sha512-qpBhcS4urB7IKc+jx2kksN7BuvvwCo7Y3IstapWo+EW+COY5EYAUwb2pil37v3TsaqHKgX//NloFP1SKzGZAnw== 9 | dependencies: 10 | cross-fetch "3.0.6" 11 | lru-cache "6.0.0" 12 | 13 | "@ampproject/toolbox-optimizer@2.7.1-alpha.0": 14 | version "2.7.1-alpha.0" 15 | resolved "https://registry.yarnpkg.com/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.7.1-alpha.0.tgz#1571dcd02608223ff68f6b7223102a123e381197" 16 | integrity sha512-WGPZKVQvHgNYJk1XVJCCmY+NVGTGJtvn0OALDyiegN4FJWOcilQUhCIcjMkZN59u1flz/u+sEKccM5qsROqVyg== 17 | dependencies: 18 | "@ampproject/toolbox-core" "^2.7.1-alpha.0" 19 | "@ampproject/toolbox-runtime-version" "^2.7.1-alpha.0" 20 | "@ampproject/toolbox-script-csp" "^2.5.4" 21 | "@ampproject/toolbox-validator-rules" "^2.7.1-alpha.0" 22 | abort-controller "3.0.0" 23 | cross-fetch "3.0.6" 24 | cssnano-simple "1.2.1" 25 | dom-serializer "1.1.0" 26 | domhandler "3.3.0" 27 | domutils "2.4.2" 28 | htmlparser2 "5.0.1" 29 | https-proxy-agent "5.0.0" 30 | lru-cache "6.0.0" 31 | node-fetch "2.6.1" 32 | normalize-html-whitespace "1.0.0" 33 | postcss "7.0.32" 34 | postcss-safe-parser "4.0.2" 35 | terser "5.5.1" 36 | 37 | "@ampproject/toolbox-runtime-version@^2.7.1-alpha.0": 38 | version "2.7.4" 39 | resolved "https://registry.yarnpkg.com/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.4.tgz#f49da0dab122101ef75ed3caed3a0142487b73e1" 40 | integrity sha512-SAdOUOERp42thVNWaBJlnFvFVvnacMVnz5z9LyUZHSnoL1EqrAW5Sz5jv+Ly+gkA8NYsEaUxAdSCBAzE9Uzb4Q== 41 | dependencies: 42 | "@ampproject/toolbox-core" "2.7.4" 43 | 44 | "@ampproject/toolbox-script-csp@^2.5.4": 45 | version "2.5.4" 46 | resolved "https://registry.yarnpkg.com/@ampproject/toolbox-script-csp/-/toolbox-script-csp-2.5.4.tgz#d8b7b91a678ae8f263cb36d9b74e441b7d633aad" 47 | integrity sha512-+knTYetI5nWllRZ9wFcj7mYxelkiiFVRAAW/hl0ad8EnKHMH82tRlk40CapEnUHhp6Er5sCYkumQ8dngs3Q4zQ== 48 | 49 | "@ampproject/toolbox-validator-rules@^2.7.1-alpha.0": 50 | version "2.7.4" 51 | resolved "https://registry.yarnpkg.com/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.7.4.tgz#a58b5eca723f6c3557ac83b696de0247f5f03ce4" 52 | integrity sha512-z3JRcpIZLLdVC9XVe7YTZuB3a/eR9s2SjElYB9AWRdyJyL5Jt7+pGNv4Uwh1uHVoBXsWEVQzNOWSNtrO3mSwZA== 53 | dependencies: 54 | cross-fetch "3.0.6" 55 | 56 | "@babel/code-frame@7.12.11": 57 | version "7.12.11" 58 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 59 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 60 | dependencies: 61 | "@babel/highlight" "^7.10.4" 62 | 63 | "@babel/helper-validator-identifier@^7.12.11": 64 | version "7.12.11" 65 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 66 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 67 | 68 | "@babel/highlight@^7.10.4": 69 | version "7.12.13" 70 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" 71 | integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== 72 | dependencies: 73 | "@babel/helper-validator-identifier" "^7.12.11" 74 | chalk "^2.0.0" 75 | js-tokens "^4.0.0" 76 | 77 | "@babel/runtime@7.12.5": 78 | version "7.12.5" 79 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" 80 | integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== 81 | dependencies: 82 | regenerator-runtime "^0.13.4" 83 | 84 | "@babel/types@7.8.3": 85 | version "7.8.3" 86 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" 87 | integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== 88 | dependencies: 89 | esutils "^2.0.2" 90 | lodash "^4.17.13" 91 | to-fast-properties "^2.0.0" 92 | 93 | "@hapi/accept@5.0.1": 94 | version "5.0.1" 95 | resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.1.tgz#068553e867f0f63225a506ed74e899441af53e10" 96 | integrity sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q== 97 | dependencies: 98 | "@hapi/boom" "9.x.x" 99 | "@hapi/hoek" "9.x.x" 100 | 101 | "@hapi/boom@9.x.x": 102 | version "9.1.1" 103 | resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.1.tgz#89e6f0e01637c2a4228da0d113e8157c93677b04" 104 | integrity sha512-VNR8eDbBrOxBgbkddRYIe7+8DZ+vSbV6qlmaN2x7eWjsUjy2VmQgChkOKcVZIeupEZYj+I0dqNg430OhwzagjA== 105 | dependencies: 106 | "@hapi/hoek" "9.x.x" 107 | 108 | "@hapi/hoek@9.x.x": 109 | version "9.1.1" 110 | resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa" 111 | integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw== 112 | 113 | "@next/env@10.0.6": 114 | version "10.0.6" 115 | resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.6.tgz#e3c845491a8b0fffda219b5bda84b361b8b2f9c2" 116 | integrity sha512-++zgrcSL9SprjWKBbO3YuVj/8CTmxJl+zLErW/Kbr2VCT0u12SrBcMKvD236lEGs5/qUgeBfU3Dvmr6MASWrtA== 117 | 118 | "@next/polyfill-module@10.0.6": 119 | version "10.0.6" 120 | resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.6.tgz#9d4c651456d90b5bafb3d9a3a93100d309d47746" 121 | integrity sha512-Sk3HYFxiI3AyIhw7Nnc5un//duCthAP2XtPb4N1SamymOU2QSb8I1zkcsxVIlZRvftdXikQQgra6Ck2zfJRxpA== 122 | 123 | "@next/react-dev-overlay@10.0.6": 124 | version "10.0.6" 125 | resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.6.tgz#9e9828cfd75a62e852a3d1861e605c92d97c4ff4" 126 | integrity sha512-KbxpyVT6gr1KZ7JoFDKGNM0hK7CxPkIC14j/gYgR6qSOhxGs3GEIBScJRXfKD7LNPMgVgQtaJlBYlEJ7aQu1xg== 127 | dependencies: 128 | "@babel/code-frame" "7.12.11" 129 | anser "1.4.9" 130 | chalk "4.0.0" 131 | classnames "2.2.6" 132 | css.escape "1.5.1" 133 | data-uri-to-buffer "3.0.1" 134 | platform "1.3.6" 135 | shell-quote "1.7.2" 136 | source-map "0.8.0-beta.0" 137 | stacktrace-parser "0.1.10" 138 | strip-ansi "6.0.0" 139 | 140 | "@next/react-refresh-utils@10.0.6": 141 | version "10.0.6" 142 | resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.6.tgz#896a182654d54eec6b6374251d834199efa70081" 143 | integrity sha512-4BF+8PyzDcYpumQJ22yBUjVP/CL2KLPM+3K3ZQb61HvmIptB/t+jFnH2ew8S7ORQNu/caVQC6wP5wAfOtpJNsg== 144 | 145 | "@opentelemetry/api@0.14.0": 146 | version "0.14.0" 147 | resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.14.0.tgz#4e17d8d2f1da72b19374efa7b6526aa001267cae" 148 | integrity sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ== 149 | dependencies: 150 | "@opentelemetry/context-base" "^0.14.0" 151 | 152 | "@opentelemetry/context-base@^0.14.0": 153 | version "0.14.0" 154 | resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001" 155 | integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw== 156 | 157 | "@types/node@14.14.25": 158 | version "14.14.25" 159 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.25.tgz#15967a7b577ff81383f9b888aa6705d43fbbae93" 160 | integrity sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ== 161 | 162 | "@types/prop-types@*": 163 | version "15.7.3" 164 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" 165 | integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== 166 | 167 | "@types/react-dom@17.0.0": 168 | version "17.0.0" 169 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.0.tgz#b3b691eb956c4b3401777ee67b900cb28415d95a" 170 | integrity sha512-lUqY7OlkF/RbNtD5nIq7ot8NquXrdFrjSOR6+w9a9RFQevGi1oZO1dcJbXMeONAPKtZ2UrZOEJ5UOCVsxbLk/g== 171 | dependencies: 172 | "@types/react" "*" 173 | 174 | "@types/react@*", "@types/react@17.0.1": 175 | version "17.0.1" 176 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.1.tgz#eb1f1407dea8da3bc741879c1192aa703ab9975b" 177 | integrity sha512-w8t9f53B2ei4jeOqf/gxtc2Sswnc3LBK5s0DyJcg5xd10tMHXts2N31cKjWfH9IC/JvEPa/YF1U4YeP1t4R6HQ== 178 | dependencies: 179 | "@types/prop-types" "*" 180 | csstype "^3.0.2" 181 | 182 | abort-controller@3.0.0: 183 | version "3.0.0" 184 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 185 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 186 | dependencies: 187 | event-target-shim "^5.0.0" 188 | 189 | agent-base@6: 190 | version "6.0.2" 191 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 192 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 193 | dependencies: 194 | debug "4" 195 | 196 | anser@1.4.9: 197 | version "1.4.9" 198 | resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760" 199 | integrity sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA== 200 | 201 | ansi-regex@^2.0.0: 202 | version "2.1.1" 203 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 204 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 205 | 206 | ansi-regex@^3.0.0: 207 | version "3.0.0" 208 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 209 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 210 | 211 | ansi-regex@^5.0.0: 212 | version "5.0.0" 213 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 214 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 215 | 216 | ansi-styles@^3.2.1: 217 | version "3.2.1" 218 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 219 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 220 | dependencies: 221 | color-convert "^1.9.0" 222 | 223 | ansi-styles@^4.1.0: 224 | version "4.3.0" 225 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 226 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 227 | dependencies: 228 | color-convert "^2.0.1" 229 | 230 | anymatch@~3.1.1: 231 | version "3.1.1" 232 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 233 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 234 | dependencies: 235 | normalize-path "^3.0.0" 236 | picomatch "^2.0.4" 237 | 238 | aproba@^1.0.3: 239 | version "1.2.0" 240 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 241 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 242 | 243 | are-we-there-yet@~1.1.2: 244 | version "1.1.5" 245 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 246 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 247 | dependencies: 248 | delegates "^1.0.0" 249 | readable-stream "^2.0.6" 250 | 251 | array-flatten@^3.0.0: 252 | version "3.0.0" 253 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541" 254 | integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA== 255 | 256 | asn1.js@^5.2.0: 257 | version "5.4.1" 258 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" 259 | integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== 260 | dependencies: 261 | bn.js "^4.0.0" 262 | inherits "^2.0.1" 263 | minimalistic-assert "^1.0.0" 264 | safer-buffer "^2.1.0" 265 | 266 | assert@^1.1.1: 267 | version "1.5.0" 268 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" 269 | integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== 270 | dependencies: 271 | object-assign "^4.1.1" 272 | util "0.10.3" 273 | 274 | ast-types@0.13.2: 275 | version "0.13.2" 276 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" 277 | integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== 278 | 279 | babel-plugin-syntax-jsx@6.18.0: 280 | version "6.18.0" 281 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" 282 | integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= 283 | 284 | base64-js@^1.0.2, base64-js@^1.3.1: 285 | version "1.5.1" 286 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 287 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 288 | 289 | big.js@^5.2.2: 290 | version "5.2.2" 291 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" 292 | integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== 293 | 294 | binary-extensions@^2.0.0: 295 | version "2.2.0" 296 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 297 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 298 | 299 | bl@^4.0.3: 300 | version "4.0.4" 301 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.4.tgz#f4fda39f81a811d0df6368c1ed91dae499d1c900" 302 | integrity sha512-7tdr4EpSd7jJ6tuQ21vu2ke8w7pNEstzj1O8wwq6sNNzO3UDi5MA8Gny/gquCj7r2C6fHudg8tKRGyjRgmvNxQ== 303 | dependencies: 304 | buffer "^5.5.0" 305 | inherits "^2.0.4" 306 | readable-stream "^3.4.0" 307 | 308 | blurhash-to-css@0.3.3: 309 | version "0.3.3" 310 | resolved "https://registry.yarnpkg.com/blurhash-to-css/-/blurhash-to-css-0.3.3.tgz#6d2ac3315ca027035c177e49aecf20625ff83064" 311 | integrity sha512-SD/7/39yNRbxTXDQq1ZDZjB0BOKGiRBnwqqQv+CraokwOh6NCckjOQcJ6i1CSfMzQfvv4+uHxwHxFP4cLZTvOw== 312 | 313 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: 314 | version "4.11.9" 315 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" 316 | integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== 317 | 318 | bn.js@^5.0.0, bn.js@^5.1.1: 319 | version "5.1.3" 320 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" 321 | integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== 322 | 323 | braces@~3.0.2: 324 | version "3.0.2" 325 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 326 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 327 | dependencies: 328 | fill-range "^7.0.1" 329 | 330 | brorand@^1.0.1, brorand@^1.1.0: 331 | version "1.1.0" 332 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 333 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 334 | 335 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 336 | version "1.2.0" 337 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" 338 | integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== 339 | dependencies: 340 | buffer-xor "^1.0.3" 341 | cipher-base "^1.0.0" 342 | create-hash "^1.1.0" 343 | evp_bytestokey "^1.0.3" 344 | inherits "^2.0.1" 345 | safe-buffer "^5.0.1" 346 | 347 | browserify-cipher@^1.0.0: 348 | version "1.0.1" 349 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" 350 | integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== 351 | dependencies: 352 | browserify-aes "^1.0.4" 353 | browserify-des "^1.0.0" 354 | evp_bytestokey "^1.0.0" 355 | 356 | browserify-des@^1.0.0: 357 | version "1.0.2" 358 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" 359 | integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== 360 | dependencies: 361 | cipher-base "^1.0.1" 362 | des.js "^1.0.0" 363 | inherits "^2.0.1" 364 | safe-buffer "^5.1.2" 365 | 366 | browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: 367 | version "4.1.0" 368 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" 369 | integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== 370 | dependencies: 371 | bn.js "^5.0.0" 372 | randombytes "^2.0.1" 373 | 374 | browserify-sign@^4.0.0: 375 | version "4.2.1" 376 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" 377 | integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== 378 | dependencies: 379 | bn.js "^5.1.1" 380 | browserify-rsa "^4.0.1" 381 | create-hash "^1.2.0" 382 | create-hmac "^1.1.7" 383 | elliptic "^6.5.3" 384 | inherits "^2.0.4" 385 | parse-asn1 "^5.1.5" 386 | readable-stream "^3.6.0" 387 | safe-buffer "^5.2.0" 388 | 389 | browserify-zlib@^0.2.0: 390 | version "0.2.0" 391 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" 392 | integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== 393 | dependencies: 394 | pako "~1.0.5" 395 | 396 | browserslist@4.16.1: 397 | version "4.16.1" 398 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" 399 | integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== 400 | dependencies: 401 | caniuse-lite "^1.0.30001173" 402 | colorette "^1.2.1" 403 | electron-to-chromium "^1.3.634" 404 | escalade "^3.1.1" 405 | node-releases "^1.1.69" 406 | 407 | buffer-from@^1.0.0: 408 | version "1.1.1" 409 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 410 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 411 | 412 | buffer-xor@^1.0.3: 413 | version "1.0.3" 414 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 415 | integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= 416 | 417 | buffer@5.6.0: 418 | version "5.6.0" 419 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" 420 | integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== 421 | dependencies: 422 | base64-js "^1.0.2" 423 | ieee754 "^1.1.4" 424 | 425 | buffer@^4.3.0: 426 | version "4.9.2" 427 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" 428 | integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== 429 | dependencies: 430 | base64-js "^1.0.2" 431 | ieee754 "^1.1.4" 432 | isarray "^1.0.0" 433 | 434 | buffer@^5.5.0: 435 | version "5.7.1" 436 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 437 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 438 | dependencies: 439 | base64-js "^1.3.1" 440 | ieee754 "^1.1.13" 441 | 442 | builtin-status-codes@^3.0.0: 443 | version "3.0.0" 444 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 445 | integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= 446 | 447 | bytes@3.1.0: 448 | version "3.1.0" 449 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 450 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 451 | 452 | caniuse-lite@^1.0.30001093, caniuse-lite@^1.0.30001173, caniuse-lite@^1.0.30001179: 453 | version "1.0.30001185" 454 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001185.tgz#3482a407d261da04393e2f0d61eefbc53be43b95" 455 | integrity sha512-Fpi4kVNtNvJ15H0F6vwmXtb3tukv3Zg3qhKkOGUq7KJ1J6b9kf4dnNgtEAFXhRsJo0gNj9W60+wBvn0JcTvdTg== 456 | 457 | chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.2: 458 | version "2.4.2" 459 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 460 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 461 | dependencies: 462 | ansi-styles "^3.2.1" 463 | escape-string-regexp "^1.0.5" 464 | supports-color "^5.3.0" 465 | 466 | chalk@4.0.0: 467 | version "4.0.0" 468 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" 469 | integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== 470 | dependencies: 471 | ansi-styles "^4.1.0" 472 | supports-color "^7.1.0" 473 | 474 | chokidar@3.5.1: 475 | version "3.5.1" 476 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 477 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 478 | dependencies: 479 | anymatch "~3.1.1" 480 | braces "~3.0.2" 481 | glob-parent "~5.1.0" 482 | is-binary-path "~2.1.0" 483 | is-glob "~4.0.1" 484 | normalize-path "~3.0.0" 485 | readdirp "~3.5.0" 486 | optionalDependencies: 487 | fsevents "~2.3.1" 488 | 489 | chownr@^1.1.1: 490 | version "1.1.4" 491 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 492 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 493 | 494 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 495 | version "1.0.4" 496 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 497 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 498 | dependencies: 499 | inherits "^2.0.1" 500 | safe-buffer "^5.0.1" 501 | 502 | classnames@2.2.6: 503 | version "2.2.6" 504 | resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" 505 | integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== 506 | 507 | code-point-at@^1.0.0: 508 | version "1.1.0" 509 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 510 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 511 | 512 | color-convert@^1.9.0, color-convert@^1.9.1: 513 | version "1.9.3" 514 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 515 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 516 | dependencies: 517 | color-name "1.1.3" 518 | 519 | color-convert@^2.0.1: 520 | version "2.0.1" 521 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 522 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 523 | dependencies: 524 | color-name "~1.1.4" 525 | 526 | color-name@1.1.3: 527 | version "1.1.3" 528 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 529 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 530 | 531 | color-name@^1.0.0, color-name@~1.1.4: 532 | version "1.1.4" 533 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 534 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 535 | 536 | color-string@^1.5.4: 537 | version "1.5.4" 538 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" 539 | integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== 540 | dependencies: 541 | color-name "^1.0.0" 542 | simple-swizzle "^0.2.2" 543 | 544 | color@^3.1.3: 545 | version "3.1.3" 546 | resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" 547 | integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== 548 | dependencies: 549 | color-convert "^1.9.1" 550 | color-string "^1.5.4" 551 | 552 | colorette@^1.2.1: 553 | version "1.2.1" 554 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" 555 | integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== 556 | 557 | commander@^2.20.0: 558 | version "2.20.3" 559 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 560 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 561 | 562 | commondir@^1.0.1: 563 | version "1.0.1" 564 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 565 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 566 | 567 | console-browserify@^1.1.0: 568 | version "1.2.0" 569 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" 570 | integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== 571 | 572 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 573 | version "1.1.0" 574 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 575 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 576 | 577 | constants-browserify@^1.0.0: 578 | version "1.0.0" 579 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 580 | integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= 581 | 582 | convert-source-map@1.7.0: 583 | version "1.7.0" 584 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 585 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 586 | dependencies: 587 | safe-buffer "~5.1.1" 588 | 589 | core-util-is@~1.0.0: 590 | version "1.0.2" 591 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 592 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 593 | 594 | create-ecdh@^4.0.0: 595 | version "4.0.4" 596 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" 597 | integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== 598 | dependencies: 599 | bn.js "^4.1.0" 600 | elliptic "^6.5.3" 601 | 602 | create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: 603 | version "1.2.0" 604 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 605 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 606 | dependencies: 607 | cipher-base "^1.0.1" 608 | inherits "^2.0.1" 609 | md5.js "^1.3.4" 610 | ripemd160 "^2.0.1" 611 | sha.js "^2.4.0" 612 | 613 | create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: 614 | version "1.1.7" 615 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 616 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 617 | dependencies: 618 | cipher-base "^1.0.3" 619 | create-hash "^1.1.0" 620 | inherits "^2.0.1" 621 | ripemd160 "^2.0.0" 622 | safe-buffer "^5.0.1" 623 | sha.js "^2.4.8" 624 | 625 | cross-fetch@3.0.6: 626 | version "3.0.6" 627 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" 628 | integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== 629 | dependencies: 630 | node-fetch "2.6.1" 631 | 632 | crypto-browserify@3.12.0, crypto-browserify@^3.11.0: 633 | version "3.12.0" 634 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" 635 | integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== 636 | dependencies: 637 | browserify-cipher "^1.0.0" 638 | browserify-sign "^4.0.0" 639 | create-ecdh "^4.0.0" 640 | create-hash "^1.1.0" 641 | create-hmac "^1.1.0" 642 | diffie-hellman "^5.0.0" 643 | inherits "^2.0.1" 644 | pbkdf2 "^3.0.3" 645 | public-encrypt "^4.0.0" 646 | randombytes "^2.0.0" 647 | randomfill "^1.0.3" 648 | 649 | css.escape@1.5.1: 650 | version "1.5.1" 651 | resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" 652 | integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= 653 | 654 | cssnano-preset-simple@1.2.1: 655 | version "1.2.1" 656 | resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.1.tgz#8976013114b1fc4718253d30f21aaed1780fb80e" 657 | integrity sha512-B2KahOIFTV6dw5Ioy9jHshTh/vAYNnUB2enyWRgnAEg3oJBjI/035ExpePaMqS2SwpbH7gCgvQqwpMBH6hTJSw== 658 | dependencies: 659 | caniuse-lite "^1.0.30001093" 660 | postcss "^7.0.32" 661 | 662 | cssnano-preset-simple@1.2.2: 663 | version "1.2.2" 664 | resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.2.tgz#c631bf79ffec7fdfc4069e2f2da3ca67d99d8413" 665 | integrity sha512-gtvrcRSGtP3hA/wS8mFVinFnQdEsEpm3v4I/s/KmNjpdWaThV/4E5EojAzFXxyT5OCSRPLlHR9iQexAqKHlhGQ== 666 | dependencies: 667 | caniuse-lite "^1.0.30001179" 668 | postcss "^7.0.32" 669 | 670 | cssnano-simple@1.2.1: 671 | version "1.2.1" 672 | resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.1.tgz#6de5d9dd75774bc8f31767573410a952c7dd8a12" 673 | integrity sha512-9vOyjw8Dj/T12kIOnXPZ5VnEIo6F3YMaIn0wqJXmn277R58cWpI3AvtdlCBtohX7VAUNYcyk2d0dKcXXkb5I6Q== 674 | dependencies: 675 | cssnano-preset-simple "1.2.1" 676 | postcss "^7.0.32" 677 | 678 | cssnano-simple@1.2.2: 679 | version "1.2.2" 680 | resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.2.tgz#72c2c3970e67123c3b4130894a30dc1050267007" 681 | integrity sha512-4slyYc1w4JhSbhVX5xi9G0aQ42JnRyPg+7l7cqoNyoIDzfWx40Rq3JQZnoAWDu60A4AvKVp9ln/YSUOdhDX68g== 682 | dependencies: 683 | cssnano-preset-simple "1.2.2" 684 | postcss "^7.0.32" 685 | 686 | csstype@^3.0.2: 687 | version "3.0.6" 688 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef" 689 | integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw== 690 | 691 | data-uri-to-buffer@3.0.1: 692 | version "3.0.1" 693 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" 694 | integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== 695 | 696 | debug@4: 697 | version "4.3.1" 698 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 699 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 700 | dependencies: 701 | ms "2.1.2" 702 | 703 | decompress-response@^4.2.0: 704 | version "4.2.1" 705 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" 706 | integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== 707 | dependencies: 708 | mimic-response "^2.0.0" 709 | 710 | decompress-response@^6.0.0: 711 | version "6.0.0" 712 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 713 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 714 | dependencies: 715 | mimic-response "^3.1.0" 716 | 717 | deep-extend@^0.6.0: 718 | version "0.6.0" 719 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 720 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 721 | 722 | delegates@^1.0.0: 723 | version "1.0.0" 724 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 725 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 726 | 727 | depd@~1.1.2: 728 | version "1.1.2" 729 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 730 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 731 | 732 | des.js@^1.0.0: 733 | version "1.0.1" 734 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" 735 | integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== 736 | dependencies: 737 | inherits "^2.0.1" 738 | minimalistic-assert "^1.0.0" 739 | 740 | detect-libc@^1.0.3: 741 | version "1.0.3" 742 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 743 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 744 | 745 | diffie-hellman@^5.0.0: 746 | version "5.0.3" 747 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" 748 | integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== 749 | dependencies: 750 | bn.js "^4.1.0" 751 | miller-rabin "^4.0.0" 752 | randombytes "^2.0.0" 753 | 754 | dom-serializer@1.1.0: 755 | version "1.1.0" 756 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58" 757 | integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ== 758 | dependencies: 759 | domelementtype "^2.0.1" 760 | domhandler "^3.0.0" 761 | entities "^2.0.0" 762 | 763 | dom-serializer@^1.0.1: 764 | version "1.2.0" 765 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" 766 | integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== 767 | dependencies: 768 | domelementtype "^2.0.1" 769 | domhandler "^4.0.0" 770 | entities "^2.0.0" 771 | 772 | domain-browser@^1.1.1: 773 | version "1.2.0" 774 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" 775 | integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== 776 | 777 | domelementtype@^2.0.1, domelementtype@^2.1.0: 778 | version "2.1.0" 779 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" 780 | integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== 781 | 782 | domhandler@3.3.0, domhandler@^3.0.0, domhandler@^3.3.0: 783 | version "3.3.0" 784 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" 785 | integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== 786 | dependencies: 787 | domelementtype "^2.0.1" 788 | 789 | domhandler@^4.0.0: 790 | version "4.0.0" 791 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" 792 | integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== 793 | dependencies: 794 | domelementtype "^2.1.0" 795 | 796 | domutils@2.4.2: 797 | version "2.4.2" 798 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b" 799 | integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA== 800 | dependencies: 801 | dom-serializer "^1.0.1" 802 | domelementtype "^2.0.1" 803 | domhandler "^3.3.0" 804 | 805 | domutils@^2.4.2: 806 | version "2.4.4" 807 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3" 808 | integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA== 809 | dependencies: 810 | dom-serializer "^1.0.1" 811 | domelementtype "^2.0.1" 812 | domhandler "^4.0.0" 813 | 814 | electron-to-chromium@^1.3.634: 815 | version "1.3.657" 816 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.657.tgz#a9c307f2612681245738bb8d36d997cbb568d481" 817 | integrity sha512-/9ROOyvEflEbaZFUeGofD+Tqs/WynbSTbNgNF+/TJJxH1ePD/e6VjZlDJpW3FFFd3nj5l3Hd8ki2vRwy+gyRFw== 818 | 819 | elliptic@^6.5.3: 820 | version "6.5.4" 821 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" 822 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== 823 | dependencies: 824 | bn.js "^4.11.9" 825 | brorand "^1.1.0" 826 | hash.js "^1.0.0" 827 | hmac-drbg "^1.0.1" 828 | inherits "^2.0.4" 829 | minimalistic-assert "^1.0.1" 830 | minimalistic-crypto-utils "^1.0.1" 831 | 832 | emojis-list@^2.0.0: 833 | version "2.1.0" 834 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 835 | integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= 836 | 837 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 838 | version "1.4.4" 839 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 840 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 841 | dependencies: 842 | once "^1.4.0" 843 | 844 | entities@^2.0.0: 845 | version "2.2.0" 846 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" 847 | integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== 848 | 849 | escalade@^3.1.1: 850 | version "3.1.1" 851 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 852 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 853 | 854 | escape-string-regexp@^1.0.5: 855 | version "1.0.5" 856 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 857 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 858 | 859 | esutils@^2.0.2: 860 | version "2.0.3" 861 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 862 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 863 | 864 | etag@1.8.1: 865 | version "1.8.1" 866 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 867 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 868 | 869 | event-target-shim@^5.0.0: 870 | version "5.0.1" 871 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 872 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 873 | 874 | events@^3.0.0: 875 | version "3.2.0" 876 | resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" 877 | integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== 878 | 879 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: 880 | version "1.0.3" 881 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 882 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 883 | dependencies: 884 | md5.js "^1.3.4" 885 | safe-buffer "^5.1.1" 886 | 887 | expand-template@^2.0.3: 888 | version "2.0.3" 889 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 890 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 891 | 892 | fill-range@^7.0.1: 893 | version "7.0.1" 894 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 895 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 896 | dependencies: 897 | to-regex-range "^5.0.1" 898 | 899 | find-cache-dir@3.3.1: 900 | version "3.3.1" 901 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" 902 | integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== 903 | dependencies: 904 | commondir "^1.0.1" 905 | make-dir "^3.0.2" 906 | pkg-dir "^4.1.0" 907 | 908 | find-up@^4.0.0: 909 | version "4.1.0" 910 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 911 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 912 | dependencies: 913 | locate-path "^5.0.0" 914 | path-exists "^4.0.0" 915 | 916 | fs-constants@^1.0.0: 917 | version "1.0.0" 918 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 919 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 920 | 921 | fsevents@~2.3.1: 922 | version "2.3.2" 923 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 924 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 925 | 926 | gauge@~2.7.3: 927 | version "2.7.4" 928 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 929 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 930 | dependencies: 931 | aproba "^1.0.3" 932 | console-control-strings "^1.0.0" 933 | has-unicode "^2.0.0" 934 | object-assign "^4.1.0" 935 | signal-exit "^3.0.0" 936 | string-width "^1.0.1" 937 | strip-ansi "^3.0.1" 938 | wide-align "^1.1.0" 939 | 940 | github-from-package@0.0.0: 941 | version "0.0.0" 942 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 943 | integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= 944 | 945 | glob-parent@~5.1.0: 946 | version "5.1.1" 947 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 948 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 949 | dependencies: 950 | is-glob "^4.0.1" 951 | 952 | glob-to-regexp@^0.4.1: 953 | version "0.4.1" 954 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 955 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 956 | 957 | graceful-fs@^4.1.2: 958 | version "4.2.5" 959 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.5.tgz#bc18864a6c9fc7b303f2e2abdb9155ad178fbe29" 960 | integrity sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw== 961 | 962 | has-flag@^3.0.0: 963 | version "3.0.0" 964 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 965 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 966 | 967 | has-flag@^4.0.0: 968 | version "4.0.0" 969 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 970 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 971 | 972 | has-unicode@^2.0.0: 973 | version "2.0.1" 974 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 975 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 976 | 977 | hash-base@^3.0.0: 978 | version "3.1.0" 979 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" 980 | integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== 981 | dependencies: 982 | inherits "^2.0.4" 983 | readable-stream "^3.6.0" 984 | safe-buffer "^5.2.0" 985 | 986 | hash.js@^1.0.0, hash.js@^1.0.3: 987 | version "1.1.7" 988 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 989 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 990 | dependencies: 991 | inherits "^2.0.3" 992 | minimalistic-assert "^1.0.1" 993 | 994 | he@1.2.0: 995 | version "1.2.0" 996 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 997 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 998 | 999 | hmac-drbg@^1.0.1: 1000 | version "1.0.1" 1001 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 1002 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 1003 | dependencies: 1004 | hash.js "^1.0.3" 1005 | minimalistic-assert "^1.0.0" 1006 | minimalistic-crypto-utils "^1.0.1" 1007 | 1008 | htmlparser2@5.0.1: 1009 | version "5.0.1" 1010 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7" 1011 | integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ== 1012 | dependencies: 1013 | domelementtype "^2.0.1" 1014 | domhandler "^3.3.0" 1015 | domutils "^2.4.2" 1016 | entities "^2.0.0" 1017 | 1018 | http-errors@1.7.3: 1019 | version "1.7.3" 1020 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 1021 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 1022 | dependencies: 1023 | depd "~1.1.2" 1024 | inherits "2.0.4" 1025 | setprototypeof "1.1.1" 1026 | statuses ">= 1.5.0 < 2" 1027 | toidentifier "1.0.0" 1028 | 1029 | https-browserify@^1.0.0: 1030 | version "1.0.0" 1031 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" 1032 | integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= 1033 | 1034 | https-proxy-agent@5.0.0: 1035 | version "5.0.0" 1036 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 1037 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 1038 | dependencies: 1039 | agent-base "6" 1040 | debug "4" 1041 | 1042 | iconv-lite@0.4.24: 1043 | version "0.4.24" 1044 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1045 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1046 | dependencies: 1047 | safer-buffer ">= 2.1.2 < 3" 1048 | 1049 | ieee754@^1.1.13, ieee754@^1.1.4: 1050 | version "1.2.1" 1051 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1052 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1053 | 1054 | inherits@2.0.1: 1055 | version "2.0.1" 1056 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 1057 | integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= 1058 | 1059 | inherits@2.0.3: 1060 | version "2.0.3" 1061 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1062 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1063 | 1064 | inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: 1065 | version "2.0.4" 1066 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1067 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1068 | 1069 | ini@~1.3.0: 1070 | version "1.3.8" 1071 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 1072 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 1073 | 1074 | is-arrayish@^0.3.1: 1075 | version "0.3.2" 1076 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" 1077 | integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== 1078 | 1079 | is-binary-path@~2.1.0: 1080 | version "2.1.0" 1081 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1082 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1083 | dependencies: 1084 | binary-extensions "^2.0.0" 1085 | 1086 | is-extglob@^2.1.1: 1087 | version "2.1.1" 1088 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1089 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1090 | 1091 | is-fullwidth-code-point@^1.0.0: 1092 | version "1.0.0" 1093 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1094 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1095 | dependencies: 1096 | number-is-nan "^1.0.0" 1097 | 1098 | is-fullwidth-code-point@^2.0.0: 1099 | version "2.0.0" 1100 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1101 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1102 | 1103 | is-glob@^4.0.1, is-glob@~4.0.1: 1104 | version "4.0.1" 1105 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1106 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1107 | dependencies: 1108 | is-extglob "^2.1.1" 1109 | 1110 | is-number@^7.0.0: 1111 | version "7.0.0" 1112 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1113 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1114 | 1115 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1116 | version "1.0.0" 1117 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1118 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1119 | 1120 | isobject@^2.0.0: 1121 | version "2.1.0" 1122 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1123 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 1124 | dependencies: 1125 | isarray "1.0.0" 1126 | 1127 | jest-worker@24.9.0: 1128 | version "24.9.0" 1129 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" 1130 | integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== 1131 | dependencies: 1132 | merge-stream "^2.0.0" 1133 | supports-color "^6.1.0" 1134 | 1135 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1136 | version "4.0.0" 1137 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1138 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1139 | 1140 | json5@^1.0.1: 1141 | version "1.0.1" 1142 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" 1143 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 1144 | dependencies: 1145 | minimist "^1.2.0" 1146 | 1147 | line-column@^1.0.2: 1148 | version "1.0.2" 1149 | resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" 1150 | integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= 1151 | dependencies: 1152 | isarray "^1.0.0" 1153 | isobject "^2.0.0" 1154 | 1155 | loader-utils@1.2.3: 1156 | version "1.2.3" 1157 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" 1158 | integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== 1159 | dependencies: 1160 | big.js "^5.2.2" 1161 | emojis-list "^2.0.0" 1162 | json5 "^1.0.1" 1163 | 1164 | locate-path@^5.0.0: 1165 | version "5.0.0" 1166 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1167 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1168 | dependencies: 1169 | p-locate "^4.1.0" 1170 | 1171 | lodash.sortby@^4.7.0: 1172 | version "4.7.0" 1173 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 1174 | integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= 1175 | 1176 | lodash@^4.17.13: 1177 | version "4.17.20" 1178 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 1179 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 1180 | 1181 | loose-envify@^1.1.0, loose-envify@^1.4.0: 1182 | version "1.4.0" 1183 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1184 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1185 | dependencies: 1186 | js-tokens "^3.0.0 || ^4.0.0" 1187 | 1188 | lru-cache@6.0.0, lru-cache@^6.0.0: 1189 | version "6.0.0" 1190 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1191 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1192 | dependencies: 1193 | yallist "^4.0.0" 1194 | 1195 | make-dir@^3.0.2: 1196 | version "3.1.0" 1197 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1198 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1199 | dependencies: 1200 | semver "^6.0.0" 1201 | 1202 | md5.js@^1.3.4: 1203 | version "1.3.5" 1204 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 1205 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 1206 | dependencies: 1207 | hash-base "^3.0.0" 1208 | inherits "^2.0.1" 1209 | safe-buffer "^5.1.2" 1210 | 1211 | merge-stream@^2.0.0: 1212 | version "2.0.0" 1213 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1214 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1215 | 1216 | miller-rabin@^4.0.0: 1217 | version "4.0.1" 1218 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 1219 | integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== 1220 | dependencies: 1221 | bn.js "^4.0.0" 1222 | brorand "^1.0.1" 1223 | 1224 | mimic-response@^2.0.0: 1225 | version "2.1.0" 1226 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" 1227 | integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== 1228 | 1229 | mimic-response@^3.1.0: 1230 | version "3.1.0" 1231 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 1232 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 1233 | 1234 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 1235 | version "1.0.1" 1236 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 1237 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 1238 | 1239 | minimalistic-crypto-utils@^1.0.1: 1240 | version "1.0.1" 1241 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 1242 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 1243 | 1244 | minimist@^1.2.0, minimist@^1.2.3: 1245 | version "1.2.5" 1246 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1247 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1248 | 1249 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 1250 | version "0.5.3" 1251 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 1252 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 1253 | 1254 | ms@2.1.2: 1255 | version "2.1.2" 1256 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1257 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1258 | 1259 | nanoid@^3.1.16: 1260 | version "3.1.20" 1261 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" 1262 | integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== 1263 | 1264 | napi-build-utils@^1.0.1: 1265 | version "1.0.2" 1266 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" 1267 | integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== 1268 | 1269 | native-url@0.3.4: 1270 | version "0.3.4" 1271 | resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.3.4.tgz#29c943172aed86c63cee62c8c04db7f5756661f8" 1272 | integrity sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA== 1273 | dependencies: 1274 | querystring "^0.2.0" 1275 | 1276 | next@latest: 1277 | version "10.0.6" 1278 | resolved "https://registry.yarnpkg.com/next/-/next-10.0.6.tgz#1d33723d714c85f282b9bf6ff59dcae40f9252cb" 1279 | integrity sha512-uM5Yv4Ha9iL6Lbg7Ez36GyJ0YTdRLzXLA9b1REH3rX2Wytw0Ls5qPuFGk4BHSQpQhYx6Z61iA2qPkGl33W4iBg== 1280 | dependencies: 1281 | "@ampproject/toolbox-optimizer" "2.7.1-alpha.0" 1282 | "@babel/runtime" "7.12.5" 1283 | "@hapi/accept" "5.0.1" 1284 | "@next/env" "10.0.6" 1285 | "@next/polyfill-module" "10.0.6" 1286 | "@next/react-dev-overlay" "10.0.6" 1287 | "@next/react-refresh-utils" "10.0.6" 1288 | "@opentelemetry/api" "0.14.0" 1289 | ast-types "0.13.2" 1290 | browserslist "4.16.1" 1291 | buffer "5.6.0" 1292 | caniuse-lite "^1.0.30001179" 1293 | chalk "2.4.2" 1294 | chokidar "3.5.1" 1295 | crypto-browserify "3.12.0" 1296 | cssnano-simple "1.2.2" 1297 | etag "1.8.1" 1298 | find-cache-dir "3.3.1" 1299 | jest-worker "24.9.0" 1300 | native-url "0.3.4" 1301 | node-fetch "2.6.1" 1302 | node-html-parser "1.4.9" 1303 | node-libs-browser "^2.2.1" 1304 | p-limit "3.1.0" 1305 | path-browserify "1.0.1" 1306 | pnp-webpack-plugin "1.6.4" 1307 | postcss "8.1.7" 1308 | process "0.11.10" 1309 | prop-types "15.7.2" 1310 | raw-body "2.4.1" 1311 | react-is "16.13.1" 1312 | react-refresh "0.8.3" 1313 | stream-browserify "3.0.0" 1314 | styled-jsx "3.3.2" 1315 | use-subscription "1.5.1" 1316 | vm-browserify "1.1.2" 1317 | watchpack "2.0.0-beta.13" 1318 | optionalDependencies: 1319 | sharp "0.26.3" 1320 | 1321 | node-abi@^2.7.0: 1322 | version "2.19.3" 1323 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.19.3.tgz#252f5dcab12dad1b5503b2d27eddd4733930282d" 1324 | integrity sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg== 1325 | dependencies: 1326 | semver "^5.4.1" 1327 | 1328 | node-addon-api@^3.0.2: 1329 | version "3.1.0" 1330 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239" 1331 | integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw== 1332 | 1333 | node-fetch@2.6.1: 1334 | version "2.6.1" 1335 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 1336 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 1337 | 1338 | node-html-parser@1.4.9: 1339 | version "1.4.9" 1340 | resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c" 1341 | integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw== 1342 | dependencies: 1343 | he "1.2.0" 1344 | 1345 | node-libs-browser@^2.2.1: 1346 | version "2.2.1" 1347 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" 1348 | integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== 1349 | dependencies: 1350 | assert "^1.1.1" 1351 | browserify-zlib "^0.2.0" 1352 | buffer "^4.3.0" 1353 | console-browserify "^1.1.0" 1354 | constants-browserify "^1.0.0" 1355 | crypto-browserify "^3.11.0" 1356 | domain-browser "^1.1.1" 1357 | events "^3.0.0" 1358 | https-browserify "^1.0.0" 1359 | os-browserify "^0.3.0" 1360 | path-browserify "0.0.1" 1361 | process "^0.11.10" 1362 | punycode "^1.2.4" 1363 | querystring-es3 "^0.2.0" 1364 | readable-stream "^2.3.3" 1365 | stream-browserify "^2.0.1" 1366 | stream-http "^2.7.2" 1367 | string_decoder "^1.0.0" 1368 | timers-browserify "^2.0.4" 1369 | tty-browserify "0.0.0" 1370 | url "^0.11.0" 1371 | util "^0.11.0" 1372 | vm-browserify "^1.0.1" 1373 | 1374 | node-releases@^1.1.69: 1375 | version "1.1.70" 1376 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" 1377 | integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== 1378 | 1379 | noop-logger@^0.1.1: 1380 | version "0.1.1" 1381 | resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" 1382 | integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= 1383 | 1384 | normalize-html-whitespace@1.0.0: 1385 | version "1.0.0" 1386 | resolved "https://registry.yarnpkg.com/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz#5e3c8e192f1b06c3b9eee4b7e7f28854c7601e34" 1387 | integrity sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA== 1388 | 1389 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1390 | version "3.0.0" 1391 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1392 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1393 | 1394 | npmlog@^4.0.1, npmlog@^4.1.2: 1395 | version "4.1.2" 1396 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1397 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 1398 | dependencies: 1399 | are-we-there-yet "~1.1.2" 1400 | console-control-strings "~1.1.0" 1401 | gauge "~2.7.3" 1402 | set-blocking "~2.0.0" 1403 | 1404 | number-is-nan@^1.0.0: 1405 | version "1.0.1" 1406 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1407 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1408 | 1409 | object-assign@^4.1.0, object-assign@^4.1.1: 1410 | version "4.1.1" 1411 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1412 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1413 | 1414 | once@^1.3.1, once@^1.4.0: 1415 | version "1.4.0" 1416 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1417 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1418 | dependencies: 1419 | wrappy "1" 1420 | 1421 | os-browserify@^0.3.0: 1422 | version "0.3.0" 1423 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" 1424 | integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= 1425 | 1426 | p-limit@3.1.0: 1427 | version "3.1.0" 1428 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1429 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1430 | dependencies: 1431 | yocto-queue "^0.1.0" 1432 | 1433 | p-limit@^2.2.0: 1434 | version "2.3.0" 1435 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1436 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1437 | dependencies: 1438 | p-try "^2.0.0" 1439 | 1440 | p-locate@^4.1.0: 1441 | version "4.1.0" 1442 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1443 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1444 | dependencies: 1445 | p-limit "^2.2.0" 1446 | 1447 | p-try@^2.0.0: 1448 | version "2.2.0" 1449 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1450 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1451 | 1452 | pako@~1.0.5: 1453 | version "1.0.11" 1454 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" 1455 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 1456 | 1457 | parse-asn1@^5.0.0, parse-asn1@^5.1.5: 1458 | version "5.1.6" 1459 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" 1460 | integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== 1461 | dependencies: 1462 | asn1.js "^5.2.0" 1463 | browserify-aes "^1.0.0" 1464 | evp_bytestokey "^1.0.0" 1465 | pbkdf2 "^3.0.3" 1466 | safe-buffer "^5.1.1" 1467 | 1468 | path-browserify@0.0.1: 1469 | version "0.0.1" 1470 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" 1471 | integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== 1472 | 1473 | path-browserify@1.0.1: 1474 | version "1.0.1" 1475 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" 1476 | integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== 1477 | 1478 | path-exists@^4.0.0: 1479 | version "4.0.0" 1480 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1481 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1482 | 1483 | pbkdf2@^3.0.3: 1484 | version "3.1.1" 1485 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" 1486 | integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== 1487 | dependencies: 1488 | create-hash "^1.1.2" 1489 | create-hmac "^1.1.4" 1490 | ripemd160 "^2.0.1" 1491 | safe-buffer "^5.0.1" 1492 | sha.js "^2.4.8" 1493 | 1494 | picomatch@^2.0.4, picomatch@^2.2.1: 1495 | version "2.2.2" 1496 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1497 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1498 | 1499 | pkg-dir@^4.1.0: 1500 | version "4.2.0" 1501 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1502 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1503 | dependencies: 1504 | find-up "^4.0.0" 1505 | 1506 | platform@1.3.6: 1507 | version "1.3.6" 1508 | resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" 1509 | integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== 1510 | 1511 | pnp-webpack-plugin@1.6.4: 1512 | version "1.6.4" 1513 | resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" 1514 | integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== 1515 | dependencies: 1516 | ts-pnp "^1.1.6" 1517 | 1518 | postcss-safe-parser@4.0.2: 1519 | version "4.0.2" 1520 | resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" 1521 | integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== 1522 | dependencies: 1523 | postcss "^7.0.26" 1524 | 1525 | postcss@7.0.32: 1526 | version "7.0.32" 1527 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" 1528 | integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== 1529 | dependencies: 1530 | chalk "^2.4.2" 1531 | source-map "^0.6.1" 1532 | supports-color "^6.1.0" 1533 | 1534 | postcss@8.1.7: 1535 | version "8.1.7" 1536 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.7.tgz#ff6a82691bd861f3354fd9b17b2332f88171233f" 1537 | integrity sha512-llCQW1Pz4MOPwbZLmOddGM9eIJ8Bh7SZ2Oj5sxZva77uVaotYDsYTch1WBTNu7fUY0fpWp0fdt7uW40D4sRiiQ== 1538 | dependencies: 1539 | colorette "^1.2.1" 1540 | line-column "^1.0.2" 1541 | nanoid "^3.1.16" 1542 | source-map "^0.6.1" 1543 | 1544 | postcss@^7.0.26, postcss@^7.0.32: 1545 | version "7.0.35" 1546 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" 1547 | integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== 1548 | dependencies: 1549 | chalk "^2.4.2" 1550 | source-map "^0.6.1" 1551 | supports-color "^6.1.0" 1552 | 1553 | prebuild-install@^6.0.0: 1554 | version "6.0.0" 1555 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.0.tgz#669022bcde57c710a869e39c5ca6bf9cd207f316" 1556 | integrity sha512-h2ZJ1PXHKWZpp1caLw0oX9sagVpL2YTk+ZwInQbQ3QqNd4J03O6MpFNmMTJlkfgPENWqe5kP0WjQLqz5OjLfsw== 1557 | dependencies: 1558 | detect-libc "^1.0.3" 1559 | expand-template "^2.0.3" 1560 | github-from-package "0.0.0" 1561 | minimist "^1.2.3" 1562 | mkdirp-classic "^0.5.3" 1563 | napi-build-utils "^1.0.1" 1564 | node-abi "^2.7.0" 1565 | noop-logger "^0.1.1" 1566 | npmlog "^4.0.1" 1567 | pump "^3.0.0" 1568 | rc "^1.2.7" 1569 | simple-get "^3.0.3" 1570 | tar-fs "^2.0.0" 1571 | tunnel-agent "^0.6.0" 1572 | which-pm-runs "^1.0.0" 1573 | 1574 | process-nextick-args@~2.0.0: 1575 | version "2.0.1" 1576 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1577 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1578 | 1579 | process@0.11.10, process@^0.11.10: 1580 | version "0.11.10" 1581 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 1582 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= 1583 | 1584 | prop-types@15.7.2: 1585 | version "15.7.2" 1586 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" 1587 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== 1588 | dependencies: 1589 | loose-envify "^1.4.0" 1590 | object-assign "^4.1.1" 1591 | react-is "^16.8.1" 1592 | 1593 | public-encrypt@^4.0.0: 1594 | version "4.0.3" 1595 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" 1596 | integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== 1597 | dependencies: 1598 | bn.js "^4.1.0" 1599 | browserify-rsa "^4.0.0" 1600 | create-hash "^1.1.0" 1601 | parse-asn1 "^5.0.0" 1602 | randombytes "^2.0.1" 1603 | safe-buffer "^5.1.2" 1604 | 1605 | pump@^3.0.0: 1606 | version "3.0.0" 1607 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1608 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1609 | dependencies: 1610 | end-of-stream "^1.1.0" 1611 | once "^1.3.1" 1612 | 1613 | punycode@1.3.2: 1614 | version "1.3.2" 1615 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1616 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 1617 | 1618 | punycode@^1.2.4: 1619 | version "1.4.1" 1620 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1621 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 1622 | 1623 | punycode@^2.1.0: 1624 | version "2.1.1" 1625 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1626 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1627 | 1628 | querystring-es3@^0.2.0: 1629 | version "0.2.1" 1630 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 1631 | integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= 1632 | 1633 | querystring@0.2.0, querystring@^0.2.0: 1634 | version "0.2.0" 1635 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1636 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 1637 | 1638 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: 1639 | version "2.1.0" 1640 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1641 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1642 | dependencies: 1643 | safe-buffer "^5.1.0" 1644 | 1645 | randomfill@^1.0.3: 1646 | version "1.0.4" 1647 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" 1648 | integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== 1649 | dependencies: 1650 | randombytes "^2.0.5" 1651 | safe-buffer "^5.1.0" 1652 | 1653 | raw-body@2.4.1: 1654 | version "2.4.1" 1655 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" 1656 | integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== 1657 | dependencies: 1658 | bytes "3.1.0" 1659 | http-errors "1.7.3" 1660 | iconv-lite "0.4.24" 1661 | unpipe "1.0.0" 1662 | 1663 | rc@^1.2.7: 1664 | version "1.2.8" 1665 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1666 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1667 | dependencies: 1668 | deep-extend "^0.6.0" 1669 | ini "~1.3.0" 1670 | minimist "^1.2.0" 1671 | strip-json-comments "~2.0.1" 1672 | 1673 | react-dom@17.0.1: 1674 | version "17.0.1" 1675 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" 1676 | integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== 1677 | dependencies: 1678 | loose-envify "^1.1.0" 1679 | object-assign "^4.1.1" 1680 | scheduler "^0.20.1" 1681 | 1682 | react-is@16.13.1, react-is@^16.8.1: 1683 | version "16.13.1" 1684 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1685 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1686 | 1687 | react-refresh@0.8.3: 1688 | version "0.8.3" 1689 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" 1690 | integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== 1691 | 1692 | react@17.0.1: 1693 | version "17.0.1" 1694 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" 1695 | integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== 1696 | dependencies: 1697 | loose-envify "^1.1.0" 1698 | object-assign "^4.1.1" 1699 | 1700 | readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.3, readable-stream@^2.3.6: 1701 | version "2.3.7" 1702 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1703 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1704 | dependencies: 1705 | core-util-is "~1.0.0" 1706 | inherits "~2.0.3" 1707 | isarray "~1.0.0" 1708 | process-nextick-args "~2.0.0" 1709 | safe-buffer "~5.1.1" 1710 | string_decoder "~1.1.1" 1711 | util-deprecate "~1.0.1" 1712 | 1713 | readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: 1714 | version "3.6.0" 1715 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1716 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1717 | dependencies: 1718 | inherits "^2.0.3" 1719 | string_decoder "^1.1.1" 1720 | util-deprecate "^1.0.1" 1721 | 1722 | readdirp@~3.5.0: 1723 | version "3.5.0" 1724 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 1725 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 1726 | dependencies: 1727 | picomatch "^2.2.1" 1728 | 1729 | regenerator-runtime@^0.13.4: 1730 | version "0.13.7" 1731 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" 1732 | integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== 1733 | 1734 | ripemd160@^2.0.0, ripemd160@^2.0.1: 1735 | version "2.0.2" 1736 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 1737 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 1738 | dependencies: 1739 | hash-base "^3.0.0" 1740 | inherits "^2.0.1" 1741 | 1742 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: 1743 | version "5.2.1" 1744 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1745 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1746 | 1747 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1748 | version "5.1.2" 1749 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1750 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1751 | 1752 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: 1753 | version "2.1.2" 1754 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1755 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1756 | 1757 | scheduler@^0.20.1: 1758 | version "0.20.1" 1759 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" 1760 | integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== 1761 | dependencies: 1762 | loose-envify "^1.1.0" 1763 | object-assign "^4.1.1" 1764 | 1765 | semver@^5.4.1: 1766 | version "5.7.1" 1767 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1768 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1769 | 1770 | semver@^6.0.0: 1771 | version "6.3.0" 1772 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1773 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1774 | 1775 | semver@^7.3.2: 1776 | version "7.3.4" 1777 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" 1778 | integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== 1779 | dependencies: 1780 | lru-cache "^6.0.0" 1781 | 1782 | set-blocking@~2.0.0: 1783 | version "2.0.0" 1784 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1785 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1786 | 1787 | setimmediate@^1.0.4: 1788 | version "1.0.5" 1789 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1790 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 1791 | 1792 | setprototypeof@1.1.1: 1793 | version "1.1.1" 1794 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1795 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1796 | 1797 | sha.js@^2.4.0, sha.js@^2.4.8: 1798 | version "2.4.11" 1799 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 1800 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 1801 | dependencies: 1802 | inherits "^2.0.1" 1803 | safe-buffer "^5.0.1" 1804 | 1805 | sharp@0.26.3: 1806 | version "0.26.3" 1807 | resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.26.3.tgz#9de8577a986b22538e6e12ced1f7e8a53f9728de" 1808 | integrity sha512-NdEJ9S6AMr8Px0zgtFo1TJjMK/ROMU92MkDtYn2BBrDjIx3YfH9TUyGdzPC+I/L619GeYQc690Vbaxc5FPCCWg== 1809 | dependencies: 1810 | array-flatten "^3.0.0" 1811 | color "^3.1.3" 1812 | detect-libc "^1.0.3" 1813 | node-addon-api "^3.0.2" 1814 | npmlog "^4.1.2" 1815 | prebuild-install "^6.0.0" 1816 | semver "^7.3.2" 1817 | simple-get "^4.0.0" 1818 | tar-fs "^2.1.1" 1819 | tunnel-agent "^0.6.0" 1820 | 1821 | shell-quote@1.7.2: 1822 | version "1.7.2" 1823 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 1824 | integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 1825 | 1826 | signal-exit@^3.0.0: 1827 | version "3.0.3" 1828 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1829 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1830 | 1831 | simple-concat@^1.0.0: 1832 | version "1.0.1" 1833 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 1834 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 1835 | 1836 | simple-get@^3.0.3: 1837 | version "3.1.0" 1838 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" 1839 | integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== 1840 | dependencies: 1841 | decompress-response "^4.2.0" 1842 | once "^1.3.1" 1843 | simple-concat "^1.0.0" 1844 | 1845 | simple-get@^4.0.0: 1846 | version "4.0.0" 1847 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.0.tgz#73fa628278d21de83dadd5512d2cc1f4872bd675" 1848 | integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ== 1849 | dependencies: 1850 | decompress-response "^6.0.0" 1851 | once "^1.3.1" 1852 | simple-concat "^1.0.0" 1853 | 1854 | simple-swizzle@^0.2.2: 1855 | version "0.2.2" 1856 | resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" 1857 | integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= 1858 | dependencies: 1859 | is-arrayish "^0.3.1" 1860 | 1861 | source-map-support@~0.5.19: 1862 | version "0.5.19" 1863 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1864 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1865 | dependencies: 1866 | buffer-from "^1.0.0" 1867 | source-map "^0.6.0" 1868 | 1869 | source-map@0.7.3, source-map@~0.7.2: 1870 | version "0.7.3" 1871 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 1872 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 1873 | 1874 | source-map@0.8.0-beta.0: 1875 | version "0.8.0-beta.0" 1876 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" 1877 | integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== 1878 | dependencies: 1879 | whatwg-url "^7.0.0" 1880 | 1881 | source-map@^0.6.0, source-map@^0.6.1: 1882 | version "0.6.1" 1883 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1884 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1885 | 1886 | stacktrace-parser@0.1.10: 1887 | version "0.1.10" 1888 | resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" 1889 | integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== 1890 | dependencies: 1891 | type-fest "^0.7.1" 1892 | 1893 | "statuses@>= 1.5.0 < 2": 1894 | version "1.5.0" 1895 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1896 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1897 | 1898 | stream-browserify@3.0.0: 1899 | version "3.0.0" 1900 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" 1901 | integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== 1902 | dependencies: 1903 | inherits "~2.0.4" 1904 | readable-stream "^3.5.0" 1905 | 1906 | stream-browserify@^2.0.1: 1907 | version "2.0.2" 1908 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" 1909 | integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== 1910 | dependencies: 1911 | inherits "~2.0.1" 1912 | readable-stream "^2.0.2" 1913 | 1914 | stream-http@^2.7.2: 1915 | version "2.8.3" 1916 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" 1917 | integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== 1918 | dependencies: 1919 | builtin-status-codes "^3.0.0" 1920 | inherits "^2.0.1" 1921 | readable-stream "^2.3.6" 1922 | to-arraybuffer "^1.0.0" 1923 | xtend "^4.0.0" 1924 | 1925 | string-hash@1.1.3: 1926 | version "1.1.3" 1927 | resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" 1928 | integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= 1929 | 1930 | string-width@^1.0.1: 1931 | version "1.0.2" 1932 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1933 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 1934 | dependencies: 1935 | code-point-at "^1.0.0" 1936 | is-fullwidth-code-point "^1.0.0" 1937 | strip-ansi "^3.0.0" 1938 | 1939 | "string-width@^1.0.2 || 2": 1940 | version "2.1.1" 1941 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1942 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1943 | dependencies: 1944 | is-fullwidth-code-point "^2.0.0" 1945 | strip-ansi "^4.0.0" 1946 | 1947 | string_decoder@^1.0.0, string_decoder@^1.1.1: 1948 | version "1.3.0" 1949 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1950 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1951 | dependencies: 1952 | safe-buffer "~5.2.0" 1953 | 1954 | string_decoder@~1.1.1: 1955 | version "1.1.1" 1956 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1957 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1958 | dependencies: 1959 | safe-buffer "~5.1.0" 1960 | 1961 | strip-ansi@6.0.0: 1962 | version "6.0.0" 1963 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1964 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1965 | dependencies: 1966 | ansi-regex "^5.0.0" 1967 | 1968 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1969 | version "3.0.1" 1970 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1971 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 1972 | dependencies: 1973 | ansi-regex "^2.0.0" 1974 | 1975 | strip-ansi@^4.0.0: 1976 | version "4.0.0" 1977 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1978 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1979 | dependencies: 1980 | ansi-regex "^3.0.0" 1981 | 1982 | strip-json-comments@~2.0.1: 1983 | version "2.0.1" 1984 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1985 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1986 | 1987 | styled-jsx@3.3.2: 1988 | version "3.3.2" 1989 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.2.tgz#2474601a26670a6049fb4d3f94bd91695b3ce018" 1990 | integrity sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g== 1991 | dependencies: 1992 | "@babel/types" "7.8.3" 1993 | babel-plugin-syntax-jsx "6.18.0" 1994 | convert-source-map "1.7.0" 1995 | loader-utils "1.2.3" 1996 | source-map "0.7.3" 1997 | string-hash "1.1.3" 1998 | stylis "3.5.4" 1999 | stylis-rule-sheet "0.0.10" 2000 | 2001 | stylis-rule-sheet@0.0.10: 2002 | version "0.0.10" 2003 | resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" 2004 | integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== 2005 | 2006 | stylis@3.5.4: 2007 | version "3.5.4" 2008 | resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" 2009 | integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== 2010 | 2011 | supports-color@^5.3.0: 2012 | version "5.5.0" 2013 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2014 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2015 | dependencies: 2016 | has-flag "^3.0.0" 2017 | 2018 | supports-color@^6.1.0: 2019 | version "6.1.0" 2020 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 2021 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== 2022 | dependencies: 2023 | has-flag "^3.0.0" 2024 | 2025 | supports-color@^7.1.0: 2026 | version "7.2.0" 2027 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2028 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2029 | dependencies: 2030 | has-flag "^4.0.0" 2031 | 2032 | tar-fs@^2.0.0, tar-fs@^2.1.1: 2033 | version "2.1.1" 2034 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 2035 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 2036 | dependencies: 2037 | chownr "^1.1.1" 2038 | mkdirp-classic "^0.5.2" 2039 | pump "^3.0.0" 2040 | tar-stream "^2.1.4" 2041 | 2042 | tar-stream@^2.1.4: 2043 | version "2.2.0" 2044 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 2045 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 2046 | dependencies: 2047 | bl "^4.0.3" 2048 | end-of-stream "^1.4.1" 2049 | fs-constants "^1.0.0" 2050 | inherits "^2.0.3" 2051 | readable-stream "^3.1.1" 2052 | 2053 | terser@5.5.1: 2054 | version "5.5.1" 2055 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" 2056 | integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== 2057 | dependencies: 2058 | commander "^2.20.0" 2059 | source-map "~0.7.2" 2060 | source-map-support "~0.5.19" 2061 | 2062 | timers-browserify@^2.0.4: 2063 | version "2.0.12" 2064 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" 2065 | integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== 2066 | dependencies: 2067 | setimmediate "^1.0.4" 2068 | 2069 | to-arraybuffer@^1.0.0: 2070 | version "1.0.1" 2071 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 2072 | integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= 2073 | 2074 | to-fast-properties@^2.0.0: 2075 | version "2.0.0" 2076 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2077 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2078 | 2079 | to-regex-range@^5.0.1: 2080 | version "5.0.1" 2081 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2082 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2083 | dependencies: 2084 | is-number "^7.0.0" 2085 | 2086 | toidentifier@1.0.0: 2087 | version "1.0.0" 2088 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 2089 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 2090 | 2091 | tr46@^1.0.1: 2092 | version "1.0.1" 2093 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" 2094 | integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= 2095 | dependencies: 2096 | punycode "^2.1.0" 2097 | 2098 | ts-pnp@^1.1.6: 2099 | version "1.2.0" 2100 | resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" 2101 | integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== 2102 | 2103 | tty-browserify@0.0.0: 2104 | version "0.0.0" 2105 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 2106 | integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= 2107 | 2108 | tunnel-agent@^0.6.0: 2109 | version "0.6.0" 2110 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2111 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 2112 | dependencies: 2113 | safe-buffer "^5.0.1" 2114 | 2115 | type-fest@^0.7.1: 2116 | version "0.7.1" 2117 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" 2118 | integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== 2119 | 2120 | typescript@4.1: 2121 | version "4.1.3" 2122 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" 2123 | integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== 2124 | 2125 | unpipe@1.0.0: 2126 | version "1.0.0" 2127 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2128 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 2129 | 2130 | url@^0.11.0: 2131 | version "0.11.0" 2132 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 2133 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= 2134 | dependencies: 2135 | punycode "1.3.2" 2136 | querystring "0.2.0" 2137 | 2138 | use-subscription@1.5.1: 2139 | version "1.5.1" 2140 | resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" 2141 | integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== 2142 | dependencies: 2143 | object-assign "^4.1.1" 2144 | 2145 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 2146 | version "1.0.2" 2147 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2148 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2149 | 2150 | util@0.10.3: 2151 | version "0.10.3" 2152 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 2153 | integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= 2154 | dependencies: 2155 | inherits "2.0.1" 2156 | 2157 | util@^0.11.0: 2158 | version "0.11.1" 2159 | resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" 2160 | integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== 2161 | dependencies: 2162 | inherits "2.0.3" 2163 | 2164 | vm-browserify@1.1.2, vm-browserify@^1.0.1: 2165 | version "1.1.2" 2166 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" 2167 | integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== 2168 | 2169 | watchpack@2.0.0-beta.13: 2170 | version "2.0.0-beta.13" 2171 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.0-beta.13.tgz#9d9b0c094b8402139333e04eb6194643c8384f55" 2172 | integrity sha512-ZEFq2mx/k5qgQwgi6NOm+2ImICb8ngAkA/rZ6oyXZ7SgPn3pncf+nfhYTCrs3lmHwOxnPtGLTOuFLfpSMh1VMA== 2173 | dependencies: 2174 | glob-to-regexp "^0.4.1" 2175 | graceful-fs "^4.1.2" 2176 | 2177 | webidl-conversions@^4.0.2: 2178 | version "4.0.2" 2179 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" 2180 | integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== 2181 | 2182 | whatwg-url@^7.0.0: 2183 | version "7.1.0" 2184 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" 2185 | integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== 2186 | dependencies: 2187 | lodash.sortby "^4.7.0" 2188 | tr46 "^1.0.1" 2189 | webidl-conversions "^4.0.2" 2190 | 2191 | which-pm-runs@^1.0.0: 2192 | version "1.0.0" 2193 | resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" 2194 | integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= 2195 | 2196 | wide-align@^1.1.0: 2197 | version "1.1.3" 2198 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 2199 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 2200 | dependencies: 2201 | string-width "^1.0.2 || 2" 2202 | 2203 | wrappy@1: 2204 | version "1.0.2" 2205 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2206 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2207 | 2208 | xtend@^4.0.0: 2209 | version "4.0.2" 2210 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 2211 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 2212 | 2213 | yallist@^4.0.0: 2214 | version "4.0.0" 2215 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2216 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2217 | 2218 | yocto-queue@^0.1.0: 2219 | version "0.1.0" 2220 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2221 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2222 | --------------------------------------------------------------------------------