├── .github └── workflows │ └── unit-tests.yml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── assets │ ├── css │ │ └── index.css │ ├── images │ │ └── copy-clipboard.svg │ └── js │ │ └── index.js ├── chapter-1 │ ├── 1.1-is-unique │ │ └── index.html │ ├── 1.2-check-permutation │ │ └── index.html │ ├── 1.3-urlfy │ │ └── index.html │ ├── 1.4-palindrome-permutation │ │ └── index.html │ ├── 1.5-one-away │ │ └── index.html │ ├── 1.6-string-compression │ │ └── index.html │ └── index.html └── index.html ├── index.html ├── package.json ├── solutions └── chapter-1 │ ├── 1.1-is-unique │ ├── is-unique.js │ └── is-unique.test.js │ ├── 1.2-check-permutation │ ├── check-permutation.js │ └── check-permutation.test.js │ ├── 1.3-urlfy │ ├── urify-without-hash-map.js │ ├── urify-without-hash-map.test.js │ ├── urify.js │ └── urify.test.js │ ├── 1.4-palindrome-permutation │ ├── palindrome.js │ └── palindrome.test.js │ ├── 1.5-one-away │ ├── one-away.js │ └── one-away.test.js │ └── 1.6-string-compression │ ├── string-compression-next-array.js │ ├── string-compression-next-array.test.js │ ├── string-compression-next.js │ ├── string-compression-next.test.js │ ├── string-compression-previous.js │ └── string-compression-previous.test.js └── yarn.lock /.github/workflows/unit-tests.yml: -------------------------------------------------------------------------------- 1 | name: 'Testing the application' 2 | 3 | on: 4 | pull_request: 5 | types: 6 | - edited 7 | - opened 8 | - synchronize 9 | # paths: 10 | # - 'src/**.js' 11 | 12 | jobs: 13 | unit-test: 14 | runs-on: ubuntu-latest 15 | 16 | strategy: 17 | matrix: 18 | node-version: [14.x, 16.x, 18.x] 19 | 20 | steps: 21 | - uses: actions/checkout@v3 22 | - uses: actions/setup-node@v3 23 | with: 24 | node-version: ${{ matrix.node-version }} 25 | cache: 'yarn' 26 | - run: yarn install --immutable 27 | - run: yarn test -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Lais Frigério 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cracking The Coding Interview with JS 2 | 3 | Soluções em JavaScript dos exercícios do livro "Cracking the Coding Interview" 6ª edição. 4 | 5 | - Dentro da pasta `solutions`, têm arquivos `.js` para cada exercício. 6 | - Dentro da pasta `solutions`, têm arquivos de testes `.test.js` para cada exercício 7 | - Para cada exercício, pode haver mais de uma solução 8 | 9 | ## Lista de exercícios por Capítulos 10 | 11 | ### Capítulo 1 12 | - [x] [1.1 - Is Unique](./solutions/chapter-1/1.1-is-unique/) 13 | - [x] [1.2 - Check Permutation](./solutions/chapter-1/1.2-check-permutation/) 14 | - [x] [1.3 - URLify](./solutions/chapter-1/1.3-urlfy/) 15 | - [x] [1.4 - Palindrome Permutation](./solutions/chapter-1/1.4-palindrome-permutation/) 16 | - [x] [1.5 - One Away](./solutions/chapter-1/1.5-one-away/) 17 | - [x] [1.6 - String Compression](./solutions/chapter-1/1.6-string-compressiony/) 18 | - [ ] 1.7 - Rotate Matrix 19 | - [ ] 1.8 - Zero Matrix 20 | - [ ] 1.9 - String Rotation 21 | 22 | ... 23 | 24 | ## 🛠️ Tecnologias 25 | 26 | - nodejs `18.12.1` 27 | - jest `^29.5.0` 28 | - yarn `1.22.19` 29 | 30 | ## :gem: Execute os testes 31 | 32 | ``` 33 | yarn install 34 | yarn test 35 | ``` 36 | 37 | ## :woman: Autora 38 | 39 | [@laisfrigerio](https://instagram.com/laisfrigerio/) 40 | 41 | ## 📄 Licença 42 | 43 | Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE.md para obter detalhes 44 | -------------------------------------------------------------------------------- /docs/assets/css/index.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --background: #181818; 3 | --green: #1d887a; 4 | --white: #fff; 5 | --gray-01: #23241f; 6 | --gray-03: #616161; 7 | --gray-04: #5f5f5f; 8 | --gray-05: #989898; 9 | --font-roboto: 'Roboto', sans-serif; 10 | } 11 | 12 | * { 13 | border: 0; 14 | box-sizing: border-box; 15 | margin: 0; 16 | padding: 0; 17 | } 18 | 19 | body { 20 | background-color: var(--background); 21 | height: 100vh; 22 | width: 100%; 23 | } 24 | 25 | .code-highlight, 26 | article { 27 | font-family: var(--font-roboto); 28 | margin: 0 auto; 29 | max-width: 600px; 30 | padding: 0 15px; 31 | position: relative; 32 | } 33 | 34 | .code-highlight { 35 | margin-bottom: -40px; 36 | } 37 | 38 | .code-original { 39 | display: none; 40 | } 41 | 42 | .code-display { 43 | visibility: hidden; 44 | } 45 | 46 | .copy-to-clipboard { 47 | background-image: url("../images/copy-clipboard.svg"); 48 | background-color: var(--gray-04); 49 | background-size: 20px 20px; 50 | background-position: center; 51 | background-repeat: no-repeat; 52 | border-radius: 50%; 53 | cursor: pointer; 54 | height: 35px; 55 | width: 35px; 56 | position: absolute; 57 | right: 25px; 58 | top: 25px; 59 | } 60 | 61 | .copy-to-clipboard-pressed { 62 | background-color: var(--background); 63 | } 64 | 65 | .breadcrumb { 66 | background: var(--gray-01); 67 | border-radius: 10px; 68 | display: flex; 69 | color: var(--gray-03); 70 | font-family: var(--font-roboto); 71 | font-size: 14px; 72 | list-style: none; 73 | margin: 20px 0; 74 | padding: 10px; 75 | } 76 | 77 | .breadcrumb li:last-child { 78 | color: var(--white); 79 | } 80 | 81 | .breadcrumb li, 82 | .breadcrumb li a { 83 | color: var(--gray-03); 84 | text-decoration: none; 85 | } 86 | 87 | .breadcrumb li a:hover { 88 | color: var(--green); 89 | text-decoration: none; 90 | transition: color 1s; 91 | } 92 | 93 | .breadcrumb li { 94 | margin: 0 10px; 95 | position: relative; 96 | } 97 | 98 | .breadcrumb li:before { 99 | content: ">"; 100 | font-size: 10px; 101 | margin-left: -15px; 102 | margin-top: -5px; 103 | padding: 5px; 104 | position: absolute; 105 | } 106 | 107 | article p { 108 | color: var(--gray-04); 109 | line-height: 150%; 110 | margin-bottom: 20px; 111 | } 112 | 113 | article .title-01 { 114 | color: var(--green); 115 | font-size: 24px; 116 | margin-bottom: 20px; 117 | } 118 | 119 | article .title-tip { 120 | color: var(--gray-05); 121 | font-size: 18px; 122 | } 123 | 124 | article .title-03, 125 | article .title-04 { 126 | color: var(--white); 127 | font-size: 16px; 128 | } 129 | 130 | article .title-04 { 131 | margin-bottom: 20px; 132 | } 133 | 134 | article .title-05 { 135 | color: var(--gray-04); 136 | font-weight: 400; 137 | } 138 | 139 | article .title-05 + ul { 140 | margin-top: 10px; 141 | } 142 | 143 | article .title-03 + p { 144 | margin-top: 20px; 145 | } 146 | 147 | article ul { 148 | color: var(--gray-04); 149 | line-height: 150%; 150 | margin: 20px 0 20px 15px; 151 | } 152 | 153 | article ul li a { 154 | color: var(--green); 155 | text-decoration: none; 156 | } 157 | 158 | article ul li a:hover { 159 | text-decoration: underline; 160 | } 161 | 162 | @media screen and (max-width: 450px) { 163 | .copy-to-clipboard { 164 | right: 20px; 165 | } 166 | 167 | .breadcrumb { 168 | font-size: 12px; 169 | } 170 | } -------------------------------------------------------------------------------- /docs/assets/images/copy-clipboard.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | edit-copy 22 | 24 | 49 | 57 | 58 | 60 | 61 | 63 | image/svg+xml 64 | 66 | edit-copy 67 | 68 | 69 | 70 | 75 | 81 | 82 | -------------------------------------------------------------------------------- /docs/assets/js/index.js: -------------------------------------------------------------------------------- 1 | const typingSpeed = 200; 2 | 3 | const sleep = (ms) => { 4 | return new Promise(resolve => setTimeout(resolve, ms)); 5 | } 6 | 7 | const isFirstInteraction = (index) => { 8 | return index === 0 9 | } 10 | 11 | const isEnd = (index, children) => { 12 | return index >= children.length 13 | } 14 | 15 | const isSampleText = (element) => { 16 | return typeof element.outerHTML === 'undefined' 17 | } 18 | 19 | const typing = async (snippetCode, currentElementHTML, text) => { 20 | for (let i = 0; i < text.length; i++) { 21 | currentElementHTML.innerText += text[i] 22 | snippetCode.appendChild(currentElementHTML); 23 | await sleep(50) 24 | } 25 | } 26 | 27 | const renderHTML = async (snippetCode, currentElementHTML) => { 28 | const text = currentElementHTML.innerText 29 | currentElementHTML.innerText = '' 30 | await typing(snippetCode, currentElementHTML, text) 31 | } 32 | 33 | const renderContent = async (snippetCode, element) => { 34 | if (isSampleText(element)) { 35 | snippetCode.appendChild(element); 36 | return 37 | } 38 | 39 | await renderHTML(snippetCode, element) 40 | } 41 | 42 | const saveOriginalCode = (snippetCodeHTML) => { 43 | const parent = snippetCodeHTML.parentElement 44 | const originalCodeHTML = parent.querySelector('.code-original') 45 | originalCodeHTML.innerHTML = snippetCodeHTML.innerHTML 46 | } 47 | 48 | const sroll = (snippetCodeHTML) => { 49 | snippetCodeHTML.scrollTop = snippetCodeHTML.scrollHeight; 50 | } 51 | 52 | const typeCode = async (snippetCodeHTML, childrenHTML, index) => { 53 | if (isFirstInteraction(index)) { 54 | snippetCodeHTML.style.visibility = 'visible' 55 | } 56 | 57 | // if (isEnd(index, childrenHTML)) { 58 | // return 59 | // } 60 | 61 | // if (childrenHTML.hasOwnProperty(index)) { 62 | 63 | // await renderContent(snippetCodeHTML, childrenHTML[index]) 64 | // sroll(snippetCodeHTML) 65 | 66 | // setTimeout(async () => { 67 | // await typeCode(snippetCodeHTML, childrenHTML, ++index) 68 | // }, typingSpeed); 69 | // } 70 | } 71 | 72 | const loadHighlight = (snippetCodeHTML) => { 73 | try { 74 | saveOriginalCode(snippetCodeHTML) 75 | hljs.highlightElement(snippetCodeHTML) 76 | 77 | const childrensHTML = Object.values(snippetCodeHTML.childNodes) 78 | 79 | // snippetCodeHTML.innerHTML = ''; 80 | 81 | let index = 0 82 | 83 | typeCode(snippetCodeHTML, childrensHTML, index) 84 | } catch (error) { 85 | console.log(error) 86 | setTimeout(loadHighlight, 50000); 87 | } 88 | } 89 | 90 | document.querySelectorAll('.code-display').forEach(snippetCode => { 91 | loadHighlight(snippetCode) 92 | }) 93 | 94 | const copyToClipboard = (buttonHTML) => { 95 | const parent = buttonHTML.parentElement 96 | const text = parent.querySelector('.code-original').innerText 97 | navigator.clipboard.writeText(text) 98 | buttonHTML.classList.add('copy-to-clipboard-pressed') 99 | } 100 | 101 | document.querySelectorAll('.copy-to-clipboard').forEach(buttonHTML => { 102 | buttonHTML.addEventListener('click', () => { 103 | copyToClipboard(buttonHTML) 104 | }) 105 | }) 106 | -------------------------------------------------------------------------------- /docs/chapter-1/1.1-is-unique/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Is Unique | Cracking the Coding Interview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 22 | 23 |

Is Unique

24 | 25 |

Implemente um algoritmo que determine se uma string tem apenas caracteres unicos sem o uso de estruturas de dados adicionais.

26 | 27 |

Mas, e se você não pudesse utilizar uma estrutura de dados adicional?

28 | 29 |

Dicas

30 | 33 | 34 |

Solução 1

35 | 36 |
37 |       
38 | /*
39 | * Checking if an input/string has unique values
40 | * without an extra data structure
41 | */
42 | 
43 | const isUniqueWithoutExtraDataStructure = (input) => {
44 |   for (let i = 0; i < input.length; i++) {
45 |     const characterExternal = input[i]
46 |     
47 |     for (let j = (i + 1); j < input.length; j++) {
48 |       const characterInternal = input[j]
49 |       
50 |       if (characterExternal === characterInternal) {
51 |         return false
52 |       }
53 |     }
54 |   }
55 | 
56 |   return true
57 | }
58 |       
59 |       
60 | 61 |
62 | 63 |

Solução 2

64 |
65 |       
66 | /*
67 | * Checking if an input/string has unique values
68 | * with a usage of extra data structure (object).
69 | * With this approach we don't need a extra "for"
70 | * like the previous one example.
71 | */
72 | 
73 | const isUnique = (input) => {
74 |   const tempObject = {}
75 | 
76 |   for (const character of input) {
77 |     
78 |     if (tempObject[character]) {
79 |       return false
80 |     }
81 | 
82 |     tempObject[character] = true
83 |   }
84 | 
85 |   return true
86 | }
87 |       
88 |       
89 | 90 |
91 |
92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /docs/chapter-1/1.2-check-permutation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Check Permutation | Cracking the Coding Interview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 22 | 23 |

