├── .editorconfig ├── .gitattributes ├── .github └── workflows │ └── ci.yaml ├── .gitignore ├── LICENSE ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── kotlin-js-store └── yarn.lock ├── settings.gradle.kts └── src ├── commonMain └── kotlin │ └── com │ └── github │ └── michaelbull │ └── itertools │ ├── Combinations.kt │ ├── Permutations.kt │ └── Product.kt └── commonTest └── kotlin └── com └── github └── michaelbull └── itertools ├── CombinationsTest.kt ├── PermutationsTest.kt └── ProductTest.kt /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 4 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.yaml] 12 | indent_size = 2 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.bat text eol=crlf 2 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | pull_request: 5 | branches: [ "master" ] 6 | push: 7 | branches: [ "master" ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | build: 14 | name: Build on ${{ matrix.os }} 15 | runs-on: ${{ matrix.os }} 16 | 17 | strategy: 18 | matrix: 19 | include: 20 | - os: ubuntu-latest 21 | tasks: build 22 | 23 | - os: macos-latest 24 | tasks: > 25 | iosX64Test 26 | macosX64Test 27 | tvosX64Test 28 | watchosX64Test 29 | 30 | - os: windows-latest 31 | tasks: mingwX64Test 32 | 33 | steps: 34 | - name: Checkout Project 35 | uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 36 | 37 | - name: Validate Gradle Wrapper 38 | uses: gradle/actions/wrapper-validation@750cdda3edd6d51b7fdfc069d2e2818cf3c44f4c # v3.3.1 39 | 40 | - uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 41 | with: 42 | path: | 43 | ~/.konan 44 | key: ${{ runner.os }}-${{ hashFiles('**/.lock') }} 45 | 46 | - name: Setup JDK 47 | uses: actions/setup-java@9704b39bf258b59bc04b50fa2dd55e9ed76b47a8 # v4.1.0 48 | with: 49 | distribution: zulu 50 | java-version: 8 51 | 52 | - name: Setup Gradle 53 | uses: gradle/actions/setup-gradle@750cdda3edd6d51b7fdfc069d2e2818cf3c44f4c # v3.3.1 54 | 55 | - name: Build with Gradle Wrapper 56 | run: ./gradlew ${{ matrix.tasks }} 57 | 58 | publish: 59 | name: Publish on ${{ matrix.os }} 60 | runs-on: ${{ matrix.os }} 61 | if: github.ref == 'refs/heads/master' && github.repository == 'michaelbull/kotlin-itertools' 62 | needs: build 63 | 64 | strategy: 65 | matrix: 66 | include: 67 | - os: ubuntu-latest 68 | tasks: > 69 | publishAndroidNativeArm32PublicationToMavenRepository 70 | publishAndroidNativeArm64PublicationToMavenRepository 71 | publishAndroidNativeX64PublicationToMavenRepository 72 | publishAndroidNativeX86PublicationToMavenRepository 73 | publishJsPublicationToMavenRepository 74 | publishJvmPublicationToMavenRepository 75 | publishKotlinMultiplatformPublicationToMavenRepository 76 | publishLinuxArm64PublicationToMavenRepository 77 | publishLinuxX64PublicationToMavenRepository 78 | publishWasmJsPublicationToMavenRepository 79 | 80 | - os: windows-latest 81 | tasks: publishMingwX64PublicationToMavenRepository 82 | 83 | - os: macos-latest 84 | tasks: > 85 | publishIosArm64PublicationToMavenRepository 86 | publishIosSimulatorArm64PublicationToMavenRepository 87 | publishIosX64PublicationToMavenRepository 88 | publishMacosArm64PublicationToMavenRepository 89 | publishMacosX64PublicationToMavenRepository 90 | publishTvosArm64PublicationToMavenRepository 91 | publishTvosSimulatorArm64PublicationToMavenRepository 92 | publishTvosX64PublicationToMavenRepository 93 | publishWatchosArm32PublicationToMavenRepository 94 | publishWatchosArm64PublicationToMavenRepository 95 | publishWatchosDeviceArm64PublicationToMavenRepository 96 | publishWatchosSimulatorArm64PublicationToMavenRepository 97 | publishWatchosX64PublicationToMavenRepository 98 | 99 | steps: 100 | - name: Checkout Project 101 | uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 102 | 103 | - name: Validate Gradle Wrapper 104 | uses: gradle/actions/wrapper-validation@750cdda3edd6d51b7fdfc069d2e2818cf3c44f4c # v3.3.1 105 | 106 | - uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 107 | with: 108 | path: | 109 | ~/.konan 110 | key: ${{ runner.os }}-${{ hashFiles('**/.lock') }} 111 | 112 | - name: Setup JDK 113 | uses: actions/setup-java@9704b39bf258b59bc04b50fa2dd55e9ed76b47a8 # v4.1.0 114 | with: 115 | distribution: zulu 116 | java-version: 8 117 | 118 | - name: Setup Gradle 119 | uses: gradle/actions/setup-gradle@750cdda3edd6d51b7fdfc069d2e2818cf3c44f4c # v3.3.1 120 | 121 | - name: Publish with Gradle Wrapper 122 | run: ./gradlew ${{ matrix.tasks }} 123 | env: 124 | ORG_GRADLE_PROJECT_ossrhUsername: ${{ secrets.OSSRH_USERNAME }} 125 | ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }} 126 | ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.SIGNING_KEY_ID }} 127 | ORG_GRADLE_PROJECT_signingKey: ${{ secrets.SIGNING_KEY }} 128 | ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.SIGNING_PASSWORD }} 129 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Hidden files 2 | .* 3 | 4 | # Temporary files 5 | *~ 6 | 7 | # Git 8 | !.git* 9 | 10 | # GitHub 11 | !/.github 12 | 13 | # EditorConfig 14 | !.editorconfig 15 | 16 | # IntelliJ Idea 17 | out/ 18 | *.iml 19 | *.ipr 20 | *.iws 21 | 22 | # Gradle 23 | build/ 24 | local.properties 25 | 26 | # JVM error logs 27 | hs_err_pid*.log 28 | replay_pid*.log 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2024 Michael Bull (https://www.michael-bull.com) 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any 4 | purpose with or without fee is hereby granted, provided that the above 5 | copyright notice and this permission notice appear in all copies. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 8 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 9 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 10 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 11 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 12 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 13 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # kotlin-itertools 2 | 3 | [![Maven Central](https://img.shields.io/maven-central/v/com.michael-bull.kotlin-itertools/kotlin-itertools.svg)](https://search.maven.org/search?q=g:com.michael-bull.kotlin-itertools) 4 | [![CI](https://github.com/michaelbull/kotlin-itertools/actions/workflows/ci.yaml/badge.svg)](https://github.com/michaelbull/kotlin-itertools/actions/workflows/ci.yaml) 5 | [![License](https://img.shields.io/github/license/michaelbull/kotlin-itertools.svg)](https://github.com/michaelbull/kotlin-itertools/blob/master/LICENSE) 6 | 7 | ![badge][badge-android] 8 | ![badge][badge-jvm] 9 | ![badge][badge-js] 10 | ![badge][badge-nodejs] 11 | ![badge][badge-linux] 12 | ![badge][badge-windows] 13 | ![badge][badge-wasm] 14 | ![badge][badge-ios] 15 | ![badge][badge-mac] 16 | ![badge][badge-tvos] 17 | ![badge][badge-watchos] 18 | ![badge][badge-js-ir] 19 | ![badge][badge-android-native] 20 | ![badge][badge-apple-silicon] 21 | 22 | Multiplatform combinatoric sequences for Kotlin, inspired by [python-itertools][python-itertools]. 23 | 24 | Initially built as part of my solutions for [Advent of Code 2023][advent-2023]. 25 | 26 | ## Installation 27 | 28 | ```groovy 29 | repositories { 30 | mavenCentral() 31 | } 32 | 33 | dependencies { 34 | implementation("com.michael-bull.kotlin-itertools:kotlin-itertools:1.0.1") 35 | } 36 | ``` 37 | 38 | ## Usage 39 | 40 | ### Combinations 41 | 42 | Returns a sequence that yields `length`-sized combinations from this list. 43 | 44 | The combination tuples are emitted in lexicographic order according to the order of this list. 45 | 46 | ```kotlin 47 | fun List.combinations(length: Int = size): Sequence> 48 | 49 | fun List.pairCombinations(): Sequence> 50 | 51 | fun List.tripleCombinations(): Sequence> 52 | ``` 53 | 54 |
55 | Examples 56 | 57 | ```kotlin 58 | import com.github.michaelbull.itertools.combinations 59 | import com.github.michaelbull.itertools.pairCombinations 60 | import com.github.michaelbull.itertools.tripleCombinations 61 | 62 | // [[A, B], [A, C], [A, D], [B, C], [B, D], [C, D]] 63 | fun example1(): List> { 64 | return "ABCD".toList() 65 | .combinations(length = 2) 66 | .toList() 67 | } 68 | 69 | // [(A, B), (A, D), (A, C), (B, D), (B, C), (D, C)] 70 | fun example2(): List> { 71 | return "ABDC".toList() 72 | .pairCombinations() 73 | .toList() 74 | } 75 | 76 | // [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)] 77 | fun example3(): List> { 78 | return (0..3).toList() 79 | .tripleCombinations() 80 | .toList() 81 | } 82 | ``` 83 | 84 |
85 | 86 | ### Permutations 87 | 88 | Returns a sequence that yields `length`-sized permutations from this list. 89 | 90 | The permutation tuples are emitted in lexicographic order according to the order of this list. 91 | 92 | ```kotlin 93 | fun List.permutations(length: Int = size): Sequence> 94 | 95 | fun List.pairPermutations(): Sequence> 96 | 97 | fun List.triplePermutations(): Sequence> 98 | ``` 99 | 100 |
101 | Examples 102 | 103 | ```kotlin 104 | import com.github.michaelbull.itertools.permutations 105 | import com.github.michaelbull.itertools.pairPermutations 106 | import com.github.michaelbull.itertools.triplePermutations 107 | 108 | // [[A, B], [A, C], [A, D], [B, A], [B, C], [B, D], [C, A], [C, B], [C, D], [D, A], [D, B], [D, C]] 109 | fun example1(): List> { 110 | return "ABCD".toList() 111 | .permutations(length = 2) 112 | .toList() 113 | } 114 | 115 | // [(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)] 116 | fun example2(): List> { 117 | return (0..2).toList() 118 | .pairPermutations() 119 | .toList() 120 | } 121 | 122 | // [(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)] 123 | fun example3(): List> { 124 | return (0..2).toList() 125 | .triplePermutations() 126 | .toList() 127 | } 128 | ``` 129 | 130 |
131 | 132 | ### Cartesian Product 133 | 134 | Returns a sequence that yields the Cartesian product of the input iterables/lists. 135 | 136 | The product tuples are emitted in lexicographic order according to the order of this iterable/list. 137 | 138 | ```kotlin 139 | fun Iterable.product(other: Iterable): Sequence> 140 | fun Iterable.product(first: Iterable, second: Iterable): Sequence> 141 | 142 | fun Pair, Iterable>.product(): Sequence> 143 | fun Triple, Iterable, Iterable>.product(): Sequence> 144 | 145 | fun List>.product(): Sequence> 146 | ``` 147 | 148 |
149 | Examples 150 | 151 | ```kotlin 152 | import com.github.michaelbull.itertools.product 153 | 154 | // [(A, x), (A, y), (B, x), (B, y), (C, x), (C, y), (D, x), (D, y)] 155 | fun example1(): List> { 156 | val a = "ABCD".toList() 157 | val b = "xy".toList() 158 | return a.product(b).toList() 159 | } 160 | 161 | // [(A, C, E), (A, C, F), (A, D, E), (A, D, F), (B, C, E), (B, C, F), (B, D, E), (B, D, F)] 162 | fun example2(): List> { 163 | val a = "AB".toList() 164 | val b = "CD".toList() 165 | val c = "EF".toList() 166 | 167 | return Triple(a, b, c) 168 | .product() 169 | .toList() 170 | } 171 | 172 | // [[A, x], [A, y], [B, x], [B, y], [C, x], [C, y], [D, x], [D, y]] 173 | fun example3(): List> { 174 | val a = "ABCD".toList() 175 | val b = "xy".toList() 176 | 177 | return listOf(a, b) 178 | .product() 179 | .toList() 180 | } 181 | ``` 182 |
183 | 184 | ## Contributing 185 | 186 | Bug reports and pull requests are welcome on [GitHub][github]. 187 | 188 | ## License 189 | 190 | This project is available under the terms of the ISC license. See the 191 | [`LICENSE`](LICENSE) file for the copyright information and licensing terms. 192 | 193 | [python-itertools]: https://docs.python.org/3/library/itertools.html 194 | [advent-2023]: https://github.com/michaelbull/advent-2023 195 | [github]: https://github.com/michaelbull/kotlin-itertools 196 | 197 | [badge-android]: http://img.shields.io/badge/-android-6EDB8D.svg?style=flat 198 | [badge-android-native]: http://img.shields.io/badge/support-[AndroidNative]-6EDB8D.svg?style=flat 199 | [badge-jvm]: http://img.shields.io/badge/-jvm-DB413D.svg?style=flat 200 | [badge-js]: http://img.shields.io/badge/-js-F8DB5D.svg?style=flat 201 | [badge-js-ir]: https://img.shields.io/badge/support-[IR]-AAC4E0.svg?style=flat 202 | [badge-nodejs]: https://img.shields.io/badge/-nodejs-68a063.svg?style=flat 203 | [badge-linux]: http://img.shields.io/badge/-linux-2D3F6C.svg?style=flat 204 | [badge-windows]: http://img.shields.io/badge/-windows-4D76CD.svg?style=flat 205 | [badge-wasm]: https://img.shields.io/badge/-wasm-624FE8.svg?style=flat 206 | [badge-apple-silicon]: http://img.shields.io/badge/support-[AppleSilicon]-43BBFF.svg?style=flat 207 | [badge-ios]: http://img.shields.io/badge/-ios-CDCDCD.svg?style=flat 208 | [badge-mac]: http://img.shields.io/badge/-macos-111111.svg?style=flat 209 | [badge-watchos]: http://img.shields.io/badge/-watchos-C0C0C0.svg?style=flat 210 | [badge-tvos]: http://img.shields.io/badge/-tvos-808080.svg?style=flat 211 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask 2 | import com.github.benmanes.gradle.versions.updates.gradle.GradleReleaseChannel 3 | import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl 4 | 5 | plugins { 6 | alias(libs.plugins.kotlin.multiplatform) 7 | alias(libs.plugins.versions) 8 | `maven-publish` 9 | signing 10 | } 11 | 12 | tasks.withType { 13 | gradleReleaseChannel = GradleReleaseChannel.CURRENT.id 14 | 15 | rejectVersionIf { 16 | listOf("alpha", "beta", "rc", "cr", "m", "eap", "pr", "dev").any { 17 | candidate.version.contains(it, ignoreCase = true) 18 | } 19 | } 20 | } 21 | 22 | kotlin { 23 | explicitApi() 24 | 25 | jvmToolchain(8) 26 | 27 | jvm() 28 | 29 | js(IR) { 30 | browser() 31 | nodejs() 32 | } 33 | 34 | @OptIn(ExperimentalWasmDsl::class) 35 | wasmJs { 36 | binaries.executable() 37 | nodejs() 38 | } 39 | 40 | /* https://kotlinlang.org/docs/native-target-support.html#tier-1 */ 41 | 42 | macosX64() 43 | macosArm64() 44 | iosSimulatorArm64() 45 | iosX64() 46 | 47 | /* https://kotlinlang.org/docs/native-target-support.html#tier-2 */ 48 | 49 | linuxX64() 50 | linuxArm64() 51 | 52 | watchosSimulatorArm64() 53 | watchosX64() 54 | watchosArm32() 55 | watchosArm64() 56 | 57 | tvosSimulatorArm64() 58 | tvosX64() 59 | tvosArm64() 60 | 61 | iosArm64() 62 | 63 | /* https://kotlinlang.org/docs/native-target-support.html#tier-3 */ 64 | 65 | androidNativeArm32() 66 | androidNativeArm64() 67 | androidNativeX86() 68 | androidNativeX64() 69 | 70 | mingwX64() 71 | 72 | watchosDeviceArm64() 73 | 74 | sourceSets { 75 | all { 76 | languageSettings.apply { 77 | optIn("kotlin.contracts.ExperimentalContracts") 78 | } 79 | } 80 | 81 | commonTest { 82 | dependencies { 83 | implementation(kotlin("test")) 84 | } 85 | } 86 | 87 | jvmTest { 88 | dependencies { 89 | implementation(kotlin("test-junit")) 90 | } 91 | } 92 | 93 | jsTest { 94 | dependencies { 95 | implementation(kotlin("test-js")) 96 | } 97 | } 98 | } 99 | } 100 | 101 | tasks.withType { 102 | from(rootDir.resolve("LICENSE")) { 103 | into("META-INF") 104 | } 105 | } 106 | 107 | publishing { 108 | repositories { 109 | maven { 110 | if (project.version.toString().endsWith("SNAPSHOT")) { 111 | setUrl("https://oss.sonatype.org/content/repositories/snapshots") 112 | } else { 113 | setUrl("https://oss.sonatype.org/service/local/staging/deploy/maven2") 114 | } 115 | 116 | credentials { 117 | val ossrhUsername: String? by project 118 | val ossrhPassword: String? by project 119 | 120 | username = ossrhUsername 121 | password = ossrhPassword 122 | } 123 | } 124 | } 125 | 126 | publications.withType { 127 | val targetName = this@withType.name 128 | 129 | artifact(tasks.register("${targetName}JavadocJar", Jar::class) { 130 | group = LifecycleBasePlugin.BUILD_GROUP 131 | description = "Assembles a jar archive containing the Javadoc API documentation of target '$targetName'." 132 | archiveClassifier.set("javadoc") 133 | archiveAppendix.set(targetName) 134 | }) 135 | 136 | pom { 137 | name.set(project.name) 138 | description.set(project.description) 139 | url.set("https://github.com/michaelbull/kotlin-itertools") 140 | inceptionYear.set("2024") 141 | 142 | licenses { 143 | license { 144 | name.set("ISC License") 145 | url.set("https://opensource.org/licenses/isc-license.txt") 146 | } 147 | } 148 | 149 | developers { 150 | developer { 151 | name.set("Michael Bull") 152 | url.set("https://www.michael-bull.com") 153 | } 154 | } 155 | 156 | scm { 157 | connection.set("scm:git:https://github.com/michaelbull/kotlin-itertools") 158 | developerConnection.set("scm:git:git@github.com:michaelbull/kotlin-itertools.git") 159 | url.set("https://github.com/michaelbull/kotlin-itertools") 160 | } 161 | 162 | issueManagement { 163 | system.set("GitHub Issues") 164 | url.set("https://github.com/michaelbull/kotlin-itertools/issues") 165 | } 166 | 167 | ciManagement { 168 | system.set("GitHub Actions") 169 | url.set("https://github.com/michaelbull/kotlin-itertools/actions") 170 | } 171 | } 172 | } 173 | } 174 | 175 | signing { 176 | val signingKeyId: String? by project // must be the last 8 digits of the key 177 | val signingKey: String? by project 178 | val signingPassword: String? by project 179 | 180 | useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) 181 | sign(publishing.publications) 182 | } 183 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | group=com.michael-bull.kotlin-itertools 2 | version=1.0.2-SNAPSHOT 3 | description=Multiplatform combinatoric sequences for Kotlin, inspired by python-itertools. 4 | 5 | kotlin.code.style=official 6 | kotlin.native.ignoreDisabledTargets=true 7 | kotlin.mpp.stability.nowarn=true 8 | -------------------------------------------------------------------------------- /gradle/libs.versions.toml: -------------------------------------------------------------------------------- 1 | [versions] 2 | kotlin = "2.1.0" 3 | versions-plugin = "0.51.0" 4 | 5 | [plugins] 6 | kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } 7 | versions = { id = "com.github.ben-manes.versions", version.ref = "versions-plugin" } 8 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelbull/kotlin-itertools/3a1d8e1303b7c9ee650262e82db567575c48654f/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | # SPDX-License-Identifier: Apache-2.0 19 | # 20 | 21 | ############################################################################## 22 | # 23 | # Gradle start up script for POSIX generated by Gradle. 24 | # 25 | # Important for running: 26 | # 27 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 28 | # noncompliant, but you have some other compliant shell such as ksh or 29 | # bash, then to run this script, type that shell name before the whole 30 | # command line, like: 31 | # 32 | # ksh Gradle 33 | # 34 | # Busybox and similar reduced shells will NOT work, because this script 35 | # requires all of these POSIX shell features: 36 | # * functions; 37 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 38 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 39 | # * compound commands having a testable exit status, especially «case»; 40 | # * various built-in commands including «command», «set», and «ulimit». 41 | # 42 | # Important for patching: 43 | # 44 | # (2) This script targets any POSIX shell, so it avoids extensions provided 45 | # by Bash, Ksh, etc; in particular arrays are avoided. 46 | # 47 | # The "traditional" practice of packing multiple parameters into a 48 | # space-separated string is a well documented source of bugs and security 49 | # problems, so this is (mostly) avoided, by progressively accumulating 50 | # options in "$@", and eventually passing that to Java. 51 | # 52 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 53 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 54 | # see the in-line comments for details. 55 | # 56 | # There are tweaks for specific operating systems such as AIX, CygWin, 57 | # Darwin, MinGW, and NonStop. 58 | # 59 | # (3) This script is generated from the Groovy template 60 | # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 61 | # within the Gradle project. 62 | # 63 | # You can find Gradle at https://github.com/gradle/gradle/. 64 | # 65 | ############################################################################## 66 | 67 | # Attempt to set APP_HOME 68 | 69 | # Resolve links: $0 may be a link 70 | app_path=$0 71 | 72 | # Need this for daisy-chained symlinks. 73 | while 74 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 75 | [ -h "$app_path" ] 76 | do 77 | ls=$( ls -ld "$app_path" ) 78 | link=${ls#*' -> '} 79 | case $link in #( 80 | /*) app_path=$link ;; #( 81 | *) app_path=$APP_HOME$link ;; 82 | esac 83 | done 84 | 85 | # This is normally unused 86 | # shellcheck disable=SC2034 87 | APP_BASE_NAME=${0##*/} 88 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) 89 | APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s 90 | ' "$PWD" ) || exit 91 | 92 | # Use the maximum available, or set MAX_FD != -1 to use that value. 93 | MAX_FD=maximum 94 | 95 | warn () { 96 | echo "$*" 97 | } >&2 98 | 99 | die () { 100 | echo 101 | echo "$*" 102 | echo 103 | exit 1 104 | } >&2 105 | 106 | # OS specific support (must be 'true' or 'false'). 107 | cygwin=false 108 | msys=false 109 | darwin=false 110 | nonstop=false 111 | case "$( uname )" in #( 112 | CYGWIN* ) cygwin=true ;; #( 113 | Darwin* ) darwin=true ;; #( 114 | MSYS* | MINGW* ) msys=true ;; #( 115 | NONSTOP* ) nonstop=true ;; 116 | esac 117 | 118 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 119 | 120 | 121 | # Determine the Java command to use to start the JVM. 122 | if [ -n "$JAVA_HOME" ] ; then 123 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 124 | # IBM's JDK on AIX uses strange locations for the executables 125 | JAVACMD=$JAVA_HOME/jre/sh/java 126 | else 127 | JAVACMD=$JAVA_HOME/bin/java 128 | fi 129 | if [ ! -x "$JAVACMD" ] ; then 130 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 131 | 132 | Please set the JAVA_HOME variable in your environment to match the 133 | location of your Java installation." 134 | fi 135 | else 136 | JAVACMD=java 137 | if ! command -v java >/dev/null 2>&1 138 | then 139 | die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 140 | 141 | Please set the JAVA_HOME variable in your environment to match the 142 | location of your Java installation." 143 | fi 144 | fi 145 | 146 | # Increase the maximum file descriptors if we can. 147 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 148 | case $MAX_FD in #( 149 | max*) 150 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 151 | # shellcheck disable=SC2039,SC3045 152 | MAX_FD=$( ulimit -H -n ) || 153 | warn "Could not query maximum file descriptor limit" 154 | esac 155 | case $MAX_FD in #( 156 | '' | soft) :;; #( 157 | *) 158 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 159 | # shellcheck disable=SC2039,SC3045 160 | ulimit -n "$MAX_FD" || 161 | warn "Could not set maximum file descriptor limit to $MAX_FD" 162 | esac 163 | fi 164 | 165 | # Collect all arguments for the java command, stacking in reverse order: 166 | # * args from the command line 167 | # * the main class name 168 | # * -classpath 169 | # * -D...appname settings 170 | # * --module-path (only if needed) 171 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 172 | 173 | # For Cygwin or MSYS, switch paths to Windows format before running java 174 | if "$cygwin" || "$msys" ; then 175 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 176 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 177 | 178 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 179 | 180 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 181 | for arg do 182 | if 183 | case $arg in #( 184 | -*) false ;; # don't mess with options #( 185 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 186 | [ -e "$t" ] ;; #( 187 | *) false ;; 188 | esac 189 | then 190 | arg=$( cygpath --path --ignore --mixed "$arg" ) 191 | fi 192 | # Roll the args list around exactly as many times as the number of 193 | # args, so each arg winds up back in the position where it started, but 194 | # possibly modified. 195 | # 196 | # NB: a `for` loop captures its iteration list before it begins, so 197 | # changing the positional parameters here affects neither the number of 198 | # iterations, nor the values presented in `arg`. 199 | shift # remove old arg 200 | set -- "$@" "$arg" # push replacement arg 201 | done 202 | fi 203 | 204 | 205 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 206 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 207 | 208 | # Collect all arguments for the java command: 209 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, 210 | # and any embedded shellness will be escaped. 211 | # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be 212 | # treated as '${Hostname}' itself on the command line. 213 | 214 | set -- \ 215 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 216 | -classpath "$CLASSPATH" \ 217 | org.gradle.wrapper.GradleWrapperMain \ 218 | "$@" 219 | 220 | # Stop when "xargs" is not available. 221 | if ! command -v xargs >/dev/null 2>&1 222 | then 223 | die "xargs is not available" 224 | fi 225 | 226 | # Use "xargs" to parse quoted args. 227 | # 228 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 229 | # 230 | # In Bash we could simply go: 231 | # 232 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 233 | # set -- "${ARGS[@]}" "$@" 234 | # 235 | # but POSIX shell has neither arrays nor command substitution, so instead we 236 | # post-process each arg (as a line of input to sed) to backslash-escape any 237 | # character that might be a shell metacharacter, then use eval to reverse 238 | # that process (while maintaining the separation between arguments), and wrap 239 | # the whole thing up as a single "set" statement. 240 | # 241 | # This will of course break if any of these variables contains a newline or 242 | # an unmatched quote. 243 | # 244 | 245 | eval "set -- $( 246 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 247 | xargs -n1 | 248 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 249 | tr '\n' ' ' 250 | )" '"$@"' 251 | 252 | exec "$JAVACMD" "$@" 253 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | @rem SPDX-License-Identifier: Apache-2.0 17 | @rem 18 | 19 | @if "%DEBUG%"=="" @echo off 20 | @rem ########################################################################## 21 | @rem 22 | @rem Gradle startup script for Windows 23 | @rem 24 | @rem ########################################################################## 25 | 26 | @rem Set local scope for the variables with windows NT shell 27 | if "%OS%"=="Windows_NT" setlocal 28 | 29 | set DIRNAME=%~dp0 30 | if "%DIRNAME%"=="" set DIRNAME=. 31 | @rem This is normally unused 32 | set APP_BASE_NAME=%~n0 33 | set APP_HOME=%DIRNAME% 34 | 35 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 36 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 37 | 38 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 39 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 40 | 41 | @rem Find java.exe 42 | if defined JAVA_HOME goto findJavaFromJavaHome 43 | 44 | set JAVA_EXE=java.exe 45 | %JAVA_EXE% -version >NUL 2>&1 46 | if %ERRORLEVEL% equ 0 goto execute 47 | 48 | echo. 1>&2 49 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 50 | echo. 1>&2 51 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 52 | echo location of your Java installation. 1>&2 53 | 54 | goto fail 55 | 56 | :findJavaFromJavaHome 57 | set JAVA_HOME=%JAVA_HOME:"=% 58 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 59 | 60 | if exist "%JAVA_EXE%" goto execute 61 | 62 | echo. 1>&2 63 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 64 | echo. 1>&2 65 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 66 | echo location of your Java installation. 1>&2 67 | 68 | goto fail 69 | 70 | :execute 71 | @rem Setup the command line 72 | 73 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 74 | 75 | 76 | @rem Execute Gradle 77 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 78 | 79 | :end 80 | @rem End local scope for the variables with windows NT shell 81 | if %ERRORLEVEL% equ 0 goto mainEnd 82 | 83 | :fail 84 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 85 | rem the _cmd.exe /c_ return code! 86 | set EXIT_CODE=%ERRORLEVEL% 87 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 88 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 89 | exit /b %EXIT_CODE% 90 | 91 | :mainEnd 92 | if "%OS%"=="Windows_NT" endlocal 93 | 94 | :omega 95 | -------------------------------------------------------------------------------- /kotlin-js-store/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@colors/colors@1.5.0": 6 | version "1.5.0" 7 | resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" 8 | integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== 9 | 10 | "@discoveryjs/json-ext@^0.5.0": 11 | version "0.5.7" 12 | resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" 13 | integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== 14 | 15 | "@jridgewell/gen-mapping@^0.3.0": 16 | version "0.3.5" 17 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" 18 | integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== 19 | dependencies: 20 | "@jridgewell/set-array" "^1.2.1" 21 | "@jridgewell/sourcemap-codec" "^1.4.10" 22 | "@jridgewell/trace-mapping" "^0.3.24" 23 | 24 | "@jridgewell/resolve-uri@^3.1.0": 25 | version "3.1.2" 26 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" 27 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 28 | 29 | "@jridgewell/set-array@^1.2.1": 30 | version "1.2.1" 31 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" 32 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== 33 | 34 | "@jridgewell/source-map@^0.3.3": 35 | version "0.3.5" 36 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" 37 | integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== 38 | dependencies: 39 | "@jridgewell/gen-mapping" "^0.3.0" 40 | "@jridgewell/trace-mapping" "^0.3.9" 41 | 42 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 43 | version "1.4.15" 44 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 45 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 46 | 47 | "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.9": 48 | version "0.3.25" 49 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" 50 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 51 | dependencies: 52 | "@jridgewell/resolve-uri" "^3.1.0" 53 | "@jridgewell/sourcemap-codec" "^1.4.14" 54 | 55 | "@socket.io/component-emitter@~3.1.0": 56 | version "3.1.0" 57 | resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" 58 | integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== 59 | 60 | "@types/cookie@^0.4.1": 61 | version "0.4.1" 62 | resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" 63 | integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== 64 | 65 | "@types/cors@^2.8.12": 66 | version "2.8.17" 67 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" 68 | integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== 69 | dependencies: 70 | "@types/node" "*" 71 | 72 | "@types/estree@^1.0.5": 73 | version "1.0.6" 74 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" 75 | integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== 76 | 77 | "@types/json-schema@^7.0.8": 78 | version "7.0.15" 79 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" 80 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 81 | 82 | "@types/node@*", "@types/node@>=10.0.0": 83 | version "20.11.24" 84 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792" 85 | integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long== 86 | dependencies: 87 | undici-types "~5.26.4" 88 | 89 | "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.12.1": 90 | version "1.14.1" 91 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" 92 | integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== 93 | dependencies: 94 | "@webassemblyjs/helper-numbers" "1.13.2" 95 | "@webassemblyjs/helper-wasm-bytecode" "1.13.2" 96 | 97 | "@webassemblyjs/floating-point-hex-parser@1.13.2": 98 | version "1.13.2" 99 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" 100 | integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== 101 | 102 | "@webassemblyjs/helper-api-error@1.13.2": 103 | version "1.13.2" 104 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" 105 | integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== 106 | 107 | "@webassemblyjs/helper-buffer@1.14.1": 108 | version "1.14.1" 109 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" 110 | integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== 111 | 112 | "@webassemblyjs/helper-numbers@1.13.2": 113 | version "1.13.2" 114 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" 115 | integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== 116 | dependencies: 117 | "@webassemblyjs/floating-point-hex-parser" "1.13.2" 118 | "@webassemblyjs/helper-api-error" "1.13.2" 119 | "@xtuc/long" "4.2.2" 120 | 121 | "@webassemblyjs/helper-wasm-bytecode@1.13.2": 122 | version "1.13.2" 123 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" 124 | integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== 125 | 126 | "@webassemblyjs/helper-wasm-section@1.14.1": 127 | version "1.14.1" 128 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" 129 | integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== 130 | dependencies: 131 | "@webassemblyjs/ast" "1.14.1" 132 | "@webassemblyjs/helper-buffer" "1.14.1" 133 | "@webassemblyjs/helper-wasm-bytecode" "1.13.2" 134 | "@webassemblyjs/wasm-gen" "1.14.1" 135 | 136 | "@webassemblyjs/ieee754@1.13.2": 137 | version "1.13.2" 138 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" 139 | integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== 140 | dependencies: 141 | "@xtuc/ieee754" "^1.2.0" 142 | 143 | "@webassemblyjs/leb128@1.13.2": 144 | version "1.13.2" 145 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" 146 | integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== 147 | dependencies: 148 | "@xtuc/long" "4.2.2" 149 | 150 | "@webassemblyjs/utf8@1.13.2": 151 | version "1.13.2" 152 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" 153 | integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== 154 | 155 | "@webassemblyjs/wasm-edit@^1.12.1": 156 | version "1.14.1" 157 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" 158 | integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== 159 | dependencies: 160 | "@webassemblyjs/ast" "1.14.1" 161 | "@webassemblyjs/helper-buffer" "1.14.1" 162 | "@webassemblyjs/helper-wasm-bytecode" "1.13.2" 163 | "@webassemblyjs/helper-wasm-section" "1.14.1" 164 | "@webassemblyjs/wasm-gen" "1.14.1" 165 | "@webassemblyjs/wasm-opt" "1.14.1" 166 | "@webassemblyjs/wasm-parser" "1.14.1" 167 | "@webassemblyjs/wast-printer" "1.14.1" 168 | 169 | "@webassemblyjs/wasm-gen@1.14.1": 170 | version "1.14.1" 171 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" 172 | integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== 173 | dependencies: 174 | "@webassemblyjs/ast" "1.14.1" 175 | "@webassemblyjs/helper-wasm-bytecode" "1.13.2" 176 | "@webassemblyjs/ieee754" "1.13.2" 177 | "@webassemblyjs/leb128" "1.13.2" 178 | "@webassemblyjs/utf8" "1.13.2" 179 | 180 | "@webassemblyjs/wasm-opt@1.14.1": 181 | version "1.14.1" 182 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" 183 | integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== 184 | dependencies: 185 | "@webassemblyjs/ast" "1.14.1" 186 | "@webassemblyjs/helper-buffer" "1.14.1" 187 | "@webassemblyjs/wasm-gen" "1.14.1" 188 | "@webassemblyjs/wasm-parser" "1.14.1" 189 | 190 | "@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.12.1": 191 | version "1.14.1" 192 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" 193 | integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== 194 | dependencies: 195 | "@webassemblyjs/ast" "1.14.1" 196 | "@webassemblyjs/helper-api-error" "1.13.2" 197 | "@webassemblyjs/helper-wasm-bytecode" "1.13.2" 198 | "@webassemblyjs/ieee754" "1.13.2" 199 | "@webassemblyjs/leb128" "1.13.2" 200 | "@webassemblyjs/utf8" "1.13.2" 201 | 202 | "@webassemblyjs/wast-printer@1.14.1": 203 | version "1.14.1" 204 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" 205 | integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== 206 | dependencies: 207 | "@webassemblyjs/ast" "1.14.1" 208 | "@xtuc/long" "4.2.2" 209 | 210 | "@webpack-cli/configtest@^2.1.1": 211 | version "2.1.1" 212 | resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" 213 | integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== 214 | 215 | "@webpack-cli/info@^2.0.2": 216 | version "2.0.2" 217 | resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" 218 | integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== 219 | 220 | "@webpack-cli/serve@^2.0.5": 221 | version "2.0.5" 222 | resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" 223 | integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== 224 | 225 | "@xtuc/ieee754@^1.2.0": 226 | version "1.2.0" 227 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" 228 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== 229 | 230 | "@xtuc/long@4.2.2": 231 | version "4.2.2" 232 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" 233 | integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== 234 | 235 | accepts@~1.3.4: 236 | version "1.3.8" 237 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 238 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 239 | dependencies: 240 | mime-types "~2.1.34" 241 | negotiator "0.6.3" 242 | 243 | acorn-import-attributes@^1.9.5: 244 | version "1.9.5" 245 | resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" 246 | integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== 247 | 248 | acorn@^8.7.1, acorn@^8.8.2: 249 | version "8.11.3" 250 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" 251 | integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== 252 | 253 | ajv-keywords@^3.5.2: 254 | version "3.5.2" 255 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" 256 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== 257 | 258 | ajv@^6.12.5: 259 | version "6.12.6" 260 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 261 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 262 | dependencies: 263 | fast-deep-equal "^3.1.1" 264 | fast-json-stable-stringify "^2.0.0" 265 | json-schema-traverse "^0.4.1" 266 | uri-js "^4.2.2" 267 | 268 | ansi-colors@^4.1.3: 269 | version "4.1.3" 270 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" 271 | integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== 272 | 273 | ansi-regex@^5.0.1: 274 | version "5.0.1" 275 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 276 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 277 | 278 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 279 | version "4.3.0" 280 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 281 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 282 | dependencies: 283 | color-convert "^2.0.1" 284 | 285 | anymatch@~3.1.2: 286 | version "3.1.3" 287 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 288 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 289 | dependencies: 290 | normalize-path "^3.0.0" 291 | picomatch "^2.0.4" 292 | 293 | argparse@^2.0.1: 294 | version "2.0.1" 295 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 296 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 297 | 298 | balanced-match@^1.0.0: 299 | version "1.0.2" 300 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 301 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 302 | 303 | base64id@2.0.0, base64id@~2.0.0: 304 | version "2.0.0" 305 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" 306 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== 307 | 308 | binary-extensions@^2.0.0: 309 | version "2.2.0" 310 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 311 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 312 | 313 | body-parser@^1.19.0: 314 | version "1.20.2" 315 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" 316 | integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== 317 | dependencies: 318 | bytes "3.1.2" 319 | content-type "~1.0.5" 320 | debug "2.6.9" 321 | depd "2.0.0" 322 | destroy "1.2.0" 323 | http-errors "2.0.0" 324 | iconv-lite "0.4.24" 325 | on-finished "2.4.1" 326 | qs "6.11.0" 327 | raw-body "2.5.2" 328 | type-is "~1.6.18" 329 | unpipe "1.0.0" 330 | 331 | brace-expansion@^1.1.7: 332 | version "1.1.11" 333 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 334 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 335 | dependencies: 336 | balanced-match "^1.0.0" 337 | concat-map "0.0.1" 338 | 339 | brace-expansion@^2.0.1: 340 | version "2.0.1" 341 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 342 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 343 | dependencies: 344 | balanced-match "^1.0.0" 345 | 346 | braces@^3.0.2, braces@~3.0.2: 347 | version "3.0.2" 348 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 349 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 350 | dependencies: 351 | fill-range "^7.0.1" 352 | 353 | browser-stdout@^1.3.1: 354 | version "1.3.1" 355 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 356 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 357 | 358 | browserslist@^4.21.10: 359 | version "4.24.2" 360 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" 361 | integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== 362 | dependencies: 363 | caniuse-lite "^1.0.30001669" 364 | electron-to-chromium "^1.5.41" 365 | node-releases "^2.0.18" 366 | update-browserslist-db "^1.1.1" 367 | 368 | buffer-from@^1.0.0: 369 | version "1.1.2" 370 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 371 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 372 | 373 | bytes@3.1.2: 374 | version "3.1.2" 375 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 376 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 377 | 378 | call-bind@^1.0.7: 379 | version "1.0.7" 380 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" 381 | integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== 382 | dependencies: 383 | es-define-property "^1.0.0" 384 | es-errors "^1.3.0" 385 | function-bind "^1.1.2" 386 | get-intrinsic "^1.2.4" 387 | set-function-length "^1.2.1" 388 | 389 | camelcase@^6.0.0: 390 | version "6.3.0" 391 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 392 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 393 | 394 | caniuse-lite@^1.0.30001669: 395 | version "1.0.30001687" 396 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz#d0ac634d043648498eedf7a3932836beba90ebae" 397 | integrity sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ== 398 | 399 | chalk@^4.1.0: 400 | version "4.1.2" 401 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 402 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 403 | dependencies: 404 | ansi-styles "^4.1.0" 405 | supports-color "^7.1.0" 406 | 407 | chokidar@^3.5.1, chokidar@^3.5.3: 408 | version "3.6.0" 409 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" 410 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== 411 | dependencies: 412 | anymatch "~3.1.2" 413 | braces "~3.0.2" 414 | glob-parent "~5.1.2" 415 | is-binary-path "~2.1.0" 416 | is-glob "~4.0.1" 417 | normalize-path "~3.0.0" 418 | readdirp "~3.6.0" 419 | optionalDependencies: 420 | fsevents "~2.3.2" 421 | 422 | chrome-trace-event@^1.0.2: 423 | version "1.0.3" 424 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" 425 | integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== 426 | 427 | cliui@^7.0.2: 428 | version "7.0.4" 429 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 430 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 431 | dependencies: 432 | string-width "^4.2.0" 433 | strip-ansi "^6.0.0" 434 | wrap-ansi "^7.0.0" 435 | 436 | clone-deep@^4.0.1: 437 | version "4.0.1" 438 | resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" 439 | integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== 440 | dependencies: 441 | is-plain-object "^2.0.4" 442 | kind-of "^6.0.2" 443 | shallow-clone "^3.0.0" 444 | 445 | color-convert@^2.0.1: 446 | version "2.0.1" 447 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 448 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 449 | dependencies: 450 | color-name "~1.1.4" 451 | 452 | color-name@~1.1.4: 453 | version "1.1.4" 454 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 455 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 456 | 457 | colorette@^2.0.14: 458 | version "2.0.20" 459 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" 460 | integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== 461 | 462 | commander@^10.0.1: 463 | version "10.0.1" 464 | resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" 465 | integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== 466 | 467 | commander@^2.20.0: 468 | version "2.20.3" 469 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 470 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 471 | 472 | concat-map@0.0.1: 473 | version "0.0.1" 474 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 475 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 476 | 477 | connect@^3.7.0: 478 | version "3.7.0" 479 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" 480 | integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== 481 | dependencies: 482 | debug "2.6.9" 483 | finalhandler "1.1.2" 484 | parseurl "~1.3.3" 485 | utils-merge "1.0.1" 486 | 487 | content-type@~1.0.5: 488 | version "1.0.5" 489 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 490 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 491 | 492 | cookie@~0.7.2: 493 | version "0.7.2" 494 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" 495 | integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== 496 | 497 | cors@~2.8.5: 498 | version "2.8.5" 499 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 500 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 501 | dependencies: 502 | object-assign "^4" 503 | vary "^1" 504 | 505 | cross-spawn@^7.0.3: 506 | version "7.0.3" 507 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 508 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 509 | dependencies: 510 | path-key "^3.1.0" 511 | shebang-command "^2.0.0" 512 | which "^2.0.1" 513 | 514 | custom-event@~1.0.0: 515 | version "1.0.1" 516 | resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" 517 | integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== 518 | 519 | date-format@^4.0.14: 520 | version "4.0.14" 521 | resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" 522 | integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== 523 | 524 | debug@2.6.9: 525 | version "2.6.9" 526 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 527 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 528 | dependencies: 529 | ms "2.0.0" 530 | 531 | debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: 532 | version "4.3.4" 533 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 534 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 535 | dependencies: 536 | ms "2.1.2" 537 | 538 | debug@^4.3.5: 539 | version "4.4.0" 540 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" 541 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== 542 | dependencies: 543 | ms "^2.1.3" 544 | 545 | decamelize@^4.0.0: 546 | version "4.0.0" 547 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 548 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 549 | 550 | define-data-property@^1.1.2: 551 | version "1.1.4" 552 | resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" 553 | integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== 554 | dependencies: 555 | es-define-property "^1.0.0" 556 | es-errors "^1.3.0" 557 | gopd "^1.0.1" 558 | 559 | depd@2.0.0: 560 | version "2.0.0" 561 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 562 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 563 | 564 | destroy@1.2.0: 565 | version "1.2.0" 566 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 567 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 568 | 569 | di@^0.0.1: 570 | version "0.0.1" 571 | resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" 572 | integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== 573 | 574 | diff@^5.2.0: 575 | version "5.2.0" 576 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" 577 | integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== 578 | 579 | dom-serialize@^2.2.1: 580 | version "2.2.1" 581 | resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" 582 | integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== 583 | dependencies: 584 | custom-event "~1.0.0" 585 | ent "~2.2.0" 586 | extend "^3.0.0" 587 | void-elements "^2.0.0" 588 | 589 | ee-first@1.1.1: 590 | version "1.1.1" 591 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 592 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 593 | 594 | electron-to-chromium@^1.5.41: 595 | version "1.5.73" 596 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz#f32956ce40947fa3c8606726a96cd8fb5bb5f720" 597 | integrity sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg== 598 | 599 | emoji-regex@^8.0.0: 600 | version "8.0.0" 601 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 602 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 603 | 604 | encodeurl@~1.0.2: 605 | version "1.0.2" 606 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 607 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 608 | 609 | engine.io-parser@~5.2.1: 610 | version "5.2.2" 611 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" 612 | integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== 613 | 614 | engine.io@~6.6.0: 615 | version "6.6.2" 616 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.6.2.tgz#32bd845b4db708f8c774a4edef4e5c8a98b3da72" 617 | integrity sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw== 618 | dependencies: 619 | "@types/cookie" "^0.4.1" 620 | "@types/cors" "^2.8.12" 621 | "@types/node" ">=10.0.0" 622 | accepts "~1.3.4" 623 | base64id "2.0.0" 624 | cookie "~0.7.2" 625 | cors "~2.8.5" 626 | debug "~4.3.1" 627 | engine.io-parser "~5.2.1" 628 | ws "~8.17.1" 629 | 630 | enhanced-resolve@^5.17.1: 631 | version "5.17.1" 632 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" 633 | integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== 634 | dependencies: 635 | graceful-fs "^4.2.4" 636 | tapable "^2.2.0" 637 | 638 | ent@~2.2.0: 639 | version "2.2.0" 640 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" 641 | integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA== 642 | 643 | envinfo@^7.7.3: 644 | version "7.11.1" 645 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" 646 | integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== 647 | 648 | es-define-property@^1.0.0: 649 | version "1.0.0" 650 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" 651 | integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== 652 | dependencies: 653 | get-intrinsic "^1.2.4" 654 | 655 | es-errors@^1.3.0: 656 | version "1.3.0" 657 | resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" 658 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 659 | 660 | es-module-lexer@^1.2.1: 661 | version "1.4.1" 662 | resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" 663 | integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== 664 | 665 | escalade@^3.1.1: 666 | version "3.1.2" 667 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" 668 | integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== 669 | 670 | escalade@^3.2.0: 671 | version "3.2.0" 672 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" 673 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 674 | 675 | escape-html@~1.0.3: 676 | version "1.0.3" 677 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 678 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 679 | 680 | escape-string-regexp@^4.0.0: 681 | version "4.0.0" 682 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 683 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 684 | 685 | eslint-scope@5.1.1: 686 | version "5.1.1" 687 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 688 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 689 | dependencies: 690 | esrecurse "^4.3.0" 691 | estraverse "^4.1.1" 692 | 693 | esrecurse@^4.3.0: 694 | version "4.3.0" 695 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 696 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 697 | dependencies: 698 | estraverse "^5.2.0" 699 | 700 | estraverse@^4.1.1: 701 | version "4.3.0" 702 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 703 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 704 | 705 | estraverse@^5.2.0: 706 | version "5.3.0" 707 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 708 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 709 | 710 | eventemitter3@^4.0.0: 711 | version "4.0.7" 712 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 713 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 714 | 715 | events@^3.2.0: 716 | version "3.3.0" 717 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 718 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 719 | 720 | extend@^3.0.0: 721 | version "3.0.2" 722 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 723 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 724 | 725 | fast-deep-equal@^3.1.1: 726 | version "3.1.3" 727 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 728 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 729 | 730 | fast-json-stable-stringify@^2.0.0: 731 | version "2.1.0" 732 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 733 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 734 | 735 | fastest-levenshtein@^1.0.12: 736 | version "1.0.16" 737 | resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" 738 | integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== 739 | 740 | fill-range@^7.0.1: 741 | version "7.0.1" 742 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 743 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 744 | dependencies: 745 | to-regex-range "^5.0.1" 746 | 747 | finalhandler@1.1.2: 748 | version "1.1.2" 749 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 750 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 751 | dependencies: 752 | debug "2.6.9" 753 | encodeurl "~1.0.2" 754 | escape-html "~1.0.3" 755 | on-finished "~2.3.0" 756 | parseurl "~1.3.3" 757 | statuses "~1.5.0" 758 | unpipe "~1.0.0" 759 | 760 | find-up@^4.0.0: 761 | version "4.1.0" 762 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 763 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 764 | dependencies: 765 | locate-path "^5.0.0" 766 | path-exists "^4.0.0" 767 | 768 | find-up@^5.0.0: 769 | version "5.0.0" 770 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 771 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 772 | dependencies: 773 | locate-path "^6.0.0" 774 | path-exists "^4.0.0" 775 | 776 | flat@^5.0.2: 777 | version "5.0.2" 778 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 779 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 780 | 781 | flatted@^3.2.7: 782 | version "3.3.1" 783 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" 784 | integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== 785 | 786 | follow-redirects@^1.0.0: 787 | version "1.15.5" 788 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" 789 | integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== 790 | 791 | format-util@^1.0.5: 792 | version "1.0.5" 793 | resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" 794 | integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== 795 | 796 | fs-extra@^8.1.0: 797 | version "8.1.0" 798 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 799 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 800 | dependencies: 801 | graceful-fs "^4.2.0" 802 | jsonfile "^4.0.0" 803 | universalify "^0.1.0" 804 | 805 | fs.realpath@^1.0.0: 806 | version "1.0.0" 807 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 808 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 809 | 810 | fsevents@~2.3.2: 811 | version "2.3.3" 812 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 813 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 814 | 815 | function-bind@^1.1.2: 816 | version "1.1.2" 817 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 818 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 819 | 820 | get-caller-file@^2.0.5: 821 | version "2.0.5" 822 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 823 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 824 | 825 | get-intrinsic@^1.1.3, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: 826 | version "1.2.4" 827 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" 828 | integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== 829 | dependencies: 830 | es-errors "^1.3.0" 831 | function-bind "^1.1.2" 832 | has-proto "^1.0.1" 833 | has-symbols "^1.0.3" 834 | hasown "^2.0.0" 835 | 836 | glob-parent@~5.1.2: 837 | version "5.1.2" 838 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 839 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 840 | dependencies: 841 | is-glob "^4.0.1" 842 | 843 | glob-to-regexp@^0.4.1: 844 | version "0.4.1" 845 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 846 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 847 | 848 | glob@^7.1.3, glob@^7.1.7: 849 | version "7.2.3" 850 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 851 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 852 | dependencies: 853 | fs.realpath "^1.0.0" 854 | inflight "^1.0.4" 855 | inherits "2" 856 | minimatch "^3.1.1" 857 | once "^1.3.0" 858 | path-is-absolute "^1.0.0" 859 | 860 | glob@^8.1.0: 861 | version "8.1.0" 862 | resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" 863 | integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== 864 | dependencies: 865 | fs.realpath "^1.0.0" 866 | inflight "^1.0.4" 867 | inherits "2" 868 | minimatch "^5.0.1" 869 | once "^1.3.0" 870 | 871 | gopd@^1.0.1: 872 | version "1.0.1" 873 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 874 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 875 | dependencies: 876 | get-intrinsic "^1.1.3" 877 | 878 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: 879 | version "4.2.11" 880 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 881 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 882 | 883 | has-flag@^4.0.0: 884 | version "4.0.0" 885 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 886 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 887 | 888 | has-property-descriptors@^1.0.1: 889 | version "1.0.2" 890 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" 891 | integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== 892 | dependencies: 893 | es-define-property "^1.0.0" 894 | 895 | has-proto@^1.0.1: 896 | version "1.0.3" 897 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" 898 | integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== 899 | 900 | has-symbols@^1.0.3: 901 | version "1.0.3" 902 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 903 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 904 | 905 | hasown@^2.0.0: 906 | version "2.0.1" 907 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" 908 | integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== 909 | dependencies: 910 | function-bind "^1.1.2" 911 | 912 | he@^1.2.0: 913 | version "1.2.0" 914 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 915 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 916 | 917 | http-errors@2.0.0: 918 | version "2.0.0" 919 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 920 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 921 | dependencies: 922 | depd "2.0.0" 923 | inherits "2.0.4" 924 | setprototypeof "1.2.0" 925 | statuses "2.0.1" 926 | toidentifier "1.0.1" 927 | 928 | http-proxy@^1.18.1: 929 | version "1.18.1" 930 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" 931 | integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== 932 | dependencies: 933 | eventemitter3 "^4.0.0" 934 | follow-redirects "^1.0.0" 935 | requires-port "^1.0.0" 936 | 937 | iconv-lite@0.4.24: 938 | version "0.4.24" 939 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 940 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 941 | dependencies: 942 | safer-buffer ">= 2.1.2 < 3" 943 | 944 | iconv-lite@^0.6.3: 945 | version "0.6.3" 946 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 947 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 948 | dependencies: 949 | safer-buffer ">= 2.1.2 < 3.0.0" 950 | 951 | import-local@^3.0.2: 952 | version "3.1.0" 953 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 954 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== 955 | dependencies: 956 | pkg-dir "^4.2.0" 957 | resolve-cwd "^3.0.0" 958 | 959 | inflight@^1.0.4: 960 | version "1.0.6" 961 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 962 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 963 | dependencies: 964 | once "^1.3.0" 965 | wrappy "1" 966 | 967 | inherits@2, inherits@2.0.4: 968 | version "2.0.4" 969 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 970 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 971 | 972 | interpret@^3.1.1: 973 | version "3.1.1" 974 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" 975 | integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== 976 | 977 | is-binary-path@~2.1.0: 978 | version "2.1.0" 979 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 980 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 981 | dependencies: 982 | binary-extensions "^2.0.0" 983 | 984 | is-core-module@^2.13.0: 985 | version "2.13.1" 986 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" 987 | integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== 988 | dependencies: 989 | hasown "^2.0.0" 990 | 991 | is-extglob@^2.1.1: 992 | version "2.1.1" 993 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 994 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 995 | 996 | is-fullwidth-code-point@^3.0.0: 997 | version "3.0.0" 998 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 999 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1000 | 1001 | is-glob@^4.0.1, is-glob@~4.0.1: 1002 | version "4.0.3" 1003 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1004 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1005 | dependencies: 1006 | is-extglob "^2.1.1" 1007 | 1008 | is-number@^7.0.0: 1009 | version "7.0.0" 1010 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1011 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1012 | 1013 | is-plain-obj@^2.1.0: 1014 | version "2.1.0" 1015 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1016 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1017 | 1018 | is-plain-object@^2.0.4: 1019 | version "2.0.4" 1020 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1021 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1022 | dependencies: 1023 | isobject "^3.0.1" 1024 | 1025 | is-unicode-supported@^0.1.0: 1026 | version "0.1.0" 1027 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1028 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1029 | 1030 | isbinaryfile@^4.0.8: 1031 | version "4.0.10" 1032 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" 1033 | integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== 1034 | 1035 | isexe@^2.0.0: 1036 | version "2.0.0" 1037 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1038 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1039 | 1040 | isobject@^3.0.1: 1041 | version "3.0.1" 1042 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1043 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== 1044 | 1045 | jest-worker@^27.4.5: 1046 | version "27.5.1" 1047 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 1048 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 1049 | dependencies: 1050 | "@types/node" "*" 1051 | merge-stream "^2.0.0" 1052 | supports-color "^8.0.0" 1053 | 1054 | js-yaml@^4.1.0: 1055 | version "4.1.0" 1056 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1057 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1058 | dependencies: 1059 | argparse "^2.0.1" 1060 | 1061 | json-parse-even-better-errors@^2.3.1: 1062 | version "2.3.1" 1063 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1064 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1065 | 1066 | json-schema-traverse@^0.4.1: 1067 | version "0.4.1" 1068 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1069 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1070 | 1071 | jsonfile@^4.0.0: 1072 | version "4.0.0" 1073 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1074 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== 1075 | optionalDependencies: 1076 | graceful-fs "^4.1.6" 1077 | 1078 | karma-chrome-launcher@3.2.0: 1079 | version "3.2.0" 1080 | resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9" 1081 | integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q== 1082 | dependencies: 1083 | which "^1.2.1" 1084 | 1085 | karma-mocha@2.0.1: 1086 | version "2.0.1" 1087 | resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" 1088 | integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== 1089 | dependencies: 1090 | minimist "^1.2.3" 1091 | 1092 | karma-sourcemap-loader@0.4.0: 1093 | version "0.4.0" 1094 | resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.4.0.tgz#b01d73f8f688f533bcc8f5d273d43458e13b5488" 1095 | integrity sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA== 1096 | dependencies: 1097 | graceful-fs "^4.2.10" 1098 | 1099 | karma-webpack@5.0.1: 1100 | version "5.0.1" 1101 | resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.1.tgz#4eafd31bbe684a747a6e8f3e4ad373e53979ced4" 1102 | integrity sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ== 1103 | dependencies: 1104 | glob "^7.1.3" 1105 | minimatch "^9.0.3" 1106 | webpack-merge "^4.1.5" 1107 | 1108 | karma@6.4.4: 1109 | version "6.4.4" 1110 | resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.4.tgz#dfa5a426cf5a8b53b43cd54ef0d0d09742351492" 1111 | integrity sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w== 1112 | dependencies: 1113 | "@colors/colors" "1.5.0" 1114 | body-parser "^1.19.0" 1115 | braces "^3.0.2" 1116 | chokidar "^3.5.1" 1117 | connect "^3.7.0" 1118 | di "^0.0.1" 1119 | dom-serialize "^2.2.1" 1120 | glob "^7.1.7" 1121 | graceful-fs "^4.2.6" 1122 | http-proxy "^1.18.1" 1123 | isbinaryfile "^4.0.8" 1124 | lodash "^4.17.21" 1125 | log4js "^6.4.1" 1126 | mime "^2.5.2" 1127 | minimatch "^3.0.4" 1128 | mkdirp "^0.5.5" 1129 | qjobs "^1.2.0" 1130 | range-parser "^1.2.1" 1131 | rimraf "^3.0.2" 1132 | socket.io "^4.7.2" 1133 | source-map "^0.6.1" 1134 | tmp "^0.2.1" 1135 | ua-parser-js "^0.7.30" 1136 | yargs "^16.1.1" 1137 | 1138 | kind-of@^6.0.2: 1139 | version "6.0.3" 1140 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1141 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1142 | 1143 | kotlin-web-helpers@2.0.0: 1144 | version "2.0.0" 1145 | resolved "https://registry.yarnpkg.com/kotlin-web-helpers/-/kotlin-web-helpers-2.0.0.tgz#b112096b273c1e733e0b86560998235c09a19286" 1146 | integrity sha512-xkVGl60Ygn/zuLkDPx+oHj7jeLR7hCvoNF99nhwXMn8a3ApB4lLiC9pk4ol4NHPjyoCbvQctBqvzUcp8pkqyWw== 1147 | dependencies: 1148 | format-util "^1.0.5" 1149 | 1150 | loader-runner@^4.2.0: 1151 | version "4.3.0" 1152 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" 1153 | integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== 1154 | 1155 | locate-path@^5.0.0: 1156 | version "5.0.0" 1157 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1158 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1159 | dependencies: 1160 | p-locate "^4.1.0" 1161 | 1162 | locate-path@^6.0.0: 1163 | version "6.0.0" 1164 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1165 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1166 | dependencies: 1167 | p-locate "^5.0.0" 1168 | 1169 | lodash@^4.17.15, lodash@^4.17.21: 1170 | version "4.17.21" 1171 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1172 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1173 | 1174 | log-symbols@^4.1.0: 1175 | version "4.1.0" 1176 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1177 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1178 | dependencies: 1179 | chalk "^4.1.0" 1180 | is-unicode-supported "^0.1.0" 1181 | 1182 | log4js@^6.4.1: 1183 | version "6.9.1" 1184 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" 1185 | integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== 1186 | dependencies: 1187 | date-format "^4.0.14" 1188 | debug "^4.3.4" 1189 | flatted "^3.2.7" 1190 | rfdc "^1.3.0" 1191 | streamroller "^3.1.5" 1192 | 1193 | media-typer@0.3.0: 1194 | version "0.3.0" 1195 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1196 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 1197 | 1198 | merge-stream@^2.0.0: 1199 | version "2.0.0" 1200 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1201 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1202 | 1203 | mime-db@1.52.0: 1204 | version "1.52.0" 1205 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1206 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1207 | 1208 | mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: 1209 | version "2.1.35" 1210 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1211 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1212 | dependencies: 1213 | mime-db "1.52.0" 1214 | 1215 | mime@^2.5.2: 1216 | version "2.6.0" 1217 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" 1218 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== 1219 | 1220 | minimatch@^3.0.4, minimatch@^3.1.1: 1221 | version "3.1.2" 1222 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1223 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1224 | dependencies: 1225 | brace-expansion "^1.1.7" 1226 | 1227 | minimatch@^5.0.1, minimatch@^5.1.6: 1228 | version "5.1.6" 1229 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" 1230 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 1231 | dependencies: 1232 | brace-expansion "^2.0.1" 1233 | 1234 | minimatch@^9.0.3: 1235 | version "9.0.5" 1236 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" 1237 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== 1238 | dependencies: 1239 | brace-expansion "^2.0.1" 1240 | 1241 | minimist@^1.2.3, minimist@^1.2.6: 1242 | version "1.2.8" 1243 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 1244 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 1245 | 1246 | mkdirp@^0.5.5: 1247 | version "0.5.6" 1248 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 1249 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 1250 | dependencies: 1251 | minimist "^1.2.6" 1252 | 1253 | mocha@10.7.3: 1254 | version "10.7.3" 1255 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.3.tgz#ae32003cabbd52b59aece17846056a68eb4b0752" 1256 | integrity sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A== 1257 | dependencies: 1258 | ansi-colors "^4.1.3" 1259 | browser-stdout "^1.3.1" 1260 | chokidar "^3.5.3" 1261 | debug "^4.3.5" 1262 | diff "^5.2.0" 1263 | escape-string-regexp "^4.0.0" 1264 | find-up "^5.0.0" 1265 | glob "^8.1.0" 1266 | he "^1.2.0" 1267 | js-yaml "^4.1.0" 1268 | log-symbols "^4.1.0" 1269 | minimatch "^5.1.6" 1270 | ms "^2.1.3" 1271 | serialize-javascript "^6.0.2" 1272 | strip-json-comments "^3.1.1" 1273 | supports-color "^8.1.1" 1274 | workerpool "^6.5.1" 1275 | yargs "^16.2.0" 1276 | yargs-parser "^20.2.9" 1277 | yargs-unparser "^2.0.0" 1278 | 1279 | ms@2.0.0: 1280 | version "2.0.0" 1281 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1282 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1283 | 1284 | ms@2.1.2: 1285 | version "2.1.2" 1286 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1287 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1288 | 1289 | ms@^2.1.3: 1290 | version "2.1.3" 1291 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1292 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1293 | 1294 | negotiator@0.6.3: 1295 | version "0.6.3" 1296 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1297 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1298 | 1299 | neo-async@^2.6.2: 1300 | version "2.6.2" 1301 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1302 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1303 | 1304 | node-releases@^2.0.18: 1305 | version "2.0.19" 1306 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" 1307 | integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== 1308 | 1309 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1310 | version "3.0.0" 1311 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1312 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1313 | 1314 | object-assign@^4: 1315 | version "4.1.1" 1316 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1317 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1318 | 1319 | object-inspect@^1.13.1: 1320 | version "1.13.1" 1321 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" 1322 | integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== 1323 | 1324 | on-finished@2.4.1: 1325 | version "2.4.1" 1326 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 1327 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1328 | dependencies: 1329 | ee-first "1.1.1" 1330 | 1331 | on-finished@~2.3.0: 1332 | version "2.3.0" 1333 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1334 | integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== 1335 | dependencies: 1336 | ee-first "1.1.1" 1337 | 1338 | once@^1.3.0: 1339 | version "1.4.0" 1340 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1341 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1342 | dependencies: 1343 | wrappy "1" 1344 | 1345 | p-limit@^2.2.0: 1346 | version "2.3.0" 1347 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1348 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1349 | dependencies: 1350 | p-try "^2.0.0" 1351 | 1352 | p-limit@^3.0.2: 1353 | version "3.1.0" 1354 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1355 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1356 | dependencies: 1357 | yocto-queue "^0.1.0" 1358 | 1359 | p-locate@^4.1.0: 1360 | version "4.1.0" 1361 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1362 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1363 | dependencies: 1364 | p-limit "^2.2.0" 1365 | 1366 | p-locate@^5.0.0: 1367 | version "5.0.0" 1368 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1369 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1370 | dependencies: 1371 | p-limit "^3.0.2" 1372 | 1373 | p-try@^2.0.0: 1374 | version "2.2.0" 1375 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1376 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1377 | 1378 | parseurl@~1.3.3: 1379 | version "1.3.3" 1380 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1381 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1382 | 1383 | path-exists@^4.0.0: 1384 | version "4.0.0" 1385 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1386 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1387 | 1388 | path-is-absolute@^1.0.0: 1389 | version "1.0.1" 1390 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1391 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1392 | 1393 | path-key@^3.1.0: 1394 | version "3.1.1" 1395 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1396 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1397 | 1398 | path-parse@^1.0.7: 1399 | version "1.0.7" 1400 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1401 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1402 | 1403 | picocolors@^1.1.0: 1404 | version "1.1.1" 1405 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" 1406 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 1407 | 1408 | picomatch@^2.0.4, picomatch@^2.2.1: 1409 | version "2.3.1" 1410 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1411 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1412 | 1413 | pkg-dir@^4.2.0: 1414 | version "4.2.0" 1415 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1416 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1417 | dependencies: 1418 | find-up "^4.0.0" 1419 | 1420 | punycode@^2.1.0: 1421 | version "2.3.1" 1422 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" 1423 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 1424 | 1425 | qjobs@^1.2.0: 1426 | version "1.2.0" 1427 | resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" 1428 | integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== 1429 | 1430 | qs@6.11.0: 1431 | version "6.11.0" 1432 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 1433 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 1434 | dependencies: 1435 | side-channel "^1.0.4" 1436 | 1437 | randombytes@^2.1.0: 1438 | version "2.1.0" 1439 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1440 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1441 | dependencies: 1442 | safe-buffer "^5.1.0" 1443 | 1444 | range-parser@^1.2.1: 1445 | version "1.2.1" 1446 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1447 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1448 | 1449 | raw-body@2.5.2: 1450 | version "2.5.2" 1451 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" 1452 | integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== 1453 | dependencies: 1454 | bytes "3.1.2" 1455 | http-errors "2.0.0" 1456 | iconv-lite "0.4.24" 1457 | unpipe "1.0.0" 1458 | 1459 | readdirp@~3.6.0: 1460 | version "3.6.0" 1461 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1462 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1463 | dependencies: 1464 | picomatch "^2.2.1" 1465 | 1466 | rechoir@^0.8.0: 1467 | version "0.8.0" 1468 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" 1469 | integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== 1470 | dependencies: 1471 | resolve "^1.20.0" 1472 | 1473 | require-directory@^2.1.1: 1474 | version "2.1.1" 1475 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1476 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1477 | 1478 | requires-port@^1.0.0: 1479 | version "1.0.0" 1480 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 1481 | integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== 1482 | 1483 | resolve-cwd@^3.0.0: 1484 | version "3.0.0" 1485 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 1486 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 1487 | dependencies: 1488 | resolve-from "^5.0.0" 1489 | 1490 | resolve-from@^5.0.0: 1491 | version "5.0.0" 1492 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 1493 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 1494 | 1495 | resolve@^1.20.0: 1496 | version "1.22.8" 1497 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" 1498 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 1499 | dependencies: 1500 | is-core-module "^2.13.0" 1501 | path-parse "^1.0.7" 1502 | supports-preserve-symlinks-flag "^1.0.0" 1503 | 1504 | rfdc@^1.3.0: 1505 | version "1.3.1" 1506 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" 1507 | integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== 1508 | 1509 | rimraf@^3.0.2: 1510 | version "3.0.2" 1511 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1512 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1513 | dependencies: 1514 | glob "^7.1.3" 1515 | 1516 | safe-buffer@^5.1.0: 1517 | version "5.2.1" 1518 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1519 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1520 | 1521 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": 1522 | version "2.1.2" 1523 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1524 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1525 | 1526 | schema-utils@^3.1.1, schema-utils@^3.2.0: 1527 | version "3.3.0" 1528 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" 1529 | integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== 1530 | dependencies: 1531 | "@types/json-schema" "^7.0.8" 1532 | ajv "^6.12.5" 1533 | ajv-keywords "^3.5.2" 1534 | 1535 | serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: 1536 | version "6.0.2" 1537 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" 1538 | integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== 1539 | dependencies: 1540 | randombytes "^2.1.0" 1541 | 1542 | set-function-length@^1.2.1: 1543 | version "1.2.1" 1544 | resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" 1545 | integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== 1546 | dependencies: 1547 | define-data-property "^1.1.2" 1548 | es-errors "^1.3.0" 1549 | function-bind "^1.1.2" 1550 | get-intrinsic "^1.2.3" 1551 | gopd "^1.0.1" 1552 | has-property-descriptors "^1.0.1" 1553 | 1554 | setprototypeof@1.2.0: 1555 | version "1.2.0" 1556 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1557 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1558 | 1559 | shallow-clone@^3.0.0: 1560 | version "3.0.1" 1561 | resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" 1562 | integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== 1563 | dependencies: 1564 | kind-of "^6.0.2" 1565 | 1566 | shebang-command@^2.0.0: 1567 | version "2.0.0" 1568 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1569 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1570 | dependencies: 1571 | shebang-regex "^3.0.0" 1572 | 1573 | shebang-regex@^3.0.0: 1574 | version "3.0.0" 1575 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1576 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1577 | 1578 | side-channel@^1.0.4: 1579 | version "1.0.6" 1580 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" 1581 | integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== 1582 | dependencies: 1583 | call-bind "^1.0.7" 1584 | es-errors "^1.3.0" 1585 | get-intrinsic "^1.2.4" 1586 | object-inspect "^1.13.1" 1587 | 1588 | socket.io-adapter@~2.5.2: 1589 | version "2.5.4" 1590 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz#4fdb1358667f6d68f25343353bd99bd11ee41006" 1591 | integrity sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg== 1592 | dependencies: 1593 | debug "~4.3.4" 1594 | ws "~8.11.0" 1595 | 1596 | socket.io-parser@~4.2.4: 1597 | version "4.2.4" 1598 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" 1599 | integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== 1600 | dependencies: 1601 | "@socket.io/component-emitter" "~3.1.0" 1602 | debug "~4.3.1" 1603 | 1604 | socket.io@^4.7.2: 1605 | version "4.8.1" 1606 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.8.1.tgz#fa0eaff965cc97fdf4245e8d4794618459f7558a" 1607 | integrity sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg== 1608 | dependencies: 1609 | accepts "~1.3.4" 1610 | base64id "~2.0.0" 1611 | cors "~2.8.5" 1612 | debug "~4.3.2" 1613 | engine.io "~6.6.0" 1614 | socket.io-adapter "~2.5.2" 1615 | socket.io-parser "~4.2.4" 1616 | 1617 | source-map-js@^1.0.2: 1618 | version "1.0.2" 1619 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1620 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1621 | 1622 | source-map-loader@5.0.0: 1623 | version "5.0.0" 1624 | resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-5.0.0.tgz#f593a916e1cc54471cfc8851b905c8a845fc7e38" 1625 | integrity sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA== 1626 | dependencies: 1627 | iconv-lite "^0.6.3" 1628 | source-map-js "^1.0.2" 1629 | 1630 | source-map-support@0.5.21, source-map-support@~0.5.20: 1631 | version "0.5.21" 1632 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 1633 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 1634 | dependencies: 1635 | buffer-from "^1.0.0" 1636 | source-map "^0.6.0" 1637 | 1638 | source-map@^0.6.0, source-map@^0.6.1: 1639 | version "0.6.1" 1640 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1641 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1642 | 1643 | statuses@2.0.1: 1644 | version "2.0.1" 1645 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1646 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1647 | 1648 | statuses@~1.5.0: 1649 | version "1.5.0" 1650 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1651 | integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== 1652 | 1653 | streamroller@^3.1.5: 1654 | version "3.1.5" 1655 | resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" 1656 | integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== 1657 | dependencies: 1658 | date-format "^4.0.14" 1659 | debug "^4.3.4" 1660 | fs-extra "^8.1.0" 1661 | 1662 | string-width@^4.1.0, string-width@^4.2.0: 1663 | version "4.2.3" 1664 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1665 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1666 | dependencies: 1667 | emoji-regex "^8.0.0" 1668 | is-fullwidth-code-point "^3.0.0" 1669 | strip-ansi "^6.0.1" 1670 | 1671 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1672 | version "6.0.1" 1673 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1674 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1675 | dependencies: 1676 | ansi-regex "^5.0.1" 1677 | 1678 | strip-json-comments@^3.1.1: 1679 | version "3.1.1" 1680 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1681 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1682 | 1683 | supports-color@^7.1.0: 1684 | version "7.2.0" 1685 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1686 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1687 | dependencies: 1688 | has-flag "^4.0.0" 1689 | 1690 | supports-color@^8.0.0, supports-color@^8.1.1: 1691 | version "8.1.1" 1692 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1693 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1694 | dependencies: 1695 | has-flag "^4.0.0" 1696 | 1697 | supports-preserve-symlinks-flag@^1.0.0: 1698 | version "1.0.0" 1699 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1700 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1701 | 1702 | tapable@^2.1.1, tapable@^2.2.0: 1703 | version "2.2.1" 1704 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" 1705 | integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== 1706 | 1707 | terser-webpack-plugin@^5.3.10: 1708 | version "5.3.10" 1709 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" 1710 | integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== 1711 | dependencies: 1712 | "@jridgewell/trace-mapping" "^0.3.20" 1713 | jest-worker "^27.4.5" 1714 | schema-utils "^3.1.1" 1715 | serialize-javascript "^6.0.1" 1716 | terser "^5.26.0" 1717 | 1718 | terser@^5.26.0: 1719 | version "5.28.1" 1720 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.28.1.tgz#bf00f7537fd3a798c352c2d67d67d65c915d1b28" 1721 | integrity sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA== 1722 | dependencies: 1723 | "@jridgewell/source-map" "^0.3.3" 1724 | acorn "^8.8.2" 1725 | commander "^2.20.0" 1726 | source-map-support "~0.5.20" 1727 | 1728 | tmp@^0.2.1: 1729 | version "0.2.3" 1730 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" 1731 | integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== 1732 | 1733 | to-regex-range@^5.0.1: 1734 | version "5.0.1" 1735 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1736 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1737 | dependencies: 1738 | is-number "^7.0.0" 1739 | 1740 | toidentifier@1.0.1: 1741 | version "1.0.1" 1742 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1743 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1744 | 1745 | type-is@~1.6.18: 1746 | version "1.6.18" 1747 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1748 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1749 | dependencies: 1750 | media-typer "0.3.0" 1751 | mime-types "~2.1.24" 1752 | 1753 | typescript@5.5.4: 1754 | version "5.5.4" 1755 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" 1756 | integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== 1757 | 1758 | ua-parser-js@^0.7.30: 1759 | version "0.7.37" 1760 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.37.tgz#e464e66dac2d33a7a1251d7d7a99d6157ec27832" 1761 | integrity sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA== 1762 | 1763 | undici-types@~5.26.4: 1764 | version "5.26.5" 1765 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" 1766 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 1767 | 1768 | universalify@^0.1.0: 1769 | version "0.1.2" 1770 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1771 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1772 | 1773 | unpipe@1.0.0, unpipe@~1.0.0: 1774 | version "1.0.0" 1775 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1776 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1777 | 1778 | update-browserslist-db@^1.1.1: 1779 | version "1.1.1" 1780 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" 1781 | integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== 1782 | dependencies: 1783 | escalade "^3.2.0" 1784 | picocolors "^1.1.0" 1785 | 1786 | uri-js@^4.2.2: 1787 | version "4.4.1" 1788 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1789 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1790 | dependencies: 1791 | punycode "^2.1.0" 1792 | 1793 | utils-merge@1.0.1: 1794 | version "1.0.1" 1795 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1796 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 1797 | 1798 | vary@^1: 1799 | version "1.1.2" 1800 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1801 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1802 | 1803 | void-elements@^2.0.0: 1804 | version "2.0.1" 1805 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" 1806 | integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== 1807 | 1808 | watchpack@^2.4.1: 1809 | version "2.4.2" 1810 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" 1811 | integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== 1812 | dependencies: 1813 | glob-to-regexp "^0.4.1" 1814 | graceful-fs "^4.1.2" 1815 | 1816 | webpack-cli@5.1.4: 1817 | version "5.1.4" 1818 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" 1819 | integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== 1820 | dependencies: 1821 | "@discoveryjs/json-ext" "^0.5.0" 1822 | "@webpack-cli/configtest" "^2.1.1" 1823 | "@webpack-cli/info" "^2.0.2" 1824 | "@webpack-cli/serve" "^2.0.5" 1825 | colorette "^2.0.14" 1826 | commander "^10.0.1" 1827 | cross-spawn "^7.0.3" 1828 | envinfo "^7.7.3" 1829 | fastest-levenshtein "^1.0.12" 1830 | import-local "^3.0.2" 1831 | interpret "^3.1.1" 1832 | rechoir "^0.8.0" 1833 | webpack-merge "^5.7.3" 1834 | 1835 | webpack-merge@^4.1.5: 1836 | version "4.2.2" 1837 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" 1838 | integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== 1839 | dependencies: 1840 | lodash "^4.17.15" 1841 | 1842 | webpack-merge@^5.7.3: 1843 | version "5.10.0" 1844 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" 1845 | integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== 1846 | dependencies: 1847 | clone-deep "^4.0.1" 1848 | flat "^5.0.2" 1849 | wildcard "^2.0.0" 1850 | 1851 | webpack-sources@^3.2.3: 1852 | version "3.2.3" 1853 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" 1854 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== 1855 | 1856 | webpack@5.94.0: 1857 | version "5.94.0" 1858 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f" 1859 | integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== 1860 | dependencies: 1861 | "@types/estree" "^1.0.5" 1862 | "@webassemblyjs/ast" "^1.12.1" 1863 | "@webassemblyjs/wasm-edit" "^1.12.1" 1864 | "@webassemblyjs/wasm-parser" "^1.12.1" 1865 | acorn "^8.7.1" 1866 | acorn-import-attributes "^1.9.5" 1867 | browserslist "^4.21.10" 1868 | chrome-trace-event "^1.0.2" 1869 | enhanced-resolve "^5.17.1" 1870 | es-module-lexer "^1.2.1" 1871 | eslint-scope "5.1.1" 1872 | events "^3.2.0" 1873 | glob-to-regexp "^0.4.1" 1874 | graceful-fs "^4.2.11" 1875 | json-parse-even-better-errors "^2.3.1" 1876 | loader-runner "^4.2.0" 1877 | mime-types "^2.1.27" 1878 | neo-async "^2.6.2" 1879 | schema-utils "^3.2.0" 1880 | tapable "^2.1.1" 1881 | terser-webpack-plugin "^5.3.10" 1882 | watchpack "^2.4.1" 1883 | webpack-sources "^3.2.3" 1884 | 1885 | which@^1.2.1: 1886 | version "1.3.1" 1887 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1888 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1889 | dependencies: 1890 | isexe "^2.0.0" 1891 | 1892 | which@^2.0.1: 1893 | version "2.0.2" 1894 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1895 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1896 | dependencies: 1897 | isexe "^2.0.0" 1898 | 1899 | wildcard@^2.0.0: 1900 | version "2.0.1" 1901 | resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" 1902 | integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== 1903 | 1904 | workerpool@^6.5.1: 1905 | version "6.5.1" 1906 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" 1907 | integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== 1908 | 1909 | wrap-ansi@^7.0.0: 1910 | version "7.0.0" 1911 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1912 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1913 | dependencies: 1914 | ansi-styles "^4.0.0" 1915 | string-width "^4.1.0" 1916 | strip-ansi "^6.0.0" 1917 | 1918 | wrappy@1: 1919 | version "1.0.2" 1920 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1921 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1922 | 1923 | ws@~8.11.0: 1924 | version "8.11.0" 1925 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" 1926 | integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== 1927 | 1928 | ws@~8.17.1: 1929 | version "8.17.1" 1930 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" 1931 | integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== 1932 | 1933 | y18n@^5.0.5: 1934 | version "5.0.8" 1935 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1936 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1937 | 1938 | yargs-parser@^20.2.2, yargs-parser@^20.2.9: 1939 | version "20.2.9" 1940 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1941 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1942 | 1943 | yargs-unparser@^2.0.0: 1944 | version "2.0.0" 1945 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1946 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1947 | dependencies: 1948 | camelcase "^6.0.0" 1949 | decamelize "^4.0.0" 1950 | flat "^5.0.2" 1951 | is-plain-obj "^2.1.0" 1952 | 1953 | yargs@^16.1.1, yargs@^16.2.0: 1954 | version "16.2.0" 1955 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1956 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1957 | dependencies: 1958 | cliui "^7.0.2" 1959 | escalade "^3.1.1" 1960 | get-caller-file "^2.0.5" 1961 | require-directory "^2.1.1" 1962 | string-width "^4.2.0" 1963 | y18n "^5.0.5" 1964 | yargs-parser "^20.2.2" 1965 | 1966 | yocto-queue@^0.1.0: 1967 | version "0.1.0" 1968 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1969 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1970 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | } 7 | 8 | plugins { 9 | id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" 10 | } 11 | 12 | dependencyResolutionManagement { 13 | repositories { 14 | mavenCentral() 15 | } 16 | } 17 | 18 | rootProject.name = "kotlin-itertools" 19 | -------------------------------------------------------------------------------- /src/commonMain/kotlin/com/github/michaelbull/itertools/Combinations.kt: -------------------------------------------------------------------------------- 1 | package com.github.michaelbull.itertools 2 | 3 | private val EmptyCombination = sequenceOf(emptyList()) 4 | 5 | /** 6 | * Returns a sequence that yields [length]-sized combinations from this list. 7 | * 8 | * The combination tuples are emitted in lexicographic order according to the order of this list. 9 | * 10 | * ``` 11 | * "ABCD".toList() 12 | * .combinations(length = 2) 13 | * .toList() 14 | * // [[A, B], [A, C], [A, D], [B, C], [B, D], [C, D]] 15 | * 16 | * (0..3).toList() 17 | * .combinations(length = 3) 18 | * .toList() 19 | * // [[0, 1, 2], [0, 1, 3], [0, 2, 3], [1, 2, 3]] 20 | * 21 | * listOf(1, 2, 3) 22 | * .combinations(length = 0) 23 | * .toList() 24 | * // [[]] 25 | * 26 | * emptyList() 27 | * .combinations() 28 | * .toList() 29 | * // [[]] 30 | * ``` 31 | * 32 | * @throws IllegalArgumentException if [length] is negative. 33 | */ 34 | public fun List.combinations(length: Int = size): Sequence> { 35 | require(length >= 0) { "length must be non-negative, but was $length" } 36 | 37 | return if (length == 0) { 38 | EmptyCombination 39 | } else if (size < length) { 40 | emptySequence() 41 | } else { 42 | combinations( 43 | length = length, 44 | combination = ::combination, 45 | ) 46 | } 47 | } 48 | 49 | /** 50 | * Returns a sequence that yields [Pair] combinations from this list. 51 | * 52 | * The combination tuples are emitted in lexicographic order according to the order of this list. 53 | * 54 | * ``` 55 | * "ABDC".toList() 56 | * .pairCombinations() 57 | * .toList() 58 | * // [(A, B), (A, D), (A, C), (B, D), (B, C), (D, C)] 59 | * 60 | * (0..3).toList() 61 | * .pairCombinations() 62 | * .toList() 63 | * // [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)] 64 | * ``` 65 | */ 66 | public fun List.pairCombinations(): Sequence> { 67 | return if (size < 2) { 68 | emptySequence() 69 | } else { 70 | combinations( 71 | length = 2, 72 | combination = ::pairCombination, 73 | ) 74 | } 75 | } 76 | 77 | /** 78 | * Returns a sequence that yields [Triple] combinations from this list. 79 | * 80 | * The combination tuples are emitted in lexicographic order according to the order of this list. 81 | * 82 | * ``` 83 | * "ABDC".toList() 84 | * .tripleCombinations() 85 | * .toList() 86 | * // [(A, B, C), (A, B, D), (A, C, D), (B, C, D)] 87 | * 88 | * (0..3).toList() 89 | * .tripleCombinations() 90 | * .toList() 91 | * // [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)] 92 | * ``` 93 | */ 94 | public fun List.tripleCombinations(): Sequence> { 95 | return if (size < 3) { 96 | emptySequence() 97 | } else { 98 | combinations( 99 | length = 3, 100 | combination = ::tripleCombination, 101 | ) 102 | } 103 | } 104 | 105 | private fun List.combination(indices: IntArray, count: Int): List { 106 | require(count > 0) 107 | 108 | return List(count) { index -> 109 | get(indices[index]) 110 | } 111 | } 112 | 113 | private fun List.pairCombination(indices: IntArray, count: Int): Pair { 114 | require(count == 2) 115 | 116 | val (first, second) = indices 117 | 118 | return Pair( 119 | first = get(first), 120 | second = get(second), 121 | ) 122 | } 123 | 124 | private fun List.tripleCombination(indices: IntArray, count: Int): Triple { 125 | require(count == 3) 126 | 127 | val (first, second, third) = indices 128 | 129 | return Triple( 130 | first = get(first), 131 | second = get(second), 132 | third = get(third), 133 | ) 134 | } 135 | 136 | private inline fun List.combinations( 137 | length: Int = size, 138 | crossinline combination: (indices: IntArray, count: Int) -> V, 139 | ) = sequence { 140 | val indices = IntArray(length) { it } 141 | var searching = length < size 142 | 143 | yield(combination(indices, length)) 144 | 145 | while (searching) { 146 | var found = false 147 | var index = length - 1 148 | 149 | while (index >= 0 && !found) { 150 | if (indices[index] == index + size - length) { 151 | index-- 152 | } else { 153 | indices[index]++ 154 | 155 | for (j in index + 1..()) 4 | 5 | /** 6 | * Returns a sequence that yields [length]-sized permutations from this list. 7 | * 8 | * The permutation tuples are emitted in lexicographic order according to the order of this list. 9 | * 10 | * ``` 11 | * "ABCD".toList() 12 | * .permutations(length = 2) 13 | * .toList() 14 | * // [[A, B], [A, C], [A, D], [B, A], [B, C], [B, D], [C, A], [C, B], [C, D], [D, A], [D, B], [D, C]] 15 | * 16 | * (0..2).toList() 17 | * .permutations() 18 | * .toList() 19 | * // [[0, 1, 2], [0, 2, 1], [1, 0, 2], [1, 2, 0], [2, 0, 1], [2, 1, 0]] 20 | * 21 | * listOf(1, 2, 3) 22 | * .permutations(length = 0) 23 | * .toList() 24 | * // [[]] 25 | * 26 | * emptyList() 27 | * .permutations() 28 | * .toList() 29 | * // [[]] 30 | * ``` 31 | * 32 | * @throws IllegalArgumentException if [length] is negative. 33 | */ 34 | public fun List.permutations(length: Int = size): Sequence> { 35 | require(length >= 0) { "length must be non-negative, but was $length" } 36 | 37 | return if (length == 0) { 38 | EmptyPermutation 39 | } else if (size < length) { 40 | emptySequence() 41 | } else { 42 | permutations( 43 | length = length, 44 | permutation = ::permutation, 45 | ) 46 | } 47 | } 48 | 49 | /** 50 | * Returns a sequence that yields [Pair] permutations from this list. 51 | * 52 | * The permutation tuples are emitted in lexicographic order according to the order of this list. 53 | * 54 | * ``` 55 | * "ABCD".toList() 56 | * .pairPermutations() 57 | * .toList() 58 | * // [(A, B), (A, C), (A, D), (B, A), (B, C), (B, D), (C, A), (C, B), (C, D), (D, A), (D, B), (D, C)] 59 | * 60 | * (0..2).toList() 61 | * .pairPermutations() 62 | * .toList() 63 | * // [(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)] 64 | * ``` 65 | */ 66 | public fun List.pairPermutations(): Sequence> { 67 | return if (size < 2) { 68 | emptySequence() 69 | } else { 70 | permutations( 71 | length = 2, 72 | permutation = ::pairPermutation 73 | ) 74 | } 75 | } 76 | 77 | /** 78 | * Returns a sequence that yields [Triple] permutations from this list. 79 | * 80 | * The permutation tuples are emitted in lexicographic order according to the order of this list. 81 | * 82 | * ``` 83 | * "ABCD".toList() 84 | * .triplePermutations() 85 | * .toList() 86 | * // [(A, B, C), (A, B, D), (A, C, B), (A, C, D), (A, D, B), (A, D, C), (B, A, C), (B, A, D), (B, C, A), (B, C, D), (B, D, A), (B, D, C), (C, A, B), (C, A, D), (C, B, A), (C, B, D), (C, D, A), (C, D, B), (D, A, B), (D, A, C), (D, B, A), (D, B, C), (D, C, A), (D, C, B)] 87 | * 88 | * (0..2).toList() 89 | * .triplePermutations() 90 | * .toList() 91 | * // [(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)] 92 | * ``` 93 | */ 94 | public fun List.triplePermutations(): Sequence> { 95 | return if (size < 3) { 96 | emptySequence() 97 | } else { 98 | permutations( 99 | length = 3, 100 | permutation = ::triplePermutation, 101 | ) 102 | } 103 | } 104 | 105 | private fun List.permutation(indices: IntArray, count: Int): List { 106 | require(count > 0) 107 | 108 | return List(count) { index -> 109 | get(indices[index]) 110 | } 111 | } 112 | 113 | private fun List.pairPermutation(indices: IntArray, count: Int): Pair { 114 | require(count == 2) 115 | 116 | val (first, second) = indices 117 | 118 | return Pair( 119 | first = get(first), 120 | second = get(second), 121 | ) 122 | } 123 | 124 | private fun List.triplePermutation(indices: IntArray, count: Int): Triple { 125 | require(count == 3) 126 | 127 | val (first, second, third) = indices 128 | 129 | return Triple( 130 | first = get(first), 131 | second = get(second), 132 | third = get(third), 133 | ) 134 | } 135 | 136 | private inline fun List.permutations( 137 | length: Int = size, 138 | crossinline permutation: (indices: IntArray, count: Int) -> V, 139 | ) = sequence { 140 | val indices = IntArray(size) { it } 141 | val cycles = IntArray(length) { size - it } 142 | var searching = size > 1 143 | 144 | yield(permutation(indices, length)) 145 | 146 | while (searching) { 147 | var found = false 148 | var index = length - 1 149 | 150 | while (index >= 0 && !found) { 151 | val exhausted = cycles[index] == 1 152 | 153 | if (exhausted) { 154 | resetCycle(indices, index, cycles) 155 | index-- 156 | } else { 157 | cycles[index]-- 158 | indices.swapAt(index, size - cycles[index]) 159 | 160 | yield(permutation(indices, length)) 161 | found = true 162 | } 163 | } 164 | 165 | if (!found) { 166 | searching = false 167 | } 168 | } 169 | } 170 | 171 | private fun List.resetCycle(indices: IntArray, index: Int, cycles: IntArray) { 172 | val current = indices[index] 173 | val remaining = size - index 174 | 175 | cycles[index] = remaining 176 | 177 | indices.shiftLeftFrom(index) 178 | indices[lastIndex] = current 179 | } 180 | 181 | private fun IntArray.shiftLeftFrom(index: Int) { 182 | for (index in index.. Iterable
.product(other: Iterable): Sequence> { 16 | return sequence { 17 | for (a in this@product) { 18 | for (b in other) { 19 | yield(Pair(a, b)) 20 | } 21 | } 22 | } 23 | } 24 | 25 | /** 26 | * Returns a sequence that yields the Cartesian product of the iterables in this [Pair]. 27 | * 28 | * The product tuples are emitted in lexicographic order according to the order of this iterable. 29 | * 30 | * ``` 31 | * Pair("ABCD".toList(), "xy".toList()) 32 | * .product() 33 | * .toList() 34 | * // [(A, x), (A, y), (B, x), (B, y), (C, x), (C, y), (D, x), (D, y)] 35 | * ``` 36 | */ 37 | public fun Pair, Iterable>.product(): Sequence> { 38 | return sequence { 39 | for (a in first) { 40 | for (b in second) { 41 | yield(Pair(a, b)) 42 | } 43 | } 44 | } 45 | } 46 | 47 | /** 48 | * Returns a sequence that yields the Cartesian product of this iterable with the [first] and [second] as a [Triple]. 49 | * 50 | * The product tuples are emitted in lexicographic order according to the order of this iterable. 51 | * 52 | * ``` 53 | * "AB".toList() 54 | * .product("CD".toList(), "EF".toList()) 55 | * .toList() 56 | * // [(A, C, E), (A, C, F), (A, D, E), (A, D, F), (B, C, E), (B, C, F), (B, D, E), (B, D, F)] 57 | * ``` 58 | */ 59 | public fun Iterable.product(first: Iterable, second: Iterable): Sequence> { 60 | return sequence { 61 | for (a in this@product) { 62 | for (b in first) { 63 | for (c in second) { 64 | yield(Triple(a, b, c)) 65 | } 66 | } 67 | } 68 | } 69 | } 70 | 71 | /** 72 | * Returns a sequence that yields the Cartesian product of the iterables in this [Triple]. 73 | * 74 | * The product tuples are emitted in lexicographic order according to the order of this iterable. 75 | * 76 | * ``` 77 | * Triple("AB".toList(), "CD".toList(), "EF".toList()) 78 | * .product() 79 | * .toList() 80 | * // [(A, C, E), (A, C, F), (A, D, E), (A, D, F), (B, C, E), (B, C, F), (B, D, E), (B, D, F)] 81 | * ``` 82 | */ 83 | public fun Triple, Iterable, Iterable>.product(): Sequence> { 84 | return sequence { 85 | for (a in first) { 86 | for (b in second) { 87 | for (c in third) { 88 | yield(Triple(a, b, c)) 89 | } 90 | } 91 | } 92 | } 93 | } 94 | 95 | /** 96 | * Returns a sequence that yields the Cartesian product of the lists in this list. 97 | * 98 | * The product tuples are emitted in lexicographic order according to the order of this list. 99 | * 100 | * ``` 101 | * listOf("ABCD".toList(), "xy".toList()) 102 | * .product() 103 | * .toList() 104 | * // [[A, x], [A, y], [B, x], [B, y], [C, x], [C, y], [D, x], [D, y]] 105 | * ``` 106 | */ 107 | public fun List>.product(): Sequence> { 108 | return if (isEmpty() || any(List::isEmpty)) { 109 | emptySequence() 110 | } else { 111 | sequence { 112 | val indices = IntArray(size) { 0 } 113 | var searching = true 114 | 115 | yield(product(indices)) 116 | 117 | while (searching) { 118 | var found = false 119 | var index = indices.size - 1 120 | 121 | while (index >= 0 && !found) { 122 | indices[index]++ 123 | 124 | if (indices[index] >= get(index).size) { 125 | indices[index] = 0 126 | index-- 127 | } else { 128 | yield(product(indices)) 129 | found = true 130 | } 131 | } 132 | 133 | if (!found) { 134 | searching = false 135 | } 136 | } 137 | } 138 | } 139 | } 140 | 141 | private fun List>.product(indices: IntArray): List { 142 | return indices.mapIndexed { a, b -> 143 | this[a][b] 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /src/commonTest/kotlin/com/github/michaelbull/itertools/CombinationsTest.kt: -------------------------------------------------------------------------------- 1 | package com.github.michaelbull.itertools 2 | 3 | import kotlin.test.Test 4 | import kotlin.test.assertEquals 5 | import kotlin.test.assertFailsWith 6 | 7 | class CombinationsTest { 8 | 9 | private val zeroElements = emptyList() 10 | private val oneElement = "A".toList() 11 | private val twoElements = "AB".toList() 12 | private val threeElements = "ABC".toList() 13 | private val fourElements = "ABCD".toList() 14 | 15 | @Test 16 | fun `-1 length combinations of 0 elements throws`() { 17 | val exception = assertFailsWith { 18 | zeroElements.combinations(-1) 19 | } 20 | 21 | assertEquals("length must be non-negative, but was -1", exception.message) 22 | } 23 | 24 | @Test 25 | fun `0 length combinations of 0 elements returns 1 combination`() { 26 | val expected = listOf(emptyList()) 27 | val actual = zeroElements.combinations(0).toList() 28 | assertEquals(expected, actual) 29 | } 30 | 31 | @Test 32 | fun `1 length combinations of 0 elements returns empty sequence`() { 33 | val expected = emptySequence>() 34 | val actual = zeroElements.combinations(1) 35 | assertEquals(expected, actual) 36 | } 37 | 38 | @Test 39 | fun `2 length combinations of 0 elements returns empty sequence`() { 40 | val expected = emptySequence>() 41 | val actual = zeroElements.combinations(2) 42 | assertEquals(expected, actual) 43 | } 44 | 45 | @Test 46 | fun `-1 length combinations of 1 element throws`() { 47 | val exception = assertFailsWith { 48 | oneElement.combinations(-1) 49 | } 50 | 51 | assertEquals("length must be non-negative, but was -1", exception.message) 52 | } 53 | 54 | @Test 55 | fun `0 length combinations of 1 element returns 1 combination`() { 56 | val expected = listOf(emptyList()) 57 | val actual = oneElement.combinations(0).toList() 58 | assertEquals(expected, actual) 59 | } 60 | 61 | @Test 62 | fun `1 length combinations of 1 element returns 1 combination`() { 63 | val expected = sequenceOf(listOf('A')) 64 | val actual = oneElement.combinations(1) 65 | assertEquals(expected.toList(), actual.toList()) 66 | } 67 | 68 | @Test 69 | fun `2 length combinations of 1 element returns empty sequence`() { 70 | val expected = emptySequence>() 71 | val actual = oneElement.combinations(2) 72 | assertEquals(expected, actual) 73 | } 74 | 75 | @Test 76 | fun `-1 length combinations of 2 elements throws`() { 77 | val exception = assertFailsWith { 78 | twoElements.combinations(-1) 79 | } 80 | 81 | assertEquals("length must be non-negative, but was -1", exception.message) 82 | } 83 | 84 | @Test 85 | fun `0 length combinations of 2 elements returns 1 combination`() { 86 | val expected = listOf(emptyList()) 87 | val actual = twoElements.combinations(0).toList() 88 | assertEquals(expected, actual) 89 | } 90 | 91 | @Test 92 | fun `1 length combinations of 2 elements returns 2 combinations`() { 93 | val expected = sequenceOf( 94 | listOf('A'), 95 | listOf('B'), 96 | ) 97 | 98 | val actual = twoElements.combinations(1) 99 | assertEquals(expected.toList(), actual.toList()) 100 | } 101 | 102 | @Test 103 | fun `2 length combinations of 2 elements returns 1 combination`() { 104 | val expected = sequenceOf(listOf('A', 'B')) 105 | val actual = twoElements.combinations(2) 106 | assertEquals(expected.toList(), actual.toList()) 107 | } 108 | 109 | @Test 110 | fun `3 length combinations of 2 elements returns empty sequence`() { 111 | val expected = emptySequence>() 112 | val actual = twoElements.combinations(3) 113 | assertEquals(expected, actual) 114 | } 115 | 116 | @Test 117 | fun `-1 length combinations of 3 elements throws`() { 118 | val exception = assertFailsWith { 119 | threeElements.combinations(-1) 120 | } 121 | 122 | assertEquals("length must be non-negative, but was -1", exception.message) 123 | } 124 | 125 | @Test 126 | fun `0 length combinations of 3 elements returns 1 combination`() { 127 | val expected = listOf(emptyList()) 128 | val actual = threeElements.combinations(0).toList() 129 | assertEquals(expected, actual) 130 | } 131 | 132 | @Test 133 | fun `1 length combinations of 3 elements returns 3 combinations`() { 134 | val expected = sequenceOf( 135 | listOf('A'), 136 | listOf('B'), 137 | listOf('C'), 138 | ) 139 | 140 | val actual = threeElements.combinations(1) 141 | assertEquals(expected.toList(), actual.toList()) 142 | } 143 | 144 | @Test 145 | fun `2 length combinations of 3 elements returns 3 combinations`() { 146 | val expected = sequenceOf( 147 | listOf('A', 'B'), 148 | listOf('A', 'C'), 149 | listOf('B', 'C'), 150 | ) 151 | 152 | val actual = threeElements.combinations(2) 153 | assertEquals(expected.toList(), actual.toList()) 154 | } 155 | 156 | @Test 157 | fun `3 length combinations of 3 elements returns 1 combination`() { 158 | val expected = sequenceOf(listOf('A', 'B', 'C')) 159 | val actual = threeElements.combinations(3) 160 | assertEquals(expected.toList(), actual.toList()) 161 | } 162 | 163 | @Test 164 | fun `4 length combinations of 3 elements returns empty sequence`() { 165 | val expected = emptySequence>() 166 | val actual = threeElements.combinations(4) 167 | assertEquals(expected, actual) 168 | } 169 | 170 | @Test 171 | fun `-1 length combinations of 4 elements throws`() { 172 | val exception = assertFailsWith { 173 | fourElements.combinations(-1) 174 | } 175 | 176 | assertEquals("length must be non-negative, but was -1", exception.message) 177 | } 178 | 179 | @Test 180 | fun `0 length combinations of 4 elements returns 1 combination`() { 181 | val expected = listOf(emptyList()) 182 | val actual = fourElements.combinations(0).toList() 183 | assertEquals(expected, actual) 184 | } 185 | 186 | @Test 187 | fun `1 length combinations of 4 elements returns 4 combinations`() { 188 | val expected = sequenceOf( 189 | listOf('A'), 190 | listOf('B'), 191 | listOf('C'), 192 | listOf('D'), 193 | ) 194 | 195 | val actual = fourElements.combinations(1) 196 | assertEquals(expected.toList(), actual.toList()) 197 | } 198 | 199 | @Test 200 | fun `2 length combinations of 4 elements returns 6 combinations`() { 201 | val expected = sequenceOf( 202 | listOf('A', 'B'), 203 | listOf('A', 'C'), 204 | listOf('A', 'D'), 205 | listOf('B', 'C'), 206 | listOf('B', 'D'), 207 | listOf('C', 'D'), 208 | ) 209 | 210 | val actual = fourElements.combinations(2) 211 | assertEquals(expected.toList(), actual.toList()) 212 | } 213 | 214 | @Test 215 | fun `3 length combinations of 4 elements returns 4 combinations`() { 216 | val expected = sequenceOf( 217 | listOf('A', 'B', 'C'), 218 | listOf('A', 'B', 'D'), 219 | listOf('A', 'C', 'D'), 220 | listOf('B', 'C', 'D'), 221 | ) 222 | 223 | val actual = fourElements.combinations(3) 224 | assertEquals(expected.toList(), actual.toList()) 225 | } 226 | 227 | @Test 228 | fun `4 length combinations of 4 elements returns 1 combinations`() { 229 | val expected = sequenceOf(listOf('A', 'B', 'C', 'D')) 230 | val actual = fourElements.combinations(4) 231 | assertEquals(expected.toList(), actual.toList()) 232 | } 233 | 234 | @Test 235 | fun `5 length combinations of 4 elements returns empty sequence`() { 236 | val expected = emptySequence>() 237 | val actual = fourElements.combinations(5) 238 | assertEquals(expected, actual) 239 | } 240 | } 241 | -------------------------------------------------------------------------------- /src/commonTest/kotlin/com/github/michaelbull/itertools/PermutationsTest.kt: -------------------------------------------------------------------------------- 1 | package com.github.michaelbull.itertools 2 | 3 | import kotlin.test.Test 4 | import kotlin.test.assertEquals 5 | import kotlin.test.assertFailsWith 6 | 7 | class PermutationsTest { 8 | 9 | private val zeroElements = emptyList() 10 | private val oneElement = "A".toList() 11 | private val twoElements = "AB".toList() 12 | private val threeElements = "ABC".toList() 13 | private val fourElements = "ABCD".toList() 14 | 15 | @Test 16 | fun `-1 length permutations of 0 elements throws`() { 17 | val exception = assertFailsWith { 18 | zeroElements.permutations(-1) 19 | } 20 | 21 | assertEquals("length must be non-negative, but was -1", exception.message) 22 | } 23 | 24 | @Test 25 | fun `0 length permutations of 0 elements returns 1 permutation`() { 26 | val expected = listOf(emptyList()) 27 | val actual = zeroElements.permutations(0).toList() 28 | assertEquals(expected, actual) 29 | } 30 | 31 | @Test 32 | fun `1 length permutations of 0 elements returns empty sequence`() { 33 | val expected = emptySequence>() 34 | val actual = zeroElements.permutations(1) 35 | assertEquals(expected, actual) 36 | } 37 | 38 | @Test 39 | fun `2 length permutations of 0 elements returns empty sequence`() { 40 | val expected = emptySequence>() 41 | val actual = zeroElements.permutations(2) 42 | assertEquals(expected, actual) 43 | } 44 | 45 | @Test 46 | fun `-1 length permutations of 1 element throws`() { 47 | val exception = assertFailsWith { 48 | oneElement.permutations(-1) 49 | } 50 | 51 | assertEquals("length must be non-negative, but was -1", exception.message) 52 | } 53 | 54 | @Test 55 | fun `0 length permutations of 1 element returns 1 permutation`() { 56 | val expected = listOf(emptyList()) 57 | val actual = oneElement.permutations(0).toList() 58 | assertEquals(expected, actual) 59 | } 60 | 61 | @Test 62 | fun `1 length permutations of 1 element returns 1 permutation`() { 63 | val expected = sequenceOf(listOf('A')) 64 | val actual = oneElement.permutations(1) 65 | assertEquals(expected.toList(), actual.toList()) 66 | } 67 | 68 | @Test 69 | fun `2 length permutations of 1 element returns empty sequence`() { 70 | val expected = emptySequence>() 71 | val actual = oneElement.permutations(2) 72 | assertEquals(expected, actual) 73 | } 74 | 75 | @Test 76 | fun `-1 length permutations of 2 elements throws`() { 77 | val exception = assertFailsWith { 78 | twoElements.permutations(-1) 79 | } 80 | 81 | assertEquals("length must be non-negative, but was -1", exception.message) 82 | } 83 | 84 | @Test 85 | fun `0 length permutations of 2 elements returns 1 permutation`() { 86 | val expected = listOf(emptyList()) 87 | val actual = twoElements.permutations(0).toList() 88 | assertEquals(expected, actual) 89 | } 90 | 91 | @Test 92 | fun `1 length permutations of 2 elements returns 2 permutations`() { 93 | val expected = sequenceOf( 94 | listOf('A'), 95 | listOf('B'), 96 | ) 97 | 98 | val actual = twoElements.permutations(1) 99 | assertEquals(expected.toList(), actual.toList()) 100 | } 101 | 102 | @Test 103 | fun `2 length permutations of 2 elements returns 2 permutations`() { 104 | val expected = sequenceOf( 105 | listOf('A', 'B'), 106 | listOf('B', 'A'), 107 | ) 108 | 109 | val actual = twoElements.permutations(2) 110 | assertEquals(expected.toList(), actual.toList()) 111 | } 112 | 113 | @Test 114 | fun `3 length permutations of 2 elements returns empty sequence`() { 115 | val expected = emptySequence>() 116 | val actual = twoElements.permutations(3) 117 | assertEquals(expected, actual) 118 | } 119 | 120 | @Test 121 | fun `-1 length permutations of 3 elements throws`() { 122 | val exception = assertFailsWith { 123 | threeElements.permutations(-1) 124 | } 125 | 126 | assertEquals("length must be non-negative, but was -1", exception.message) 127 | } 128 | 129 | @Test 130 | fun `0 length permutations of 3 elements returns 1 permutation`() { 131 | val expected = listOf(emptyList()) 132 | val actual = threeElements.permutations(0).toList() 133 | assertEquals(expected, actual) 134 | } 135 | 136 | @Test 137 | fun `1 length permutations of 3 elements returns 3 permutations`() { 138 | val expected = sequenceOf( 139 | listOf('A'), 140 | listOf('B'), 141 | listOf('C'), 142 | ) 143 | 144 | val actual = threeElements.permutations(1) 145 | assertEquals(expected.toList(), actual.toList()) 146 | } 147 | 148 | @Test 149 | fun `2 length permutations of 3 elements returns 6 permutations`() { 150 | val expected = sequenceOf( 151 | listOf('A', 'B'), 152 | listOf('A', 'C'), 153 | listOf('B', 'A'), 154 | listOf('B', 'C'), 155 | listOf('C', 'A'), 156 | listOf('C', 'B'), 157 | ) 158 | 159 | val actual = threeElements.permutations(2) 160 | assertEquals(expected.toList(), actual.toList()) 161 | } 162 | 163 | @Test 164 | fun `3 length permutations of 3 elements returns 6 permutations`() { 165 | val expected = sequenceOf( 166 | listOf('A', 'B', 'C'), 167 | listOf('A', 'C', 'B'), 168 | listOf('B', 'A', 'C'), 169 | listOf('B', 'C', 'A'), 170 | listOf('C', 'A', 'B'), 171 | listOf('C', 'B', 'A'), 172 | ) 173 | 174 | val actual = threeElements.permutations(3) 175 | assertEquals(expected.toList(), actual.toList()) 176 | } 177 | 178 | @Test 179 | fun `4 length permutations of 3 elements returns empty sequence`() { 180 | val expected = emptySequence>() 181 | val actual = threeElements.permutations(4) 182 | assertEquals(expected, actual) 183 | } 184 | 185 | @Test 186 | fun `-1 length permutations of 4 elements throws`() { 187 | val exception = assertFailsWith { 188 | fourElements.permutations(-1) 189 | } 190 | 191 | assertEquals("length must be non-negative, but was -1", exception.message) 192 | } 193 | 194 | @Test 195 | fun `0 length permutations of 4 elements returns 1 permutation`() { 196 | val expected = listOf(emptyList()) 197 | val actual = fourElements.permutations(0).toList() 198 | assertEquals(expected, actual) 199 | } 200 | 201 | @Test 202 | fun `1 length permutations of 4 elements returns 4 permutations`() { 203 | val expected = sequenceOf( 204 | listOf('A'), 205 | listOf('B'), 206 | listOf('C'), 207 | listOf('D'), 208 | ) 209 | 210 | val actual = fourElements.permutations(1) 211 | assertEquals(expected.toList(), actual.toList()) 212 | } 213 | 214 | @Test 215 | fun `2 length permutations of 4 elements returns 12 permutations`() { 216 | val expected = sequenceOf( 217 | listOf('A', 'B'), 218 | listOf('A', 'C'), 219 | listOf('A', 'D'), 220 | listOf('B', 'A'), 221 | listOf('B', 'C'), 222 | listOf('B', 'D'), 223 | listOf('C', 'A'), 224 | listOf('C', 'B'), 225 | listOf('C', 'D'), 226 | listOf('D', 'A'), 227 | listOf('D', 'B'), 228 | listOf('D', 'C'), 229 | ) 230 | 231 | val actual = fourElements.permutations(2) 232 | assertEquals(expected.toList(), actual.toList()) 233 | } 234 | 235 | @Test 236 | fun `3 length permutations of 4 elements returns 4 permutations`() { 237 | val expected = sequenceOf( 238 | listOf('A', 'B', 'C'), 239 | listOf('A', 'B', 'D'), 240 | listOf('A', 'C', 'B'), 241 | listOf('A', 'C', 'D'), 242 | listOf('A', 'D', 'B'), 243 | listOf('A', 'D', 'C'), 244 | listOf('B', 'A', 'C'), 245 | listOf('B', 'A', 'D'), 246 | listOf('B', 'C', 'A'), 247 | listOf('B', 'C', 'D'), 248 | listOf('B', 'D', 'A'), 249 | listOf('B', 'D', 'C'), 250 | listOf('C', 'A', 'B'), 251 | listOf('C', 'A', 'D'), 252 | listOf('C', 'B', 'A'), 253 | listOf('C', 'B', 'D'), 254 | listOf('C', 'D', 'A'), 255 | listOf('C', 'D', 'B'), 256 | listOf('D', 'A', 'B'), 257 | listOf('D', 'A', 'C'), 258 | listOf('D', 'B', 'A'), 259 | listOf('D', 'B', 'C'), 260 | listOf('D', 'C', 'A'), 261 | listOf('D', 'C', 'B'), 262 | ) 263 | 264 | val actual = fourElements.permutations(3) 265 | assertEquals(expected.toList(), actual.toList()) 266 | } 267 | 268 | @Test 269 | fun `4 length permutations of 4 elements returns 24 permutations`() { 270 | val expected = sequenceOf( 271 | listOf('A', 'B', 'C', 'D'), 272 | listOf('A', 'B', 'D', 'C'), 273 | listOf('A', 'C', 'B', 'D'), 274 | listOf('A', 'C', 'D', 'B'), 275 | listOf('A', 'D', 'B', 'C'), 276 | listOf('A', 'D', 'C', 'B'), 277 | listOf('B', 'A', 'C', 'D'), 278 | listOf('B', 'A', 'D', 'C'), 279 | listOf('B', 'C', 'A', 'D'), 280 | listOf('B', 'C', 'D', 'A'), 281 | listOf('B', 'D', 'A', 'C'), 282 | listOf('B', 'D', 'C', 'A'), 283 | listOf('C', 'A', 'B', 'D'), 284 | listOf('C', 'A', 'D', 'B'), 285 | listOf('C', 'B', 'A', 'D'), 286 | listOf('C', 'B', 'D', 'A'), 287 | listOf('C', 'D', 'A', 'B'), 288 | listOf('C', 'D', 'B', 'A'), 289 | listOf('D', 'A', 'B', 'C'), 290 | listOf('D', 'A', 'C', 'B'), 291 | listOf('D', 'B', 'A', 'C'), 292 | listOf('D', 'B', 'C', 'A'), 293 | listOf('D', 'C', 'A', 'B'), 294 | listOf('D', 'C', 'B', 'A'), 295 | ) 296 | 297 | val actual = fourElements.permutations(4) 298 | assertEquals(expected.toList(), actual.toList()) 299 | } 300 | 301 | @Test 302 | fun `5 length permutations of 4 elements returns empty sequence`() { 303 | val expected = emptySequence>() 304 | val actual = fourElements.permutations(5) 305 | assertEquals(expected, actual) 306 | } 307 | } 308 | -------------------------------------------------------------------------------- /src/commonTest/kotlin/com/github/michaelbull/itertools/ProductTest.kt: -------------------------------------------------------------------------------- 1 | package com.github.michaelbull.itertools 2 | 3 | import kotlin.test.Test 4 | import kotlin.test.assertEquals 5 | 6 | class ProductTest { 7 | 8 | private val twoElements = "AB".toList() 9 | private val threeElements = "ABC".toList() 10 | 11 | @Test 12 | fun `product of empty list returns empty sequence`() { 13 | val expected = emptySequence>() 14 | val actual = emptyList>().product() 15 | assertEquals(expected, actual) 16 | } 17 | 18 | @Test 19 | fun `product of 1 list with 3 elements returns 3 products`() { 20 | val expected = listOf( 21 | listOf('A'), 22 | listOf('B'), 23 | listOf('C'), 24 | ) 25 | 26 | val actual = listOf( 27 | threeElements 28 | ).product().toList() 29 | 30 | assertEquals(expected, actual) 31 | } 32 | 33 | @Test 34 | fun `product of 2 lists with empty returns empty sequence`() { 35 | val expected = emptyList>() 36 | 37 | val actual = listOf( 38 | twoElements, 39 | emptyList(), 40 | ).product().toList() 41 | 42 | assertEquals(expected, actual) 43 | } 44 | 45 | @Test 46 | fun `product of 2 lists each with 2 elements returns 4 products`() { 47 | val expected = listOf( 48 | listOf('A', 'A'), 49 | listOf('A', 'B'), 50 | listOf('B', 'A'), 51 | listOf('B', 'B'), 52 | ) 53 | 54 | val actual = listOf( 55 | twoElements, 56 | twoElements, 57 | ).product().toList() 58 | 59 | assertEquals(expected, actual) 60 | } 61 | 62 | @Test 63 | fun `product of 3 lists each with 2 elements returns 8 products`() { 64 | val expected = listOf( 65 | listOf('A', 'A', 'A'), 66 | listOf('A', 'A', 'B'), 67 | listOf('A', 'B', 'A'), 68 | listOf('A', 'B', 'B'), 69 | listOf('B', 'A', 'A'), 70 | listOf('B', 'A', 'B'), 71 | listOf('B', 'B', 'A'), 72 | listOf('B', 'B', 'B'), 73 | ) 74 | 75 | val actual = listOf( 76 | twoElements, 77 | twoElements, 78 | twoElements, 79 | ).product().toList() 80 | 81 | assertEquals(expected, actual) 82 | } 83 | 84 | @Test 85 | fun `product of 2 lists with 2 and 3 elements respectively returns 6 products`() { 86 | val expected = listOf( 87 | listOf('A', 'A'), 88 | listOf('A', 'B'), 89 | listOf('A', 'C'), 90 | listOf('B', 'A'), 91 | listOf('B', 'B'), 92 | listOf('B', 'C'), 93 | ) 94 | 95 | val actual = listOf( 96 | twoElements, 97 | threeElements, 98 | ).product().toList() 99 | 100 | assertEquals(expected, actual) 101 | } 102 | } 103 | --------------------------------------------------------------------------------