Check Permutation

24 | 25 |

Dado duas strings, escreva uma função que decida se uma é permuta da outra.

26 | 27 |

Dicas

28 | 34 | 35 |

Solução 1

36 | 37 |
 38 |       
 39 | /*
 40 |  * This solution sounds more simple, 
 41 |    but the Big O complexity is greater
 42 | 
 43 |   - First, the spread operator is probably 
 44 |     a loop behind the scenes
 45 |   
 46 |   - To sort, we need to loop through the elements, 
 47 |     and depend of the sort algorithm, it can take a 
 48 |     lot of time to complete
 49 | 
 50 |   - Finally, we have to iterate again to 
 51 |     join the array into string
 52 | 
 53 |   Also, we have a extra use of memory space compare 
 54 |   to the checkPermutation function
 55 |  */
 56 | 
 57 | const checkPermutationOrdered = (setence1, setence2) => {
 58 |   if (setence1.length !== setence2.length) {
 59 |     return false
 60 |   }
 61 | 
 62 |   const sentence1Ordered = [...setence1].sort().join('')
 63 |   const sentence2Ordered = [...setence2].sort().join('')
 64 | 
 65 |   return sentence1Ordered === sentence2Ordered
 66 | }
 67 |       
 68 |       
69 | 70 |
71 | 72 |

Solução 2

73 |
 74 |       
 75 | /*
 76 |  * Firstly, Strings with different sizes 
 77 |    are not permutation one for other.
 78 | 
 79 |   If they are the same size, we can check with all 
 80 |   the characters from string 1 exists in the string 2
 81 |  */
 82 | 
 83 | const checkPermutation = (setence1, setence2) => {
 84 |   if (setence1.length !== setence2.length) {
 85 |     return false
 86 |   }
 87 | 
 88 |   for (const character of setence1) {
 89 |     if (!setence2.includes(character)) {
 90 |       return false
 91 |     }
 92 |   }
 93 | 
 94 |   return true
 95 | }
 96 |       
 97 |       
98 | 99 |
100 |
101 | 102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /docs/chapter-1/1.3-urlfy/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | URLfy | Cracking the Coding Interview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 22 | 23 |

URLfy

24 | 25 |

Escreva um método para substituir todos os espaços em uma string por `%20`. Você pode assumir que a string tem espaço suficiente 26 | no final para conter os caracteres adicionais e que a função vai receber o comprimento "verdadeiro" da string.

27 | 28 |

Dicas

29 | 33 | 34 |

Solução 1

35 | 36 |
 37 |       
 38 | const urify = (input, realSize) => {
 39 |   const arrayInput = input.split("")
 40 |   
 41 |   let spaceCount = 0
 42 | 
 43 |   for (let i = 0; i < realSize; i++) {
 44 |     if (arrayInput[i] === ' ') {
 45 |       spaceCount++
 46 |     }
 47 |   }
 48 | 
 49 |   let index = realSize + (spaceCount * 2)
 50 | 
 51 |   if (index === arrayInput.length) {
 52 |     for (let i = realSize - 1; i >= 0; i--) {
 53 |       if (arrayInput[i] === ' ') {
 54 |         arrayInput[index - 1] = '0'
 55 |         arrayInput[index - 2] = '2'
 56 |         arrayInput[index - 3] = '%'
 57 |         index = index - 3
 58 |       } else {
 59 |         arrayInput[index-1] = arrayInput[i]
 60 |         index--
 61 |       }
 62 |     }
 63 |   }
 64 | 
 65 |   return arrayInput.join("")
 66 | }
 67 |       
 68 |       
69 | 70 |
71 | 72 |

Solução 2

73 |
 74 |       
 75 | const spacesAvailable = (characters, trueLength) => {
 76 |   const spaces = []
 77 | 
 78 |   for (let index = 0; index < trueLength; index++) {
 79 |     if (characters[index] === ' ') {
 80 |       spaces.push(index)
 81 |     }
 82 |   }
 83 | 
 84 |   return spaces
 85 | }
 86 | 
 87 | const urify = (input, trueLength) => {
 88 |   const characters = input.split("")
 89 |   
 90 |   const spaces = spacesAvailable(characters, trueLength)
 91 |   const spaceCount = spaces.length
 92 | 
 93 |   const transformedIndex = trueLength + (spaceCount * 2)
 94 | 
 95 |   if (transformedIndex === characters.length) {
 96 |     for (let index = 0; index < spaces.length; index++) {
 97 |       characters[spaces[index]] = '%20'
 98 |     }
 99 | 
100 |     return characters.join("").trim()
101 |   }
102 | 
103 |   return characters.join("")
104 | }
105 |       
106 |       
107 | 108 |
109 |
110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /docs/chapter-1/1.4-palindrome-permutation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Palindrome Permutation | Cracking the Coding Interview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 22 | 23 |

Palindrome Permutation

24 | 25 |

Dado uma string, escreva uma função para checar se a string é uma permutation de um palíndromo.

26 | 27 |

Um palíndromo é uma palavra ou frase ou sentença que permanece igual quando lida de trás para frente.

28 | 29 |

A permutação é um rearranjo das letras.

30 | 31 |

O palíndromo não precisa ser limitado a apenas palavras do dicionário. Exemplo:

32 | 33 |

Dicas

34 | 39 | 40 |

Solução

41 | 42 |
 43 |       
 44 | function isMod (input) {
 45 |   return input % 2 === 0
 46 | }
 47 | 
 48 | function incremet (input) {
 49 |   return input + 1
 50 | }
 51 | 
 52 | function isEmpty (input) {
 53 |   return input === ' '
 54 | }
 55 | 
 56 | function assoc (map, key) {
 57 |   map[key] = 1
 58 | }
 59 | 
 60 | function updateOddQuantity (input, oddQuantity) {
 61 |   if (isMod(input)) {
 62 |     return oddQuantity - 1
 63 |   }
 64 | 
 65 |   return oddQuantity + 1
 66 | }
 67 | 
 68 | function palindrome (input) {
 69 |   let characterHashMap = {}
 70 |   let oddQuantity = 0;
 71 | 
 72 |   for (let i = 0; i < input.length; i++) {
 73 |     const character = input[i].toLowerCase()
 74 | 
 75 |     if (isEmpty(character)) {
 76 |       continue
 77 |     }
 78 | 
 79 |     if (characterHashMap[character]) {
 80 |       characterHashMap[character] = incremet(characterHashMap[character])
 81 |       oddQuantity = updateOddQuantity(characterHashMap[character], oddQuantity)
 82 |       continue
 83 |     }
 84 | 
 85 |     assoc(characterHashMap, character)
 86 |     oddQuantity = incremet(oddQuantity)
 87 |   }
 88 | 
 89 |   return oddQuantity < 2
 90 | }
 91 |       
 92 |       
93 | 94 |
95 |
96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /docs/chapter-1/1.5-one-away/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | One Away | Cracking the Coding Interview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 22 | 23 |

One Away

24 | 25 |

Temos 3 tipos de edições que podem ocorrer em strings:

26 | 27 | 32 | 33 |

Dado duas strings, escreva uma função para checar se elas têm apenas uma edição (ou nenhuma - quando iguais) de diferença.

34 | 35 |

Exemplo:

36 | 37 | 43 | 44 |

Dicas

45 | 49 | 50 |

Solução

51 | 52 |
 53 |       
 54 | function firstStringIsLess(string1, string2) {
 55 |   return (string1.length + 1) === string2.length
 56 | }
 57 | 
 58 | function firstStringIsGreater(string1, string2) {
 59 |   return (string1.length - 1) === string2.length
 60 | }
 61 |   
 62 | function oneEditReplace(string1, string2) {
 63 |   let foundDifferent = false
 64 | 
 65 |   for (let index = 0; index < string1.length; index++) {
 66 |     if (string1[index] !== string2[index]) {
 67 |       if (foundDifferent) {
 68 |         return false
 69 |       }
 70 | 
 71 |       foundDifferent = true
 72 |     }
 73 |   }
 74 | 
 75 |   return true
 76 | }
 77 |   
 78 | function onAddOrRemove(string1, string2) {
 79 |   let index1 = 0
 80 |   let index2 = 0
 81 | 
 82 |   while (index2 < string2.length && index1 < string1.length) {
 83 |     if (string1[index1] !== string2[index2]) {
 84 |       if (index1 !== index2) {
 85 |         return false
 86 |       }
 87 | 
 88 |       index2++
 89 |       continue
 90 |     }
 91 | 
 92 |     index1++
 93 |     index2++
 94 |   }
 95 | 
 96 | 
 97 |   return true
 98 | }
 99 |   
100 | function oneAway(string1, string2) {
101 |   if (string1.length === string2.length) {
102 |     return oneEditReplace(string1, string2)
103 |   }
104 | 
105 |   if (firstStringIsLess(string1, string2)) {
106 |     return onAddOrRemove(string1, string2)
107 |   }
108 | 
109 |   if (firstStringIsGreater(string1, string2)) {
110 |     return onAddOrRemove(string2, string1)
111 |   }
112 | 
113 |   return false
114 | }
115 |       
116 |       
117 | 118 |
119 |
120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /docs/chapter-1/1.6-string-compression/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | String compression | Cracking the Coding Interview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 22 | 23 |

String compression

24 | 25 |

Implemente uma função para executar a compactação de uma string simples usando um contador para os caracteres repetidos.

26 | 27 |

Por exemplo, a string aabcccccaaa deve retornar a2b1c5a3.

28 | 29 |

A compactação deve sempre retornar uma string com tamanho menor do que ao valor da entrada. Se não for, sua função deve retornar a string original.

30 | 31 |

Você pode assumir que a string tem apenas letras maísculas e minúsculas (az-AZ)

32 | 33 |

Dicas

34 | 38 | 39 |

Solução 1:

40 | 41 |

Eu comecei resolvendo o exercício pensando em iterar sob a string e comparar com o anterior.

42 | 43 |

Inicialmente, eu pensei em guardar a soma em uma Hash Table. No final, a lógica de comparar com o anterior ficou mais complexa, se comparada com as demaos soluções.

44 | 45 |

Segue solução:

46 | 47 |
 48 |       
 49 | function stringCompression (input) {
 50 |   const inputSize = input.length
 51 |   const tempObj = {}
 52 | 
 53 |   let result = ""
 54 |   let previous = ""
 55 | 
 56 |   for (let index = 0; index < inputSize; index++) {
 57 |     const currentCharacter = input[index];
 58 |     
 59 |     if (!tempObj[currentCharacter]) {
 60 |       tempObj[currentCharacter] = 1
 61 |     } else {
 62 |       tempObj[currentCharacter]++
 63 |     }
 64 | 
 65 |     if (previous && previous !== currentCharacter) {
 66 |       result = `${result}${previous}${tempObj[previous]}` 
 67 |       tempObj[previous] = 0
 68 |     } 
 69 | 
 70 |     previous = currentCharacter
 71 | 
 72 |     if (index === (inputSize - 1)) {
 73 |       result = `${result}${currentCharacter}${tempObj[currentCharacter]}` 
 74 | 
 75 |       if (result.length > inputSize) {
 76 |         result = input
 77 |       }
 78 |     }
 79 |   }
 80 | 
 81 |   return result
 82 | }
 83 |       
 84 |       
85 | 86 |
87 | 88 |

Solução 2:

89 | 90 |

Já a solução comparando o atual caracter com o próximo é bem mais simples.

91 | 92 |

Toda vez que o próximo caracter é diferente, fazemos a concatenação e resetamos o contador:

93 | 94 |
 95 |       
 96 | function stringCompression (input) {
 97 |   const inputLength = input.length
 98 |   let result = ""
 99 |   let count = 0
100 | 
101 |   for (let index = 0; index < inputLength; index++) {
102 |     const currentCharacter = input[index];
103 |     count++
104 |     
105 |     if (input[index + 1] !== currentCharacter) {
106 |       result = `${result}${currentCharacter}${count}` 
107 |       count = 0
108 |     }
109 |   }
110 | 
111 |   return result.length > inputLength
112 |           ? input
113 |           : result
114 |               
115 | }
116 |       
117 |       
118 | 119 |
120 | 121 |

Solução 3:

122 | 123 |

Como a concatenação de strings pode ficar "cara" computacionalmente falando, 124 | então pode ser melhor adicionar o resultado em um array push() e, no final, 125 | transformá-lo em string join():

126 | 127 |
128 |       
129 | function stringCompression (input) {
130 |   const resultArray = []
131 | 
132 |   let count = 0
133 | 
134 |   for (let index = 0; index < input.length; index++) {
135 |     const currentCharacter = input[index];
136 |     count++
137 |     
138 |     if (input[index + 1] !== currentCharacter) {
139 |     resultArray.push(currentCharacter)
140 |     resultArray.push(count)
141 |     count = 0
142 |     }
143 |   }
144 | 
145 |   const resultStr = resultArray.join("")
146 | 
147 |   return resultStr.length > input.length
148 |           ? input
149 |           : resultStr
150 | }
151 |       
152 |       
153 | 154 |
155 |
156 | 157 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /docs/chapter-1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Indíce Capítulo 1 | Cracking the Coding Interview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 21 | 22 |

Indíce

23 | 31 | 32 |
33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Cracking the Coding Interview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 20 | 21 |

Cracking the Coding Interview

22 | 23 |

Soluções em JavaScript dos exercícios do livro "Cracking the Coding Interview" 6ª edição.

24 | 25 |

Indíce

26 | 27 |

Capítulo 1

28 | 36 |
37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Cracking the Coding Interview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 20 | 21 |

Cracking the Coding Interview

22 | 23 |

Soluções em JavaScript dos exercícios do livro "Cracking the Coding Interview" 6ª edição.

24 | 25 |

Indíce

26 | 27 |

Capítulo 1

28 | 35 |
36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cracking-the-coding-interview-js", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "repository": "git@github.com:laisfrigerio/cracking-the-coding-interview-js.git", 6 | "author": "Lais Frigerio ", 7 | "license": "MIT", 8 | "scripts": { 9 | "test": "jest" 10 | }, 11 | "devDependencies": { 12 | "jest": "^29.5.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.1-is-unique/is-unique.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Checking if an input/string has unique values 3 | * without an extra data structure 4 | */ 5 | 6 | const isUniqueWithoutExtraDataStructure = (input) => { 7 | for (let i = 0; i < input.length; i++) { 8 | const characterExternal = input[i] 9 | 10 | for (let j = (i + 1); j < input.length; j++) { 11 | const characterInternal = input[j] 12 | 13 | if (characterExternal === characterInternal) { 14 | return false 15 | } 16 | } 17 | } 18 | 19 | return true 20 | } 21 | 22 | 23 | /* 24 | * Checking if an input/string has unique values 25 | * with a usage of extra data structure (object). 26 | * With this approach we don't need a extra "for" 27 | * like the previous one example. 28 | */ 29 | 30 | const isUnique = (input) => { 31 | const tempObject = {} 32 | 33 | for (const character of input) { 34 | 35 | if (tempObject[character]) { 36 | return false 37 | } 38 | 39 | tempObject[character] = true 40 | } 41 | 42 | return true 43 | } 44 | 45 | module.exports = { 46 | isUnique, 47 | isUniqueWithoutExtraDataStructure 48 | } 49 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.1-is-unique/is-unique.test.js: -------------------------------------------------------------------------------- 1 | const { 2 | isUnique, 3 | isUniqueWithoutExtraDataStructure 4 | } = require("./is-unique") 5 | 6 | describe("Checking string has unique characteres without the usage of extra data structure", () => { 7 | it("should return true when the given string has unique characteres", () => { 8 | expect(isUniqueWithoutExtraDataStructure("car")).toBe(true) 9 | expect(isUniqueWithoutExtraDataStructure("setup")).toBe(true) 10 | expect(isUniqueWithoutExtraDataStructure("keyword")).toBe(true) 11 | expect(isUniqueWithoutExtraDataStructure("mouse")).toBe(true) 12 | expect(isUniqueWithoutExtraDataStructure("sunday")).toBe(true) 13 | expect(isUniqueWithoutExtraDataStructure("monday")).toBe(true) 14 | }) 15 | 16 | it("should return false when the given string doesn't have unique characteres", () => { 17 | expect(isUniqueWithoutExtraDataStructure("banana")).toBe(false) 18 | expect(isUniqueWithoutExtraDataStructure("apple")).toBe(false) 19 | expect(isUniqueWithoutExtraDataStructure("allow")).toBe(false) 20 | expect(isUniqueWithoutExtraDataStructure("javascript")).toBe(false) 21 | expect(isUniqueWithoutExtraDataStructure("php")).toBe(false) 22 | expect(isUniqueWithoutExtraDataStructure("java")).toBe(false) 23 | }) 24 | }) 25 | 26 | describe("Checking string has unique characteres with a usage of extra data structure", () => { 27 | it("should return true when the given string has unique characteres", () => { 28 | expect(isUnique("car")).toBe(true) 29 | expect(isUnique("setup")).toBe(true) 30 | expect(isUnique("keyword")).toBe(true) 31 | expect(isUnique("mouse")).toBe(true) 32 | expect(isUnique("sunday")).toBe(true) 33 | expect(isUnique("monday")).toBe(true) 34 | }) 35 | 36 | it("should return false when the given string doesn't have unique characteres", () => { 37 | expect(isUnique("banana")).toBe(false) 38 | expect(isUnique("apple")).toBe(false) 39 | expect(isUnique("allow")).toBe(false) 40 | expect(isUnique("javascript")).toBe(false) 41 | expect(isUnique("php")).toBe(false) 42 | expect(isUnique("java")).toBe(false) 43 | }) 44 | }) 45 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.2-check-permutation/check-permutation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This solution sounds more simple, but the Big O complexity is greater 3 | 4 | - First, the spread operator is probably a loop behind the scenes 5 | 6 | - To sort, we need to loop through the elements, 7 | and depend of the sort algorithm, it can take a lot of time to complete 8 | 9 | - Finally, we have to iterate again to join the array into string 10 | 11 | Also, we have a extra use of memory space compare to the checkPermutation function 12 | */ 13 | const checkPermutationOrdered = (setence1, setence2) => { 14 | if (setence1.length !== setence2.length) { 15 | return false 16 | } 17 | 18 | const sentence1Ordered = [...setence1].sort().join('') 19 | const sentence2Ordered = [...setence2].sort().join('') 20 | 21 | return sentence1Ordered === sentence2Ordered 22 | } 23 | 24 | /* 25 | * Firstly, Strings with different sizes are not permutation one for other. 26 | 27 | If they are the same size, we can check with all the characters 28 | from string 1 exists in the string 2 29 | */ 30 | const checkPermutation = (setence1, setence2) => { 31 | if (setence1.length !== setence2.length) { 32 | return false 33 | } 34 | 35 | for (const character of setence1) { 36 | if (!setence2.includes(character)) { 37 | return false 38 | } 39 | } 40 | 41 | return true 42 | } 43 | 44 | module.exports = { 45 | checkPermutation, 46 | checkPermutationOrdered 47 | } 48 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.2-check-permutation/check-permutation.test.js: -------------------------------------------------------------------------------- 1 | const { 2 | checkPermutation, 3 | checkPermutationOrdered 4 | } = require("./check-permutation") 5 | 6 | describe("checking for permutations between strings", () => { 7 | it("should return false because the strings has different lenghts", () => { 8 | expect(checkPermutation("banana", "apple")).toBe(false) 9 | expect(checkPermutation("ABC", "DEF")).toBe(false) 10 | expect(checkPermutation("ABC", "ADC")).toBe(false) 11 | }) 12 | 13 | 14 | it("should return true because one string is permutation the other", () => { 15 | expect(checkPermutation("god", "dog")).toBe(true) 16 | expect(checkPermutation("ABC", "CBA")).toBe(true) 17 | expect(checkPermutation("BAC", "ABC")).toBe(true) 18 | }) 19 | }) 20 | 21 | describe("checking for permutations between strings ordering them", () => { 22 | it("should return false because the strings has different lenghts", () => { 23 | expect(checkPermutationOrdered("banana", "apple")).toBe(false) 24 | expect(checkPermutationOrdered("ABC", "DEF")).toBe(false) 25 | expect(checkPermutationOrdered("ABC", "ADC")).toBe(false) 26 | }) 27 | 28 | 29 | it("should return true because one string is permutation the other", () => { 30 | expect(checkPermutationOrdered("god", "dog")).toBe(true) 31 | expect(checkPermutationOrdered("ABC", "CBA")).toBe(true) 32 | expect(checkPermutationOrdered("BAC", "ABC")).toBe(true) 33 | }) 34 | }) 35 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.3-urlfy/urify-without-hash-map.js: -------------------------------------------------------------------------------- 1 | const urify = (input, realSize) => { 2 | const arrayInput = input.split("") 3 | 4 | let spaceCount = 0 5 | 6 | for (let i = 0; i < realSize; i++) { 7 | if (arrayInput[i] === ' ') { 8 | spaceCount++ 9 | } 10 | } 11 | 12 | let index = realSize + (spaceCount * 2) 13 | 14 | if (index === arrayInput.length) { 15 | for (let i = realSize - 1; i >= 0; i--) { 16 | if (arrayInput[i] === ' ') { 17 | arrayInput[index - 1] = '0' 18 | arrayInput[index - 2] = '2' 19 | arrayInput[index - 3] = '%' 20 | index = index - 3 21 | } else { 22 | arrayInput[index-1] = arrayInput[i] 23 | index-- 24 | } 25 | } 26 | } 27 | 28 | return arrayInput.join("") 29 | } 30 | 31 | module.exports = { 32 | urify 33 | } 34 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.3-urlfy/urify-without-hash-map.test.js: -------------------------------------------------------------------------------- 1 | const { urify } = require("./urify-without-hash-map") 2 | 3 | describe("replacing empty spaces", () => { 4 | it("should replace the empty space with %20", () => { 5 | expect(urify("ban ana ", 7)).toBe("ban%20ana") 6 | expect(urify("Hi, Ana. How are you? ", 21)).toBe("Hi,%20Ana.%20How%20are%20you?") 7 | expect(urify("the house is green ", 18)).toBe("the%20house%20is%20green") 8 | }) 9 | 10 | it("should noy replace the empty space with %20", () => { 11 | expect(urify("ban ana ", 7)).toBe("ban ana ") 12 | expect(urify("Hi, Ana. How are you?", 21)).toBe("Hi, Ana. How are you?") 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.3-urlfy/urify.js: -------------------------------------------------------------------------------- 1 | const spacesAvailable = (characters, trueLength) => { 2 | const spaces = [] 3 | 4 | for (let index = 0; index < trueLength; index++) { 5 | if (characters[index] === ' ') { 6 | spaces.push(index) 7 | } 8 | } 9 | 10 | return spaces 11 | } 12 | 13 | const urify = (input, trueLength) => { 14 | const characters = input.split("") 15 | 16 | const spaces = spacesAvailable(characters, trueLength) 17 | const spaceCount = spaces.length 18 | 19 | const transformedIndex = trueLength + (spaceCount * 2) 20 | 21 | if (transformedIndex === characters.length) { 22 | for (let index = 0; index < spaces.length; index++) { 23 | characters[spaces[index]] = '%20' 24 | } 25 | 26 | return characters.join("").trim() 27 | } 28 | 29 | return characters.join("") 30 | } 31 | 32 | module.exports = { 33 | urify 34 | } 35 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.3-urlfy/urify.test.js: -------------------------------------------------------------------------------- 1 | const { urify } = require("./urify") 2 | 3 | describe("replacing empty spaces", () => { 4 | it("should replace the empty space with %20", () => { 5 | expect(urify("ban ana ", 7)).toBe("ban%20ana") 6 | expect(urify("Hi, Ana. How are you? ", 21)).toBe("Hi,%20Ana.%20How%20are%20you?") 7 | expect(urify("the house is green ", 18)).toBe("the%20house%20is%20green") 8 | }) 9 | 10 | it("should noy replace the empty space with %20", () => { 11 | expect(urify("ban ana ", 7)).toBe("ban ana ") 12 | expect(urify("Hi, Ana. How are you?", 21)).toBe("Hi, Ana. How are you?") 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.4-palindrome-permutation/palindrome.js: -------------------------------------------------------------------------------- 1 | function isMod (input) { 2 | return input % 2 === 0 3 | } 4 | 5 | function incremet (input) { 6 | return input + 1 7 | } 8 | 9 | function isEmpty (input) { 10 | return input === ' ' 11 | } 12 | 13 | function assoc (map, key) { 14 | map[key] = 1 15 | } 16 | 17 | function updateOddQuantity (input, oddQuantity) { 18 | if (isMod(input)) { 19 | return oddQuantity - 1 20 | } 21 | 22 | return oddQuantity + 1 23 | } 24 | 25 | function palindrome (input) { 26 | let characterHashMap = {} 27 | let oddQuantity = 0; 28 | 29 | for (let i = 0; i < input.length; i++) { 30 | const character = input[i].toLowerCase() 31 | 32 | if (isEmpty(character)) { 33 | continue 34 | } 35 | 36 | if (characterHashMap[character]) { 37 | characterHashMap[character] = incremet(characterHashMap[character]) 38 | oddQuantity = updateOddQuantity(characterHashMap[character], oddQuantity) 39 | continue 40 | } 41 | 42 | assoc(characterHashMap, character) 43 | oddQuantity = incremet(oddQuantity) 44 | } 45 | 46 | return oddQuantity < 2 47 | } 48 | 49 | module.exports = { 50 | palindrome 51 | } 52 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.4-palindrome-permutation/palindrome.test.js: -------------------------------------------------------------------------------- 1 | const { 2 | palindrome 3 | } = require('./palindrome') 4 | 5 | test('Checking is a palindrome permutation', () => { 6 | expect(palindrome('Tact Coa')).toBe(true) 7 | expect(palindrome('civic')).toBe(true) 8 | expect(palindrome('ivicc')).toBe(true) 9 | expect(palindrome('aabbcadad')).toBe(true) 10 | expect(palindrome('ttpkkp')).toBe(true) 11 | expect(palindrome('civil')).toBe(false) 12 | expect(palindrome('livci')).toBe(false) 13 | }) 14 | 15 | test('Checking isn\'t a palindrome permutation', () => { 16 | expect(palindrome('civil')).toBe(false) 17 | expect(palindrome('livci')).toBe(false) 18 | }) 19 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.5-one-away/one-away.js: -------------------------------------------------------------------------------- 1 | function firstStringIsLess(string1, string2) { 2 | return (string1.length + 1) === string2.length 3 | } 4 | 5 | function firstStringIsGreater(string1, string2) { 6 | return (string1.length - 1) === string2.length 7 | } 8 | 9 | function oneEditReplace(string1, string2) { 10 | let foundDifferent = false 11 | 12 | for (let index = 0; index < string1.length; index++) { 13 | if (string1[index] !== string2[index]) { 14 | if (foundDifferent) { 15 | return false 16 | } 17 | 18 | foundDifferent = true 19 | } 20 | } 21 | 22 | return true 23 | } 24 | 25 | function onAddOrRemove(string1, string2) { 26 | let index1 = 0 27 | let index2 = 0 28 | 29 | while (index2 < string2.length && index1 < string1.length) { 30 | if (string1[index1] !== string2[index2]) { 31 | if (index1 !== index2) { 32 | return false 33 | } 34 | 35 | index2++ 36 | continue 37 | } 38 | 39 | index1++ 40 | index2++ 41 | } 42 | 43 | 44 | return true 45 | } 46 | 47 | function oneAway(string1, string2) { 48 | if (string1.length === string2.length) { 49 | return oneEditReplace(string1, string2) 50 | } 51 | 52 | if (firstStringIsLess(string1, string2)) { 53 | return onAddOrRemove(string1, string2) 54 | } 55 | 56 | if (firstStringIsGreater(string1, string2)) { 57 | return onAddOrRemove(string2, string1) 58 | } 59 | 60 | return false 61 | } 62 | 63 | module.exports = { 64 | oneAway 65 | } 66 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.5-one-away/one-away.test.js: -------------------------------------------------------------------------------- 1 | const { 2 | oneAway 3 | } = require('./one-away') 4 | 5 | test('Checking if is one edit only', () => { 6 | expect(oneAway('pale', 'ple')).toBe(true) 7 | expect(oneAway('pales', 'pale')).toBe(true) 8 | expect(oneAway('pale', 'bale')).toBe(true) 9 | expect(oneAway('bale', 'bake')).toBe(true) 10 | expect(oneAway('person', 'persona')).toBe(true) 11 | 12 | }) 13 | 14 | test('Checking if is more than one edit only', () => { 15 | expect(oneAway('person', 'personas')).toBe(false) 16 | expect(oneAway('pale', 'bake')).toBe(false) 17 | expect(oneAway('person', 'curson')).toBe(false) 18 | expect(oneAway('person', 'pursoni')).toBe(false) 19 | }) 20 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.6-string-compression/string-compression-next-array.js: -------------------------------------------------------------------------------- 1 | function stringCompression (input) { 2 | const resultArray = [] 3 | 4 | let count = 0 5 | 6 | for (let index = 0; index < input.length; index++) { 7 | const currentCharacter = input[index]; 8 | count++ 9 | 10 | if (input[index + 1] !== currentCharacter) { 11 | resultArray.push(currentCharacter) 12 | resultArray.push(count) 13 | count = 0 14 | } 15 | } 16 | 17 | const resultStr = resultArray.join("") 18 | 19 | return resultStr.length > input.length 20 | ? input 21 | : resultStr 22 | } 23 | 24 | module.exports = { 25 | stringCompression 26 | } 27 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.6-string-compression/string-compression-next-array.test.js: -------------------------------------------------------------------------------- 1 | const { 2 | stringCompression 3 | } = require('./string-compression-next-array') 4 | 5 | test('When is possible to make the string compression', () => { 6 | expect(stringCompression('aabcccccaaa')).toBe('a2b1c5a3') 7 | expect(stringCompression('aabcccccaaaddeeeeiiioooooo')).toBe('a2b1c5a3d2e4i3o6') 8 | }) 9 | 10 | test('When isn\'t possible to make the string compression', () => { 11 | expect(stringCompression('abcde')).toBe('abcde') 12 | }) 13 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.6-string-compression/string-compression-next.js: -------------------------------------------------------------------------------- 1 | function stringCompression (input) { 2 | const inputLength = input.length 3 | let result = "" 4 | let count = 0 5 | 6 | for (let index = 0; index < inputLength; index++) { 7 | const currentCharacter = input[index]; 8 | count++ 9 | 10 | if (input[index + 1] !== currentCharacter) { 11 | result = `${result}${currentCharacter}${count}` 12 | count = 0 13 | } 14 | } 15 | 16 | return result.length > inputLength 17 | ? input 18 | : result 19 | 20 | } 21 | 22 | module.exports = { 23 | stringCompression 24 | } 25 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.6-string-compression/string-compression-next.test.js: -------------------------------------------------------------------------------- 1 | const { 2 | stringCompression 3 | } = require('./string-compression-next') 4 | 5 | test('When is possible to make the string compression', () => { 6 | expect(stringCompression('aabcccccaaa')).toBe('a2b1c5a3') 7 | expect(stringCompression('aabcccccaaaddeeeeiiioooooo')).toBe('a2b1c5a3d2e4i3o6') 8 | }) 9 | 10 | test('When isn\'t possible to make the string compression', () => { 11 | expect(stringCompression('abcde')).toBe('abcde') 12 | }) 13 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.6-string-compression/string-compression-previous.js: -------------------------------------------------------------------------------- 1 | function stringCompression (input) { 2 | const inputSize = input.length 3 | const tempObj = {} 4 | 5 | let result = "" 6 | let previous = "" 7 | 8 | for (let index = 0; index < inputSize; index++) { 9 | const currentCharacter = input[index]; 10 | 11 | if (!tempObj[currentCharacter]) { 12 | tempObj[currentCharacter] = 1 13 | } else { 14 | tempObj[currentCharacter]++ 15 | } 16 | 17 | if (previous && previous !== currentCharacter) { 18 | result = `${result}${previous}${tempObj[previous]}` 19 | tempObj[previous] = 0 20 | } 21 | 22 | previous = currentCharacter 23 | 24 | if (index === (inputSize - 1)) { 25 | result = `${result}${currentCharacter}${tempObj[currentCharacter]}` 26 | 27 | if (result.length > inputSize) { 28 | result = input 29 | } 30 | } 31 | } 32 | 33 | return result 34 | } 35 | 36 | module.exports = { 37 | stringCompression 38 | } 39 | -------------------------------------------------------------------------------- /solutions/chapter-1/1.6-string-compression/string-compression-previous.test.js: -------------------------------------------------------------------------------- 1 | const { 2 | stringCompression 3 | } = require('./string-compression-previous') 4 | 5 | test('When is possible to make the string compression', () => { 6 | expect(stringCompression('aabcccccaaa')).toBe('a2b1c5a3') 7 | expect(stringCompression('aabcccccaaaddeeeeiiioooooo')).toBe('a2b1c5a3d2e4i3o6') 8 | }) 9 | 10 | test('When isn\'t possible to make the string compression', () => { 11 | expect(stringCompression('abcde')).toBe('abcde') 12 | }) 13 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.2.0": 6 | version "2.2.1" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" 8 | integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.3.0" 11 | "@jridgewell/trace-mapping" "^0.3.9" 12 | 13 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.5": 14 | version "7.22.5" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" 16 | integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== 17 | dependencies: 18 | "@babel/highlight" "^7.22.5" 19 | 20 | "@babel/compat-data@^7.22.5": 21 | version "7.22.5" 22 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.5.tgz#b1f6c86a02d85d2dd3368a2b67c09add8cd0c255" 23 | integrity sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA== 24 | 25 | "@babel/core@^7.11.6", "@babel/core@^7.12.3": 26 | version "7.22.5" 27 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89" 28 | integrity sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg== 29 | dependencies: 30 | "@ampproject/remapping" "^2.2.0" 31 | "@babel/code-frame" "^7.22.5" 32 | "@babel/generator" "^7.22.5" 33 | "@babel/helper-compilation-targets" "^7.22.5" 34 | "@babel/helper-module-transforms" "^7.22.5" 35 | "@babel/helpers" "^7.22.5" 36 | "@babel/parser" "^7.22.5" 37 | "@babel/template" "^7.22.5" 38 | "@babel/traverse" "^7.22.5" 39 | "@babel/types" "^7.22.5" 40 | convert-source-map "^1.7.0" 41 | debug "^4.1.0" 42 | gensync "^1.0.0-beta.2" 43 | json5 "^2.2.2" 44 | semver "^6.3.0" 45 | 46 | "@babel/generator@^7.22.5", "@babel/generator@^7.7.2": 47 | version "7.22.5" 48 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.5.tgz#1e7bf768688acfb05cf30b2369ef855e82d984f7" 49 | integrity sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA== 50 | dependencies: 51 | "@babel/types" "^7.22.5" 52 | "@jridgewell/gen-mapping" "^0.3.2" 53 | "@jridgewell/trace-mapping" "^0.3.17" 54 | jsesc "^2.5.1" 55 | 56 | "@babel/helper-compilation-targets@^7.22.5": 57 | version "7.22.5" 58 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz#fc7319fc54c5e2fa14b2909cf3c5fd3046813e02" 59 | integrity sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw== 60 | dependencies: 61 | "@babel/compat-data" "^7.22.5" 62 | "@babel/helper-validator-option" "^7.22.5" 63 | browserslist "^4.21.3" 64 | lru-cache "^5.1.1" 65 | semver "^6.3.0" 66 | 67 | "@babel/helper-environment-visitor@^7.22.5": 68 | version "7.22.5" 69 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" 70 | integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== 71 | 72 | "@babel/helper-function-name@^7.22.5": 73 | version "7.22.5" 74 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" 75 | integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== 76 | dependencies: 77 | "@babel/template" "^7.22.5" 78 | "@babel/types" "^7.22.5" 79 | 80 | "@babel/helper-hoist-variables@^7.22.5": 81 | version "7.22.5" 82 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" 83 | integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== 84 | dependencies: 85 | "@babel/types" "^7.22.5" 86 | 87 | "@babel/helper-module-imports@^7.22.5": 88 | version "7.22.5" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" 90 | integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== 91 | dependencies: 92 | "@babel/types" "^7.22.5" 93 | 94 | "@babel/helper-module-transforms@^7.22.5": 95 | version "7.22.5" 96 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz#0f65daa0716961b6e96b164034e737f60a80d2ef" 97 | integrity sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw== 98 | dependencies: 99 | "@babel/helper-environment-visitor" "^7.22.5" 100 | "@babel/helper-module-imports" "^7.22.5" 101 | "@babel/helper-simple-access" "^7.22.5" 102 | "@babel/helper-split-export-declaration" "^7.22.5" 103 | "@babel/helper-validator-identifier" "^7.22.5" 104 | "@babel/template" "^7.22.5" 105 | "@babel/traverse" "^7.22.5" 106 | "@babel/types" "^7.22.5" 107 | 108 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": 109 | version "7.22.5" 110 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" 111 | integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== 112 | 113 | "@babel/helper-simple-access@^7.22.5": 114 | version "7.22.5" 115 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" 116 | integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== 117 | dependencies: 118 | "@babel/types" "^7.22.5" 119 | 120 | "@babel/helper-split-export-declaration@^7.22.5": 121 | version "7.22.5" 122 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz#88cf11050edb95ed08d596f7a044462189127a08" 123 | integrity sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ== 124 | dependencies: 125 | "@babel/types" "^7.22.5" 126 | 127 | "@babel/helper-string-parser@^7.22.5": 128 | version "7.22.5" 129 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" 130 | integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== 131 | 132 | "@babel/helper-validator-identifier@^7.22.5": 133 | version "7.22.5" 134 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" 135 | integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== 136 | 137 | "@babel/helper-validator-option@^7.22.5": 138 | version "7.22.5" 139 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" 140 | integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== 141 | 142 | "@babel/helpers@^7.22.5": 143 | version "7.22.5" 144 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.5.tgz#74bb4373eb390d1ceed74a15ef97767e63120820" 145 | integrity sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q== 146 | dependencies: 147 | "@babel/template" "^7.22.5" 148 | "@babel/traverse" "^7.22.5" 149 | "@babel/types" "^7.22.5" 150 | 151 | "@babel/highlight@^7.22.5": 152 | version "7.22.5" 153 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" 154 | integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== 155 | dependencies: 156 | "@babel/helper-validator-identifier" "^7.22.5" 157 | chalk "^2.0.0" 158 | js-tokens "^4.0.0" 159 | 160 | "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5": 161 | version "7.22.5" 162 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea" 163 | integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q== 164 | 165 | "@babel/plugin-syntax-async-generators@^7.8.4": 166 | version "7.8.4" 167 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 168 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 169 | dependencies: 170 | "@babel/helper-plugin-utils" "^7.8.0" 171 | 172 | "@babel/plugin-syntax-bigint@^7.8.3": 173 | version "7.8.3" 174 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" 175 | integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== 176 | dependencies: 177 | "@babel/helper-plugin-utils" "^7.8.0" 178 | 179 | "@babel/plugin-syntax-class-properties@^7.8.3": 180 | version "7.12.13" 181 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" 182 | integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== 183 | dependencies: 184 | "@babel/helper-plugin-utils" "^7.12.13" 185 | 186 | "@babel/plugin-syntax-import-meta@^7.8.3": 187 | version "7.10.4" 188 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" 189 | integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== 190 | dependencies: 191 | "@babel/helper-plugin-utils" "^7.10.4" 192 | 193 | "@babel/plugin-syntax-json-strings@^7.8.3": 194 | version "7.8.3" 195 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 196 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 197 | dependencies: 198 | "@babel/helper-plugin-utils" "^7.8.0" 199 | 200 | "@babel/plugin-syntax-jsx@^7.7.2": 201 | version "7.22.5" 202 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" 203 | integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== 204 | dependencies: 205 | "@babel/helper-plugin-utils" "^7.22.5" 206 | 207 | "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": 208 | version "7.10.4" 209 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" 210 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== 211 | dependencies: 212 | "@babel/helper-plugin-utils" "^7.10.4" 213 | 214 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 215 | version "7.8.3" 216 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 217 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 218 | dependencies: 219 | "@babel/helper-plugin-utils" "^7.8.0" 220 | 221 | "@babel/plugin-syntax-numeric-separator@^7.8.3": 222 | version "7.10.4" 223 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" 224 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== 225 | dependencies: 226 | "@babel/helper-plugin-utils" "^7.10.4" 227 | 228 | "@babel/plugin-syntax-object-rest-spread@^7.8.3": 229 | version "7.8.3" 230 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 231 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 232 | dependencies: 233 | "@babel/helper-plugin-utils" "^7.8.0" 234 | 235 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 236 | version "7.8.3" 237 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 238 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 239 | dependencies: 240 | "@babel/helper-plugin-utils" "^7.8.0" 241 | 242 | "@babel/plugin-syntax-optional-chaining@^7.8.3": 243 | version "7.8.3" 244 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 245 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 246 | dependencies: 247 | "@babel/helper-plugin-utils" "^7.8.0" 248 | 249 | "@babel/plugin-syntax-top-level-await@^7.8.3": 250 | version "7.14.5" 251 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" 252 | integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== 253 | dependencies: 254 | "@babel/helper-plugin-utils" "^7.14.5" 255 | 256 | "@babel/plugin-syntax-typescript@^7.7.2": 257 | version "7.22.5" 258 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" 259 | integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== 260 | dependencies: 261 | "@babel/helper-plugin-utils" "^7.22.5" 262 | 263 | "@babel/template@^7.22.5", "@babel/template@^7.3.3": 264 | version "7.22.5" 265 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" 266 | integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== 267 | dependencies: 268 | "@babel/code-frame" "^7.22.5" 269 | "@babel/parser" "^7.22.5" 270 | "@babel/types" "^7.22.5" 271 | 272 | "@babel/traverse@^7.22.5", "@babel/traverse@^7.7.2": 273 | version "7.22.5" 274 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.5.tgz#44bd276690db6f4940fdb84e1cb4abd2f729ccd1" 275 | integrity sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ== 276 | dependencies: 277 | "@babel/code-frame" "^7.22.5" 278 | "@babel/generator" "^7.22.5" 279 | "@babel/helper-environment-visitor" "^7.22.5" 280 | "@babel/helper-function-name" "^7.22.5" 281 | "@babel/helper-hoist-variables" "^7.22.5" 282 | "@babel/helper-split-export-declaration" "^7.22.5" 283 | "@babel/parser" "^7.22.5" 284 | "@babel/types" "^7.22.5" 285 | debug "^4.1.0" 286 | globals "^11.1.0" 287 | 288 | "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.3.3": 289 | version "7.22.5" 290 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" 291 | integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== 292 | dependencies: 293 | "@babel/helper-string-parser" "^7.22.5" 294 | "@babel/helper-validator-identifier" "^7.22.5" 295 | to-fast-properties "^2.0.0" 296 | 297 | "@bcoe/v8-coverage@^0.2.3": 298 | version "0.2.3" 299 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 300 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 301 | 302 | "@istanbuljs/load-nyc-config@^1.0.0": 303 | version "1.1.0" 304 | resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" 305 | integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== 306 | dependencies: 307 | camelcase "^5.3.1" 308 | find-up "^4.1.0" 309 | get-package-type "^0.1.0" 310 | js-yaml "^3.13.1" 311 | resolve-from "^5.0.0" 312 | 313 | "@istanbuljs/schema@^0.1.2": 314 | version "0.1.3" 315 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 316 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 317 | 318 | "@jest/console@^29.5.0": 319 | version "29.5.0" 320 | resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" 321 | integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ== 322 | dependencies: 323 | "@jest/types" "^29.5.0" 324 | "@types/node" "*" 325 | chalk "^4.0.0" 326 | jest-message-util "^29.5.0" 327 | jest-util "^29.5.0" 328 | slash "^3.0.0" 329 | 330 | "@jest/core@^29.5.0": 331 | version "29.5.0" 332 | resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" 333 | integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ== 334 | dependencies: 335 | "@jest/console" "^29.5.0" 336 | "@jest/reporters" "^29.5.0" 337 | "@jest/test-result" "^29.5.0" 338 | "@jest/transform" "^29.5.0" 339 | "@jest/types" "^29.5.0" 340 | "@types/node" "*" 341 | ansi-escapes "^4.2.1" 342 | chalk "^4.0.0" 343 | ci-info "^3.2.0" 344 | exit "^0.1.2" 345 | graceful-fs "^4.2.9" 346 | jest-changed-files "^29.5.0" 347 | jest-config "^29.5.0" 348 | jest-haste-map "^29.5.0" 349 | jest-message-util "^29.5.0" 350 | jest-regex-util "^29.4.3" 351 | jest-resolve "^29.5.0" 352 | jest-resolve-dependencies "^29.5.0" 353 | jest-runner "^29.5.0" 354 | jest-runtime "^29.5.0" 355 | jest-snapshot "^29.5.0" 356 | jest-util "^29.5.0" 357 | jest-validate "^29.5.0" 358 | jest-watcher "^29.5.0" 359 | micromatch "^4.0.4" 360 | pretty-format "^29.5.0" 361 | slash "^3.0.0" 362 | strip-ansi "^6.0.0" 363 | 364 | "@jest/environment@^29.5.0": 365 | version "29.5.0" 366 | resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" 367 | integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ== 368 | dependencies: 369 | "@jest/fake-timers" "^29.5.0" 370 | "@jest/types" "^29.5.0" 371 | "@types/node" "*" 372 | jest-mock "^29.5.0" 373 | 374 | "@jest/expect-utils@^29.5.0": 375 | version "29.5.0" 376 | resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" 377 | integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== 378 | dependencies: 379 | jest-get-type "^29.4.3" 380 | 381 | "@jest/expect@^29.5.0": 382 | version "29.5.0" 383 | resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" 384 | integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g== 385 | dependencies: 386 | expect "^29.5.0" 387 | jest-snapshot "^29.5.0" 388 | 389 | "@jest/fake-timers@^29.5.0": 390 | version "29.5.0" 391 | resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" 392 | integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg== 393 | dependencies: 394 | "@jest/types" "^29.5.0" 395 | "@sinonjs/fake-timers" "^10.0.2" 396 | "@types/node" "*" 397 | jest-message-util "^29.5.0" 398 | jest-mock "^29.5.0" 399 | jest-util "^29.5.0" 400 | 401 | "@jest/globals@^29.5.0": 402 | version "29.5.0" 403 | resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" 404 | integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ== 405 | dependencies: 406 | "@jest/environment" "^29.5.0" 407 | "@jest/expect" "^29.5.0" 408 | "@jest/types" "^29.5.0" 409 | jest-mock "^29.5.0" 410 | 411 | "@jest/reporters@^29.5.0": 412 | version "29.5.0" 413 | resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" 414 | integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA== 415 | dependencies: 416 | "@bcoe/v8-coverage" "^0.2.3" 417 | "@jest/console" "^29.5.0" 418 | "@jest/test-result" "^29.5.0" 419 | "@jest/transform" "^29.5.0" 420 | "@jest/types" "^29.5.0" 421 | "@jridgewell/trace-mapping" "^0.3.15" 422 | "@types/node" "*" 423 | chalk "^4.0.0" 424 | collect-v8-coverage "^1.0.0" 425 | exit "^0.1.2" 426 | glob "^7.1.3" 427 | graceful-fs "^4.2.9" 428 | istanbul-lib-coverage "^3.0.0" 429 | istanbul-lib-instrument "^5.1.0" 430 | istanbul-lib-report "^3.0.0" 431 | istanbul-lib-source-maps "^4.0.0" 432 | istanbul-reports "^3.1.3" 433 | jest-message-util "^29.5.0" 434 | jest-util "^29.5.0" 435 | jest-worker "^29.5.0" 436 | slash "^3.0.0" 437 | string-length "^4.0.1" 438 | strip-ansi "^6.0.0" 439 | v8-to-istanbul "^9.0.1" 440 | 441 | "@jest/schemas@^29.4.3": 442 | version "29.4.3" 443 | resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" 444 | integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== 445 | dependencies: 446 | "@sinclair/typebox" "^0.25.16" 447 | 448 | "@jest/source-map@^29.4.3": 449 | version "29.4.3" 450 | resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" 451 | integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== 452 | dependencies: 453 | "@jridgewell/trace-mapping" "^0.3.15" 454 | callsites "^3.0.0" 455 | graceful-fs "^4.2.9" 456 | 457 | "@jest/test-result@^29.5.0": 458 | version "29.5.0" 459 | resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" 460 | integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ== 461 | dependencies: 462 | "@jest/console" "^29.5.0" 463 | "@jest/types" "^29.5.0" 464 | "@types/istanbul-lib-coverage" "^2.0.0" 465 | collect-v8-coverage "^1.0.0" 466 | 467 | "@jest/test-sequencer@^29.5.0": 468 | version "29.5.0" 469 | resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" 470 | integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ== 471 | dependencies: 472 | "@jest/test-result" "^29.5.0" 473 | graceful-fs "^4.2.9" 474 | jest-haste-map "^29.5.0" 475 | slash "^3.0.0" 476 | 477 | "@jest/transform@^29.5.0": 478 | version "29.5.0" 479 | resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" 480 | integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== 481 | dependencies: 482 | "@babel/core" "^7.11.6" 483 | "@jest/types" "^29.5.0" 484 | "@jridgewell/trace-mapping" "^0.3.15" 485 | babel-plugin-istanbul "^6.1.1" 486 | chalk "^4.0.0" 487 | convert-source-map "^2.0.0" 488 | fast-json-stable-stringify "^2.1.0" 489 | graceful-fs "^4.2.9" 490 | jest-haste-map "^29.5.0" 491 | jest-regex-util "^29.4.3" 492 | jest-util "^29.5.0" 493 | micromatch "^4.0.4" 494 | pirates "^4.0.4" 495 | slash "^3.0.0" 496 | write-file-atomic "^4.0.2" 497 | 498 | "@jest/types@^29.5.0": 499 | version "29.5.0" 500 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" 501 | integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== 502 | dependencies: 503 | "@jest/schemas" "^29.4.3" 504 | "@types/istanbul-lib-coverage" "^2.0.0" 505 | "@types/istanbul-reports" "^3.0.0" 506 | "@types/node" "*" 507 | "@types/yargs" "^17.0.8" 508 | chalk "^4.0.0" 509 | 510 | "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": 511 | version "0.3.3" 512 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" 513 | integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== 514 | dependencies: 515 | "@jridgewell/set-array" "^1.0.1" 516 | "@jridgewell/sourcemap-codec" "^1.4.10" 517 | "@jridgewell/trace-mapping" "^0.3.9" 518 | 519 | "@jridgewell/resolve-uri@3.1.0": 520 | version "3.1.0" 521 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 522 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 523 | 524 | "@jridgewell/set-array@^1.0.1": 525 | version "1.1.2" 526 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 527 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 528 | 529 | "@jridgewell/sourcemap-codec@1.4.14": 530 | version "1.4.14" 531 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 532 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 533 | 534 | "@jridgewell/sourcemap-codec@^1.4.10": 535 | version "1.4.15" 536 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 537 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 538 | 539 | "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": 540 | version "0.3.18" 541 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" 542 | integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== 543 | dependencies: 544 | "@jridgewell/resolve-uri" "3.1.0" 545 | "@jridgewell/sourcemap-codec" "1.4.14" 546 | 547 | "@sinclair/typebox@^0.25.16": 548 | version "0.25.24" 549 | resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" 550 | integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== 551 | 552 | "@sinonjs/commons@^3.0.0": 553 | version "3.0.0" 554 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" 555 | integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== 556 | dependencies: 557 | type-detect "4.0.8" 558 | 559 | "@sinonjs/fake-timers@^10.0.2": 560 | version "10.2.0" 561 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz#b3e322a34c5f26e3184e7f6115695f299c1b1194" 562 | integrity sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg== 563 | dependencies: 564 | "@sinonjs/commons" "^3.0.0" 565 | 566 | "@types/babel__core@^7.1.14": 567 | version "7.20.1" 568 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" 569 | integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== 570 | dependencies: 571 | "@babel/parser" "^7.20.7" 572 | "@babel/types" "^7.20.7" 573 | "@types/babel__generator" "*" 574 | "@types/babel__template" "*" 575 | "@types/babel__traverse" "*" 576 | 577 | "@types/babel__generator@*": 578 | version "7.6.4" 579 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" 580 | integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== 581 | dependencies: 582 | "@babel/types" "^7.0.0" 583 | 584 | "@types/babel__template@*": 585 | version "7.4.1" 586 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" 587 | integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== 588 | dependencies: 589 | "@babel/parser" "^7.1.0" 590 | "@babel/types" "^7.0.0" 591 | 592 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": 593 | version "7.20.1" 594 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" 595 | integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== 596 | dependencies: 597 | "@babel/types" "^7.20.7" 598 | 599 | "@types/graceful-fs@^4.1.3": 600 | version "4.1.6" 601 | resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" 602 | integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== 603 | dependencies: 604 | "@types/node" "*" 605 | 606 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 607 | version "2.0.4" 608 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" 609 | integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== 610 | 611 | "@types/istanbul-lib-report@*": 612 | version "3.0.0" 613 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 614 | integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== 615 | dependencies: 616 | "@types/istanbul-lib-coverage" "*" 617 | 618 | "@types/istanbul-reports@^3.0.0": 619 | version "3.0.1" 620 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" 621 | integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== 622 | dependencies: 623 | "@types/istanbul-lib-report" "*" 624 | 625 | "@types/node@*": 626 | version "20.3.0" 627 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.0.tgz#719498898d5defab83c3560f45d8498f58d11938" 628 | integrity sha512-cumHmIAf6On83X7yP+LrsEyUOf/YlociZelmpRYaGFydoaPdxdt80MAbu6vWerQT2COCp2nPvHdsbD7tHn/YlQ== 629 | 630 | "@types/prettier@^2.1.5": 631 | version "2.7.3" 632 | resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" 633 | integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== 634 | 635 | "@types/stack-utils@^2.0.0": 636 | version "2.0.1" 637 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" 638 | integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== 639 | 640 | "@types/yargs-parser@*": 641 | version "21.0.0" 642 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" 643 | integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== 644 | 645 | "@types/yargs@^17.0.8": 646 | version "17.0.24" 647 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" 648 | integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== 649 | dependencies: 650 | "@types/yargs-parser" "*" 651 | 652 | ansi-escapes@^4.2.1: 653 | version "4.3.2" 654 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 655 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 656 | dependencies: 657 | type-fest "^0.21.3" 658 | 659 | ansi-regex@^5.0.1: 660 | version "5.0.1" 661 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 662 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 663 | 664 | ansi-styles@^3.2.1: 665 | version "3.2.1" 666 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 667 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 668 | dependencies: 669 | color-convert "^1.9.0" 670 | 671 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 672 | version "4.3.0" 673 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 674 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 675 | dependencies: 676 | color-convert "^2.0.1" 677 | 678 | ansi-styles@^5.0.0: 679 | version "5.2.0" 680 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 681 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 682 | 683 | anymatch@^3.0.3: 684 | version "3.1.3" 685 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 686 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 687 | dependencies: 688 | normalize-path "^3.0.0" 689 | picomatch "^2.0.4" 690 | 691 | argparse@^1.0.7: 692 | version "1.0.10" 693 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 694 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 695 | dependencies: 696 | sprintf-js "~1.0.2" 697 | 698 | babel-jest@^29.5.0: 699 | version "29.5.0" 700 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" 701 | integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q== 702 | dependencies: 703 | "@jest/transform" "^29.5.0" 704 | "@types/babel__core" "^7.1.14" 705 | babel-plugin-istanbul "^6.1.1" 706 | babel-preset-jest "^29.5.0" 707 | chalk "^4.0.0" 708 | graceful-fs "^4.2.9" 709 | slash "^3.0.0" 710 | 711 | babel-plugin-istanbul@^6.1.1: 712 | version "6.1.1" 713 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" 714 | integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== 715 | dependencies: 716 | "@babel/helper-plugin-utils" "^7.0.0" 717 | "@istanbuljs/load-nyc-config" "^1.0.0" 718 | "@istanbuljs/schema" "^0.1.2" 719 | istanbul-lib-instrument "^5.0.4" 720 | test-exclude "^6.0.0" 721 | 722 | babel-plugin-jest-hoist@^29.5.0: 723 | version "29.5.0" 724 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" 725 | integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== 726 | dependencies: 727 | "@babel/template" "^7.3.3" 728 | "@babel/types" "^7.3.3" 729 | "@types/babel__core" "^7.1.14" 730 | "@types/babel__traverse" "^7.0.6" 731 | 732 | babel-preset-current-node-syntax@^1.0.0: 733 | version "1.0.1" 734 | resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" 735 | integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== 736 | dependencies: 737 | "@babel/plugin-syntax-async-generators" "^7.8.4" 738 | "@babel/plugin-syntax-bigint" "^7.8.3" 739 | "@babel/plugin-syntax-class-properties" "^7.8.3" 740 | "@babel/plugin-syntax-import-meta" "^7.8.3" 741 | "@babel/plugin-syntax-json-strings" "^7.8.3" 742 | "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 743 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 744 | "@babel/plugin-syntax-numeric-separator" "^7.8.3" 745 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 746 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 747 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 748 | "@babel/plugin-syntax-top-level-await" "^7.8.3" 749 | 750 | babel-preset-jest@^29.5.0: 751 | version "29.5.0" 752 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" 753 | integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== 754 | dependencies: 755 | babel-plugin-jest-hoist "^29.5.0" 756 | babel-preset-current-node-syntax "^1.0.0" 757 | 758 | balanced-match@^1.0.0: 759 | version "1.0.2" 760 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 761 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 762 | 763 | brace-expansion@^1.1.7: 764 | version "1.1.11" 765 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 766 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 767 | dependencies: 768 | balanced-match "^1.0.0" 769 | concat-map "0.0.1" 770 | 771 | braces@^3.0.2: 772 | version "3.0.2" 773 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 774 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 775 | dependencies: 776 | fill-range "^7.0.1" 777 | 778 | browserslist@^4.21.3: 779 | version "4.21.7" 780 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.7.tgz#e2b420947e5fb0a58e8f4668ae6e23488127e551" 781 | integrity sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA== 782 | dependencies: 783 | caniuse-lite "^1.0.30001489" 784 | electron-to-chromium "^1.4.411" 785 | node-releases "^2.0.12" 786 | update-browserslist-db "^1.0.11" 787 | 788 | bser@2.1.1: 789 | version "2.1.1" 790 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" 791 | integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== 792 | dependencies: 793 | node-int64 "^0.4.0" 794 | 795 | buffer-from@^1.0.0: 796 | version "1.1.2" 797 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 798 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 799 | 800 | callsites@^3.0.0: 801 | version "3.1.0" 802 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 803 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 804 | 805 | camelcase@^5.3.1: 806 | version "5.3.1" 807 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 808 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 809 | 810 | camelcase@^6.2.0: 811 | version "6.3.0" 812 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 813 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 814 | 815 | caniuse-lite@^1.0.30001489: 816 | version "1.0.30001499" 817 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001499.tgz#0235c127d9795c82aaf0a7f43e24018549dac659" 818 | integrity sha512-IhoQqRrW6WiecFcfZgoJS1YLEN1/HR1vHP5WNgjCARRW7KUNToHHTX3FrwCM+y4zkRa48D9rE90WFYc2IWhDWQ== 819 | 820 | chalk@^2.0.0: 821 | version "2.4.2" 822 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 823 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 824 | dependencies: 825 | ansi-styles "^3.2.1" 826 | escape-string-regexp "^1.0.5" 827 | supports-color "^5.3.0" 828 | 829 | chalk@^4.0.0: 830 | version "4.1.2" 831 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 832 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 833 | dependencies: 834 | ansi-styles "^4.1.0" 835 | supports-color "^7.1.0" 836 | 837 | char-regex@^1.0.2: 838 | version "1.0.2" 839 | resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" 840 | integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== 841 | 842 | ci-info@^3.2.0: 843 | version "3.8.0" 844 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" 845 | integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== 846 | 847 | cjs-module-lexer@^1.0.0: 848 | version "1.2.3" 849 | resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" 850 | integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== 851 | 852 | cliui@^8.0.1: 853 | version "8.0.1" 854 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 855 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 856 | dependencies: 857 | string-width "^4.2.0" 858 | strip-ansi "^6.0.1" 859 | wrap-ansi "^7.0.0" 860 | 861 | co@^4.6.0: 862 | version "4.6.0" 863 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 864 | integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== 865 | 866 | collect-v8-coverage@^1.0.0: 867 | version "1.0.1" 868 | resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 869 | integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== 870 | 871 | color-convert@^1.9.0: 872 | version "1.9.3" 873 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 874 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 875 | dependencies: 876 | color-name "1.1.3" 877 | 878 | color-convert@^2.0.1: 879 | version "2.0.1" 880 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 881 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 882 | dependencies: 883 | color-name "~1.1.4" 884 | 885 | color-name@1.1.3: 886 | version "1.1.3" 887 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 888 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 889 | 890 | color-name@~1.1.4: 891 | version "1.1.4" 892 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 893 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 894 | 895 | concat-map@0.0.1: 896 | version "0.0.1" 897 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 898 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 899 | 900 | convert-source-map@^1.6.0, convert-source-map@^1.7.0: 901 | version "1.9.0" 902 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" 903 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== 904 | 905 | convert-source-map@^2.0.0: 906 | version "2.0.0" 907 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" 908 | integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== 909 | 910 | cross-spawn@^7.0.3: 911 | version "7.0.3" 912 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 913 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 914 | dependencies: 915 | path-key "^3.1.0" 916 | shebang-command "^2.0.0" 917 | which "^2.0.1" 918 | 919 | debug@^4.1.0, debug@^4.1.1: 920 | version "4.3.4" 921 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 922 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 923 | dependencies: 924 | ms "2.1.2" 925 | 926 | dedent@^0.7.0: 927 | version "0.7.0" 928 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 929 | integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== 930 | 931 | deepmerge@^4.2.2: 932 | version "4.3.1" 933 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" 934 | integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== 935 | 936 | detect-newline@^3.0.0: 937 | version "3.1.0" 938 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 939 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 940 | 941 | diff-sequences@^29.4.3: 942 | version "29.4.3" 943 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" 944 | integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== 945 | 946 | electron-to-chromium@^1.4.411: 947 | version "1.4.427" 948 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.427.tgz#67e8069f7a864fc092fe2e09f196e68af5cb88a1" 949 | integrity sha512-HK3r9l+Jm8dYAm1ctXEWIC+hV60zfcjS9UA5BDlYvnI5S7PU/yytjpvSrTNrSSRRkuu3tDyZhdkwIczh+0DWaw== 950 | 951 | emittery@^0.13.1: 952 | version "0.13.1" 953 | resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" 954 | integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== 955 | 956 | emoji-regex@^8.0.0: 957 | version "8.0.0" 958 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 959 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 960 | 961 | error-ex@^1.3.1: 962 | version "1.3.2" 963 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 964 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 965 | dependencies: 966 | is-arrayish "^0.2.1" 967 | 968 | escalade@^3.1.1: 969 | version "3.1.1" 970 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 971 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 972 | 973 | escape-string-regexp@^1.0.5: 974 | version "1.0.5" 975 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 976 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 977 | 978 | escape-string-regexp@^2.0.0: 979 | version "2.0.0" 980 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 981 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 982 | 983 | esprima@^4.0.0: 984 | version "4.0.1" 985 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 986 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 987 | 988 | execa@^5.0.0: 989 | version "5.1.1" 990 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 991 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 992 | dependencies: 993 | cross-spawn "^7.0.3" 994 | get-stream "^6.0.0" 995 | human-signals "^2.1.0" 996 | is-stream "^2.0.0" 997 | merge-stream "^2.0.0" 998 | npm-run-path "^4.0.1" 999 | onetime "^5.1.2" 1000 | signal-exit "^3.0.3" 1001 | strip-final-newline "^2.0.0" 1002 | 1003 | exit@^0.1.2: 1004 | version "0.1.2" 1005 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1006 | integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== 1007 | 1008 | expect@^29.5.0: 1009 | version "29.5.0" 1010 | resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" 1011 | integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== 1012 | dependencies: 1013 | "@jest/expect-utils" "^29.5.0" 1014 | jest-get-type "^29.4.3" 1015 | jest-matcher-utils "^29.5.0" 1016 | jest-message-util "^29.5.0" 1017 | jest-util "^29.5.0" 1018 | 1019 | fast-json-stable-stringify@^2.1.0: 1020 | version "2.1.0" 1021 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1022 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1023 | 1024 | fb-watchman@^2.0.0: 1025 | version "2.0.2" 1026 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" 1027 | integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== 1028 | dependencies: 1029 | bser "2.1.1" 1030 | 1031 | fill-range@^7.0.1: 1032 | version "7.0.1" 1033 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1034 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1035 | dependencies: 1036 | to-regex-range "^5.0.1" 1037 | 1038 | find-up@^4.0.0, find-up@^4.1.0: 1039 | version "4.1.0" 1040 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1041 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1042 | dependencies: 1043 | locate-path "^5.0.0" 1044 | path-exists "^4.0.0" 1045 | 1046 | fs.realpath@^1.0.0: 1047 | version "1.0.0" 1048 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1049 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1050 | 1051 | fsevents@^2.3.2: 1052 | version "2.3.2" 1053 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1054 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1055 | 1056 | function-bind@^1.1.1: 1057 | version "1.1.1" 1058 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1059 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1060 | 1061 | gensync@^1.0.0-beta.2: 1062 | version "1.0.0-beta.2" 1063 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1064 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1065 | 1066 | get-caller-file@^2.0.5: 1067 | version "2.0.5" 1068 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1069 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1070 | 1071 | get-package-type@^0.1.0: 1072 | version "0.1.0" 1073 | resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" 1074 | integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== 1075 | 1076 | get-stream@^6.0.0: 1077 | version "6.0.1" 1078 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 1079 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 1080 | 1081 | glob@^7.1.3, glob@^7.1.4: 1082 | version "7.2.3" 1083 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1084 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1085 | dependencies: 1086 | fs.realpath "^1.0.0" 1087 | inflight "^1.0.4" 1088 | inherits "2" 1089 | minimatch "^3.1.1" 1090 | once "^1.3.0" 1091 | path-is-absolute "^1.0.0" 1092 | 1093 | globals@^11.1.0: 1094 | version "11.12.0" 1095 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1096 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1097 | 1098 | graceful-fs@^4.2.9: 1099 | version "4.2.11" 1100 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 1101 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 1102 | 1103 | has-flag@^3.0.0: 1104 | version "3.0.0" 1105 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1106 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1107 | 1108 | has-flag@^4.0.0: 1109 | version "4.0.0" 1110 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1111 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1112 | 1113 | has@^1.0.3: 1114 | version "1.0.3" 1115 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1116 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1117 | dependencies: 1118 | function-bind "^1.1.1" 1119 | 1120 | html-escaper@^2.0.0: 1121 | version "2.0.2" 1122 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1123 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1124 | 1125 | human-signals@^2.1.0: 1126 | version "2.1.0" 1127 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1128 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1129 | 1130 | import-local@^3.0.2: 1131 | version "3.1.0" 1132 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 1133 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== 1134 | dependencies: 1135 | pkg-dir "^4.2.0" 1136 | resolve-cwd "^3.0.0" 1137 | 1138 | imurmurhash@^0.1.4: 1139 | version "0.1.4" 1140 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1141 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1142 | 1143 | inflight@^1.0.4: 1144 | version "1.0.6" 1145 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1146 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1147 | dependencies: 1148 | once "^1.3.0" 1149 | wrappy "1" 1150 | 1151 | inherits@2: 1152 | version "2.0.4" 1153 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1154 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1155 | 1156 | is-arrayish@^0.2.1: 1157 | version "0.2.1" 1158 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1159 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 1160 | 1161 | is-core-module@^2.11.0: 1162 | version "2.12.1" 1163 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" 1164 | integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== 1165 | dependencies: 1166 | has "^1.0.3" 1167 | 1168 | is-fullwidth-code-point@^3.0.0: 1169 | version "3.0.0" 1170 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1171 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1172 | 1173 | is-generator-fn@^2.0.0: 1174 | version "2.1.0" 1175 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" 1176 | integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== 1177 | 1178 | is-number@^7.0.0: 1179 | version "7.0.0" 1180 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1181 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1182 | 1183 | is-stream@^2.0.0: 1184 | version "2.0.1" 1185 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 1186 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 1187 | 1188 | isexe@^2.0.0: 1189 | version "2.0.0" 1190 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1191 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1192 | 1193 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1194 | version "3.2.0" 1195 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" 1196 | integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== 1197 | 1198 | istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: 1199 | version "5.2.1" 1200 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" 1201 | integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== 1202 | dependencies: 1203 | "@babel/core" "^7.12.3" 1204 | "@babel/parser" "^7.14.7" 1205 | "@istanbuljs/schema" "^0.1.2" 1206 | istanbul-lib-coverage "^3.2.0" 1207 | semver "^6.3.0" 1208 | 1209 | istanbul-lib-report@^3.0.0: 1210 | version "3.0.0" 1211 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 1212 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 1213 | dependencies: 1214 | istanbul-lib-coverage "^3.0.0" 1215 | make-dir "^3.0.0" 1216 | supports-color "^7.1.0" 1217 | 1218 | istanbul-lib-source-maps@^4.0.0: 1219 | version "4.0.1" 1220 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" 1221 | integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== 1222 | dependencies: 1223 | debug "^4.1.1" 1224 | istanbul-lib-coverage "^3.0.0" 1225 | source-map "^0.6.1" 1226 | 1227 | istanbul-reports@^3.1.3: 1228 | version "3.1.5" 1229 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" 1230 | integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== 1231 | dependencies: 1232 | html-escaper "^2.0.0" 1233 | istanbul-lib-report "^3.0.0" 1234 | 1235 | jest-changed-files@^29.5.0: 1236 | version "29.5.0" 1237 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" 1238 | integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== 1239 | dependencies: 1240 | execa "^5.0.0" 1241 | p-limit "^3.1.0" 1242 | 1243 | jest-circus@^29.5.0: 1244 | version "29.5.0" 1245 | resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" 1246 | integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA== 1247 | dependencies: 1248 | "@jest/environment" "^29.5.0" 1249 | "@jest/expect" "^29.5.0" 1250 | "@jest/test-result" "^29.5.0" 1251 | "@jest/types" "^29.5.0" 1252 | "@types/node" "*" 1253 | chalk "^4.0.0" 1254 | co "^4.6.0" 1255 | dedent "^0.7.0" 1256 | is-generator-fn "^2.0.0" 1257 | jest-each "^29.5.0" 1258 | jest-matcher-utils "^29.5.0" 1259 | jest-message-util "^29.5.0" 1260 | jest-runtime "^29.5.0" 1261 | jest-snapshot "^29.5.0" 1262 | jest-util "^29.5.0" 1263 | p-limit "^3.1.0" 1264 | pretty-format "^29.5.0" 1265 | pure-rand "^6.0.0" 1266 | slash "^3.0.0" 1267 | stack-utils "^2.0.3" 1268 | 1269 | jest-cli@^29.5.0: 1270 | version "29.5.0" 1271 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" 1272 | integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw== 1273 | dependencies: 1274 | "@jest/core" "^29.5.0" 1275 | "@jest/test-result" "^29.5.0" 1276 | "@jest/types" "^29.5.0" 1277 | chalk "^4.0.0" 1278 | exit "^0.1.2" 1279 | graceful-fs "^4.2.9" 1280 | import-local "^3.0.2" 1281 | jest-config "^29.5.0" 1282 | jest-util "^29.5.0" 1283 | jest-validate "^29.5.0" 1284 | prompts "^2.0.1" 1285 | yargs "^17.3.1" 1286 | 1287 | jest-config@^29.5.0: 1288 | version "29.5.0" 1289 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" 1290 | integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA== 1291 | dependencies: 1292 | "@babel/core" "^7.11.6" 1293 | "@jest/test-sequencer" "^29.5.0" 1294 | "@jest/types" "^29.5.0" 1295 | babel-jest "^29.5.0" 1296 | chalk "^4.0.0" 1297 | ci-info "^3.2.0" 1298 | deepmerge "^4.2.2" 1299 | glob "^7.1.3" 1300 | graceful-fs "^4.2.9" 1301 | jest-circus "^29.5.0" 1302 | jest-environment-node "^29.5.0" 1303 | jest-get-type "^29.4.3" 1304 | jest-regex-util "^29.4.3" 1305 | jest-resolve "^29.5.0" 1306 | jest-runner "^29.5.0" 1307 | jest-util "^29.5.0" 1308 | jest-validate "^29.5.0" 1309 | micromatch "^4.0.4" 1310 | parse-json "^5.2.0" 1311 | pretty-format "^29.5.0" 1312 | slash "^3.0.0" 1313 | strip-json-comments "^3.1.1" 1314 | 1315 | jest-diff@^29.5.0: 1316 | version "29.5.0" 1317 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" 1318 | integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== 1319 | dependencies: 1320 | chalk "^4.0.0" 1321 | diff-sequences "^29.4.3" 1322 | jest-get-type "^29.4.3" 1323 | pretty-format "^29.5.0" 1324 | 1325 | jest-docblock@^29.4.3: 1326 | version "29.4.3" 1327 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" 1328 | integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== 1329 | dependencies: 1330 | detect-newline "^3.0.0" 1331 | 1332 | jest-each@^29.5.0: 1333 | version "29.5.0" 1334 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" 1335 | integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA== 1336 | dependencies: 1337 | "@jest/types" "^29.5.0" 1338 | chalk "^4.0.0" 1339 | jest-get-type "^29.4.3" 1340 | jest-util "^29.5.0" 1341 | pretty-format "^29.5.0" 1342 | 1343 | jest-environment-node@^29.5.0: 1344 | version "29.5.0" 1345 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" 1346 | integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw== 1347 | dependencies: 1348 | "@jest/environment" "^29.5.0" 1349 | "@jest/fake-timers" "^29.5.0" 1350 | "@jest/types" "^29.5.0" 1351 | "@types/node" "*" 1352 | jest-mock "^29.5.0" 1353 | jest-util "^29.5.0" 1354 | 1355 | jest-get-type@^29.4.3: 1356 | version "29.4.3" 1357 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" 1358 | integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== 1359 | 1360 | jest-haste-map@^29.5.0: 1361 | version "29.5.0" 1362 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" 1363 | integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== 1364 | dependencies: 1365 | "@jest/types" "^29.5.0" 1366 | "@types/graceful-fs" "^4.1.3" 1367 | "@types/node" "*" 1368 | anymatch "^3.0.3" 1369 | fb-watchman "^2.0.0" 1370 | graceful-fs "^4.2.9" 1371 | jest-regex-util "^29.4.3" 1372 | jest-util "^29.5.0" 1373 | jest-worker "^29.5.0" 1374 | micromatch "^4.0.4" 1375 | walker "^1.0.8" 1376 | optionalDependencies: 1377 | fsevents "^2.3.2" 1378 | 1379 | jest-leak-detector@^29.5.0: 1380 | version "29.5.0" 1381 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" 1382 | integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow== 1383 | dependencies: 1384 | jest-get-type "^29.4.3" 1385 | pretty-format "^29.5.0" 1386 | 1387 | jest-matcher-utils@^29.5.0: 1388 | version "29.5.0" 1389 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" 1390 | integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== 1391 | dependencies: 1392 | chalk "^4.0.0" 1393 | jest-diff "^29.5.0" 1394 | jest-get-type "^29.4.3" 1395 | pretty-format "^29.5.0" 1396 | 1397 | jest-message-util@^29.5.0: 1398 | version "29.5.0" 1399 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" 1400 | integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== 1401 | dependencies: 1402 | "@babel/code-frame" "^7.12.13" 1403 | "@jest/types" "^29.5.0" 1404 | "@types/stack-utils" "^2.0.0" 1405 | chalk "^4.0.0" 1406 | graceful-fs "^4.2.9" 1407 | micromatch "^4.0.4" 1408 | pretty-format "^29.5.0" 1409 | slash "^3.0.0" 1410 | stack-utils "^2.0.3" 1411 | 1412 | jest-mock@^29.5.0: 1413 | version "29.5.0" 1414 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" 1415 | integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw== 1416 | dependencies: 1417 | "@jest/types" "^29.5.0" 1418 | "@types/node" "*" 1419 | jest-util "^29.5.0" 1420 | 1421 | jest-pnp-resolver@^1.2.2: 1422 | version "1.2.3" 1423 | resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" 1424 | integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== 1425 | 1426 | jest-regex-util@^29.4.3: 1427 | version "29.4.3" 1428 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" 1429 | integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== 1430 | 1431 | jest-resolve-dependencies@^29.5.0: 1432 | version "29.5.0" 1433 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" 1434 | integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg== 1435 | dependencies: 1436 | jest-regex-util "^29.4.3" 1437 | jest-snapshot "^29.5.0" 1438 | 1439 | jest-resolve@^29.5.0: 1440 | version "29.5.0" 1441 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" 1442 | integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== 1443 | dependencies: 1444 | chalk "^4.0.0" 1445 | graceful-fs "^4.2.9" 1446 | jest-haste-map "^29.5.0" 1447 | jest-pnp-resolver "^1.2.2" 1448 | jest-util "^29.5.0" 1449 | jest-validate "^29.5.0" 1450 | resolve "^1.20.0" 1451 | resolve.exports "^2.0.0" 1452 | slash "^3.0.0" 1453 | 1454 | jest-runner@^29.5.0: 1455 | version "29.5.0" 1456 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" 1457 | integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ== 1458 | dependencies: 1459 | "@jest/console" "^29.5.0" 1460 | "@jest/environment" "^29.5.0" 1461 | "@jest/test-result" "^29.5.0" 1462 | "@jest/transform" "^29.5.0" 1463 | "@jest/types" "^29.5.0" 1464 | "@types/node" "*" 1465 | chalk "^4.0.0" 1466 | emittery "^0.13.1" 1467 | graceful-fs "^4.2.9" 1468 | jest-docblock "^29.4.3" 1469 | jest-environment-node "^29.5.0" 1470 | jest-haste-map "^29.5.0" 1471 | jest-leak-detector "^29.5.0" 1472 | jest-message-util "^29.5.0" 1473 | jest-resolve "^29.5.0" 1474 | jest-runtime "^29.5.0" 1475 | jest-util "^29.5.0" 1476 | jest-watcher "^29.5.0" 1477 | jest-worker "^29.5.0" 1478 | p-limit "^3.1.0" 1479 | source-map-support "0.5.13" 1480 | 1481 | jest-runtime@^29.5.0: 1482 | version "29.5.0" 1483 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" 1484 | integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw== 1485 | dependencies: 1486 | "@jest/environment" "^29.5.0" 1487 | "@jest/fake-timers" "^29.5.0" 1488 | "@jest/globals" "^29.5.0" 1489 | "@jest/source-map" "^29.4.3" 1490 | "@jest/test-result" "^29.5.0" 1491 | "@jest/transform" "^29.5.0" 1492 | "@jest/types" "^29.5.0" 1493 | "@types/node" "*" 1494 | chalk "^4.0.0" 1495 | cjs-module-lexer "^1.0.0" 1496 | collect-v8-coverage "^1.0.0" 1497 | glob "^7.1.3" 1498 | graceful-fs "^4.2.9" 1499 | jest-haste-map "^29.5.0" 1500 | jest-message-util "^29.5.0" 1501 | jest-mock "^29.5.0" 1502 | jest-regex-util "^29.4.3" 1503 | jest-resolve "^29.5.0" 1504 | jest-snapshot "^29.5.0" 1505 | jest-util "^29.5.0" 1506 | slash "^3.0.0" 1507 | strip-bom "^4.0.0" 1508 | 1509 | jest-snapshot@^29.5.0: 1510 | version "29.5.0" 1511 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" 1512 | integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g== 1513 | dependencies: 1514 | "@babel/core" "^7.11.6" 1515 | "@babel/generator" "^7.7.2" 1516 | "@babel/plugin-syntax-jsx" "^7.7.2" 1517 | "@babel/plugin-syntax-typescript" "^7.7.2" 1518 | "@babel/traverse" "^7.7.2" 1519 | "@babel/types" "^7.3.3" 1520 | "@jest/expect-utils" "^29.5.0" 1521 | "@jest/transform" "^29.5.0" 1522 | "@jest/types" "^29.5.0" 1523 | "@types/babel__traverse" "^7.0.6" 1524 | "@types/prettier" "^2.1.5" 1525 | babel-preset-current-node-syntax "^1.0.0" 1526 | chalk "^4.0.0" 1527 | expect "^29.5.0" 1528 | graceful-fs "^4.2.9" 1529 | jest-diff "^29.5.0" 1530 | jest-get-type "^29.4.3" 1531 | jest-matcher-utils "^29.5.0" 1532 | jest-message-util "^29.5.0" 1533 | jest-util "^29.5.0" 1534 | natural-compare "^1.4.0" 1535 | pretty-format "^29.5.0" 1536 | semver "^7.3.5" 1537 | 1538 | jest-util@^29.5.0: 1539 | version "29.5.0" 1540 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" 1541 | integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== 1542 | dependencies: 1543 | "@jest/types" "^29.5.0" 1544 | "@types/node" "*" 1545 | chalk "^4.0.0" 1546 | ci-info "^3.2.0" 1547 | graceful-fs "^4.2.9" 1548 | picomatch "^2.2.3" 1549 | 1550 | jest-validate@^29.5.0: 1551 | version "29.5.0" 1552 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" 1553 | integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ== 1554 | dependencies: 1555 | "@jest/types" "^29.5.0" 1556 | camelcase "^6.2.0" 1557 | chalk "^4.0.0" 1558 | jest-get-type "^29.4.3" 1559 | leven "^3.1.0" 1560 | pretty-format "^29.5.0" 1561 | 1562 | jest-watcher@^29.5.0: 1563 | version "29.5.0" 1564 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" 1565 | integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA== 1566 | dependencies: 1567 | "@jest/test-result" "^29.5.0" 1568 | "@jest/types" "^29.5.0" 1569 | "@types/node" "*" 1570 | ansi-escapes "^4.2.1" 1571 | chalk "^4.0.0" 1572 | emittery "^0.13.1" 1573 | jest-util "^29.5.0" 1574 | string-length "^4.0.1" 1575 | 1576 | jest-worker@^29.5.0: 1577 | version "29.5.0" 1578 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" 1579 | integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== 1580 | dependencies: 1581 | "@types/node" "*" 1582 | jest-util "^29.5.0" 1583 | merge-stream "^2.0.0" 1584 | supports-color "^8.0.0" 1585 | 1586 | jest@^29.5.0: 1587 | version "29.5.0" 1588 | resolved "https://registry.yarnpkg.com/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" 1589 | integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== 1590 | dependencies: 1591 | "@jest/core" "^29.5.0" 1592 | "@jest/types" "^29.5.0" 1593 | import-local "^3.0.2" 1594 | jest-cli "^29.5.0" 1595 | 1596 | js-tokens@^4.0.0: 1597 | version "4.0.0" 1598 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1599 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1600 | 1601 | js-yaml@^3.13.1: 1602 | version "3.14.1" 1603 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 1604 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 1605 | dependencies: 1606 | argparse "^1.0.7" 1607 | esprima "^4.0.0" 1608 | 1609 | jsesc@^2.5.1: 1610 | version "2.5.2" 1611 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1612 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1613 | 1614 | json-parse-even-better-errors@^2.3.0: 1615 | version "2.3.1" 1616 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1617 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1618 | 1619 | json5@^2.2.2: 1620 | version "2.2.3" 1621 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 1622 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1623 | 1624 | kleur@^3.0.3: 1625 | version "3.0.3" 1626 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" 1627 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== 1628 | 1629 | leven@^3.1.0: 1630 | version "3.1.0" 1631 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 1632 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 1633 | 1634 | lines-and-columns@^1.1.6: 1635 | version "1.2.4" 1636 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 1637 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 1638 | 1639 | locate-path@^5.0.0: 1640 | version "5.0.0" 1641 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1642 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1643 | dependencies: 1644 | p-locate "^4.1.0" 1645 | 1646 | lru-cache@^5.1.1: 1647 | version "5.1.1" 1648 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 1649 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 1650 | dependencies: 1651 | yallist "^3.0.2" 1652 | 1653 | lru-cache@^6.0.0: 1654 | version "6.0.0" 1655 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1656 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1657 | dependencies: 1658 | yallist "^4.0.0" 1659 | 1660 | make-dir@^3.0.0: 1661 | version "3.1.0" 1662 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1663 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1664 | dependencies: 1665 | semver "^6.0.0" 1666 | 1667 | makeerror@1.0.12: 1668 | version "1.0.12" 1669 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" 1670 | integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== 1671 | dependencies: 1672 | tmpl "1.0.5" 1673 | 1674 | merge-stream@^2.0.0: 1675 | version "2.0.0" 1676 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1677 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1678 | 1679 | micromatch@^4.0.4: 1680 | version "4.0.5" 1681 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1682 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1683 | dependencies: 1684 | braces "^3.0.2" 1685 | picomatch "^2.3.1" 1686 | 1687 | mimic-fn@^2.1.0: 1688 | version "2.1.0" 1689 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1690 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1691 | 1692 | minimatch@^3.0.4, minimatch@^3.1.1: 1693 | version "3.1.2" 1694 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1695 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1696 | dependencies: 1697 | brace-expansion "^1.1.7" 1698 | 1699 | ms@2.1.2: 1700 | version "2.1.2" 1701 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1702 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1703 | 1704 | natural-compare@^1.4.0: 1705 | version "1.4.0" 1706 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1707 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1708 | 1709 | node-int64@^0.4.0: 1710 | version "0.4.0" 1711 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 1712 | integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== 1713 | 1714 | node-releases@^2.0.12: 1715 | version "2.0.12" 1716 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" 1717 | integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== 1718 | 1719 | normalize-path@^3.0.0: 1720 | version "3.0.0" 1721 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1722 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1723 | 1724 | npm-run-path@^4.0.1: 1725 | version "4.0.1" 1726 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 1727 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1728 | dependencies: 1729 | path-key "^3.0.0" 1730 | 1731 | once@^1.3.0: 1732 | version "1.4.0" 1733 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1734 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1735 | dependencies: 1736 | wrappy "1" 1737 | 1738 | onetime@^5.1.2: 1739 | version "5.1.2" 1740 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1741 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1742 | dependencies: 1743 | mimic-fn "^2.1.0" 1744 | 1745 | p-limit@^2.2.0: 1746 | version "2.3.0" 1747 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1748 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1749 | dependencies: 1750 | p-try "^2.0.0" 1751 | 1752 | p-limit@^3.1.0: 1753 | version "3.1.0" 1754 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1755 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1756 | dependencies: 1757 | yocto-queue "^0.1.0" 1758 | 1759 | p-locate@^4.1.0: 1760 | version "4.1.0" 1761 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1762 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1763 | dependencies: 1764 | p-limit "^2.2.0" 1765 | 1766 | p-try@^2.0.0: 1767 | version "2.2.0" 1768 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1769 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1770 | 1771 | parse-json@^5.2.0: 1772 | version "5.2.0" 1773 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 1774 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1775 | dependencies: 1776 | "@babel/code-frame" "^7.0.0" 1777 | error-ex "^1.3.1" 1778 | json-parse-even-better-errors "^2.3.0" 1779 | lines-and-columns "^1.1.6" 1780 | 1781 | path-exists@^4.0.0: 1782 | version "4.0.0" 1783 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1784 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1785 | 1786 | path-is-absolute@^1.0.0: 1787 | version "1.0.1" 1788 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1789 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1790 | 1791 | path-key@^3.0.0, path-key@^3.1.0: 1792 | version "3.1.1" 1793 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1794 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1795 | 1796 | path-parse@^1.0.7: 1797 | version "1.0.7" 1798 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1799 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1800 | 1801 | picocolors@^1.0.0: 1802 | version "1.0.0" 1803 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1804 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1805 | 1806 | picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: 1807 | version "2.3.1" 1808 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1809 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1810 | 1811 | pirates@^4.0.4: 1812 | version "4.0.5" 1813 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" 1814 | integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== 1815 | 1816 | pkg-dir@^4.2.0: 1817 | version "4.2.0" 1818 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1819 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1820 | dependencies: 1821 | find-up "^4.0.0" 1822 | 1823 | pretty-format@^29.5.0: 1824 | version "29.5.0" 1825 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" 1826 | integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== 1827 | dependencies: 1828 | "@jest/schemas" "^29.4.3" 1829 | ansi-styles "^5.0.0" 1830 | react-is "^18.0.0" 1831 | 1832 | prompts@^2.0.1: 1833 | version "2.4.2" 1834 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" 1835 | integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== 1836 | dependencies: 1837 | kleur "^3.0.3" 1838 | sisteransi "^1.0.5" 1839 | 1840 | pure-rand@^6.0.0: 1841 | version "6.0.2" 1842 | resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" 1843 | integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== 1844 | 1845 | react-is@^18.0.0: 1846 | version "18.2.0" 1847 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" 1848 | integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== 1849 | 1850 | require-directory@^2.1.1: 1851 | version "2.1.1" 1852 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1853 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1854 | 1855 | resolve-cwd@^3.0.0: 1856 | version "3.0.0" 1857 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 1858 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 1859 | dependencies: 1860 | resolve-from "^5.0.0" 1861 | 1862 | resolve-from@^5.0.0: 1863 | version "5.0.0" 1864 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 1865 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 1866 | 1867 | resolve.exports@^2.0.0: 1868 | version "2.0.2" 1869 | resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" 1870 | integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== 1871 | 1872 | resolve@^1.20.0: 1873 | version "1.22.2" 1874 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" 1875 | integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== 1876 | dependencies: 1877 | is-core-module "^2.11.0" 1878 | path-parse "^1.0.7" 1879 | supports-preserve-symlinks-flag "^1.0.0" 1880 | 1881 | semver@^6.0.0, semver@^6.3.0: 1882 | version "6.3.0" 1883 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1884 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1885 | 1886 | semver@^7.3.5: 1887 | version "7.5.1" 1888 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" 1889 | integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== 1890 | dependencies: 1891 | lru-cache "^6.0.0" 1892 | 1893 | shebang-command@^2.0.0: 1894 | version "2.0.0" 1895 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1896 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1897 | dependencies: 1898 | shebang-regex "^3.0.0" 1899 | 1900 | shebang-regex@^3.0.0: 1901 | version "3.0.0" 1902 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1903 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1904 | 1905 | signal-exit@^3.0.3, signal-exit@^3.0.7: 1906 | version "3.0.7" 1907 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 1908 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 1909 | 1910 | sisteransi@^1.0.5: 1911 | version "1.0.5" 1912 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" 1913 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 1914 | 1915 | slash@^3.0.0: 1916 | version "3.0.0" 1917 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1918 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1919 | 1920 | source-map-support@0.5.13: 1921 | version "0.5.13" 1922 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" 1923 | integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== 1924 | dependencies: 1925 | buffer-from "^1.0.0" 1926 | source-map "^0.6.0" 1927 | 1928 | source-map@^0.6.0, source-map@^0.6.1: 1929 | version "0.6.1" 1930 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1931 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1932 | 1933 | sprintf-js@~1.0.2: 1934 | version "1.0.3" 1935 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1936 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 1937 | 1938 | stack-utils@^2.0.3: 1939 | version "2.0.6" 1940 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" 1941 | integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== 1942 | dependencies: 1943 | escape-string-regexp "^2.0.0" 1944 | 1945 | string-length@^4.0.1: 1946 | version "4.0.2" 1947 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" 1948 | integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== 1949 | dependencies: 1950 | char-regex "^1.0.2" 1951 | strip-ansi "^6.0.0" 1952 | 1953 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 1954 | version "4.2.3" 1955 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1956 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1957 | dependencies: 1958 | emoji-regex "^8.0.0" 1959 | is-fullwidth-code-point "^3.0.0" 1960 | strip-ansi "^6.0.1" 1961 | 1962 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1963 | version "6.0.1" 1964 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1965 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1966 | dependencies: 1967 | ansi-regex "^5.0.1" 1968 | 1969 | strip-bom@^4.0.0: 1970 | version "4.0.0" 1971 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 1972 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 1973 | 1974 | strip-final-newline@^2.0.0: 1975 | version "2.0.0" 1976 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 1977 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1978 | 1979 | strip-json-comments@^3.1.1: 1980 | version "3.1.1" 1981 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1982 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1983 | 1984 | supports-color@^5.3.0: 1985 | version "5.5.0" 1986 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1987 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1988 | dependencies: 1989 | has-flag "^3.0.0" 1990 | 1991 | supports-color@^7.1.0: 1992 | version "7.2.0" 1993 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1994 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1995 | dependencies: 1996 | has-flag "^4.0.0" 1997 | 1998 | supports-color@^8.0.0: 1999 | version "8.1.1" 2000 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2001 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2002 | dependencies: 2003 | has-flag "^4.0.0" 2004 | 2005 | supports-preserve-symlinks-flag@^1.0.0: 2006 | version "1.0.0" 2007 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 2008 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 2009 | 2010 | test-exclude@^6.0.0: 2011 | version "6.0.0" 2012 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 2013 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 2014 | dependencies: 2015 | "@istanbuljs/schema" "^0.1.2" 2016 | glob "^7.1.4" 2017 | minimatch "^3.0.4" 2018 | 2019 | tmpl@1.0.5: 2020 | version "1.0.5" 2021 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" 2022 | integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== 2023 | 2024 | to-fast-properties@^2.0.0: 2025 | version "2.0.0" 2026 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2027 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 2028 | 2029 | to-regex-range@^5.0.1: 2030 | version "5.0.1" 2031 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2032 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2033 | dependencies: 2034 | is-number "^7.0.0" 2035 | 2036 | type-detect@4.0.8: 2037 | version "4.0.8" 2038 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2039 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2040 | 2041 | type-fest@^0.21.3: 2042 | version "0.21.3" 2043 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 2044 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 2045 | 2046 | update-browserslist-db@^1.0.11: 2047 | version "1.0.11" 2048 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" 2049 | integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== 2050 | dependencies: 2051 | escalade "^3.1.1" 2052 | picocolors "^1.0.0" 2053 | 2054 | v8-to-istanbul@^9.0.1: 2055 | version "9.1.0" 2056 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" 2057 | integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== 2058 | dependencies: 2059 | "@jridgewell/trace-mapping" "^0.3.12" 2060 | "@types/istanbul-lib-coverage" "^2.0.1" 2061 | convert-source-map "^1.6.0" 2062 | 2063 | walker@^1.0.8: 2064 | version "1.0.8" 2065 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" 2066 | integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== 2067 | dependencies: 2068 | makeerror "1.0.12" 2069 | 2070 | which@^2.0.1: 2071 | version "2.0.2" 2072 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2073 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2074 | dependencies: 2075 | isexe "^2.0.0" 2076 | 2077 | wrap-ansi@^7.0.0: 2078 | version "7.0.0" 2079 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2080 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2081 | dependencies: 2082 | ansi-styles "^4.0.0" 2083 | string-width "^4.1.0" 2084 | strip-ansi "^6.0.0" 2085 | 2086 | wrappy@1: 2087 | version "1.0.2" 2088 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2089 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 2090 | 2091 | write-file-atomic@^4.0.2: 2092 | version "4.0.2" 2093 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" 2094 | integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== 2095 | dependencies: 2096 | imurmurhash "^0.1.4" 2097 | signal-exit "^3.0.7" 2098 | 2099 | y18n@^5.0.5: 2100 | version "5.0.8" 2101 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2102 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2103 | 2104 | yallist@^3.0.2: 2105 | version "3.1.1" 2106 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 2107 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 2108 | 2109 | yallist@^4.0.0: 2110 | version "4.0.0" 2111 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2112 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2113 | 2114 | yargs-parser@^21.1.1: 2115 | version "21.1.1" 2116 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 2117 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 2118 | 2119 | yargs@^17.3.1: 2120 | version "17.7.2" 2121 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" 2122 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== 2123 | dependencies: 2124 | cliui "^8.0.1" 2125 | escalade "^3.1.1" 2126 | get-caller-file "^2.0.5" 2127 | require-directory "^2.1.1" 2128 | string-width "^4.2.3" 2129 | y18n "^5.0.5" 2130 | yargs-parser "^21.1.1" 2131 | 2132 | yocto-queue@^0.1.0: 2133 | version "0.1.0" 2134 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2135 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2136 | --------------------------------------------------------------------------------